@@ -16,36 +16,39 @@ macro calculus_functional(Op)
16
16
end
17
17
struct $ WrappOp{BT<: Operator ,S<: Space ,T} <: $Op{S,T}
18
18
op:: BT
19
+ domainspace:: S
19
20
end
20
21
21
- ApproxFunBase. @wrapper $ WrappOp
22
-
22
+ ApproxFunBase. @wrapper $ WrappOp false false
23
+ ApproxFunBase . domainspace (A :: $WrappOp ) = A . domainspace
23
24
24
25
# We expect the operator to be real/complex if the basis is real/complex
25
- $ ConcOp (dsp:: Space ) = $ ConcOp {typeof(dsp),ApproxFunBase.prectype(dsp)} (dsp)
26
+ $ ConcOp (dsp:: ApproxFunBase. Space ) = $ ConcOp {typeof(dsp),ApproxFunBase.prectype(dsp)} (dsp)
26
27
27
- $ Op () = $ Op (UnsetSpace ())
28
+ $ Op () = $ Op (ApproxFunBase . UnsetSpace ())
28
29
$ Op (dsp) = $ ConcOp (dsp)
29
- $ Op (d:: Domain ) = $ Op (Space (d))
30
+ $ Op (d:: ApproxFunBase. Domain ) = $ Op (ApproxFunBase . Space (d))
30
31
31
- ApproxFunBase. promotedomainspace (:: $Op ,sp:: Space ) = $ Op (sp)
32
+ ApproxFunBase. promotedomainspace (:: $Op ,sp:: ApproxFunBase. Space ) = $ Op (sp)
32
33
33
34
34
- Base. convert (:: Type{Operator{T}} ,Σ:: $ConcOp ) where {T} =
35
- (T== eltype (Σ) ? Σ : $ ConcOp {typeof(Σ.domainspace),T} (Σ. domainspace)):: Operator{T}
35
+ Base. convert (:: Type{ApproxFunBase. Operator{T}} ,Σ:: $ConcOp ) where {T} =
36
+ (T== eltype (Σ) ? Σ : $ ConcOp {typeof(Σ.domainspace),T} (Σ. domainspace)):: ApproxFunBase. Operator{T}
36
37
37
- ApproxFunBase. domain (Σ:: $ConcOp ) = domain (Σ. domainspace)
38
+ ApproxFunBase. domain (Σ:: $ConcOp ) = ApproxFunBase . domain (Σ. domainspace)
38
39
ApproxFunBase. domainspace (Σ:: $ConcOp ) = Σ. domainspace
39
40
40
41
Base. getindex (:: $ConcOp{ApproxFunBase.UnsetSpace} ,kr:: AbstractRange ) =
41
42
error (" Spaces cannot be inferred for operator" )
42
43
43
- $ WrappOp (op:: Operator ) =
44
- $ WrappOp {typeof(op),typeof(domainspace(op)) ,eltype(op)} (op)
44
+ $ WrappOp (op:: ApproxFunBase. Operator, dsp = ApproxFunBase . domainspace (op) ) =
45
+ $ WrappOp {typeof(op),typeof(dsp) ,eltype(op)} (op, dsp )
45
46
46
47
47
- Base. convert (:: Type{Operator{T}} ,Σ:: $WrappOp ) where {T} =
48
- (T== eltype (Σ) ? Σ : $ WrappOp (strictconvert (Operator{T},Σ. op))):: Operator{T}
48
+ function Base. convert (:: Type{ApproxFunBase.Operator{T}} ,Σ:: $WrappOp ) where {T}
49
+ T== eltype (Σ) && return Σ
50
+ $ WrappOp (ApproxFunBase. strictconvert (ApproxFunBase. Operator{T},Σ. op)):: ApproxFunBase.Operator{T}
51
+ end
49
52
end )
50
53
end
51
54
@@ -63,7 +66,10 @@ function DefiniteIntegral(sp::Space)
63
66
# try using `Integral`
64
67
Q = Integral (sp)
65
68
rsp = rangespace (Q)
66
- DefiniteIntegralWrapper ((Evaluation (rsp,rightendpoint)- Evaluation (rsp,leftendpoint))* Q)
69
+ TE = eltype (Evaluation (rsp,rightendpoint))
70
+ A = (Evaluation (rsp,rightendpoint)- Evaluation (rsp,leftendpoint)) * Q
71
+ S = SpaceOperator (A, sp, ConstantSpace (promote_type (TE, eltype (Q))))
72
+ DefiniteIntegralWrapper (S)
67
73
else
68
74
# try mapping to canonical domain
69
75
M = Multiplication (fromcanonicalD (sp),setcanonicaldomain (sp))
0 commit comments