File: intrinsics_137.f90

package info (click to toggle)
lfortran 0.45.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 46,332 kB
  • sloc: cpp: 137,068; f90: 51,260; python: 6,444; ansic: 4,277; yacc: 2,285; fortran: 806; sh: 524; makefile: 30; javascript: 15
file content (63 lines) | stat: -rw-r--r-- 2,032 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
program intrinsics_137
    use iso_fortran_env, only: int32, int64
    implicit none
    integer, parameter :: sp = kind(0.0)
    integer, parameter :: dp = kind(0.d0)
    integer, parameter :: i1 = huge(0)
    integer(8), parameter :: i2 = huge(12_dp)
    real, parameter :: i3 = huge(1.1_sp)
    real(8), parameter :: i4 = huge(1.5_dp)
    integer, parameter :: ar1(3) = huge([1, 2, 45])
    real, parameter :: ar2(3) = huge([1.0, 2.0, 45.0])

    integer(int32) :: i
    integer(int64) :: j
    real(sp) :: r
    real(dp) :: d
    integer :: arr1(3) = [11, 13, 7]
    real :: arr2(3) = [11.0, 13.0, 7.0]

    i = 0
    j = 1
    r = 0.0_sp
    d = 0.0_dp

    print *, i1
    if (i1 /= 2147483647) error stop
    print *, i2
    if (i2 /= 9223372036854775807_int64) error stop
    print *, i3
    if (abs((i3 - 3.40282347e+38_sp) / 3.40282347e+38_sp) > 1e-6_sp) error stop
    print *, i4
    if (abs(i4 - 1.79769313486231571e+308_dp) > 1e-12_dp) error stop
    
    print *, ar1
    if (any(ar1 /= [2147483647, 2147483647, 2147483647])) error stop
    print *, ar2
    if (any(abs((ar2 - [3.40282347e+38_sp, 3.40282347e+38_sp, 3.40282347e+38_sp]) / 3.40282347e+38_sp) > 1e-6_sp)) error stop

    print *, huge(i)
    if (huge(i) /= 2147483647_int32) error stop
  
    print*, huge(j)
    if (huge(j) /= 9223372036854775807_int64) error stop
  
    print*, huge(r)
    if ((huge(r) - 3.40282347e+38) / 3.40282347e+38 > 1e-8_sp) error stop
  
    print*, huge(d)
    if (abs(huge(d) - 1.79769313486231571e+308_dp) > 1e-8_dp) error stop

    print *, kind(huge(1))
    if (kind(huge(1)) /= int32) error stop
    print *, kind(huge(1.0))
    if (kind(huge(1.0)) /= sp) error stop
    print *, kind(huge(1.0_dp))
    if (kind(huge(1.0_dp)) /= dp) error stop

    print *, huge(arr1)
    if (any(huge(arr1) /= [2147483647, 2147483647, 2147483647])) error stop
    print *, huge(arr2)
    if (any(abs((huge(arr2) - [3.40282347e+38, 3.40282347e+38, 3.40282347e+38]) / 3.40282347e+38) > 1e-6)) error stop
    
end program intrinsics_137