Skip to content

Commit 40765ad

Browse files
committed
fix test svd (related to signs of singular values)
1 parent a690390 commit 40765ad

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

test/linalg/test_linalg_svd.fypp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ module test_linalg_svd
9393
if (allocated(error)) return
9494
call check(error, all(abs(s-s_sol)<=tol), test//': S')
9595
if (allocated(error)) return
96-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
96+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
9797
if (allocated(error)) return
9898

9999
!> [S, U]. Overwrite A matrix
@@ -104,7 +104,7 @@ module test_linalg_svd
104104
if (allocated(error)) return
105105
call check(error, all(abs(s-s_sol)<=tol), test//': S')
106106
if (allocated(error)) return
107-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
107+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
108108
if (allocated(error)) return
109109

110110
!> [S, U, V^T]
@@ -116,9 +116,9 @@ module test_linalg_svd
116116
if (allocated(error)) return
117117
call check(error, all(abs(s-s_sol)<=tol), test//': S')
118118
if (allocated(error)) return
119-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
119+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
120120
if (allocated(error)) return
121-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
121+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
122122
if (allocated(error)) return
123123

124124
!> [S, V^T]. Do not overwrite A matrix
@@ -130,7 +130,7 @@ module test_linalg_svd
130130
if (allocated(error)) return
131131
call check(error, all(abs(s-s_sol)<=tol), test//': S')
132132
if (allocated(error)) return
133-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
133+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
134134
if (allocated(error)) return
135135

136136
!> [S, V^T]. Overwrite A matrix
@@ -141,7 +141,7 @@ module test_linalg_svd
141141
if (allocated(error)) return
142142
call check(error, all(abs(s-s_sol)<=tol), test//': S')
143143
if (allocated(error)) return
144-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
144+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
145145
if (allocated(error)) return
146146

147147
!> [U, S, V^T].
@@ -151,11 +151,11 @@ module test_linalg_svd
151151
test = '[U, S, V^T]'
152152
call check(error,state%ok(),test//': '//state%print())
153153
if (allocated(error)) return
154-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
154+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
155155
if (allocated(error)) return
156156
call check(error, all(abs(s-s_sol)<=tol), test//': S')
157157
if (allocated(error)) return
158-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
158+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
159159
if (allocated(error)) return
160160

161161
!> [U, S, V^T]. Partial storage -> compare until k=2 columns of U rows of V^T
@@ -167,11 +167,11 @@ module test_linalg_svd
167167
test = '[U, S, V^T], partial storage'
168168
call check(error,state%ok(),test//': '//state%print())
169169
if (allocated(error)) return
170-
call check(error, all(abs(u(:,:2)-u_sol(:,:2))<=tol) .or. all(abs(u(:,:2)+u_sol(:,:2))<=tol), test//': U(:,:2)')
170+
call check(error, all(abs(abs(u(:,:2))-abs(u_sol(:,:2)))<=tol), test//': U(:,:2)')
171171
if (allocated(error)) return
172172
call check(error, all(abs(s-s_sol)<=tol), test//': S')
173173
if (allocated(error)) return
174-
call check(error, all(abs(vt(:2,:)-vt_sol(:2,:))<=tol) .or. all(abs(vt(:2,:)+vt_sol(:2,:))<=tol), test//': V^T(:2,:)')
174+
call check(error, all(abs(abs(vt(:2,:))-abs(vt_sol(:2,:)))<=tol), test//': V^T(:2,:)')
175175
if (allocated(error)) return
176176

177177
end subroutine test_svd_${ri}$

0 commit comments

Comments
 (0)