@@ -51,13 +51,11 @@ Multiplication(c::Number) = Multiplication(Fun(c) )
51
51
# This covers right multiplication unless otherwise specified.
52
52
Multiplication (S:: Space ,f:: Fun ) = Multiplication (f,S)
53
53
54
-
55
- function convert (:: Type{Operator{T}} ,C:: ConcreteMultiplication{S,V} ) where {S,V,T}
56
- if T== eltype (C)
57
- C
58
- else
59
- ConcreteMultiplication {S,V,T} (Fun {S,T} (C. f),C. space)
60
- end
54
+ function ConcreteMultiplication {D,S,T} (C:: ConcreteMultiplication ) where {D<: Space ,S<: Space ,T}
55
+ ConcreteMultiplication {D,S,T} (strictconvert (VFun{D,T}, C. f), strictconvert (S, C. space))
56
+ end
57
+ function Operator {T} (C:: ConcreteMultiplication{S,V} ) where {S,V,T}
58
+ ConcreteMultiplication {S,V,T} (Fun {S,T} (C. f),C. space)
61
59
end
62
60
63
61
domainspace (M:: ConcreteMultiplication{D,S,T} ) where {D,S,T} = M. space
@@ -113,12 +111,11 @@ domainspace(M::MultiplicationWrapper) = M.space
113
111
114
112
@wrapper MultiplicationWrapper false
115
113
116
- function convert (:: Type{Operator{TT}} ,C:: MultiplicationWrapper{S,V,O,T} ) where {TT,S,V,O,T}
117
- if TT== T
118
- C
119
- else
120
- MultiplicationWrapper (Fun {S,TT} (C. f),Operator {TT} (C. op), C. space):: Operator{TT}
121
- end
114
+ function MultiplicationWrapper {D,S,T,O} (M:: MultiplicationWrapper ) where {D<: Space ,S<: Space ,T,O<: Operator{T} }
115
+ MultiplicationWrapper {D,S,T,O} (strictconvert (VFun{D,T}, M. f), strictconvert (O, M. op), strictconvert (S, M. space))
116
+ end
117
+ function Operator {TT} (C:: MultiplicationWrapper{S} ) where {TT,S}
118
+ MultiplicationWrapper (Fun {S,TT} (C. f),Operator {TT} (C. op), C. space):: Operator{TT}
122
119
end
123
120
124
121
0 commit comments