@@ -51,13 +51,11 @@ Multiplication(c::Number) = Multiplication(Fun(c) )
5151# This covers right multiplication unless otherwise specified.
5252Multiplication (S:: Space ,f:: Fun ) = Multiplication (f,S)
5353
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)
6159end
6260
6361domainspace (M:: ConcreteMultiplication{D,S,T} ) where {D,S,T} = M. space
@@ -113,12 +111,11 @@ domainspace(M::MultiplicationWrapper) = M.space
113111
114112@wrapper MultiplicationWrapper false
115113
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}
122119end
123120
124121
0 commit comments