Skip to content

Commit 5a5eef1

Browse files
committed
move aux files and add blas constants module
1 parent 347021d commit 5a5eef1

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

src/blas/stdlib_blas_constants.fypp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#:include "common.fypp"
2+
#:for ck,ct,ci in REAL_KINDS_TYPES
3+
module stdlib_blas_constants_${ck}$
4+
use stdlib_linalg_constants
5+
implicit none
6+
7+
8+
real(${ck}$), parameter :: negone = -1.00_${ck}$
9+
real(${ck}$), parameter :: zero = 0.00_${ck}$
10+
real(${ck}$), parameter :: half = 0.50_${ck}$
11+
real(${ck}$), parameter :: one = 1.00_${ck}$
12+
real(${ck}$), parameter :: two = 2.00_${ck}$
13+
real(${ck}$), parameter :: three = 3.00_${ck}$
14+
real(${ck}$), parameter :: four = 4.00_${ck}$
15+
real(${ck}$), parameter :: eight = 8.00_${ck}$
16+
real(${ck}$), parameter :: ten = 10.00_${ck}$
17+
18+
complex(${ck}$), parameter :: czero = ( 0.0_${ck}$,0.0_${ck}$)
19+
complex(${ck}$), parameter :: chalf = ( 0.5_${ck}$,0.0_${ck}$)
20+
complex(${ck}$), parameter :: cone = ( 1.0_${ck}$,0.0_${ck}$)
21+
complex(${ck}$), parameter :: cnegone = (-1.0_${ck}$,0.0_${ck}$)
22+
23+
! scaling constants
24+
integer, parameter :: maxexp = maxexponent(zero)
25+
integer, parameter :: minexp = minexponent(zero)
26+
27+
real(${ck}$), parameter :: rradix = real(radix(zero),${ck}$)
28+
real(${ck}$), parameter :: ulp = epsilon(zero)
29+
real(${ck}$), parameter :: eps = ulp*half
30+
real(${ck}$), parameter :: safmin = rradix**max(minexp-1,1-maxexp)
31+
real(${ck}$), parameter :: safmax = one/safmin
32+
real(${ck}$), parameter :: smlnum = safmin/ulp
33+
real(${ck}$), parameter :: bignum = safmax*ulp
34+
real(${ck}$), parameter :: rtmin = sqrt(smlnum)
35+
real(${ck}$), parameter :: rtmax = sqrt(bignum)
36+
37+
! Blue's scaling constants
38+
! ssml>=1/s and sbig==1/S with s,S as defined in https://doi.org/10.1145/355769.355771
39+
real(${ck}$), parameter :: tsml = rradix**ceiling((minexp-1)*half)
40+
real(${ck}$), parameter :: tbig = rradix**floor((maxexp-digits(zero)+1)*half)
41+
real(${ck}$), parameter :: ssml = rradix**(-floor((minexp-digits(zero))*half))
42+
real(${ck}$), parameter :: sbig = rradix**(-ceiling((maxexp+digits(zero)-1)*half))
43+
44+
end module
45+
46+
#:endfor

0 commit comments

Comments
 (0)