@@ -5,32 +5,6 @@ function contract(a::TaylorScalar{T, N}, b::TaylorScalar{S, N}) where {T, S, N}
55 mapreduce (* , + , value (a), value (b))
66end
77
8- NONLINEAR_UNARY_FUNCTIONS = Function[exp, exp2, exp10, expm1,
9- log, log2, log10, log1p,
10- inv, sqrt, cbrt,
11- sin, cos, tan, cot, sec, csc,
12- asin, acos, atan, acot, asec, acsc,
13- sinh, cosh, tanh, coth, sech, csch,
14- asinh, acosh, atanh, acoth, asech, acsch]
15-
16- for func in NONLINEAR_UNARY_FUNCTIONS
17- @eval @opt_out rrule (:: typeof ($ func), :: TaylorScalar )
18- end
19-
20- NONLINEAR_BINARY_FUNCTIONS = Function[* , / , ^ ]
21-
22- for func in NONLINEAR_BINARY_FUNCTIONS
23- @eval @opt_out rrule (:: typeof ($ func), :: TaylorScalar , :: TaylorScalar )
24- @eval @opt_out rrule (:: typeof ($ func), :: TaylorScalar , :: Number )
25- @eval @opt_out rrule (:: typeof ($ func), :: Number , :: TaylorScalar )
26- end
27-
28- # Other special cases
29-
30- @opt_out rrule (:: typeof (Base. literal_pow), :: typeof (^ ), x:: TaylorScalar , :: Val{p} ) where {p}
31- @opt_out rrule (:: RuleConfig , :: typeof (Base. literal_pow), :: typeof (^ ), x:: TaylorScalar ,
32- :: Val{p} ) where {p}
33-
348function rrule (:: Type{TaylorScalar{T, N}} , v:: NTuple{N, T} ) where {N, T <: Number }
359 taylor_scalar_pullback (t̄) = NoTangent (), value (t̄)
3610 return TaylorScalar (v), taylor_scalar_pullback
7549end
7650
7751(project:: ProjectTo{T} )(dx:: TaylorScalar{T, N} ) where {N, T <: Number } = primal (dx)
52+
53+ # Not-a-number patches
54+
55+ ProjectTo (:: T ) where {T <: TaylorScalar } = ProjectTo {T} ()
56+ (p:: ProjectTo{T} )(x:: T ) where {T <: TaylorScalar } = x
57+ ProjectTo (x:: AbstractArray{T} ) where {T <: TaylorScalar } = ProjectTo {AbstractArray} (; element= ProjectTo (zero (T)), axes= axes (x))
58+ (p:: ProjectTo{AbstractArray{T}} )(x:: AbstractArray{T} ) where {T <: TaylorScalar } = x
0 commit comments