@@ -500,6 +500,11 @@ plan_itransform!(sp::Space,v) = ICanonicalTransformPlan(sp, v, Val(true))
500
500
# transform converts from values at points(S,n) to coefficients
501
501
# itransform converts from coefficients to values at points(S,n)
502
502
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
+
503
508
"""
504
509
transform(s::Space, vals)
505
510
@@ -529,7 +534,10 @@ julia> transform(Chebyshev(), v)
529
534
0.0
530
535
```
531
536
"""
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
533
541
534
542
"""
535
543
itransform(s::Space,coefficients::AbstractVector)
@@ -551,7 +559,10 @@ julia> itransform(Chebyshev(), [0.5, 0, 0.5])
551
559
0.75
552
560
```
553
561
"""
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
555
566
556
567
itransform! (S:: Space ,cfs) = plan_itransform! (S,cfs)* cfs
557
568
transform! (S:: Space ,cfs) = plan_transform! (S,cfs)* cfs
0 commit comments