OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gfortran.dg/] [int_1.f90] - Blame information for rev 316

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 302 jeremybenn
! { dg-do run }
2
! { dg-options "-std=gnu" }
3
!
4
! 13.7.53    INT(A [, KIND])
5
!
6
! Description.  Convert to integer type.
7
! Class.       Elemental function.
8
! Arguments.
9
!    A               shall be of type integer, real, or complex,
10
!                    or a boz-literal-constant .
11
!    KIND (optional) shall be a scalar integer initialization expression.
12
!
13
! Result Characteristics. Integer. If KIND is present, the kind type
14
!    parameter is that specified by the value of KIND; otherwise, the
15
!    kind type parameter is that of default integer type.
16
!
17
! Result Value.
18
!
19
!    Case (1):  If A is of type integer, INT (A) = A.
20
!
21
!    Case (2):  If A is of type real, there are two cases:
22
!      (a) if |A| < 1, INT (A) has the value 0
23
!      (b) if |A| .ge. 1, INT (A) is the integer whose magnitude is the
24
!          largest integer that does not exceed the magnitude of A and
25
!          whose sign is the same as the sign of A.
26
!
27
!    Case (3):  If A is of type complex, INT(A) = INT(REAL(A, KIND(A))).
28
!
29
!    Case (4):  If A is a boz-literal-constant, it is treated as if it were
30
!               an int-literal-constant with a kind-param that specifies the
31
!               representation method with the largest decimal exponent range
32
!               supported by the processor.
33
!
34
!    Example. INT (­3.7) has the value ­3.
35
!
36
module mykinds
37
   integer, parameter :: ik1 = selected_int_kind(2)
38
   integer, parameter :: ik2 = selected_int_kind(4)
39
   integer, parameter :: ik4 = selected_int_kind(9)
40
   integer, parameter :: ik8 = selected_int_kind(18)
41
   integer, parameter :: sp = selected_real_kind(6,30)
42
   integer, parameter :: dp = selected_real_kind(15,300)
43
   integer, parameter :: ck = kind('a')
44
end module mykinds
45
 
46
program test_int
47
 
48
   use mykinds
49
 
50
   integer(ik1) i1
51
   integer(ik2) i2
52
   integer(ik4) i4
53
   integer(ik8) i8
54
   real(sp) r4
55
   real(dp) r8
56
   complex(sp) c4
57
   complex(dp) c8
58
   !
59
   ! Case 1
60
   !
61
   i1 = int(-3)
62
   i2 = int(-3)
63
   i4 = int(-3)
64
   i8 = int(-3)
65
   if (i1 /= -3_ik1 .or. i2 /= -3_ik2) call abort
66
   if (i4 /= -3_ik4 .or. i8 /= -3_ik8) call abort
67
 
68
   i1 = int(5,  ik1)
69
   i2 = int(i1, ik2)
70
   i4 = int(i1, ik4)
71
   i8 = int(i1, ik8)
72
   if (i1 /= 5_ik1 .or. i2 /= 5_ik2) call abort
73
   if (i4 /= 5_ik4 .or. i8 /= 5_ik8) call abort
74
 
75
   i8 = int(10, ik8)
76
   i1 = int(i8, ik1)
77
   i2 = int(i8, ik2)
78
   i4 = int(i8, ik4)
79
   if (i1 /= 10_ik1 .or. i2 /= 10_ik2) call abort
80
   if (i4 /= 10_ik4 .or. i8 /= 10_ik8) call abort
81
   !
82
   ! case 2(b)
83
   !
84
   r4 = -3.7_sp
85
   i1 = int(r4,  ik1)
86
   i2 = int(r4, ik2)
87
   i4 = int(r4, ik4)
88
   i8 = int(r4, ik8)
89
   if (i1 /= -3_ik1 .or. i2 /= -3_ik2) call abort
90
   if (i4 /= -3_ik4 .or. i8 /= -3_ik8) call abort
91
 
92
   r8 = -3.7_dp
93
   i1 = int(r8,  ik1)
94
   i2 = int(r8, ik2)
95
   i4 = int(r8, ik4)
96
   i8 = int(r8, ik8)
97
   if (i1 /= -3_ik1 .or. i2 /= -3_ik2) call abort
98
   if (i4 /= -3_ik4 .or. i8 /= -3_ik8) call abort
99
   !
100
   ! Case 2(a)
101
   !
102
   r4 = -3.7E-1_sp
103
   i1 = int(r4, ik1)
104
   i2 = int(r4, ik2)
105
   i4 = int(r4, ik4)
106
   i8 = int(r4, ik8)
107
   if (i1 /= 0_ik1 .or. i2 /= 0_ik2) call abort
108
   if (i4 /= 0_ik4 .or. i8 /= 0_ik8) call abort
109
 
110
   r8 = -3.7E-1_dp
111
   i1 = int(r8, ik1)
112
   i2 = int(r8, ik2)
113
   i4 = int(r8, ik4)
114
   i8 = int(r8, ik8)
115
   if (i1 /= 0_ik1 .or. i2 /= 0_ik2) call abort
116
   if (i4 /= 0_ik4 .or. i8 /= 0_ik8) call abort
117
   !
118
   ! Case 3
119
   !
120
   c4 = (-3.7E-1_sp,3.7E-1_sp)
121
   i1 = int(c4, ik1)
122
   i2 = int(c4, ik2)
123
   i4 = int(c4, ik4)
124
   i8 = int(c4, ik8)
125
   if (i1 /= 0_ik1 .or. i2 /= 0_ik2) call abort
126
   if (i4 /= 0_ik4 .or. i8 /= 0_ik8) call abort
127
 
128
   c8 = (-3.7E-1_dp,3.7E-1_dp)
129
   i1 = int(c8, ik1)
130
   i2 = int(c8, ik2)
131
   i4 = int(c8, ik4)
132
   i8 = int(c8, ik8)
133
   if (i1 /= 0_ik1 .or. i2 /= 0_ik2) call abort
134
   if (i4 /= 0_ik4 .or. i8 /= 0_ik8) call abort
135
 
136
   c4 = (-3.7_sp,3.7_sp)
137
   i1 = int(c4, ik1)
138
   i2 = int(c4, ik2)
139
   i4 = int(c4, ik4)
140
   i8 = int(c4, ik8)
141
   if (i1 /= -3_ik1 .or. i2 /= -3_ik2) call abort
142
   if (i4 /= -3_ik4 .or. i8 /= -3_ik8) call abort
143
 
144
   c8 = (3.7_dp,3.7_dp)
145
   i1 = int(c8, ik1)
146
   i2 = int(c8, ik2)
147
   i4 = int(c8, ik4)
148
   i8 = int(c8, ik8)
149
   if (i1 /= 3_ik1 .or. i2 /= 3_ik2) call abort
150
   if (i4 /= 3_ik4 .or. i8 /= 3_ik8) call abort
151
   !
152
   ! Case 4
153
   !
154
   i1 = int(b'0011', ik1)
155
   i2 = int(b'0011', ik2)
156
   i4 = int(b'0011', ik4)
157
   i8 = int(b'0011', ik8)
158
   if (i1 /= 3_ik1 .or. i2 /= 3_ik2) call abort
159
   if (i4 /= 3_ik4 .or. i8 /= 3_ik8) call abort
160
   i1 = int(o'0011', ik1)
161
   i2 = int(o'0011', ik2)
162
   i4 = int(o'0011', ik4)
163
   i8 = int(o'0011', ik8)
164
   if (i1 /= 9_ik1 .or. i2 /= 9_ik2) call abort
165
   if (i4 /= 9_ik4 .or. i8 /= 9_ik8) call abort
166
   i1 = int(z'0011', ik1)
167
   i2 = int(z'0011', ik2)
168
   i4 = int(z'0011', ik4)
169
   i8 = int(z'0011', ik8)
170
   if (i1 /= 17_ik1 .or. i2 /= 17_ik2) call abort
171
   if (i4 /= 17_ik4 .or. i8 /= 17_ik8) call abort
172
 
173
end program test_int
174
 
175
! { dg-final { cleanup-modules "mykinds" } }

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.