Skip to content

Commit 2121952

Browse files
committed
add debug statements in test
1 parent 5081221 commit 2121952

1 file changed

Lines changed: 43 additions & 26 deletions

File tree

test/linalg/test_linalg_specialmatrices.fypp

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module test_specialmatrices
88
use stdlib_linalg_state, only: linalg_state_type
99
use stdlib_math, only: all_close
1010
use stdlib_specialmatrices
11+
use stdlib_strings, only: to_string
1112
implicit none
1213

1314
contains
@@ -59,15 +60,17 @@ contains
5960
! Test y = A @ x
6061
y1 = matmul(Amat, x)
6162
call spmv(A, x, y2)
62-
call check(error, all_close(y1, y2), .true.)
63+
call check(error, all_close(y1, y2), .true.,&
64+
"spmv(fail): y = A*x")
6365
if (allocated(error)) return
6466

6567
! Test y = A.T @ x
6668
y1 = 0.0_wp
6769
y2 = 0.0_wp
6870
y1 = matmul(transpose(Amat), x)
6971
call spmv(A, x, y2, op="T")
70-
call check(error, all_close(y1, y2), .true.)
72+
call check(error, all_close(y1, y2), .true.,&
73+
"spmv(fail): y = A.T*x")
7174
if (allocated(error)) return
7275

7376
#:if t1.startswith('complex')
@@ -76,7 +79,8 @@ contains
7679
y2 = 0.0_wp
7780
y1 = matmul(hermitian(Amat), x)
7881
call spmv(A, x, y2, op="H")
79-
call check(error, all_close(y1, y2), .true.)
82+
call check(error, all_close(y1, y2), .true.,&
83+
"spmv(fail): y = A.H*x")
8084
if (allocated(error)) return
8185
#:endif
8286

@@ -90,40 +94,44 @@ contains
9094
call random_number(y2)
9195
y1 = alpha * matmul(Amat, x) + beta * y2
9296
call spmv(A, x, y2, alpha=alpha, beta=beta)
93-
call check(error, all_close(y1, y2), .true.)
97+
call check(error, all_close(y1, y2), .true.,&
98+
"spmv(fail): y = alpha*A*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
9499
if (allocated(error)) return
95100
end do
96101
end do
97102

98-
! Test y = A @ x for random values of alpha and beta
103+
! Test y = alpha * A @ x + beta * y for random values of alpha and beta
99104
y1 = 0.0_wp
100105
call random_number(alpha)
101106
call random_number(beta)
102107
call random_number(y2)
103108
y1 = alpha * matmul(Amat, x) + beta * y2
104109
call spmv(A, x, y2, alpha=alpha, beta=beta)
105-
call check(error, all_close(y1, y2), .true.)
110+
call check(error, all_close(y1, y2), .true.,&
111+
"spmv(fail): y = alpha*A*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
106112
if (allocated(error)) return
107113

108-
! Test y = A.T @ x for random values of alpha and beta
114+
! Test y = alpha * A.T @ x beta * y for random values of alpha and beta
109115
y1 = 0.0_wp
110116
call random_number(alpha)
111117
call random_number(beta)
112118
call random_number(y2)
113119
y1 = alpha * matmul(transpose(Amat), x) + beta * y2
114120
call spmv(A, x, y2, alpha=alpha, beta=beta, op="T")
115-
call check(error, all_close(y1, y2), .true.)
121+
call check(error, all_close(y1, y2), .true.,&
122+
"spmv(fail): y = alpha*A.T*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
116123
if (allocated(error)) return
117124

118125
#:if t1.startswith('complex')
119-
! Test y = A.H @ x for random values of alpha and beta
126+
! Test y = alpha * A.H @ x + beta * y for random values of alpha and beta
120127
y1 = 0.0_wp
121128
call random_number(alpha)
122129
call random_number(beta)
123130
call random_number(y2)
124131
y1 = alpha * matmul(transpose(conjg((Amat))), x) + beta * y2
125132
call spmv(A, x, y2, alpha=alpha, beta=beta, op="H")
126-
call check(error, all_close(y1, y2), .true.)
133+
call check(error, all_close(y1, y2), .true.,&
134+
"spmv(fail): y = alpha*A.H*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
127135
if (allocated(error)) return
128136
#:endif
129137

@@ -163,15 +171,17 @@ contains
163171
! Test y = A @ x
164172
y1 = matmul(Amat, x)
165173
call spmv(A, x, y2)
166-
call check(error, all_close(y1, y2), .true.)
174+
call check(error, all_close(y1, y2), .true.,&
175+
"spmv(fail): y = A*x")
167176
if (allocated(error)) return
168177

169178
! Test y = A.T @ x
170179
y1 = 0.0_wp
171180
y2 = 0.0_wp
172181
y1 = matmul(transpose(Amat), x)
173182
call spmv(A, x, y2, op="T")
174-
call check(error, all_close(y1, y2), .true.)
183+
call check(error, all_close(y1, y2), .true.,&
184+
"spmv(fail): y = A.T*x")
175185
if (allocated(error)) return
176186

177187
#:if t1.startswith('complex')
@@ -180,7 +190,8 @@ contains
180190
y2 = 0.0_wp
181191
y1 = matmul(hermitian(Amat), x)
182192
call spmv(A, x, y2, op="H")
183-
call check(error, all_close(y1, y2), .true.)
193+
call check(error, all_close(y1, y2), .true.,&
194+
"spmv(fail): y = A.H*x")
184195
if (allocated(error)) return
185196
#:endif
186197

@@ -194,40 +205,44 @@ contains
194205
call random_number(y2)
195206
y1 = alpha * matmul(Amat, x) + beta * y2
196207
call spmv(A, x, y2, alpha=alpha, beta=beta)
197-
call check(error, all_close(y1, y2), .true.)
208+
call check(error, all_close(y1, y2), .true.,&
209+
"spmv(fail): y = alpha*A*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
198210
if (allocated(error)) return
199211
end do
200212
end do
201213

202-
! Test y = A @ x for random values of alpha and beta
214+
! Test y = alpha * A @ x + beta * y for random values of alpha and beta
203215
y1 = 0.0_wp
204216
call random_number(alpha)
205217
call random_number(beta)
206218
call random_number(y2)
207219
y1 = alpha * matmul(Amat, x) + beta * y2
208220
call spmv(A, x, y2, alpha=alpha, beta=beta)
209-
call check(error, all_close(y1, y2), .true.)
221+
call check(error, all_close(y1, y2), .true.,&
222+
"spmv(fail): y = alpha*A*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
210223
if (allocated(error)) return
211224

212-
! Test y = A.T @ x for random values of alpha and beta
225+
! Test y = alpha * A.T @ x + beta * y for random values of alpha and beta
213226
y1 = 0.0_wp
214227
call random_number(alpha)
215228
call random_number(beta)
216229
call random_number(y2)
217230
y1 = alpha * matmul(transpose(Amat), x) + beta * y2
218231
call spmv(A, x, y2, alpha=alpha, beta=beta, op="T")
219-
call check(error, all_close(y1, y2), .true.)
232+
call check(error, all_close(y1, y2), .true.,&
233+
"spmv(fail): y = alpha*A.T*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
220234
if (allocated(error)) return
221235

222236
#:if t1.startswith('complex')
223-
! Test y = A.H @ x for random values of alpha and beta
237+
! Test y = alpha * A.H @ x + beta * y for random values of alpha and beta
224238
y1 = 0.0_wp
225239
call random_number(alpha)
226240
call random_number(beta)
227241
call random_number(y2)
228242
y1 = alpha * matmul(transpose(conjg((Amat))), x) + beta * y2
229243
call spmv(A, x, y2, alpha=alpha, beta=beta, op="H")
230-
call check(error, all_close(y1, y2), .true.)
244+
call check(error, all_close(y1, y2), .true.,&
245+
"spmv(fail): y = alpha*A.H*x + beta*y, alpha: "//to_string(alpha)//", beta: "//to_string(beta))
231246
if (allocated(error)) return
232247
#:endif
233248

@@ -252,12 +267,12 @@ contains
252267
du = dl
253268
dv = [(2.0_wp, i = 1, n)]
254269
A = tridiagonal(dl, dv, du, state)
255-
call check(error, state%ok(), .false.)
270+
call check(error, state%ok(), .false., "Tridiagonal constructor from arrays failed")
256271
if (allocated(error)) return
257272

258-
!> Test contructor from constants.
273+
!> Test constructor from scalars.
259274
A = tridiagonal(dl(1), dv(1), du(1), -n, state)
260-
call check(error, state%ok(), .false.)
275+
call check(error, state%ok(), .false., "Tridiagonal constructor from scalars failed")
261276
if (allocated(error)) return
262277
end block
263278
#:endfor
@@ -279,12 +294,14 @@ contains
279294
du = [(1.0_wp, i = 1, n-2)]
280295
dv = [(2.0_wp, i = 1, n)]
281296
A = sym_tridiagonal(du, dv, state)
282-
call check(error, state%ok(), .false.)
297+
call check(error, state%ok(), .false.,&
298+
"Symmetric tridiagonal constructor from arrays failed")
283299
if (allocated(error)) return
284300

285-
!> Test contructor from constants.
301+
!> Test constructor from scalars.
286302
A = sym_tridiagonal(du(1), dv(1), -n, state)
287-
call check(error, state%ok(), .false.)
303+
call check(error, state%ok(), .false.,&
304+
"Symmetric tridiagonal constructor from scalars failed")
288305
if (allocated(error)) return
289306
end block
290307
#:endfor

0 commit comments

Comments
 (0)