File: intrinsics_216.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 (109 lines) | stat: -rw-r--r-- 4,571 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
program intrinsics_216
    use, intrinsic :: iso_fortran_env, only: dp => real64, sp => real32
    real(sp) :: a, b, c
    real(dp) :: d, e, f
    integer :: i

    real(dp) :: w(18)
    real(sp) :: x(19)
    real(dp) :: expected_w(18)
    real(sp) :: expected_x(19)
         
    real(dp), parameter :: res(18) = tand([18.7234114226922479_dp, 31.7355871858161613_dp, 46.7189879975828859_dp, &
    -18.7234114226922479_dp, -31.7355871858161613_dp, -46.7189879975828859_dp,  &
    -88.1889782219856926_dp, -87.4387217993888584_dp, -86.8629570229495442_dp, -86.3775039053440139_dp, &
    -85.9497575149846398_dp, -85.5629967823348778_dp, -85.2072890476047604_dp, -84.8761629060389708_dp, &
    -84.5651234927047142_dp, -84.2708982602068915_dp, -83.9910168022338581_dp, -83.7235599383380418_dp])

    real(sp), parameter :: res_sp(19) = tand([17.7966309_sp, 27.7443714_sp, 36.0546188_sp, &
        -17.7966309_sp, -27.7443714_sp, -36.0546188_sp, -45.0000000_sp, -44.9713364_sp, -44.9713364_sp, &
        -44.9426460_sp, -44.9426460_sp, -44.9139252_sp, -44.9139252_sp, -44.8851776_sp, &
        -44.8851776_sp, -44.8564034_sp, -44.8564034_sp, -44.8275948_sp, -44.8275948_sp])

    expected_w = [0.33893680906656531_dp, 0.61847095166537402_dp, 1.0618790637212407_dp, &
    -0.33893680906656531_dp, -0.61847095166537402_dp, -1.0618790637212407_dp, -31.626730189083542_dp, &
    -22.355091700495215_dp, -18.246009265584753_dp, -15.795576912540882_dp, -14.122687866626119_dp, &
    -12.887346837923063_dp, -11.926878796582502_dp, -11.152376450806424_dp, -10.510603475834616_dp, &
    -9.9674784142684150_dp, -9.5000362475747657_dp, -9.0921624583853777_dp]

    w = [18.7234114226922479_dp, 31.7355871858161613_dp, 46.7189879975828859_dp, -18.7234114226922479_dp, &
    -31.7355871858161613_dp, -46.7189879975828859_dp, -88.1889782219856926_dp, -87.4387217993888584_dp, &
    -86.8629570229495442_dp, -86.3775039053440139_dp, -85.9497575149846398_dp, -85.5629967823348778_dp, -85.2072890476047604_dp, &
    -84.8761629060389708_dp, -84.5651234927047142_dp, -84.2708982602068915_dp, -83.9910168022338581_dp, &
    -83.7235599383380418_dp]

    x = [17.7966309_sp, 27.7443714_sp, 36.0546188_sp, -17.7966309_sp, &
        -27.7443714_sp, -36.0546188_sp, -45.0000000_sp, -44.9713364_sp, -44.9713364_sp, &
        -44.9426460_sp, -44.9426460_sp, -44.9139252_sp, -44.9139252_sp, -44.8851776_sp, &
        -44.8851776_sp, -44.8564034_sp, -44.8564034_sp, -44.8275948_sp, -44.8275948_sp]

    expected_x = [0.320999980_sp, 0.526000023_sp, 0.727999985_sp, -0.320999980_sp, &
        -0.526000023_sp, -0.727999985_sp, -1.00000000_sp, -0.998999894_sp, -0.998999894_sp, &
        -0.997999907_sp, -0.997999907_sp, -0.996999860_sp, -0.996999860_sp, -0.995999992_sp, &
        -0.995999992_sp, -0.995000064_sp, -0.995000064_sp, -0.993999898_sp, -0.993999898_sp]

    do i = 1, size(res)
        print *, res(i)
        if (abs(res(i) - expected_w(i)) > 1e-12_dp) error stop
    end do

    do i = 1, size(w)
        print *, tand(w(i))
        if (abs(tand(w(i)) - expected_w(i)) > 1e-12_dp) error stop
    end do

    do i = 1, size(res_sp)
        print *, res_sp(i)
        if (abs(res_sp(i) - expected_x(i)) > 1e-5) error stop
    end do

    do i = 1, size(x)
        print *, tand(x(i))
        if (abs(tand(x(i)) - expected_x(i)) > 1e-5) error stop
    end do

    a = 18.928_sp
    b = 32.627_sp
    c = 47.123_sp

    d = 18.829262783_dp
    e = 32.727262783_dp
    f = 47.223262783_dp

    print *, tand(a)
    if (abs(tand(a) - 0.342922598) > 1e-3) error stop

    print *, tand(b)
    if (abs(tand(b) - 0.640190780) > 1e-3) error stop

    print *, tand(c)
    if (abs(tand(c) - 1.07699490) > 1e-3) error stop

    print *, tand(18.928_sp)
    if (abs(tand(18.928_sp) - 0.342922598) > 1e-3) error stop

    print *, tand(32.627_sp)
    if (abs(tand(32.627_sp) - 0.640190780) > 1e-3) error stop

    print *, tand(47.123_sp)
    if (abs(tand(47.123_sp) - 1.07699490) > 1e-3) error stop

    print *, tand(d)
    if (abs(tand(d) - 0.34099778889496968) > 1e-3) error stop

    print *, tand(e)
    if (abs(tand(e) - 0.64266073192537432) > 1e-3) error stop

    print *, tand(f)
    if (abs(tand(f) - 1.0807816506290617) > 1e-3) error stop

    print *, tand(18.829262783_dp)
    if (abs(tand(18.829262783_dp) - 0.34099778889496968) > 1e-3) error stop

    print *, tand(32.727262783_dp)
    if (abs(tand(32.727262783_dp) - 0.64266073192537432) > 1e-3) error stop

    print *, tand(47.223262783_dp)
    if (abs(tand(47.223262783_dp) - 1.0807816506290617) > 1e-3) error stop

end program