-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathunum_type_conversion_test.f08
66 lines (49 loc) · 1.58 KB
/
unum_type_conversion_test.f08
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
program unum_type_conversion_test
use ISO_FORTRAN_ENV, only : REAL64
use unum_env_mod
use unum_to_float_mod
use real_to_unum_mod
use display_unum_as_real_mod
use display_masks_mod
use unum_t_mod
use display_env_mod, only : Display_unum => Display_env,&
Display_posinfu,&
Display_neginfu
implicit none
real (REAL64) :: real_temp
real (REAL64) :: temp_result
type (unum_t) :: unum_temp
!integer (INT64) :: unum_pi = b'011001001000011111101111' !(1,4) env
call Set_unum_env (4,5)
!print *, 'esize mask'
!call Display_esizemask ()
!print *, 'fsize mask'
!call Display_fsizemask ()
!print *, 'efsize mask'
!call Display_efsizemask ()
!print *, 'ubit mask'
!call Display_ubitmask ()
!print *, 'utag mask'
!call Display_utagmask ()
print *, 'Max ubits = ', Get_maxubits ()
print *, 'Maxreal = ', Get_maxreal ()
print *, 'smallnormal'
print *, U2f (Get_smallnormalu ())
!print *, 'Approximate Pi'
!print *, '(', u2f (unum_pi), ',', u2f (unum_pi + Get_ulpu ()), ')'
print *, 'Positive infinity'
call Display_posinfu ()
print *, U2f (Get_posinfu ())
!print *, 'Signbigu'
!call Display_unum (Get_signbigu ())
print *, 'Negative infinity'
call Display_neginfu ()
print *, U2f (Get_neginfu ())
real_temp = 16.12
print *, 'Value in double precision is: ', real_temp
print *, 'Convert to unum'
unum_temp = X2u (real_temp)
call Display_unum (unum_temp)
print *, 'Convert back to real'
call Display_unum_as_real (unum_temp)
end program unum_type_conversion_test