1
- import Base: zero, one, adjoint, conj, transpose
2
- import Base: + , - , * , /
3
1
import Base: convert, promote_rule
4
2
5
3
export TaylorScalar
60
58
@inline extract_derivative (r, i:: Integer ) = false
61
59
@inline primal (t:: TaylorScalar ) = extract_derivative (t, 1 )
62
60
63
- @inline zero (:: Type{TaylorScalar{T, N}} ) where {T, N} = TaylorScalar {T, N} (zero (T))
64
- @inline one (:: Type{TaylorScalar{T, N}} ) where {T, N} = TaylorScalar {T, N} (one (T))
65
- @inline zero (:: TaylorScalar{T, N} ) where {T, N} = zero (TaylorScalar{T, N})
66
- @inline one (:: TaylorScalar{T, N} ) where {T, N} = one (TaylorScalar{T, N})
67
-
68
- adjoint (t:: TaylorScalar ) = t
69
- conj (t:: TaylorScalar ) = t
70
-
71
61
function promote_rule (:: Type{TaylorScalar{T, N}} ,
72
62
:: Type{S} ) where {T, S, N}
73
63
TaylorScalar{promote_type (T, S), N}
74
64
end
75
- function promote_rule (:: Type{TaylorScalar{T1, N}} , :: Type{TaylorScalar{T2,N}} ) where {T1, T2, N}
76
- TaylorScalar{promote_type (T1,T2), N}
65
+ function promote_rule (:: Type{TaylorScalar{T1, N}} ,
66
+ :: Type{TaylorScalar{T2, N}} ) where {T1, T2, N}
67
+ TaylorScalar{promote_type (T1, T2), N}
77
68
end
78
69
79
70
# Number-like convention (I patched them after removing <: Number)
@@ -82,17 +73,6 @@ convert(::Type{TaylorScalar{T, N}}, x::TaylorScalar{T, N}) where {T, N} = x
82
73
function convert (:: Type{TaylorScalar{T, N}} , x:: S ) where {T, S, N}
83
74
TaylorScalar {T, N} (convert (T, x))
84
75
end
85
- function convert (:: Type{TaylorScalar{T1,N}} ,x:: TaylorScalar{T2,N} ) where {T1,T2,N}
86
- TaylorScalar {T1,N} (convert .(T1,value (x)))
76
+ function convert (:: Type{TaylorScalar{T1, N}} , x:: TaylorScalar{T2, N} ) where {T1, T2, N}
77
+ TaylorScalar {T1, N} (convert .(T1, value (x)))
87
78
end
88
- @inline + (a:: Number , b:: TaylorScalar ) = TaylorScalar ((a + value (b)[1 ]), value (b)[2 : end ]. .. )
89
- @inline - (a:: Number , b:: TaylorScalar ) = TaylorScalar ((a - value (b)[1 ]), .- value (b)[2 : end ]. .. )
90
- @inline * (a:: Number , b:: TaylorScalar ) = TaylorScalar ((a .* value (b)). .. )
91
- @inline / (a:: Number , b:: TaylorScalar ) = / (promote (a, b)... )
92
-
93
- @inline + (a:: TaylorScalar , b:: Number ) = TaylorScalar ((value (a)[1 ] + b), value (a)[2 : end ]. .. )
94
- @inline - (a:: TaylorScalar , b:: Number ) = TaylorScalar ((value (a)[1 ] - b), value (a)[2 : end ]. .. )
95
- @inline * (a:: TaylorScalar , b:: Number ) = TaylorScalar ((value (a) .* b). .. )
96
- @inline / (a:: TaylorScalar , b:: Number ) = TaylorScalar ((value (a) ./ b). .. )
97
-
98
- transpose (t:: TaylorScalar ) = t
0 commit comments