1+ function depwarn_rt ()
2+ Base. depwarn (
3+ " FiniteDifferences.rand_tangent is deprecated, it has moved to ChainRulesTestUtils" ,
4+ :rand_tangent
5+ )
6+ end
7+
18"""
29 rand_tangent([rng::AbstractRNG,] x)
310
@@ -7,27 +14,33 @@ Rather it is an arbitary value, that is generated using the `rng`.
714"""
815rand_tangent (x) = rand_tangent (Random. GLOBAL_RNG, x)
916
10- rand_tangent (rng:: AbstractRNG , x:: Symbol ) = NoTangent ()
11- rand_tangent (rng:: AbstractRNG , x:: AbstractChar ) = NoTangent ()
12- rand_tangent (rng:: AbstractRNG , x:: AbstractString ) = NoTangent ()
17+ rand_tangent (rng:: AbstractRNG , x:: Symbol ) = ( depwarn_rt (); NoTangent () )
18+ rand_tangent (rng:: AbstractRNG , x:: AbstractChar ) = ( depwarn_rt (); NoTangent () )
19+ rand_tangent (rng:: AbstractRNG , x:: AbstractString ) = ( depwarn_rt (); NoTangent () )
1320
14- rand_tangent (rng:: AbstractRNG , x:: Integer ) = NoTangent ()
21+ rand_tangent (rng:: AbstractRNG , x:: Integer ) = ( depwarn_rt (); NoTangent () )
1522
1623# Try and make nice numbers with short decimal representations for good error messages
1724# while also not biasing the sample space too much
1825function rand_tangent (rng:: AbstractRNG , x:: T ) where {T<: Number }
19- # multiply by 9 to give a bigger range of values tested: no so tightly clustered around 0.
26+ depwarn_rt ()
27+ # multiply by 9 to give a bigger range of values tested:
28+ # not so tightly clustered around 0.
2029 return round (9 * randn (rng, T), sigdigits= 5 , base= 2 )
2130end
22- rand_tangent (rng:: AbstractRNG , x:: Float64 ) = rand (rng, - 9 : 0.01 : 9 )
31+ rand_tangent (rng:: AbstractRNG , x:: Float64 ) = ( depwarn_rt (); rand (rng, - 9 : 0.01 : 9 ) )
2332function rand_tangent (rng:: AbstractRNG , x:: ComplexF64 )
33+ depwarn_rt ()
2434 return ComplexF64 (rand (rng, - 9 : 0.1 : 9 ), rand (rng, - 9 : 0.1 : 9 ))
2535end
2636
2737# BigFloat/MPFR is finicky about short numbers, this doesn't always work as well as it should
28-
29- # multiply by 9 to give a bigger range of values tested: no so tightly clustered around 0.
30- rand_tangent (rng:: AbstractRNG , :: BigFloat ) = round (big (9 * randn (rng)), sigdigits= 5 , base= 2 )
38+ function rand_tangent (rng:: AbstractRNG , :: BigFloat )
39+ depwarn_rt ()
40+ # multiply by 9 to give a bigger range of values tested:
41+ # not so tightly clustered around 0.
42+ return round (big (9 * randn (rng)), sigdigits= 5 , base= 2 )
43+ end
3144
3245rand_tangent (rng:: AbstractRNG , x:: StridedArray{T, 0} ) where {T} = fill (rand_tangent (x[1 ]))
3346rand_tangent (rng:: AbstractRNG , x:: StridedArray ) = rand_tangent .(Ref (rng), x)
@@ -53,11 +66,12 @@ function rand_tangent(rng::AbstractRNG, x::T) where {T}
5366 end
5467 if all (tangent isa NoTangent for tangent in tangents)
5568 # if none of my fields can be perturbed then I can't be perturbed
69+ depwarn_rt ()
5670 return NoTangent ()
5771 else
5872 Tangent {T} (; NamedTuple {field_names} (tangents)... )
5973 end
6074end
6175
62- rand_tangent (rng:: AbstractRNG , :: Type ) = NoTangent ()
63- rand_tangent (rng:: AbstractRNG , :: Module ) = NoTangent ()
76+ rand_tangent (rng:: AbstractRNG , :: Type ) = ( depwarn_rt (); NoTangent () )
77+ rand_tangent (rng:: AbstractRNG , :: Module ) = ( depwarn_rt (); NoTangent () )
0 commit comments