diff --git a/.github/workflows/Downgrade.yml b/.github/workflows/Downgrade.yml index 8a745742..034d25b1 100644 --- a/.github/workflows/Downgrade.yml +++ b/.github/workflows/Downgrade.yml @@ -12,7 +12,6 @@ on: - 'docs/**' jobs: downgrade: - if: false # Disabled pending fix - see #208 for tracking re-enablement name: "Downgrade" strategy: matrix: diff --git a/Project.toml b/Project.toml index d1f21493..6016219a 100644 --- a/Project.toml +++ b/Project.toml @@ -24,7 +24,7 @@ ExponentialUtilitiesStaticArraysExt = "StaticArrays" Adapt = "3.4.0, 4" Aqua = "0.8" ArrayInterface = "7.1" -DoubleFloats = "1" +DoubleFloats = "1.1.14" ForwardDiff = "0.10.13" GPUArraysCore = "0.1, 0.2" GenericSchur = "0.5.3" @@ -35,7 +35,7 @@ Printf = "1.10" Random = "1" SafeTestsets = "0.1" SparseArrays = "1.10" -StaticArrays = "1.2" +StaticArrays = "1.9.8" Test = "1" julia = "1.10" diff --git a/src/exp_generic.jl b/src/exp_generic.jl index 78a868d5..71f503c8 100644 --- a/src/exp_generic.jl +++ b/src/exp_generic.jl @@ -1,5 +1,9 @@ intlog2(x::T) where {T <: Integer} = T(8 * sizeof(T) - leading_zeros(x - one(T))) -intlog2(x) = x > typemax(UInt) ? ceil(Int, log2(x)) : intlog2(ceil(UInt, x)) % Int +# `ceil(Int, x)` rather than `ceil(UInt, x)` so the integer-conversion path only needs +# `trunc(::Type{Int}, ::AbstractFloat)`, which extended-precision types such as +# DoubleFloats.Double64 define, whereas `trunc(::Type{<:Unsigned}, ::AbstractFloat)` is +# unavailable on Julia 1.10. `x` here is a positive norm, so the signed conversion matches. +intlog2(x) = x > typemax(Int) ? ceil(Int, log2(x)) : intlog2(ceil(Int, x)) function naivemul!( C::StridedMatrix{T}, A::StridedMatrix{T},