From 775eea5307a5310f878cf1979f885b1fe53ac74d Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Wed, 1 Jun 2022 22:05:11 +0400 Subject: [PATCH 1/2] diagonal*offset matrix should throw --- stdlib/LinearAlgebra/src/diagonal.jl | 2 ++ stdlib/LinearAlgebra/test/diagonal.jl | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/stdlib/LinearAlgebra/src/diagonal.jl b/stdlib/LinearAlgebra/src/diagonal.jl index b3d54b5842112..f4e6d427dceeb 100644 --- a/stdlib/LinearAlgebra/src/diagonal.jl +++ b/stdlib/LinearAlgebra/src/diagonal.jl @@ -285,6 +285,7 @@ function *(D::Diagonal, transA::Transpose{<:Any,<:AbstractMatrix}) end @inline function __muldiag!(out, D::Diagonal, B, alpha, beta) + require_one_based_indexing(B) require_one_based_indexing(out) if iszero(alpha) _rmul_or_fill!(out, beta) @@ -306,6 +307,7 @@ end return out end @inline function __muldiag!(out, A, D::Diagonal, alpha, beta) + require_one_based_indexing(A) require_one_based_indexing(out) if iszero(alpha) _rmul_or_fill!(out, beta) diff --git a/stdlib/LinearAlgebra/test/diagonal.jl b/stdlib/LinearAlgebra/test/diagonal.jl index dd16842961561..c9e74ae9a08d8 100644 --- a/stdlib/LinearAlgebra/test/diagonal.jl +++ b/stdlib/LinearAlgebra/test/diagonal.jl @@ -5,6 +5,9 @@ module TestDiagonal using Test, LinearAlgebra, Random using LinearAlgebra: BlasFloat, BlasComplex +include("../../../test/testhelpers/OffsetArrays.jl") +using .OffsetArrays + const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test") isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl")) using .Main.Furlongs @@ -785,6 +788,16 @@ end @test_throws DimensionMismatch lmul!(Diagonal([1]), [1,2,3]) # nearby end +@testset "Multiplication of a Diagonal with an OffsetArray" begin + # Offset indices should throw + D = Diagonal(1:4) + A = OffsetArray(rand(4,4), 2, 2) + @test_throws ArgumentError D * A + @test_throws ArgumentError A * D + @test_throws ArgumentError mul!(similar(A, size(A)), A, D) + @test_throws ArgumentError mul!(similar(A, size(A)), D, A) +end + @testset "Triangular division by Diagonal #27989" begin K = 5 for elty in (Float32, Float64, ComplexF32, ComplexF64) From a13ead5cdfced0dc4c2a6bf42b96a1d2a25a9188 Mon Sep 17 00:00:00 2001 From: Jishnu Bhattacharya Date: Wed, 1 Jun 2022 23:49:28 +0400 Subject: [PATCH 2/2] fix testhelper path --- stdlib/LinearAlgebra/test/diagonal.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/LinearAlgebra/test/diagonal.jl b/stdlib/LinearAlgebra/test/diagonal.jl index c9e74ae9a08d8..b8186f3b33150 100644 --- a/stdlib/LinearAlgebra/test/diagonal.jl +++ b/stdlib/LinearAlgebra/test/diagonal.jl @@ -5,13 +5,13 @@ module TestDiagonal using Test, LinearAlgebra, Random using LinearAlgebra: BlasFloat, BlasComplex -include("../../../test/testhelpers/OffsetArrays.jl") -using .OffsetArrays - const BASE_TEST_PATH = joinpath(Sys.BINDIR, "..", "share", "julia", "test") isdefined(Main, :Furlongs) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "Furlongs.jl")) using .Main.Furlongs +isdefined(Main, :OffsetArrays) || @eval Main include(joinpath($(BASE_TEST_PATH), "testhelpers", "OffsetArrays.jl")) +using .Main.OffsetArrays + n=12 #Size of matrix problem to test Random.seed!(1)