@@ -500,6 +500,11 @@ plan_itransform!(sp::Space,v) = ICanonicalTransformPlan(sp, v, Val(true))
500500# transform converts from values at points(S,n) to coefficients
501501# itransform converts from coefficients to values at points(S,n)
502502
503+ # convert to strided arrays, as currently the inverse performs inplace scaling
504+ # ideally, this should not be needed if FastTransforms avoids modifying cfs
505+ _toStridedArray (cfs:: StridedArray ) = cfs
506+ _toStridedArray (cfs:: AbstractArray ) = convert (Array, cfs)
507+
503508"""
504509 transform(s::Space, vals)
505510
@@ -529,7 +534,10 @@ julia> transform(Chebyshev(), v)
529534 0.0
530535```
531536"""
532- transform (S:: Space , vals) = plan_transform (S,vals)* vals
537+ function transform (S:: Space , vals)
538+ valsf = convert (AbstractArray{float (eltype (vals))}, vals)
539+ plan_transform (S,valsf)* _toStridedArray (valsf)
540+ end
533541
534542"""
535543 itransform(s::Space,coefficients::AbstractVector)
@@ -551,7 +559,10 @@ julia> itransform(Chebyshev(), [0.5, 0, 0.5])
551559 0.75
552560```
553561"""
554- itransform (S:: Space , cfs) = plan_itransform (S,cfs)* cfs
562+ function itransform (S:: Space , cfs)
563+ cfsf = convert (AbstractArray{float (eltype (cfs))}, cfs)
564+ plan_itransform (S,cfsf)* _toStridedArray (cfsf)
565+ end
555566
556567itransform! (S:: Space ,cfs) = plan_itransform! (S,cfs)* cfs
557568transform! (S:: Space ,cfs) = plan_transform! (S,cfs)* cfs
0 commit comments