Skip to content

Commit 0b7a72d

Browse files
committed
Fix tests and cleanup lingering Adj/T references
1 parent c1af7db commit 0b7a72d

File tree

8 files changed

+36
-233
lines changed

8 files changed

+36
-233
lines changed

src/array_interface.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ function Base.vcat(x::AbstractComponentVecOrMat, y::AbstractComponentVecOrMat)
5959
return ComponentArray(vcat(data_x, data_y), Axis((;idxmap_x..., idxmap_y...)), getaxes(x)[2:end]...)
6060
end
6161
end
62-
Base.vcat(x::CV...) where {CV<:AdjOrTransComponentArray} = ComponentArray(reduce(vcat, map(y->getdata(y.parent)', x)), getaxes(x[1]))
6362
Base.vcat(x::ComponentVector, args...) = vcat(getdata(x), getdata.(args)...)
6463
Base.vcat(x::ComponentVector, args::Union{Number, UniformScaling, AbstractVecOrMat}...) = vcat(getdata(x), getdata.(args)...)
6564
Base.vcat(x::ComponentVector, args::Vararg{AbstractVector{T}, N}) where {T,N} = vcat(getdata(x), getdata.(args)...)

src/broadcasting.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
Base.BroadcastStyle(::Type{<:ComponentArray{T, N, A, Axes}}) where {T, N, A, Axes} = Broadcast.BroadcastStyle(A)
22

3-
# Need special case here for adjoint vectors in order to avoid type instability in axistype
4-
Broadcast.combine_axes(a::ComponentArray, b::AdjOrTransComponentVector) = (axes(a)[1], axes(b)[2])
5-
Broadcast.combine_axes(a::AdjOrTransComponentVector, b::ComponentArray) = (axes(b)[2], axes(a)[1])
6-
73
Broadcast.axistype(a::CombinedAxis, b::AbstractUnitRange) = a
84
Broadcast.axistype(a::AbstractUnitRange, b::CombinedAxis) = b
95
Broadcast.axistype(a::CombinedAxis, b::CombinedAxis) = CombinedAxis(FlatAxis(), Base.Broadcast.axistype(_array_axis(a), _array_axis(b)))

src/compat/gpuarrays.jl

Lines changed: 17 additions & 186 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
const GPUComponentArray = ComponentArray{T,N,<:GPUArrays.AbstractGPUArray,Ax} where {T,N,Ax}
2-
const GPUComponentVector{T,Ax} = ComponentArray{T,1,<:GPUArrays.AbstractGPUVector,Ax}
3-
const GPUComponentMatrix{T,Ax} = ComponentArray{T,2,<:GPUArrays.AbstractGPUMatrix,Ax}
1+
const AbstractGPUArrayOrAdj = Union{<:GPUArrays.AbstractGPUArray{T, N}, Adjoint{T, <:GPUArrays.AbstractGPUArray{T, N}}, Transpose{T, <:GPUArrays.AbstractGPUArray{T, N}}} where {T, N}
2+
const GPUComponentArray = ComponentArray{T,N,<:AbstractGPUArrayOrAdj{T, N},Ax} where {T,N,Ax}
3+
const GPUComponentVector{T,Ax} = ComponentArray{T,1,<:AbstractGPUArrayOrAdj{T, 1},Ax}
4+
const GPUComponentMatrix{T,Ax} = ComponentArray{T,2,<:AbstractGPUArrayOrAdj{T, 2},Ax}
45
const GPUComponentVecorMat{T,Ax} = Union{GPUComponentVector{T,Ax},GPUComponentMatrix{T,Ax}}
56

67
GPUArrays.backend(x::ComponentArray) = GPUArrays.backend(getdata(x))
@@ -25,7 +26,10 @@ end
2526

2627
LinearAlgebra.dot(x::GPUComponentArray, y::GPUComponentArray) = dot(getdata(x), getdata(y))
2728
LinearAlgebra.norm(ca::GPUComponentArray, p::Real) = norm(getdata(ca), p)
28-
LinearAlgebra.rmul!(ca::GPUComponentArray, b::Number) = GPUArrays.generic_rmul!(ca, b)
29+
function LinearAlgebra.rmul!(ca::GPUComponentArray, b::Number)
30+
GPUArrays.generic_rmul!(getdata(ca), b)
31+
return ca
32+
end
2933

3034
function Base.map(f, x::GPUComponentArray, args...)
3135
data = map(f, getdata(x), getdata.(args)...)
@@ -78,196 +82,23 @@ end
7882
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
7983
A::GPUComponentVecorMat,
8084
B::GPUComponentVecorMat, a::Number, b::Number)
81-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
82-
end
83-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
84-
A::GPUComponentVecorMat,
85-
B::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
86-
a::Number, b::Number)
87-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
88-
end
89-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
90-
A::GPUComponentVecorMat,
91-
B::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
92-
a::Number, b::Number)
93-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
85+
return GPUArrays.generic_matmatmul!(C, getdata(A), getdata(B), a, b)
9486
end
9587

9688
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
97-
A::GPUComponentVecorMat,
98-
B::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
99-
a::Number, b::Number)
100-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
101-
end
102-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
103-
A::GPUComponentVecorMat,
104-
B::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
105-
}, a::Number, b::Number)
106-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
107-
end
108-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
109-
A::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
110-
B::GPUComponentVecorMat, a::Number, b::Number)
111-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
112-
end
113-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
114-
A::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
115-
B::GPUComponentVecorMat, a::Number, b::Number)
116-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
117-
end
118-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
119-
A::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
89+
A::AbstractGPUArrayOrAdj,
12090
B::GPUComponentVecorMat, a::Number, b::Number)
121-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
122-
end
123-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
124-
A::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
125-
}, B::GPUComponentVecorMat,
126-
a::Number, b::Number)
127-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
128-
end
129-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
130-
A::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
131-
B::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
132-
a::Number, b::Number)
133-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
134-
end
135-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
136-
A::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
137-
},
138-
B::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
139-
a::Number, b::Number)
140-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
141-
end
142-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
143-
A::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
144-
B::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
145-
a::Number, b::Number)
146-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
147-
end
148-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
149-
A::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
150-
B::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
151-
}, a::Number, b::Number)
152-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
153-
end
154-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
155-
A::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
156-
B::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
157-
a::Number, b::Number)
158-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
159-
end
160-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
161-
A::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
162-
B::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
163-
a::Number, b::Number)
164-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
165-
end
166-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
167-
A::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
168-
B::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
169-
a::Number, b::Number)
170-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
171-
end
172-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
173-
A::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
174-
},
175-
B::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
176-
}, a::Number, b::Number)
177-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
91+
return GPUArrays.generic_matmatmul!(C, A, getdata(B), a, b)
17892
end
17993

18094
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
18195
A::GPUComponentVecorMat,
182-
B::GPUComponentVecorMat, a::Real, b::Real)
183-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
184-
end
185-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
186-
A::GPUComponentVecorMat,
187-
B::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat}, a::Real,
188-
b::Real)
189-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
190-
end
191-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
192-
A::GPUComponentVecorMat,
193-
B::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
194-
a::Real, b::Real)
195-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
196-
end
197-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
198-
A::GPUComponentVecorMat,
199-
B::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
200-
}, a::Real, b::Real)
201-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
202-
end
203-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
204-
A::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
205-
B::GPUComponentVecorMat, a::Real, b::Real)
206-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
207-
end
208-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
209-
A::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
210-
B::GPUComponentVecorMat, a::Real, b::Real)
211-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
212-
end
213-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
214-
A::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
215-
B::GPUComponentVecorMat, a::Real, b::Real)
216-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
217-
end
218-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
219-
A::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
220-
}, B::GPUComponentVecorMat,
221-
a::Real, b::Real)
222-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
223-
end
224-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
225-
A::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
226-
B::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat}, a::Real,
227-
b::Real)
228-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
229-
end
230-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
231-
A::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
232-
},
233-
B::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
234-
a::Real, b::Real)
235-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
236-
end
237-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
238-
A::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
239-
B::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
240-
a::Real, b::Real)
241-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
242-
end
243-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
244-
A::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
245-
B::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
246-
}, a::Real, b::Real)
247-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
248-
end
249-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
250-
A::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
251-
B::LinearAlgebra.Adjoint{<:Any,<:GPUArrays.AbstractGPUVecOrMat}, a::Real,
252-
b::Real)
253-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
254-
end
255-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
256-
A::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
257-
B::LinearAlgebra.Adjoint{<:Any,<:GPUComponentVecorMat},
258-
a::Real, b::Real)
259-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
260-
end
261-
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
262-
A::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
263-
B::LinearAlgebra.Transpose{<:Any,<:GPUArrays.AbstractGPUVecOrMat},
264-
a::Real, b::Real)
265-
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
96+
B::AbstractGPUArrayOrAdj, a::Number, b::Number)
97+
return GPUArrays.generic_matmatmul!(C, getdata(A), B, a, b)
26698
end
99+
267100
function LinearAlgebra.mul!(C::GPUComponentVecorMat,
268-
A::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
269-
},
270-
B::LinearAlgebra.Transpose{<:Any,<:GPUComponentVecorMat
271-
}, a::Real, b::Real)
101+
A::AbstractGPUArrayOrAdj,
102+
B::AbstractGPUArrayOrAdj, a::Number, b::Number)
272103
return GPUArrays.generic_matmatmul!(C, A, B, a, b)
273-
end
104+
end

src/componentarray.jl

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,11 @@ const CArray = ComponentArray
118118
const CVector = ComponentVector
119119
const CMatrix = ComponentMatrix
120120

121-
const AdjOrTrans{T, A} = Union{Adjoint{T, A}, Transpose{T, A}}
122-
const AdjOrTransComponentArray{T, A} = Union{Adjoint{T, A}, Transpose{T, A}} where A<:ComponentArray
123-
const AdjOrTransComponentVector{T} = Union{Adjoint{T, A}, Transpose{T, A}} where A<:ComponentVector
124-
const AdjOrTransComponentMatrix{T} = Union{Adjoint{T, A}, Transpose{T, A}} where A<:ComponentMatrix
125-
126121
const ComponentVecOrMat = Union{ComponentVector, ComponentMatrix}
127-
const AdjOrTransComponentVecOrMat = AdjOrTrans{T, <:ComponentVecOrMat} where T
128-
const AbstractComponentArray = Union{ComponentArray, AdjOrTransComponentArray}
129-
const AbstractComponentVecOrMat = Union{ComponentVecOrMat, AdjOrTransComponentVecOrMat}
130-
const AbstractComponentVector = Union{ComponentVector, AdjOrTransComponentVector}
131-
const AbstractComponentMatrix = Union{ComponentMatrix, AdjOrTransComponentMatrix}
122+
const AbstractComponentArray = ComponentArray
123+
const AbstractComponentVecOrMat = ComponentVecOrMat
124+
const AbstractComponentVector = ComponentVector
125+
const AbstractComponentMatrix = ComponentMatrix
132126

133127

134128
## Constructor helpers
@@ -288,12 +282,8 @@ julia> getaxes(ca)
288282
```
289283
"""
290284
@inline getaxes(x::ComponentArray) = getfield(x, :axes)
291-
@inline getaxes(x::AdjOrTrans{T, <:ComponentVector}) where T = (FlatAxis(), getaxes(x.parent)[1])
292-
@inline getaxes(x::AdjOrTrans{T, <:ComponentMatrix}) where T = reverse(getaxes(x.parent))
293285

294286
@inline getaxes(::Type{<:ComponentArray{T,N,A,Axes}}) where {T,N,A,Axes} = map(x->x(), (Axes.types...,))
295-
@inline getaxes(::Type{<:AdjOrTrans{T,CA}}) where {T,CA<:ComponentVector} = (FlatAxis(), getaxes(CA)[1]) |> typeof
296-
@inline getaxes(::Type{<:AdjOrTrans{T,CA}}) where {T,CA<:ComponentMatrix} = reverse(getaxes(CA)) |> typeof
297287

298288
## Field access through these functions to reserve dot-getting for keys
299289
@inline getaxes(x::VarAxes) = getaxes(typeof(x))

src/linear_algebra.jl

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ _first_axis(x::AbstractComponentVecOrMat) = getaxes(x)[1]
1313

1414
_second_axis(x::AbstractMatrix) = FlatAxis()
1515
_second_axis(x::ComponentMatrix) = getaxes(x)[2]
16-
_second_axis(x::AdjOrTransComponentVecOrMat) = getaxes(x)[2]
1716

1817
_out_axes(::typeof(*), a, b::AbstractVector) = (_first_axis(a), )
1918
_out_axes(::typeof(*), a, b::AbstractMatrix) = (_first_axis(a), _second_axis(b))
@@ -27,19 +26,7 @@ for op in [:*, :\, :/]
2726
function Base.$op(A::AbstractComponentVecOrMat, B::AbstractComponentVecOrMat)
2827
C = $op(getdata(A), getdata(B))
2928
ax = _out_axes($op, A, B)
30-
return ComponentArray(C, ax)
31-
end
32-
end
33-
for (adj, Adj) in zip([:adjoint, :transpose], [:Adjoint, :Transpose])
34-
@eval begin
35-
function Base.$op(aᵀ::$Adj{T,<:ComponentVector}, B::AbstractComponentMatrix) where {T}
36-
cᵀ = $op(getdata(aᵀ), getdata(B))
37-
ax2 = _out_axes($op, aᵀ, B)[2]
38-
return $adj(ComponentArray(cᵀ', ax2))
39-
end
40-
function Base.$op(A::$Adj{T,<:CV}, B::CV) where {T<:Real, CV<:ComponentVector{T}}
41-
return $op(getdata(A), getdata(B))
42-
end
29+
return ComponentArray(C, ax...)
4330
end
4431
end
4532
end
@@ -56,4 +43,4 @@ for op in [:adjoint, :transpose]
5643
return ComponentMatrix($op(getdata(M)), FlatAxis(), Ax1())
5744
end
5845
end
59-
end
46+
end

src/show.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ function Base.show(io::IO, ::MIME"text/plain", x::ComponentMatrix{T,A,Axes}) whe
7979
println(io, " with axes $(axs[1]) × $(axs[2])")
8080
Base.print_matrix(io, getdata(x))
8181
return nothing
82-
end
82+
end

test/gpu_tests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ end
4646
@test rmul!(jlca3, 2) == ComponentArray(jla .* 2, Axis(a=1:2, b=3:4))
4747
end
4848
@testset "mul!" begin
49-
A = jlca .* jlca';
49+
A = jlca * jlca';
5050
@test_nowarn mul!(deepcopy(A), A, A, 1, 2);
5151
@test_nowarn mul!(deepcopy(A), A', A', 1, 2);
5252
@test_nowarn mul!(deepcopy(A), A', A, 1, 2);

test/runtests.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ ca_composed = ComponentArray(a = 1, b = ca)
2828

2929
ca2 = ComponentArray(nt2)
3030

31-
cmat = ComponentArray(a .* a', ax, ax)
32-
cmat2 = ca2 .* ca2'
31+
cmat = ComponentArray(a * a', ax, ax)
32+
cmat2 = ca2 * ca2'
3333

3434
caa = ComponentArray(a = ca, b = sq_mat)
3535

@@ -142,13 +142,13 @@ end
142142
@test hash(ca) != hash(getdata(ca))
143143
@test hash(ca, zero(UInt)) != hash(getdata(ca), zero(UInt))
144144

145-
ab = ComponentArray(a = 1, b = 2)
146-
xy = ComponentArray(x = 1, y = 2)
145+
ab = ComponentArray(a=1, b=2)
146+
xy = ComponentArray(x=1, y=2)
147147
@test ab != xy
148148
@test hash(ab) != hash(xy)
149149
@test hash(ab, zero(UInt)) != hash(xy, zero(UInt))
150150

151-
@test ab == LVector(a = 1, b = 2)
151+
@test ab == LVector(a=1, b=2)
152152

153153
# Issue #117
154154
kw_fun(; a, b) = a // b
@@ -369,11 +369,11 @@ end
369369
@testset "Broadcasting" begin
370370
temp = deepcopy(ca)
371371
@test eltype(Float32.(ca)) == Float32
372-
@test ca .* ca' == cmat
372+
@test ca * ca' == cmat
373373
@test 1 .* (ca .+ ca) == ComponentArray(a .+ a, getaxes(ca))
374374
@test typeof(ca .+ cmat) == typeof(cmat)
375-
@test getaxes(false .* ca .* ca') == (ax, ax)
376-
@test getaxes(false .* ca' .* ca) == (ax, ax)
375+
@test getaxes(false .* ca * ca') == (ax, ax)
376+
@test isa(ca' * ca, Float64)
377377
@test (vec(temp) .= vec(ca_Float32)) isa ComponentArray
378378

379379
@test_broken getdata(ca_MVector .* ca_MVector) isa MArray
@@ -393,8 +393,8 @@ end
393393
x1 = ComponentArray(a = [1.1, 2.1], b = [0.1])
394394
x2 = ComponentArray(a = [1.1, 2.1], b = 0.1)
395395
x3 = ComponentArray(a = [1.1, 2.1], c = [0.1])
396-
xmat = x1 .* x2'
397-
x1mat = x1 .* x1'
396+
xmat = x1 * x2'
397+
x1mat = x1 * x1'
398398
@test x1 + x2 isa Vector
399399
@test x1 + x3 isa Vector
400400
@test x2 + x3 isa Vector
@@ -459,7 +459,7 @@ end
459459
@test ca * transpose(ca) == collect(cmat)
460460
@test ca * transpose(ca) == a * transpose(a)
461461
@test transpose(ca) * ca == transpose(a) * a
462-
@test ca' * cmat == ComponentArray(a' * getdata(cmat), getaxes(ca))
462+
@test ca' * cmat == ComponentArray(a' * getdata(cmat), FlatAxis(), getaxes(ca)...)
463463
@test transpose(transpose(cmat)) == cmat
464464
@test transpose(transpose(ca)) == ca
465465
@test transpose(ca.c) * cmat[:c, :c] * ca.c isa Number

0 commit comments

Comments
 (0)