Skip to content

Commit bd53fab

Browse files
committed
Fix minor indexing issue in generated functions
1 parent 8c38fda commit bd53fab

File tree

1 file changed

+8
-19
lines changed

1 file changed

+8
-19
lines changed

src/primitive.jl

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,6 @@ import Base: hypot, max, min
1515
@inline cbrt(t::TaylorScalar) = ^(t, 1 / 3)
1616
@inline inv(t::TaylorScalar) = one(t) / t
1717

18-
exp(t::TaylorScalar{T, 2}) where {T} =
19-
let v = value(t), e1 = exp(v[1])
20-
TaylorScalar{T, 2}((e1, e1 * v[2]))
21-
end
22-
23-
function exp(t::TaylorScalar{T, 3}) where {T}
24-
let v = value(t), e1 = exp(v[1])
25-
TaylorScalar{T, 3}((e1, e1 * v[2], e1 * v[3] + e1 * v[2] * v[2]))
26-
end
27-
end
28-
2918
for func in (:exp, :expm1, :exp2, :exp10)
3019
@eval @generated function $func(t::TaylorScalar{T, N}) where {T, N}
3120
ex = quote
@@ -36,7 +25,7 @@ for func in (:exp, :expm1, :exp2, :exp10)
3625
ex = quote
3726
$ex
3827
$(Symbol('v', i)) = +($([:($(binomial(i - 2, j - 1)) * $(Symbol('v', j)) *
39-
v[$i + 1 - $j])
28+
v[$(i + 1 - j)])
4029
for j in 1:(i - 1)]...))
4130
end
4231
if $(QuoteNode(func)) == :exp2
@@ -64,11 +53,11 @@ for func in (:sin, :cos)
6453
ex = :($ex;
6554
$(Symbol('s', i)) = +($([:($(binomial(i - 2, j - 1)) *
6655
$(Symbol('c', j)) *
67-
v[$i + 1 - $j]) for j in 1:(i - 1)]...)))
56+
v[$(i + 1 - j)]) for j in 1:(i - 1)]...)))
6857
ex = :($ex;
6958
$(Symbol('c', i)) = +($([:($(-binomial(i - 2, j - 1)) *
7059
$(Symbol('s', j)) *
71-
v[$i + 1 - $j]) for j in 1:(i - 1)]...)))
60+
v[$(i + 1 - j)]) for j in 1:(i - 1)]...)))
7261
end
7362
if $(QuoteNode(func)) == :sin
7463
ex = :($ex; TaylorScalar($([Symbol('s', i) for i in 1:N]...)))
@@ -111,7 +100,7 @@ end
111100
$ex
112101
$(Symbol('v', i)) = (va[$i] -
113102
+($([:($(binomial(i - 1, j - 1)) * $(Symbol('v', j)) *
114-
vb[$i + 1 - $j])
103+
vb[$(i + 1 - j)])
115104
for j in 1:(i - 1)]...))) / vb[1]
116105
end
117106
end
@@ -129,7 +118,7 @@ end
129118
$ex
130119
$(Symbol('v', i)) = +($([:((n * $(binomial(i - 2, j - 1)) -
131120
$(binomial(i - 2, j - 2))) * $(Symbol('v', j)) *
132-
v[$i + 1 - $j])
121+
v[$(i + 1 - j)])
133122
for j in 1:(i - 1)]...)) / v[1]
134123
end
135124
end
@@ -148,7 +137,7 @@ end
148137
$ex
149138
$(Symbol('v', i)) = +($([:((n * $(binomial(i - 2, j - 1)) -
150139
$(binomial(i - 2, j - 2))) * $(Symbol('v', j)) *
151-
v[$i + 1 - $j])
140+
v[$(i + 1 - j)])
152141
for j in 1:(i - 1)]...)) / v[1]
153142
end
154143
end
@@ -179,9 +168,9 @@ raise(::T, df::S, t::TaylorScalar{T, N}) where {S <: Real, T <: Number, N} = df
179168
for i in 2:M
180169
ex = quote
181170
$ex
182-
$(Symbol('v', i)) = (vt[$i + 1] -
171+
$(Symbol('v', i)) = (vt[$(i + 1)] -
183172
+($([:($(binomial(i - 1, j - 1)) * $(Symbol('v', j)) *
184-
vdf[$i + 1 - $j])
173+
vdf[$(i + 1 - j)])
185174
for j in 1:(i - 1)]...))) / vdf[1]
186175
end
187176
end

0 commit comments

Comments
 (0)