Skip to content

Commit 193f374

Browse files
committed
Change slicing to tail
1 parent fefdee4 commit 193f374

2 files changed

Lines changed: 21 additions & 6 deletions

File tree

src/primitive.jl

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,21 @@ import Base: asin, acos, atan, acot, asec, acsc, asinh, acosh, atanh, acoth, ase
55
import Base: sinc, cosc
66
import Base: +, -, *, /, \, ^, >, <, >=, <=, ==
77
import Base: hypot, max, min
8+
import Base: zero, one, adjoint, conj, transpose
9+
10+
using Base: tail
811

912
# Unary
1013

14+
@inline zero(::Type{TaylorScalar{T, N}}) where {T, N} = TaylorScalar{T, N}(zero(T))
15+
@inline one(::Type{TaylorScalar{T, N}}) where {T, N} = TaylorScalar{T, N}(one(T))
16+
@inline zero(::TaylorScalar{T, N}) where {T, N} = zero(TaylorScalar{T, N})
17+
@inline one(::TaylorScalar{T, N}) where {T, N} = one(TaylorScalar{T, N})
18+
19+
transpose(t::TaylorScalar) = t
20+
adjoint(t::TaylorScalar) = t
21+
conj(t::TaylorScalar) = t
22+
1123
## Delegated
1224

1325
@inline sqrt(t::TaylorScalar) = t^0.5
@@ -113,8 +125,12 @@ end
113125
ex = :($ex; TaylorScalar($([Symbol('v', i) for i in 1:N]...)))
114126
return :(@inbounds $ex)
115127
end
116-
@inline *(a::TaylorScalar{T1, N}, b::TaylorScalar{T2, N}) where {T1,T2,N} = *(promote(a,b)...)
117-
@inline /(a::TaylorScalar{T1, N}, b::TaylorScalar{T2, N}) where {T1,T2,N} = *(promote(a,b)...)
128+
@inline function *(a::TaylorScalar{T1, N}, b::TaylorScalar{T2, N}) where {T1, T2, N}
129+
*(promote(a, b)...)
130+
end
131+
@inline function /(a::TaylorScalar{T1, N}, b::TaylorScalar{T2, N}) where {T1, T2, N}
132+
*(promote(a, b)...)
133+
end
118134

119135
for R in (Integer, Real)
120136
@eval @generated function ^(t::TaylorScalar{T, N}, n::S) where {S <: $R, T, N}

src/scalar.jl

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import Base: zero, one, adjoint, conj, transpose
2-
import Base: +, -, *, /
31
import Base: convert, promote_rule
42

53
export TaylorScalar
@@ -89,8 +87,9 @@ function promote_rule(::Type{TaylorScalar{T, N}},
8987
::Type{S}) where {T, S, N}
9088
TaylorScalar{promote_type(T, S), N}
9189
end
92-
function promote_rule(::Type{TaylorScalar{T1, N}}, ::Type{TaylorScalar{T2,N}}) where {T1, T2, N}
93-
TaylorScalar{promote_type(T1,T2), N}
90+
function promote_rule(::Type{TaylorScalar{T1, N}},
91+
::Type{TaylorScalar{T2, N}}) where {T1, T2, N}
92+
TaylorScalar{promote_type(T1, T2), N}
9493
end
9594

9695
function (::Type{F})(x::TaylorScalar{T, N}) where {T, N, F <: AbstractFloat}

0 commit comments

Comments
 (0)