8080ishermitian_exact (A) = A == A'
8181ishermitian_exact (A:: StridedMatrix ; kwargs... ) = strided_ishermitian_exact (A, Val (false ); kwargs... )
8282function ishermitian_approx (A; atol, rtol, kwargs... )
83- return 2 * norm (project_antihermitian (A; kwargs... )) ≤ max (atol, rtol * norm (A))
83+ return norm (project_antihermitian (A; kwargs... )) ≤ max (atol, rtol * norm (A))
8484end
8585ishermitian_approx (A:: StridedMatrix ; kwargs... ) = strided_ishermitian_approx (A, Val (false ); kwargs... )
8686
@@ -104,7 +104,7 @@ function isantihermitian_exact(A::StridedMatrix; kwargs...)
104104 return strided_ishermitian_exact (A, Val (true ); kwargs... )
105105end
106106function isantihermitian_approx (A; atol, rtol, kwargs... )
107- return 2 * norm (project_hermitian (A; kwargs... )) ≤ max (atol, rtol * norm (A))
107+ return norm (project_hermitian (A; kwargs... )) ≤ max (atol, rtol * norm (A))
108108end
109109isantihermitian_approx (A:: StridedMatrix ; kwargs... ) = strided_ishermitian_approx (A, Val (true ); kwargs... )
110110
@@ -159,7 +159,7 @@ function strided_ishermitian_approx(
159159 ϵ² < ϵ²max || return false
160160 for i in 1 : blocksize: (j - 1 )
161161 ib = blocksize
162- ϵ² += _ishermitian_approx_offdiag (
162+ ϵ² += 2 * _ishermitian_approx_offdiag (
163163 view (A, i: (i + ib - 1 ), j: (j + jb - 1 )),
164164 view (A, j: (j + jb - 1 ), i: (i + ib - 1 )),
165165 anti
@@ -175,7 +175,7 @@ function _ishermitian_approx_diag(A, ::Val{anti}) where {anti}
175175 ϵ² = abs2 (zero (eltype (A)))
176176 @inbounds for j in 1 : n
177177 @simd for i in 1 : j
178- val = anti ? (A[i, j] + adjoint ( A[j, i])) : (A[i, j] - adjoint (A[j, i]) )
178+ val = _project_hermitian (A[i, j], A[j, i], ! anti )
179179 ϵ² += abs2 (val) * (1 + Int (i < j))
180180 end
181181 end
@@ -186,9 +186,9 @@ function _ishermitian_approx_offdiag(Al, Au, ::Val{anti}) where {anti}
186186 ϵ² = abs2 (zero (eltype (Al)))
187187 @inbounds for j in 1 : n
188188 @simd for i in 1 : m
189- val = anti ? (Al[i, j] + adjoint ( Au[j, i])) : (Al[i, j] - adjoint (Au[j, i]) )
189+ val = _project_hermitian (Al[i, j], Au[j, i], ! anti )
190190 ϵ² += abs2 (val)
191191 end
192192 end
193- return 2 ϵ ²
193+ return ϵ ²
194194end
0 commit comments