46 integer,
parameter :: sp = kind(1.e0)
48 real(sp),
parameter :: szero = 0.0_sp
49 real(sp),
parameter :: shalf = 0.5_sp
50 real(sp),
parameter :: sone = 1.0_sp
51 real(sp),
parameter :: stwo = 2.0_sp
52 real(sp),
parameter :: sthree = 3.0_sp
53 real(sp),
parameter :: sfour = 4.0_sp
54 real(sp),
parameter :: seight = 8.0_sp
55 real(sp),
parameter :: sten = 10.0_sp
56 complex(sp),
parameter :: czero = ( 0.0_sp, 0.0_sp )
57 complex(sp),
parameter :: chalf = ( 0.5_sp, 0.0_sp )
58 complex(sp),
parameter :: cone = ( 1.0_sp, 0.0_sp )
59 character*1,
parameter :: sprefix =
'S' 60 character*1,
parameter :: cprefix =
'C' 63 real(sp),
parameter :: sulp = epsilon(0._sp)
64 real(sp),
parameter :: seps = sulp * 0.5_sp
65 real(sp),
parameter :: ssafmin = real(radix(0._sp),sp)**max( &
66 minexponent(0._sp)-1, &
67 1-maxexponent(0._sp) &
69 real(sp),
parameter :: ssafmax = sone / ssafmin
70 real(sp),
parameter :: ssmlnum = ssafmin / sulp
71 real(sp),
parameter :: sbignum = ssafmax * sulp
72 real(sp),
parameter :: srtmin = sqrt(ssmlnum)
73 real(sp),
parameter :: srtmax = sqrt(sbignum)
76 real(sp),
parameter :: stsml = real(radix(0._sp), sp)**ceiling( &
77 (minexponent(0._sp) - 1) * 0.5_sp)
78 real(sp),
parameter :: stbig = real(radix(0._sp), sp)**floor( &
79 (maxexponent(0._sp) - digits(0._sp) + 1) * 0.5_sp)
82 real(sp),
parameter :: sssml = real(radix(0._sp), sp)**( - floor( &
83 (minexponent(0._sp) - digits(0._sp)) * 0.5_sp))
85 real(sp),
parameter :: ssbig = real(radix(0._sp), sp)**( - ceiling( &
86 (maxexponent(0._sp) + digits(0._sp) - 1) * 0.5_sp))
89 integer,
parameter :: dp = kind(1.d0)
91 real(dp),
parameter :: dzero = 0.0_dp
92 real(dp),
parameter :: dhalf = 0.5_dp
93 real(dp),
parameter :: done = 1.0_dp
94 real(dp),
parameter :: dtwo = 2.0_dp
95 real(dp),
parameter :: dthree = 3.0_dp
96 real(dp),
parameter :: dfour = 4.0_dp
97 real(dp),
parameter :: deight = 8.0_dp
98 real(dp),
parameter :: dten = 10.0_dp
99 complex(dp),
parameter :: zzero = ( 0.0_dp, 0.0_dp )
100 complex(dp),
parameter :: zhalf = ( 0.5_dp, 0.0_dp )
101 complex(dp),
parameter :: zone = ( 1.0_dp, 0.0_dp )
102 character*1,
parameter :: dprefix =
'D' 103 character*1,
parameter :: zprefix =
'Z' 106 real(dp),
parameter :: dulp = epsilon(0._dp)
107 real(dp),
parameter :: deps = dulp * 0.5_dp
108 real(dp),
parameter :: dsafmin = real(radix(0._dp),dp)**max( &
109 minexponent(0._dp)-1, &
110 1-maxexponent(0._dp) &
112 real(dp),
parameter :: dsafmax = done / dsafmin
113 real(dp),
parameter :: dsmlnum = dsafmin / dulp
114 real(dp),
parameter :: dbignum = dsafmax * dulp
115 real(dp),
parameter :: drtmin = sqrt(dsmlnum)
116 real(dp),
parameter :: drtmax = sqrt(dbignum)
119 real(dp),
parameter :: dtsml = real(radix(0._dp), dp)**ceiling( &
120 (minexponent(0._dp) - 1) * 0.5_dp)
121 real(dp),
parameter :: dtbig = real(radix(0._dp), dp)**floor( &
122 (maxexponent(0._dp) - digits(0._dp) + 1) * 0.5_dp)
125 real(dp),
parameter :: dssml = real(radix(0._dp), dp)**( - floor( &
126 (minexponent(0._dp) - digits(0._dp)) * 0.5_dp))
128 real(dp),
parameter :: dsbig = real(radix(0._dp), dp)**( - ceiling( &
129 (maxexponent(0._dp) + digits(0._dp) - 1) * 0.5_dp))
LA_CONSTANTS is a module for the scaling constants for the compiled Fortran single and double precisi...