aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/unsigned_5.f90
blob: b8b956ecdf671a2b5b923689824f697282b528d5 (plain)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
! { dg-do run }
! { dg-options "-funsigned" }
! Test conversions from unsigned to different data types by
! doing some I/O.
program main
  implicit none
  integer :: vi,i
  integer, parameter :: n_int = 16, n_real = 8
  unsigned(kind=1) :: u1
  unsigned(kind=2) :: u2
  unsigned(kind=4) :: u4
  unsigned(kind=8) :: u8
  unsigned :: u
  integer, dimension(n_int) :: ires
  real(kind=8), dimension(n_real) :: rres
  real(kind=8) :: vr
  complex (kind=8) :: vc
  data ires /11,12,14,18,21,22,24,28,41,42,44,48,81,82,84,88/
  data rres /14., 18., 24., 28., 44., 48., 84., 88./
  open (10,status="scratch")

  write (10,*) int(11u_1,1)
  write (10,*) int(12u_1,2)
  write (10,*) int(14u_1,4)
  write (10,*) int(18u_1,8)

  write (10,*) int(21u_2,1)
  write (10,*) int(22u_2,2)
  write (10,*) int(24u_2,4)
  write (10,*) int(28u_2,8)

  write (10,*) int(41u_4,1)
  write (10,*) int(42u_4,2)
  write (10,*) int(44u_4,4)
  write (10,*) int(48u_4,8)

  write (10,*) int(81u_8,1)
  write (10,*) int(82u_8,2)
  write (10,*) int(84u_8,4)
  write (10,*) int(88u_8,8)

  rewind 10
  do i=1,n_int
     read (10,*) vi
     if (vi /= ires(i)) error stop 1
  end do

  rewind 10
  u1 = 11u; write (10,*) int(u1,1)
  u1 = 12u; write (10,*) int(u1,2)
  u1 = 14u; write (10,*) int(u1,4)
  u1 = 18u; write (10,*) int(u1,8)

  u2 = 21u; write (10,*) int(u2,1)
  u2 = 22u; write (10,*) int(u2,2)
  u2 = 24u; write (10,*) int(u2,4)
  u2 = 28u; write (10,*) int(u2,8)

  u4 = 41u; write (10,*) int(u4,1)
  u4 = 42u; write (10,*) int(u4,2)
  u4 = 44u; write (10,*) int(u4,4)
  u4 = 48u; write (10,*) int(u4,8)

  u8 = 81u; write (10,*) int(u8,1)
  u8 = 82u; write (10,*) int(u8,2)
  u8 = 84u; write (10,*) int(u8,4)
  u8 = 88u; write (10,*) int(u8,8)

  rewind 10
  do i=1,n_int
     read (10,*) vi
     if (vi /= ires(i)) error stop 2
  end do

  rewind 10
  write (10,*) real(14u_1,4)
  write (10,*) real(18u_1,8)
  write (10,*) real(24u_2,4)
  write (10,*) real(28u_2,8)
  write (10,*) real(44u_4,4)
  write (10,*) real(48u_4,8)
  write (10,*) real(84u_8,4)
  write (10,*) real(88u_8,8)

  rewind 10
  do i=1, n_real
     read (10, *) vr
     if (vr /= rres(i)) error stop 3
  end do

  rewind 10
  u1 = 14u_1; write (10,*) real(u1,4)
  u1 = 18u_1; write (10,*) real(u1,8)
  u2 = 24u_2; write (10,*) real(u2,4)
  u2 = 28u_2; write (10,*) real(u2,8)
  u4 = 44u_4; write (10,*) real(u4,4)
  u4 = 48u_4; write (10,*) real(u4,8)
  u8 = 84u_4; write (10,*) real(u8,4)
  u8 = 88u_4; write (10,*) real(u8,8)

  rewind 10
  do i=1, n_real
     read (10, *) vr
     if (vr /= rres(i)) error stop 4
  end do

  rewind 10
  u1 = 14u_1; write (10,*) cmplx(14u_1,u1,kind=4)
  u1 = 18u_1; write (10,*) cmplx(18u_1,u1,kind=8)
  u2 = 24u_2; write (10,*) cmplx(24u_2,u2,kind=4)
  u2 = 28u_2; write (10,*) cmplx(28u_2,u2,kind=8)
  u4 = 44u_4; write (10,*) cmplx(44u_4,u4,kind=4)
  u4 = 48u_8; write (10,*) cmplx(48u_4,u4,kind=8)
  u8 = 84u_8; write (10,*) cmplx(84u_8,u8,kind=4)
  u8 = 88u_8; write (10,*) cmplx(88u_8,u8,kind=8)

  rewind 10
  do i=1,n_real
     read (10, *) vc
     if (real(vc) /= rres(i)) error stop 5
     if (aimag(vc) /= rres(i)) error stop 6
  end do
end program main