@@ -16,17 +16,15 @@ rand_tangent(rng::AbstractRNG, x::Integer) = NoTangent()
1616# Try and make nice numbers with short decimal representations for good error messages
1717# while also not biasing the sample space too much
1818function rand_tangent (rng:: AbstractRNG , x:: T ) where {T<: Number }
19- return round (8 randn (rng, T), sigdigits= 6 , base= 2 )
19+ return round (8 randn (rng, T), sigdigits= 5 , base= 2 )
2020end
2121rand_tangent (rng:: AbstractRNG , x:: Float64 ) = rand (rng, - 9 : 0.01 : 9 )
2222function rand_tangent (rng:: AbstractRNG , x:: ComplexF64 )
2323 return ComplexF64 (rand (rng, - 9 : 0.1 : 9 ), rand (rng, - 9 : 0.1 : 9 ))
2424end
2525
26-
27- # TODO : right now Julia don't allow `randn(rng, BigFloat)`
28- # see: https://github.com/JuliaLang/julia/issues/17629
29- rand_tangent (rng:: AbstractRNG , :: BigFloat ) = big (rand_tangent (rng, Float64))
26+ # BigFloat/MPFR is finicky about short numbers, this doesn't always work as well as it should
27+ rand_tangent (rng:: AbstractRNG , :: BigFloat ) = round (big (8 randn (rng)), sigdigits= 5 , base= 2 )
3028
3129rand_tangent (rng:: AbstractRNG , x:: StridedArray ) = rand_tangent .(Ref (rng), x)
3230rand_tangent (rng:: AbstractRNG , x:: Adjoint ) = adjoint (rand_tangent (rng, parent (x)))
0 commit comments