diff --git a/Project.toml b/Project.toml index 134e85d..0533e29 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "HMatrices" uuid = "8646bddf-ab1c-4fa7-9c51-ba187d647618" -version = "0.2.12" +version = "0.2.13" [deps] Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b" diff --git a/src/compressor.jl b/src/compressor.jl index c89c3b5..1822fa4 100644 --- a/src/compressor.jl +++ b/src/compressor.jl @@ -137,9 +137,13 @@ function _aca_partial(K, irange, jrange, atol, rmax, rtol, istart, buffer_ = not if isnothing(i) # ran out of candidate rows. Good case: the matrix is zero. Bad # case: aca failed - all(j -> iszero(K[first(irange), j]), jrange) && - all(i -> iszero(K[i, first(jrange)]), irange) || - @warn "aca possibly failed on $irange × $jrange" + if K isa KernelMatrix + all(j -> iszero(K[first(irange), j]), jrange) && + all(i -> iszero(K[i, first(jrange)]), irange) || + @warn "aca possibly failed on $irange × $jrange" maxlog=1 + else + @warn "aca possibly failed on $irange × $jrange" maxlog=1 + end break end else # δ != 0 diff --git a/src/multiplication.jl b/src/multiplication.jl index ce861f1..5c3afec 100644 --- a/src/multiplication.jl +++ b/src/multiplication.jl @@ -221,7 +221,7 @@ Multiplication when the target is a dense matrix. The numbering system in the fo function _mul_dense!(C::Base.Matrix, A, B, a) Adata = isleaf(A) ? data(A) : A Bdata = isleaf(B) ? data(B) : B - if Adata isa HMatrix + if Adata isa HMatrix || Adata isa AdjointHMatrix if Bdata isa Matrix _mul131!(C, Adata, Bdata, a) elseif Bdata isa RkMatrix @@ -235,7 +235,7 @@ function _mul_dense!(C::Base.Matrix, A, B, a) elseif Bdata isa HMatrix _mul113!(C, Adata, Bdata, a) end - elseif Adata isa RkMatrix + elseif Adata isa RkMatrix || Adata isa AdjointHMatrix if Bdata isa Matrix _mul121!(C, Adata, Bdata, a) elseif Bdata isa RkMatrix