@@ -12,7 +12,7 @@ program test_trapz
12
12
call test_trapz_weights_sp
13
13
call test_trapz_weights_dp
14
14
call test_trapz_weights_qp
15
-
15
+
16
16
call test_trapz_zero_sp
17
17
call test_trapz_zero_dp
18
18
call test_trapz_zero_qp
@@ -28,26 +28,26 @@ subroutine test_trapz_sp
28
28
integer :: i
29
29
30
30
print * , " test_trapz_sp"
31
-
31
+
32
32
y = [(real (i-1 , sp), i = 1 , n)]
33
33
34
34
val = trapz(y, 1.0_sp )
35
35
ans = 128.0_sp
36
- call assert(val == ans)
36
+ call assert(abs ( val - ans) < epsilon (ans) )
37
37
38
38
val = trapz(y, 0.5_sp )
39
39
ans = 64.0_sp
40
- call assert(val == ans)
40
+ call assert(abs ( val - ans) < epsilon (ans) )
41
41
42
42
x = [((i-1 )* 4.0_sp / real (n-1 , sp), i = 1 , n)]
43
43
val = trapz(y, x)
44
44
ans = 32.0_sp
45
- call assert(val == ans)
45
+ call assert(abs ( val - ans) < epsilon (ans) )
46
46
47
47
x = y** 2
48
48
val = trapz(y, x)
49
49
ans = 2728.0_sp
50
- call assert(val == ans)
50
+ call assert(abs ( val - ans) < epsilon (ans) )
51
51
end subroutine test_trapz_sp
52
52
53
53
subroutine test_trapz_dp
@@ -59,26 +59,26 @@ subroutine test_trapz_dp
59
59
integer :: i
60
60
61
61
print * , " test_trapz_dp"
62
-
62
+
63
63
y = [(real (i-1 , dp), i = 1 , n)]
64
64
65
65
val = trapz(y, 1.0_dp )
66
66
ans = 128.0_dp
67
- call assert(val == ans)
67
+ call assert(abs ( val - ans) < epsilon (ans) )
68
68
69
69
val = trapz(y, 0.5_dp )
70
70
ans = 64.0_dp
71
- call assert(val == ans)
71
+ call assert(abs ( val - ans) < epsilon (ans) )
72
72
73
73
x = [((i-1 )* 4.0_dp / real (n-1 , dp), i = 1 , n)]
74
74
val = trapz(y, x)
75
75
ans = 32.0_dp
76
- call assert(val == ans)
76
+ call assert(abs ( val - ans) < epsilon (ans) )
77
77
78
78
x = y** 2
79
79
val = trapz(y, x)
80
80
ans = 2728.0_sp
81
- call assert(val == ans)
81
+ call assert(abs ( val - ans) < epsilon (ans) )
82
82
end subroutine test_trapz_dp
83
83
84
84
@@ -91,26 +91,26 @@ subroutine test_trapz_qp
91
91
integer :: i
92
92
93
93
print * , " test_trapz_qp"
94
-
94
+
95
95
y = [(real (i-1 , qp), i = 1 , n)]
96
96
97
97
val = trapz(y, 1.0_qp )
98
98
ans = 128.0_qp
99
- call assert(val == ans)
99
+ call assert(abs ( val - ans) < epsilon (ans) )
100
100
101
101
val = trapz(y, 0.5_qp )
102
102
ans = 64.0_qp
103
- call assert(val == ans)
103
+ call assert(abs ( val - ans) < epsilon (ans) )
104
104
105
105
x = [((i-1 )* 4.0_qp / real (n-1 , qp), i = 1 , n)]
106
106
val = trapz(y, x)
107
107
ans = 32.0_qp
108
- call assert(val == ans)
108
+ call assert(abs ( val - ans) < epsilon (ans) )
109
109
110
110
x = y** 2
111
111
val = trapz(y, x)
112
112
ans = 2728.0_qp
113
- call assert(val == ans)
113
+ call assert(abs ( val - ans) < epsilon (ans) )
114
114
end subroutine test_trapz_qp
115
115
116
116
@@ -124,20 +124,20 @@ subroutine test_trapz_weights_sp
124
124
real (sp) :: ans
125
125
126
126
print * , " test_trapz_weights_sp"
127
-
127
+
128
128
y = [(real (i-1 , sp), i = 1 , n)]
129
129
130
130
x = y
131
131
w = trapz_weights(x)
132
132
val = dot_product (w, y)
133
133
ans = trapz(y, x)
134
- call assert(val == ans)
134
+ call assert(abs ( val - ans) < epsilon (ans) )
135
135
136
136
x = y** 2
137
137
w = trapz_weights(x)
138
138
val = dot_product (w, y)
139
139
ans = trapz(y, x)
140
- call assert(val == ans)
140
+ call assert(abs ( val - ans) < epsilon (ans) )
141
141
142
142
end subroutine test_trapz_weights_sp
143
143
@@ -152,24 +152,24 @@ subroutine test_trapz_weights_dp
152
152
real (dp) :: ans
153
153
154
154
print * , " test_trapz_weights_dp"
155
-
155
+
156
156
y = [(real (i-1 , dp), i = 1 , n)]
157
157
158
158
x = y
159
159
w = trapz_weights(x)
160
160
val = dot_product (w, y)
161
161
ans = trapz(y, x)
162
- call assert(val == ans)
162
+ call assert(abs ( val - ans) < epsilon (ans) )
163
163
164
164
x = y** 2
165
165
w = trapz_weights(x)
166
166
val = dot_product (w, y)
167
167
ans = trapz(y, x)
168
- call assert(val == ans)
168
+ call assert(abs ( val - ans) < epsilon (ans) )
169
169
170
170
end subroutine test_trapz_weights_dp
171
171
172
-
172
+
173
173
subroutine test_trapz_weights_qp
174
174
integer , parameter :: n = 17
175
175
real (qp), dimension (n) :: y
@@ -180,20 +180,20 @@ subroutine test_trapz_weights_qp
180
180
real (qp) :: ans
181
181
182
182
print * , " test_trapz_weights_qp"
183
-
183
+
184
184
y = [(real (i-1 , qp), i = 1 , n)]
185
185
186
186
x = y
187
187
w = trapz_weights(x)
188
188
val = dot_product (w, y)
189
189
ans = trapz(y, x)
190
- call assert(val == ans)
190
+ call assert(abs ( val - ans) < epsilon (ans) )
191
191
192
192
x = y** 2
193
193
w = trapz_weights(x)
194
194
val = dot_product (w, y)
195
195
ans = trapz(y, x)
196
- call assert(val == ans)
196
+ call assert(abs ( val - ans) < epsilon (ans) )
197
197
198
198
end subroutine test_trapz_weights_qp
199
199
@@ -202,35 +202,35 @@ subroutine test_trapz_zero_sp
202
202
real (sp), dimension (0 ) :: a
203
203
204
204
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 ) )
210
210
end subroutine test_trapz_zero_sp
211
211
212
212
213
213
subroutine test_trapz_zero_dp
214
214
real (dp), dimension (0 ) :: a
215
215
216
216
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 ) )
222
222
end subroutine test_trapz_zero_dp
223
223
224
224
225
225
subroutine test_trapz_zero_qp
226
226
real (qp), dimension (0 ) :: a
227
227
228
228
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 ) )
234
234
end subroutine test_trapz_zero_qp
235
-
235
+
236
236
end program test_trapz
0 commit comments