diff --git a/Project.toml b/Project.toml index cdd51a7..672a442 100644 --- a/Project.toml +++ b/Project.toml @@ -5,15 +5,21 @@ version = "0.8.12" [deps] ArgCheck = "dce04be8-c92d-5529-be00-80e4d2c0e197" -ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" -InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +[weakdeps] +ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" +InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[extensions] +ChangesOfVariablesExt = "ChangesOfVariables" +InverseFunctionsExt = "InverseFunctions" + [compat] ArgCheck = "1, 2" ChangesOfVariables = "0.1" diff --git a/ext/ChangesOfVariablesExt.jl b/ext/ChangesOfVariablesExt.jl new file mode 100644 index 0000000..a73e697 --- /dev/null +++ b/ext/ChangesOfVariablesExt.jl @@ -0,0 +1,13 @@ +module ChangesOfVariablesExt + +import TransformVariables +import ChangesOfVariables + +function ChangesOfVariables.with_logabsdet_jacobian(f::TransformVariables.CallableTransform, x) + return TransformVariables.transform_and_logjac(f.t, x) +end +function ChangesOfVariables.with_logabsdet_jacobian(f::TransformVariables.CallableInverse, x) + return TransformVariables.inverse_and_logjac(f.t, x) +end + +end # module diff --git a/ext/InverseFunctionsExt.jl b/ext/InverseFunctionsExt.jl new file mode 100644 index 0000000..82b5143 --- /dev/null +++ b/ext/InverseFunctionsExt.jl @@ -0,0 +1,13 @@ +module InverseFunctionsExt + +import TransformVariables +import InverseFunctions + +function InverseFunctions.inverse(f::TransformVariables.CallableTransform) + return TransformVariables.inverse(f) +end +function InverseFunctions.inverse(f::TransformVariables.CallableInverse) + return TransformVariables.inverse(f) +end + +end # module diff --git a/src/TransformVariables.jl b/src/TransformVariables.jl index 2832937..bf6bf72 100644 --- a/src/TransformVariables.jl +++ b/src/TransformVariables.jl @@ -8,9 +8,6 @@ using LinearAlgebra: UpperTriangular, logabsdet using Random: AbstractRNG, GLOBAL_RNG using StaticArrays: MMatrix, SMatrix, SArray, SVector, pushfirst -import ChangesOfVariables -import InverseFunctions - include("utilities.jl") include("generic.jl") include("scalar.jl") diff --git a/src/generic.jl b/src/generic.jl index 64493c8..a7613b4 100644 --- a/src/generic.jl +++ b/src/generic.jl @@ -143,8 +143,6 @@ end transform(t) = CallableTransform(t) -ChangesOfVariables.with_logabsdet_jacobian(f::CallableTransform, x) = transform_and_logjac(f.t, x) - """ $(TYPEDEF) @@ -160,12 +158,8 @@ function Base.show(io::IO, f::CallableInverse) end inverse(f::CallableInverse) = CallableTransform(f.t) -InverseFunctions.inverse(f::CallableInverse) = CallableTransform(f.t) inverse(f::CallableTransform) = CallableInverse(f.t) -InverseFunctions.inverse(f::CallableTransform) = CallableInverse(f.t) - -ChangesOfVariables.with_logabsdet_jacobian(f::CallableInverse, x) = inverse_and_logjac(f.t, x) """ `$(FUNCTIONNAME)(t, y)`