@@ -47,24 +47,12 @@ rangespace(S::SpaceOperator) = S.rangespace
47
47
48
48
49
49
# #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 ())
58
52
end
59
53
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 ())
68
56
end
69
57
70
58
@@ -80,31 +68,31 @@ promoterangespace(P::Operator,sp::Space) = promoterangespace(P,sp,rangespace(P))
80
68
promotedomainspace (P:: Operator ,sp:: Space ) = promotedomainspace (P,sp,domainspace (P))
81
69
82
70
83
- promoterangespace (P:: Operator ,sp:: Space ,cursp:: Space ):: Any =
71
+ promoterangespace (P:: Operator ,sp:: Space ,cursp:: Space ) =
84
72
(sp== cursp) ? P : Conversion (cursp,sp)* P
85
- promotedomainspace (P:: Operator ,sp:: Space ,cursp:: Space ):: Any =
73
+ promotedomainspace (P:: Operator ,sp:: Space ,cursp:: Space ) =
86
74
(sp== cursp) ? P : P* Conversion (sp,cursp)
87
75
88
76
89
77
90
78
91
79
92
80
function promoterangespace (ops:: AbstractVector{O} ) where O<: Operator
93
- isempty (ops) && return ops
81
+ isempty (ops) && return convert (Vector{Operator{ eltype (O)}}, ops)
94
82
k= findmaxrangespace (ops)
95
83
# TODO : T might be incorrect
96
84
T= mapreduce (eltype,promote_type,ops)
97
85
Operator{T}[promoterangespace (op,k) for op in ops]
98
86
end
99
87
function promotedomainspace (ops:: AbstractVector{O} ) where O<: Operator
100
- isempty (ops) && return ops
88
+ isempty (ops) && return convert (Vector{Operator{ eltype (O)}}, ops)
101
89
k= findmindomainspace (ops)
102
90
# TODO : T might be incorrect
103
91
T= mapreduce (eltype,promote_type,ops)
104
92
Operator{T}[promotedomainspace (op,k) for op in ops]
105
93
end
106
94
function promotedomainspace (ops:: AbstractVector{O} ,S:: Space ) where O<: Operator
107
- isempty (ops) && return ops
95
+ isempty (ops) && return convert (Vector{Operator{ eltype (O)}}, ops)
108
96
k= conversion_type (findmindomainspace (ops),S)
109
97
# TODO : T might be incorrect
110
98
T= promote_type (mapreduce (eltype,promote_type,ops),prectype (S))
0 commit comments