-
Notifications
You must be signed in to change notification settings - Fork 1
/
display_masks_mod.f08
98 lines (84 loc) · 2.71 KB
/
display_masks_mod.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
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
module display_masks_mod
use ISO_FORTRAN_ENV, only : INT64, REAL64
use unum_t_mod
use unum_env_mod, only : Get_fsizemask,&
Get_esizemask,&
Get_efsizemask,&
Get_ubitmask,&
Get_utagmask,&
Get_maxubits
implicit none
interface Display_mask
module procedure Display_mask_int32
module procedure Display_mask_int64
module procedure Display_mask_unum_t
end interface Display_mask
contains
subroutine Display_fsizemask ()
implicit none
type (unum_t) :: fsizemask
fsizemask = Get_fsizemask ()
call Display_mask (fsizemask)
end subroutine Display_fsizemask
subroutine Display_esizemask ()
implicit none
type (unum_t) :: esizemask
esizemask = Get_esizemask ()
call Display_mask (esizemask)
end subroutine Display_esizemask
subroutine Display_efsizemask ()
implicit none
type (unum_t) :: efsizemask
efsizemask = Get_efsizemask ()
call Display_mask (efsizemask)
end subroutine Display_efsizemask
subroutine Display_ubitmask ()
implicit none
type (unum_t) :: ubitmask
ubitmask = Get_ubitmask ()
call Display_mask (ubitmask)
end subroutine Display_ubitmask
subroutine Display_utagmask ()
implicit none
type (unum_t) :: utagmask
utagmask = Get_utagmask ()
call Display_mask (utagmask)
end subroutine Display_utagmask
subroutine Display_mask_int64 (maskvar)
implicit none
integer :: i
integer (INT64), intent (in) :: maskvar
character (len = Get_maxubits ()) :: display_str
character (len = 1) :: temp_str
do i = 0, Get_maxubits () -1 !Bit indeces are zero based
if (btest (maskvar, i)) then
temp_str = '1'
else
temp_str = '0'
end if
display_str = temp_str(1:1) // display_str
end do
print *, display_str
end subroutine Display_mask_int64
subroutine Display_mask_int32 (maskvar)
implicit none
integer :: i
integer, intent (in) :: maskvar
character (len = Get_maxubits ()) :: display_str
character (len = 1) :: temp_str
do i = 0, Get_maxubits () -1 !Bit indeces are zero based
if (btest (maskvar, i)) then
temp_str = '1'
else
temp_str = '0'
end if
display_str = temp_str(1:1) // display_str
end do
print *, display_str
end subroutine Display_mask_int32
subroutine Display_mask_unum_t (maskvar)
implicit none
type (unum_t) :: maskvar
call Display_mask (maskvar%u)
end subroutine Display_mask_unum_t
end module display_masks_mod