@@ -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,7 @@ julia> transform(Chebyshev(), v)
529534 0.0
530535```
531536"""
532- transform (S:: Space , vals) = plan_transform (S,vals)* vals
537+ transform (S:: Space , vals) = plan_transform (S,vals)* _toStridedArray ( vals)
533538
534539"""
535540 itransform(s::Space,coefficients::AbstractVector)
@@ -551,7 +556,7 @@ julia> itransform(Chebyshev(), [0.5, 0, 0.5])
551556 0.75
552557```
553558"""
554- itransform (S:: Space , cfs) = plan_itransform (S,cfs)* cfs
559+ itransform (S:: Space , cfs) = plan_itransform (S,cfs)* _toStridedArray ( cfs)
555560
556561itransform! (S:: Space ,cfs) = plan_itransform! (S,cfs)* cfs
557562transform! (S:: Space ,cfs) = plan_transform! (S,cfs)* cfs
0 commit comments