@@ -79,19 +79,20 @@ Fun(::typeof(identity), S::DiracSpace) = Fun(PointSpace(S.points),S.points)
7979transform (S:: PointSpace ,v:: AbstractVector ,plan... ) = v
8080values (f:: Fun{S} ) where S<: PointSpace = coefficient (f,:)
8181
82- function evaluate (f:: AbstractVector ,PS:: PointSpace ,x:: Number )
83- p = findfirst (y-> isapprox (x,y),PS. points)
82+ first (f:: Fun{<:PointSpace} ) = coefficients (f)[1 ]
83+ last (f:: Fun{<:PointSpace} ) = coefficients (f)[end ]
84+
85+ function evaluate (f:: AbstractVector , PS:: PointSpace , x)
86+ p = findfirst (≈ (convert (Number,x)), PS. points)
8487 if p === nothing
8588 zero (eltype (f))
8689 else
8790 f[p]
8891 end
8992end
9093
91- function evaluate (f:: AbstractVector , PS:: DiracSpace , x:: Number )
92- x ∉ domain (PS) && return zero (eltype (f))
93-
94- p = findfirst (y-> isapprox (x,y), PS. points)
94+ function evaluate (f:: AbstractVector , PS:: DiracSpace , x)
95+ p = findfirst (≈ (convert (Number,x)), PS. points)
9596 if p === nothing
9697 zero (eltype (f))
9798 else
@@ -100,7 +101,7 @@ function evaluate(f::AbstractVector, PS::DiracSpace, x::Number)
100101end
101102
102103Base. sum (f:: Fun{DS} ) where DS<: DiracSpace =
103- sum (f. coefficients[1 : dimension (space (f))])
104+ sum (@view f. coefficients[1 : dimension (space (f))])
104105
105106DiracDelta (x:: Number )= Fun (DiracSpace (x),[1. ])
106107DiracDelta ()= DiracDelta (0. )
0 commit comments