From 8794613e64d0b382ed7fb998f003f369b7e854fd Mon Sep 17 00:00:00 2001 From: Daniel Karrasch Date: Mon, 10 May 2021 12:38:01 +0200 Subject: [PATCH 1/2] Make `dot` handle `missing`s --- stdlib/LinearAlgebra/src/generic.jl | 3 +++ stdlib/LinearAlgebra/test/generic.jl | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/stdlib/LinearAlgebra/src/generic.jl b/stdlib/LinearAlgebra/src/generic.jl index ec8e9df654c46..b8ba20c42e4d7 100644 --- a/stdlib/LinearAlgebra/src/generic.jl +++ b/stdlib/LinearAlgebra/src/generic.jl @@ -903,6 +903,9 @@ function dot(x, y) # arbitrary iterables end dot(x::Number, y::Number) = conj(x) * y +dot(::Any, ::Missing) = missing +dot(::Missing, ::Any) = missing +dot(::Missing, ::Missing) = missing function dot(x::AbstractArray, y::AbstractArray) lx = length(x) diff --git a/stdlib/LinearAlgebra/test/generic.jl b/stdlib/LinearAlgebra/test/generic.jl index f3ef87da83052..4c6ed09b912dd 100644 --- a/stdlib/LinearAlgebra/test/generic.jl +++ b/stdlib/LinearAlgebra/test/generic.jl @@ -512,6 +512,14 @@ end end end +@testset "dot with missing" begin + x = [5, 6, missing] + y = [missing, 5, 6] + @test ismissing(dot(x, x)) + @test ismissing(dot(x, y)) + @test ismissing(dot(y, x)) +end + @testset "condskeel #34512" begin A = rand(3, 3) @test condskeel(A) ≈ condskeel(A, [8,8,8]) From 51d6c156b4e22c947d729a61d0cba3fc65c416e0 Mon Sep 17 00:00:00 2001 From: Daniel Karrasch Date: Mon, 10 May 2021 13:20:35 +0200 Subject: [PATCH 2/2] more specific signature --- stdlib/LinearAlgebra/src/generic.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/LinearAlgebra/src/generic.jl b/stdlib/LinearAlgebra/src/generic.jl index b8ba20c42e4d7..a1160aa38eb78 100644 --- a/stdlib/LinearAlgebra/src/generic.jl +++ b/stdlib/LinearAlgebra/src/generic.jl @@ -903,8 +903,8 @@ function dot(x, y) # arbitrary iterables end dot(x::Number, y::Number) = conj(x) * y -dot(::Any, ::Missing) = missing -dot(::Missing, ::Any) = missing +dot(::Number, ::Missing) = missing +dot(::Missing, ::Number) = missing dot(::Missing, ::Missing) = missing function dot(x::AbstractArray, y::AbstractArray)