38
38
39
39
# default_Fun is the default constructor, based on evaluation and transforms
40
40
# last argument is whether to splat or not
41
- default_Fun (T:: Type ,f,d:: Space ,pts:: AbstractArray , shouldsplat:: Val{true} ) =
42
- Fun (d,transform (d,T[f (x... ) for x in pts]))
41
+ function default_Fun (T:: Type , f, d:: Space , pts:: AbstractArray , shouldsplat:: Val{true} )
42
+ default_Fun (T, Base. splat (f), d, pts, Val (false ))
43
+ end
43
44
44
- default_Fun (T:: Type ,f,d:: Space ,pts:: AbstractArray , shouldsplat:: Val{false} ) =
45
- Fun (d,transform (d,broadcast! (f, similar (pts, T), pts)))
45
+ function default_Fun (T:: Type , f, d:: Space , pts:: AbstractArray , shouldsplat:: Val{false} )
46
+ fv = broadcast! (f, similar (pts, T), pts)
47
+ tfn = _transform!! (Val (supportsinplacetransform (d)))
48
+ coeffs = tfn (d, fv)
49
+ Fun (d, coeffs)
50
+ end
46
51
47
52
48
- function default_Fun (f,d:: Space ,n:: Integer , shouldsplat:: Val{false} )
53
+ function default_Fun (f, d:: Space , n:: Integer , shouldsplat:: Val{false} )
49
54
pts= points (d, n)
50
55
f1= f (pts[1 ])
51
56
if isa (f1,AbstractArray) && size (d) ≠ size (f1)
@@ -57,19 +62,11 @@ function default_Fun(f,d::Space,n::Integer, shouldsplat::Val{false})
57
62
default_Fun (Tprom,f,d,pts,Val (false ))
58
63
end
59
64
60
- function default_Fun (f,d:: Space ,n:: Integer , shouldsplat:: Val{true} )
61
- pts= points (d, n)
62
- f1= f (pts[1 ]. .. )
63
- if isa (f1,AbstractArray) && size (d) ≠ size (f1)
64
- return Fun (f,Space (fill (d,size (f1))),n)
65
- end
66
-
67
- # we need 3 eltype calls for the case Interval(Point([1.,1.]))
68
- Tprom= choosefuncfstype (typeof (f1),prectype (domain (d)))
69
- default_Fun (Tprom,f,d,pts,Val (true ))
65
+ function default_Fun (f, d:: Space , n:: Integer , shouldsplat:: Val{true} )
66
+ default_Fun (Base. splat (f), d, n, Val (false ))
70
67
end
71
68
72
- default_Fun (f,d:: Space ,n:: Integer ) = default_Fun (f,d,n,Val (! hasnumargs (f, 1 )))
69
+ default_Fun (f,d:: Space ,n:: Integer ) = default_Fun (f,d,n,Val (! hasonearg (f )))
73
70
74
71
Fun (f,d:: Space ,n:: Integer ) = default_Fun (dynamic (f),d,n)
75
72
@@ -96,7 +93,7 @@ Fun(c::Number,d::Space) = c==0 ? c*zeros(prectype(d),d) : c*ones(prectype(d),d)
96
93
97
94
# # Adaptive constructors
98
95
function default_Fun (f, d:: Space )
99
- _default_Fun (hasnumargs (f, 1 ) ? f : Base. splat (f), d)
96
+ _default_Fun (hasonearg (f ) ? f : Base. splat (f), d)
100
97
end
101
98
# In _default_Fun, we know that the function takes a single argument
102
99
function _default_Fun (f, d:: Space )
0 commit comments