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
|