diff --git a/src/fastpow.jl b/src/fastpow.jl index 6f78c1865..42376164b 100644 --- a/src/fastpow.jl +++ b/src/fastpow.jl @@ -56,7 +56,7 @@ const EXP2FT = (Float32(0x1.6a09e667f3bcdp-1), fastpow(x::T, y::T) where {T} -> float(T) Trips through Float32 for performance. """ -@inline function fastpow(x::T, y::T) where {T<:Real} +@inline function fastpow(x::T, y::T) where {T <: Real} outT = float(T) if iszero(x) return zero(outT) diff --git a/src/solve.jl b/src/solve.jl index 6de8273f4..8d8195995 100644 --- a/src/solve.jl +++ b/src/solve.jl @@ -678,7 +678,7 @@ function build_null_solution(prob::AbstractDEProblem, args...; end timeseries = [Float64[] for i in 1:length(ts)] - + if SciMLBase.has_initializeprob(prob.f) && SciMLBase.has_initializeprobpmap(prob.f) initializeprob = prob.f.initializeprob nlsol = solve(initializeprob) @@ -1427,6 +1427,7 @@ function check_prob_alg_pairing(prob, alg) prob isa SDDEProblem && !(alg isa AbstractSDEAlgorithm) || prob isa DDEProblem && !(alg isa AbstractDDEAlgorithm) || prob isa DAEProblem && !(alg isa AbstractDAEAlgorithm) || + prob isa BVProblem && !(alg isa AbstractBVPAlgorithm) || prob isa SteadyStateProblem && !(alg isa AbstractSteadyStateAlgorithm) throw(ProblemSolverPairingError(prob, alg)) end @@ -1460,8 +1461,10 @@ function check_prob_alg_pairing(prob, alg) if !SciMLBase.allows_arbitrary_number_types(alg) if isdefined(prob, :u0) uType = RecursiveArrayTools.recursive_unitless_eltype(prob.u0) + u0_as_initial_guess = (prob isa BVProblem) && (uType <: Vector) if Base.isconcretetype(uType) && - !(uType <: Union{Float32, Float64, ComplexF32, ComplexF64}) + !(uType <: Union{Float32, Float64, ComplexF32, ComplexF64}) && + !u0_as_initial_guess throw(GenericNumberTypeError(alg, isdefined(prob, :u0) ? typeof(prob.u0) : nothing, diff --git a/src/termination_conditions.jl b/src/termination_conditions.jl index fb05b03f8..8512a31ac 100644 --- a/src/termination_conditions.jl +++ b/src/termination_conditions.jl @@ -35,8 +35,9 @@ tolerances. """ struct SimpleNonlinearSolveTerminationMode <: AbstractNonlinearTerminationMode function SimpleNonlinearSolveTerminationMode() - Base.depwarn("`SimpleNonlinearSolveTerminationMode` is deprecated and isn't used \ - in any upstream library. Remove uses of this.", + Base.depwarn( + "`SimpleNonlinearSolveTerminationMode` is deprecated and isn't used \ + in any upstream library. Remove uses of this.", :SimpleNonlinearSolveTerminationMode) return new() end