Skip to content

Commit fbc53e6

Browse files
Merge pull request #217 from gaurav-arya/ag-warn
Only warn about convert-based fallbacks when operator not convertible.
2 parents dd8fc48 + fec7e47 commit fbc53e6

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

src/interface.jl

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -414,22 +414,24 @@ expmv!(v,L::AbstractSciMLOperator,u,p,t) = mul!(v,exp(L,t),u)
414414

415415
function Base.conj(L::AbstractSciMLOperator)
416416
isreal(L) && return L
417-
@warn """using convert-based fallback for Base.conj"""
417+
if !isconvertible(L)
418+
@warn """using convert-based fallback for Base.conj"""
419+
end
418420
concretize(L) |> conj
419421
end
420422

421423
function Base.:(==)(L1::AbstractSciMLOperator, L2::AbstractSciMLOperator)
422-
@warn """using convert-based fallback for Base.=="""
424+
if !isconvertible(L1) || !isconvertible(L2)
425+
@warn """using convert-based fallback for Base.=="""
426+
end
423427
size(L1) != size(L2) && return false
424428
concretize(L1) == concretize(L2)
425429
end
426430

427-
Base.@propagate_inbounds function Base.getindex(L::AbstractSciMLOperator, I::Vararg{Any,N}) where {N}
428-
@warn """using convert-based fallback for Base.getindex"""
429-
concretize(L)[I...]
430-
end
431431
function Base.getindex(L::AbstractSciMLOperator, I::Vararg{Int, N}) where {N}
432-
@warn """using convert-based fallback for Base.getindex"""
432+
if !isconvertible(L)
433+
@warn """using convert-based fallback for Base.getindex"""
434+
end
433435
concretize(L)[I...]
434436
end
435437

@@ -440,15 +442,19 @@ end
440442
LinearAlgebra.exp(L::AbstractSciMLOperator) = exp(Matrix(L))
441443

442444
function LinearAlgebra.opnorm(L::AbstractSciMLOperator, p::Real=2)
443-
@warn """using convert-based fallback in LinearAlgebra.opnorm."""
445+
if !isconvertible(L)
446+
@warn """using convert-based fallback in LinearAlgebra.opnorm."""
447+
end
444448
opnorm(concretize(L), p)
445449
end
446450

447451
for op in (
448452
:sum, :prod,
449453
)
450454
@eval function Base.$op(L::AbstractSciMLOperator; kwargs...)
451-
@warn """using convert-based fallback in $($op)."""
455+
if !isconvertible(L)
456+
@warn """using convert-based fallback in $($op)."""
457+
end
452458
$op(concretize(L); kwargs...)
453459
end
454460
end
@@ -459,18 +465,24 @@ for pred in (
459465
:isposdef,
460466
)
461467
@eval function LinearAlgebra.$pred(L::AbstractSciMLOperator)
462-
@warn """using convert-based fallback in $($pred)."""
468+
if !isconvertible(L)
469+
@warn """using convert-based fallback in $($pred)."""
470+
end
463471
$pred(concretize(L))
464472
end
465473
end
466474

467475
function LinearAlgebra.mul!(v::AbstractArray, L::AbstractSciMLOperator, u::AbstractArray)
468-
@warn """using convert-based fallback in mul!."""
476+
if !isconvertible(L)
477+
@warn """using convert-based fallback in mul!."""
478+
end
469479
mul!(v, concretize(L), u)
470480
end
471481

472482
function LinearAlgebra.mul!(v::AbstractArray, L::AbstractSciMLOperator, u::AbstractArray, α, β)
473-
@warn """using convert-based fallback in mul!."""
483+
if !isconvertible(L)
484+
@warn """using convert-based fallback in mul!."""
485+
end
474486
mul!(v, concretize(L), u, α, β)
475487
end
476488
#

0 commit comments

Comments
 (0)