Skip to content

Commit d1c91ec

Browse files
committed
replace f.p. equality checks with tolerance checks
1 parent f7d732d commit d1c91ec

File tree

1 file changed

+42
-42
lines changed

1 file changed

+42
-42
lines changed

src/tests/quadrature/test_trapz.f90

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ program test_trapz
1212
call test_trapz_weights_sp
1313
call test_trapz_weights_dp
1414
call test_trapz_weights_qp
15-
15+
1616
call test_trapz_zero_sp
1717
call test_trapz_zero_dp
1818
call test_trapz_zero_qp
@@ -28,26 +28,26 @@ subroutine test_trapz_sp
2828
integer :: i
2929

3030
print *, "test_trapz_sp"
31-
31+
3232
y = [(real(i-1, sp), i = 1, n)]
3333

3434
val = trapz(y, 1.0_sp)
3535
ans = 128.0_sp
36-
call assert(val == ans)
36+
call assert(abs(val - ans) < epsilon(ans))
3737

3838
val = trapz(y, 0.5_sp)
3939
ans = 64.0_sp
40-
call assert(val == ans)
40+
call assert(abs(val - ans) < epsilon(ans))
4141

4242
x = [((i-1)*4.0_sp/real(n-1, sp), i = 1, n)]
4343
val = trapz(y, x)
4444
ans = 32.0_sp
45-
call assert(val == ans)
45+
call assert(abs(val - ans) < epsilon(ans))
4646

4747
x = y**2
4848
val = trapz(y, x)
4949
ans = 2728.0_sp
50-
call assert(val == ans)
50+
call assert(abs(val - ans) < epsilon(ans))
5151
end subroutine test_trapz_sp
5252

5353
subroutine test_trapz_dp
@@ -59,26 +59,26 @@ subroutine test_trapz_dp
5959
integer :: i
6060

6161
print *, "test_trapz_dp"
62-
62+
6363
y = [(real(i-1, dp), i = 1, n)]
6464

6565
val = trapz(y, 1.0_dp)
6666
ans = 128.0_dp
67-
call assert(val == ans)
67+
call assert(abs(val - ans) < epsilon(ans))
6868

6969
val = trapz(y, 0.5_dp)
7070
ans = 64.0_dp
71-
call assert(val == ans)
71+
call assert(abs(val - ans) < epsilon(ans))
7272

7373
x = [((i-1)*4.0_dp/real(n-1, dp), i = 1, n)]
7474
val = trapz(y, x)
7575
ans = 32.0_dp
76-
call assert(val == ans)
76+
call assert(abs(val - ans) < epsilon(ans))
7777

7878
x = y**2
7979
val = trapz(y, x)
8080
ans = 2728.0_sp
81-
call assert(val == ans)
81+
call assert(abs(val - ans) < epsilon(ans))
8282
end subroutine test_trapz_dp
8383

8484

@@ -91,26 +91,26 @@ subroutine test_trapz_qp
9191
integer :: i
9292

9393
print *, "test_trapz_qp"
94-
94+
9595
y = [(real(i-1, qp), i = 1, n)]
9696

9797
val = trapz(y, 1.0_qp)
9898
ans = 128.0_qp
99-
call assert(val == ans)
99+
call assert(abs(val - ans) < epsilon(ans))
100100

101101
val = trapz(y, 0.5_qp)
102102
ans = 64.0_qp
103-
call assert(val == ans)
103+
call assert(abs(val - ans) < epsilon(ans))
104104

105105
x = [((i-1)*4.0_qp/real(n-1, qp), i = 1, n)]
106106
val = trapz(y, x)
107107
ans = 32.0_qp
108-
call assert(val == ans)
108+
call assert(abs(val - ans) < epsilon(ans))
109109

110110
x = y**2
111111
val = trapz(y, x)
112112
ans = 2728.0_qp
113-
call assert(val == ans)
113+
call assert(abs(val - ans) < epsilon(ans))
114114
end subroutine test_trapz_qp
115115

116116

@@ -124,20 +124,20 @@ subroutine test_trapz_weights_sp
124124
real(sp) :: ans
125125

126126
print *, "test_trapz_weights_sp"
127-
127+
128128
y = [(real(i-1, sp), i = 1, n)]
129129

130130
x = y
131131
w = trapz_weights(x)
132132
val = dot_product(w, y)
133133
ans = trapz(y, x)
134-
call assert(val == ans)
134+
call assert(abs(val - ans) < epsilon(ans))
135135

136136
x = y**2
137137
w = trapz_weights(x)
138138
val = dot_product(w, y)
139139
ans = trapz(y, x)
140-
call assert(val == ans)
140+
call assert(abs(val - ans) < epsilon(ans))
141141

142142
end subroutine test_trapz_weights_sp
143143

@@ -152,24 +152,24 @@ subroutine test_trapz_weights_dp
152152
real(dp) :: ans
153153

154154
print *, "test_trapz_weights_dp"
155-
155+
156156
y = [(real(i-1, dp), i = 1, n)]
157157

158158
x = y
159159
w = trapz_weights(x)
160160
val = dot_product(w, y)
161161
ans = trapz(y, x)
162-
call assert(val == ans)
162+
call assert(abs(val - ans) < epsilon(ans))
163163

164164
x = y**2
165165
w = trapz_weights(x)
166166
val = dot_product(w, y)
167167
ans = trapz(y, x)
168-
call assert(val == ans)
168+
call assert(abs(val - ans) < epsilon(ans))
169169

170170
end subroutine test_trapz_weights_dp
171171

172-
172+
173173
subroutine test_trapz_weights_qp
174174
integer, parameter :: n = 17
175175
real(qp), dimension(n) :: y
@@ -180,20 +180,20 @@ subroutine test_trapz_weights_qp
180180
real(qp) :: ans
181181

182182
print *, "test_trapz_weights_qp"
183-
183+
184184
y = [(real(i-1, qp), i = 1, n)]
185185

186186
x = y
187187
w = trapz_weights(x)
188188
val = dot_product(w, y)
189189
ans = trapz(y, x)
190-
call assert(val == ans)
190+
call assert(abs(val - ans) < epsilon(ans))
191191

192192
x = y**2
193193
w = trapz_weights(x)
194194
val = dot_product(w, y)
195195
ans = trapz(y, x)
196-
call assert(val == ans)
196+
call assert(abs(val - ans) < epsilon(ans))
197197

198198
end subroutine test_trapz_weights_qp
199199

@@ -202,35 +202,35 @@ subroutine test_trapz_zero_sp
202202
real(sp), dimension(0) :: a
203203

204204
print *, "test_trapz_zero_sp"
205-
206-
call assert(trapz(a, 1.0_sp) == 0.0_sp)
207-
call assert(trapz([1.0_sp], 1.0_sp) == 0.0_sp)
208-
call assert(trapz(a, a) == 0.0_sp)
209-
call assert(trapz([1.0_sp], [1.0_sp]) == 0.0_sp)
205+
206+
call assert(abs(trapz(a, 1.0_sp)) < epsilon(0.0_sp))
207+
call assert(abs(trapz([1.0_sp], 1.0_sp)) < epsilon(0.0_sp))
208+
call assert(abs(trapz(a, a)) < epsilon(0.0_sp))
209+
call assert(abs(trapz([1.0_sp], [1.0_sp])) < epsilon(0.0_sp))
210210
end subroutine test_trapz_zero_sp
211211

212212

213213
subroutine test_trapz_zero_dp
214214
real(dp), dimension(0) :: a
215215

216216
print *, "test_trapz_zero_dp"
217-
218-
call assert(trapz(a, 1.0_dp) == 0.0_dp)
219-
call assert(trapz([1.0_dp], 1.0_dp) == 0.0_dp)
220-
call assert(trapz(a, a) == 0.0_dp)
221-
call assert(trapz([1.0_dp], [1.0_dp]) == 0.0_dp)
217+
218+
call assert(trapz(a, 1.0_dp)) < epsilon(0.0_dp))
219+
call assert(abs(trapz([1.0_dp], 1.0_dp)) < epsilon(0.0_dp))
220+
call assert(abs(trapz(a, a)) < epsilon(0.0_dp))
221+
call assert(abs(trapz([1.0_dp], [1.0_dp])) < epsilon(0.0_dp))
222222
end subroutine test_trapz_zero_dp
223223

224224

225225
subroutine test_trapz_zero_qp
226226
real(qp), dimension(0) :: a
227227

228228
print *, "test_trapz_zero_qp"
229-
230-
call assert(trapz(a, 1.0_qp) == 0.0_qp)
231-
call assert(trapz([1.0_qp], 1.0_qp) == 0.0_qp)
232-
call assert(trapz(a, a) == 0.0_qp)
233-
call assert(trapz([1.0_qp], [1.0_qp]) == 0.0_qp)
229+
230+
call assert(trapz(a, 1.0_qp) < epsilon(0.0_qp))
231+
call assert(trapz([1.0_qp], 1.0_qp) < epsilon(0.0_qp))
232+
call assert(trapz(a, a) < epsilon(0.0_qp))
233+
call assert(trapz([1.0_qp], [1.0_qp]) < epsilon(0.0_qp))
234234
end subroutine test_trapz_zero_qp
235-
235+
236236
end program test_trapz

0 commit comments

Comments
 (0)