@@ -5,32 +5,6 @@ function contract(a::TaylorScalar{T, N}, b::TaylorScalar{S, N}) where {T, S, N}
5
5
mapreduce (* , + , value (a), value (b))
6
6
end
7
7
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
-
34
8
function rrule (:: Type{TaylorScalar{T, N}} , v:: NTuple{N, T} ) where {N, T <: Number }
35
9
taylor_scalar_pullback (t̄) = NoTangent (), value (t̄)
36
10
return TaylorScalar (v), taylor_scalar_pullback
75
49
end
76
50
77
51
(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