@@ -77,15 +77,21 @@ getindex(D::ConcreteMultiplication{F,UnsetSpace,T},k::Integer,j::Integer) where
77
77
78
78
79
79
# #multiplication can always be promoted, range space is allowed to change
80
- promotedomainspace (D:: Multiplication ,sp:: UnsetSpace ) = D
81
- promotedomainspace (D:: Multiplication ,sp:: Space ) = Multiplication (D. f,sp)
82
- promoterangespace (D:: ConcreteMultiplication{P,UnsetSpace} ,sp:: UnsetSpace ) where {P} = D
83
- promoterangespace (D:: ConcreteMultiplication{P,UnsetSpace} ,sp:: Space ) where {P} =
80
+ promotedomainspace (D:: Multiplication , sp:: UnsetSpace ) = D
81
+ function promotedomainspace (D:: Multiplication , sp:: Space )
82
+ if domainspace (D) == sp
83
+ D
84
+ else
85
+ Multiplication (D. f,sp)
86
+ end
87
+ end
88
+ promoterangespace (D:: ConcreteMultiplication{P,UnsetSpace} , sp:: UnsetSpace ) where {P} = D
89
+ promoterangespace (D:: ConcreteMultiplication{P,UnsetSpace} , sp:: Space ) where {P} =
84
90
promoterangespace (Multiplication (D. f,ConstantSpace (domain (sp))), sp)
85
91
86
- choosedomainspace (M:: ConcreteMultiplication{D,UnsetSpace} ,:: UnsetSpace ) where {D} = space (M. f)
92
+ choosedomainspace (M:: ConcreteMultiplication{D,UnsetSpace} , :: UnsetSpace ) where {D} = space (M. f)
87
93
# we assume multiplication maps spaces to themselves
88
- choosedomainspace (M:: ConcreteMultiplication{D,UnsetSpace} ,sp:: Space ) where {D} = sp
94
+ choosedomainspace (M:: ConcreteMultiplication{D,UnsetSpace} , sp:: Space ) where {D} = sp
89
95
90
96
91
97
diagm (a:: Fun ) = Multiplication (a)
0 commit comments