Skip to content

Commit 92e5428

Browse files
committed
Define conj, real, imag
1 parent 27e77f1 commit 92e5428

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

src/KroneckerArrays.jl

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,11 @@ function Base.map!(
390390
)
391391
return map!(Base.Fix2(*, inv(f.x)), dest, a)
392392
end
393+
function Base.map!(::typeof(conj), dest::KroneckerArray, a::KroneckerArray)
394+
dest.a .= conj.(a.a)
395+
dest.b .= conj.(a.b)
396+
return dest
397+
end
393398

394399
using LinearAlgebra:
395400
LinearAlgebra,
@@ -409,7 +414,6 @@ using LinearAlgebra:
409414
tr
410415

411416
using DiagonalArrays: DiagonalArrays, diagonal
412-
DiagonalArrays.diagonal(a::AbstractArray) = Diagonal(a)
413417
function DiagonalArrays.diagonal(a::KroneckerArray)
414418
return diagonal(a.a) diagonal(a.b)
415419
end
@@ -438,6 +442,23 @@ function LinearAlgebra.norm(a::KroneckerArray, p::Int=2)
438442
return norm(a.a, p) norm(a.b, p)
439443
end
440444

445+
function Base.real(a::KroneckerArray)
446+
if iszero(imag(a.a)) || iszero(imag(a.b))
447+
return real(a.a) real(a.b)
448+
elseif iszero(real(a.a)) || iszero(real(a.b))
449+
return -imag(a.a) imag(a.b)
450+
end
451+
return real(a.a) real(a.b) - imag(a.a) imag(a.b)
452+
end
453+
function Base.imag(a::KroneckerArray)
454+
if iszero(imag(a.a)) || iszero(real(a.b))
455+
return real(a.a) imag(a.b)
456+
elseif iszero(real(a.a)) || iszero(imag(a.b))
457+
return imag(a.a) real(a.b)
458+
end
459+
return real(a.a) imag(a.b) + imag(a.a) real(a.b)
460+
end
461+
441462
using MatrixAlgebraKit: MatrixAlgebraKit, diagview
442463
function MatrixAlgebraKit.diagview(a::KroneckerMatrix)
443464
return diagview(a.a) diagview(a.b)

0 commit comments

Comments
 (0)