From 55fc7d66a14072e3896d69c3e167330461f4f904 Mon Sep 17 00:00:00 2001 From: lxvm Date: Sat, 30 Dec 2023 00:32:33 -0800 Subject: [PATCH] ensure unit gets applied in ordinary case --- src/adapt.jl | 4 ++-- test/runtests.jl | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/adapt.jl b/src/adapt.jl index b4f3cc2..778d19a 100644 --- a/src/adapt.jl +++ b/src/adapt.jl @@ -147,7 +147,7 @@ function handle_infinities(workfunc, f, s) end end end - I, E = workfunc(f, map(x -> x/oneunit(x), s), identity) + I, E = workfunc(t -> f(t*u), map(x -> x/oneunit(x), s), identity) return u * I, u * E end @@ -185,7 +185,7 @@ function handle_infinities(workfunc, f::InplaceIntegrand, s) end end end - I, E = workfunc(InplaceIntegrand(f.f!, f.fg, f.fk, f.Ig, f.Ik, f.fx, f.Idiff, similar(f.fx)), + I, E = workfunc(InplaceIntegrand((y,t) -> f.f!(y, t*u), f.fg, f.fk, f.Ig, f.Ik, f.fx, f.Idiff, similar(f.fx)), map(x -> x/oneunit(x), s), identity) result .= u .* I diff --git a/test/runtests.jl b/test/runtests.jl index 5666409..bc6a942 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -69,17 +69,17 @@ module Test19626 ulims = map(x -> map(MockQuantity, x), lims) for (lb, ub) in ulims ## function - f = x -> 1/(1+(x/oneunit(x))^2) + f = x -> 1/(1+(x/MockQuantity(1.0))^2) buf = QuadGK.alloc_segbuf(MockQuantity, Float64, MockQuantity) @test QuadGK.quadgk(f, lb, ub, atol=MockQuantity(0.0))[1] ≈ QuadGK.quadgk(f, lb, ub, atol=MockQuantity(0.0), segbuf=buf)[1] ## inplace - fiip = (y, x) -> y[1] = 1/(1+(x/oneunit(x))^2) + fiip = (y, x) -> y[1] = 1/(1+(x/MockQuantity(1.0))^2) ibuf = QuadGK.alloc_segbuf(MockQuantity, Array{Float64,1}, MockQuantity) @test QuadGK.quadgk!(fiip, [MockQuantity(0.0)], lb, ub, atol=MockQuantity(0.0), norm=abs∘first)[1][] ≈ QuadGK.quadgk!(fiip, [MockQuantity(0.0)], lb, ub, atol=MockQuantity(0.0), norm=abs∘getindex, segbuf=ibuf)[1][] ## batch - fbatch = BatchIntegrand{Float64}((y, x) -> y .= 1 ./ (1 .+ (x ./ oneunit.(x)) .^ 2)) + fbatch = BatchIntegrand{Float64}((y, x) -> y .= 1 ./ (1 .+ (x ./ MockQuantity(1.0)) .^ 2)) @test QuadGK.quadgk(fbatch, lb, ub, atol=MockQuantity(0.0))[1] ≈ QuadGK.quadgk(fbatch, lb, ub, atol=MockQuantity(0.0), segbuf=buf)[1] end