@@ -47,24 +47,12 @@ rangespace(S::SpaceOperator) = S.rangespace
4747
4848
4949# #TODO : Do we need both max and min?
50- function findmindomainspace (ops:: AbstractVector ):: Any
51- sp = UnsetSpace ()
52-
53- for op in ops
54- sp = union (sp,domainspace (op))
55- end
56-
57- sp
50+ function findmindomainspace (ops:: AbstractVector )
51+ mapreduce (domainspace, union, ops, init = UnsetSpace ())
5852end
5953
60- function findmaxrangespace (ops:: AbstractVector ):: Any
61- sp = UnsetSpace ()
62-
63- for op in ops
64- sp = maxspace (sp,rangespace (op))
65- end
66-
67- sp
54+ function findmaxrangespace (ops:: AbstractVector )
55+ mapreduce (rangespace, maxspace, ops, init = UnsetSpace ())
6856end
6957
7058
@@ -80,31 +68,31 @@ promoterangespace(P::Operator,sp::Space) = promoterangespace(P,sp,rangespace(P))
8068promotedomainspace (P:: Operator ,sp:: Space ) = promotedomainspace (P,sp,domainspace (P))
8169
8270
83- promoterangespace (P:: Operator ,sp:: Space ,cursp:: Space ):: Any =
71+ promoterangespace (P:: Operator ,sp:: Space ,cursp:: Space ) =
8472 (sp== cursp) ? P : Conversion (cursp,sp)* P
85- promotedomainspace (P:: Operator ,sp:: Space ,cursp:: Space ):: Any =
73+ promotedomainspace (P:: Operator ,sp:: Space ,cursp:: Space ) =
8674 (sp== cursp) ? P : P* Conversion (sp,cursp)
8775
8876
8977
9078
9179
9280function promoterangespace (ops:: AbstractVector{O} ) where O<: Operator
93- isempty (ops) && return ops
81+ isempty (ops) && return convert (Vector{Operator{ eltype (O)}}, ops)
9482 k= findmaxrangespace (ops)
9583 # TODO : T might be incorrect
9684 T= mapreduce (eltype,promote_type,ops)
9785 Operator{T}[promoterangespace (op,k) for op in ops]
9886end
9987function promotedomainspace (ops:: AbstractVector{O} ) where O<: Operator
100- isempty (ops) && return ops
88+ isempty (ops) && return convert (Vector{Operator{ eltype (O)}}, ops)
10189 k= findmindomainspace (ops)
10290 # TODO : T might be incorrect
10391 T= mapreduce (eltype,promote_type,ops)
10492 Operator{T}[promotedomainspace (op,k) for op in ops]
10593end
10694function promotedomainspace (ops:: AbstractVector{O} ,S:: Space ) where O<: Operator
107- isempty (ops) && return ops
95+ isempty (ops) && return convert (Vector{Operator{ eltype (O)}}, ops)
10896 k= conversion_type (findmindomainspace (ops),S)
10997 # TODO : T might be incorrect
11098 T= promote_type (mapreduce (eltype,promote_type,ops),prectype (S))
0 commit comments