The R Project SVN R

Rev

Rev 82211 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 82211 Rev 85772
Line 10... Line 10...
10
!
10
!
11
!> \author Edward Anderson, Lockheed Martin
11
!> \author Edward Anderson, Lockheed Martin
12
!
12
!
13
!> \date May 2016
13
!> \date May 2016
14
!
14
!
15
!> \ingroup OTHERauxiliary
15
!> \ingroup la_constants
16
!
16
!
17
!> \par Contributors:
17
!> \par Contributors:
18
!  ==================
18
!  ==================
19
!>
19
!>
20
!> Weslley Pereira, University of Colorado Denver, USA
20
!> Weslley Pereira, University of Colorado Denver, USA
Line 40... Line 40...
40
module LA_CONSTANTS
40
module LA_CONSTANTS
41
!  -- LAPACK auxiliary module --
41
!  -- LAPACK auxiliary module --
42
!  -- LAPACK is a software package provided by Univ. of Tennessee,    --
42
!  -- LAPACK is a software package provided by Univ. of Tennessee,    --
43
!  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
43
!  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
44
 
44
 
45
!  Standard constants for 
45
!  Standard constants for
46
   integer, parameter :: sp = kind(1.e0)
46
   integer, parameter :: sp = kind(1.e0)
47
 
47
 
48
   real(sp), parameter :: szero = 0.0_sp
48
   real(sp), parameter :: szero = 0.0_sp
49
   real(sp), parameter :: shalf = 0.5_sp
49
   real(sp), parameter :: shalf = 0.5_sp
50
   real(sp), parameter :: sone = 1.0_sp
50
   real(sp), parameter :: sone = 1.0_sp
Line 76... Line 76...
76
   real(sp), parameter :: stsml = real(radix(0._sp), sp)**ceiling( &
76
   real(sp), parameter :: stsml = real(radix(0._sp), sp)**ceiling( &
77
       (minexponent(0._sp) - 1) * 0.5_sp)
77
       (minexponent(0._sp) - 1) * 0.5_sp)
78
   real(sp), parameter :: stbig = real(radix(0._sp), sp)**floor( &
78
   real(sp), parameter :: stbig = real(radix(0._sp), sp)**floor( &
79
       (maxexponent(0._sp) - digits(0._sp) + 1) * 0.5_sp)
79
       (maxexponent(0._sp) - digits(0._sp) + 1) * 0.5_sp)
80
!  ssml >= 1/s, where s was defined in https://doi.org/10.1145/355769.355771
80
!  ssml >= 1/s, where s was defined in https://doi.org/10.1145/355769.355771
81
!  The correction was added in https://doi.org/10.1145/3061665 to scale denormalized numbers correctly 
81
!  The correction was added in https://doi.org/10.1145/3061665 to scale denormalized numbers correctly
82
   real(sp), parameter :: sssml = real(radix(0._sp), sp)**( - floor( &
82
   real(sp), parameter :: sssml = real(radix(0._sp), sp)**( - floor( &
83
       (minexponent(0._sp) - digits(0._sp)) * 0.5_sp))
83
       (minexponent(0._sp) - digits(0._sp)) * 0.5_sp))
84
!  sbig = 1/S, where S was defined in https://doi.org/10.1145/355769.355771
84
!  sbig = 1/S, where S was defined in https://doi.org/10.1145/355769.355771
85
   real(sp), parameter :: ssbig = real(radix(0._sp), sp)**( - ceiling( &
85
   real(sp), parameter :: ssbig = real(radix(0._sp), sp)**( - ceiling( &
86
       (maxexponent(0._sp) + digits(0._sp) - 1) * 0.5_sp))
86
       (maxexponent(0._sp) + digits(0._sp) - 1) * 0.5_sp))
87
 
87
 
88
!  Standard constants for 
88
!  Standard constants for
89
   integer, parameter :: dp = kind(1.d0)
89
   integer, parameter :: dp = kind(1.d0)
90
 
90
 
91
   real(dp), parameter :: dzero = 0.0_dp
91
   real(dp), parameter :: dzero = 0.0_dp
92
   real(dp), parameter :: dhalf = 0.5_dp
92
   real(dp), parameter :: dhalf = 0.5_dp
93
   real(dp), parameter :: done = 1.0_dp
93
   real(dp), parameter :: done = 1.0_dp
Line 119... Line 119...
119
   real(dp), parameter :: dtsml = real(radix(0._dp), dp)**ceiling( &
119
   real(dp), parameter :: dtsml = real(radix(0._dp), dp)**ceiling( &
120
       (minexponent(0._dp) - 1) * 0.5_dp)
120
       (minexponent(0._dp) - 1) * 0.5_dp)
121
   real(dp), parameter :: dtbig = real(radix(0._dp), dp)**floor( &
121
   real(dp), parameter :: dtbig = real(radix(0._dp), dp)**floor( &
122
       (maxexponent(0._dp) - digits(0._dp) + 1) * 0.5_dp)
122
       (maxexponent(0._dp) - digits(0._dp) + 1) * 0.5_dp)
123
!  ssml >= 1/s, where s was defined in https://doi.org/10.1145/355769.355771
123
!  ssml >= 1/s, where s was defined in https://doi.org/10.1145/355769.355771
124
!  The correction was added in https://doi.org/10.1145/3061665 to scale denormalized numbers correctly 
124
!  The correction was added in https://doi.org/10.1145/3061665 to scale denormalized numbers correctly
125
   real(dp), parameter :: dssml = real(radix(0._dp), dp)**( - floor( &
125
   real(dp), parameter :: dssml = real(radix(0._dp), dp)**( - floor( &
126
       (minexponent(0._dp) - digits(0._dp)) * 0.5_dp))
126
       (minexponent(0._dp) - digits(0._dp)) * 0.5_dp))
127
!  sbig = 1/S, where S was defined in https://doi.org/10.1145/355769.355771
127
!  sbig = 1/S, where S was defined in https://doi.org/10.1145/355769.355771
128
   real(dp), parameter :: dsbig = real(radix(0._dp), dp)**( - ceiling( &
128
   real(dp), parameter :: dsbig = real(radix(0._dp), dp)**( - ceiling( &
129
       (maxexponent(0._dp) + digits(0._dp) - 1) * 0.5_dp))
129
       (maxexponent(0._dp) + digits(0._dp) - 1) * 0.5_dp))