@@ -14,6 +14,7 @@ _p0(A) = one(eltype(A))
14
14
function initiateforwardrecurrence (N, A, B, C, x, μ)
15
15
T = promote_type (eltype (A), eltype (B), eltype (C), typeof (x))
16
16
p0 = convert (T, μ)
17
+ N == 0 && return zero (T), p0
17
18
p1 = convert (T, muladd (A[1 ],x,B[1 ])* p0)
18
19
@inbounds for n = 2 : N
19
20
p1,p0 = _forwardrecurrence_next (n, A, B, C, x, p0, p1),p1
69
70
getindex (P:: OrthogonalPolynomial , x:: Number , n:: AbstractVector ) = layout_getindex (P, x, n)
70
71
getindex (P:: OrthogonalPolynomial , x:: AbstractVector , n:: AbstractVector ) = layout_getindex (P, x, n)
71
72
getindex (P:: SubArray{<:Any,1,<:OrthogonalPolynomial} , x:: AbstractVector ) = layout_getindex (P, x)
72
- getindex (P:: OrthogonalPolynomial , x:: Number , n:: Number ) = P[x,oneto (n)][end ]
73
+ Base. @propagate_inbounds function getindex (P:: OrthogonalPolynomial , x:: Number , n:: Number )
74
+ @boundscheck checkbounds (P, x, n)
75
+ Base. unsafe_getindex (P, x, n)
76
+ end
77
+
73
78
74
79
unsafe_layout_getindex (A... ) = sub_materialize (Base. unsafe_view (A... ))
75
80
@@ -79,7 +84,7 @@ Base.unsafe_getindex(P::OrthogonalPolynomial, x::Number, n::AbstractVector) = Ba
79
84
Base. unsafe_getindex (P:: OrthogonalPolynomial , x:: AbstractVector , n:: AbstractVector ) = Base. unsafe_getindex (P,x,oneto (maximum (n)))[:,n]
80
85
Base. unsafe_getindex (P:: OrthogonalPolynomial , x:: AbstractVector , n:: Number ) = Base. unsafe_getindex (P, x, 1 : n)[:,end ]
81
86
Base. unsafe_getindex (P:: OrthogonalPolynomial , x:: Number , :: Colon ) = Base. unsafe_getindex (P, x, axes (P,2 ))
82
- Base. unsafe_getindex (P:: OrthogonalPolynomial , x:: Number , n:: Number ) = Base . unsafe_getindex (P,x, oneto (n ))[end ]
87
+ Base. unsafe_getindex (P:: OrthogonalPolynomial , x:: Number , n:: Number ) = initiateforwardrecurrence (n - 1 , recurrencecoefficients (P) ... , x, _p0 (P ))[end ]
83
88
84
89
getindex (P:: OrthogonalPolynomial , x:: Number , jr:: AbstractInfUnitRange{Int} ) = view (P, x, jr)
85
90
getindex (P:: OrthogonalPolynomial , x:: AbstractVector , jr:: AbstractInfUnitRange{Int} ) = view (P, x, jr)
0 commit comments