diff --git a/README.md b/README.md index 184c36b0d..21d6785a7 100644 --- a/README.md +++ b/README.md @@ -413,6 +413,10 @@ Currently, the `@compat` macro supports the following syntaxes: * `Unicode.isnumeric` is now available as `isnumeric` ([#25479]). +* `vecnorm` and `vecdot` are now `Compat.norm` and `Compat.dot`, respectively, while the + old `norm(A::AbstractMatrix, p=2)` is now `Compat.opnorm` ([#27401]). `import Compat: ⋅` + to get `Compat.dot` as the binary operator `⋅`. + * `atan2` is now a 2-argument method of `atan` ([#27253]). ## New macros @@ -644,3 +648,4 @@ includes this fix. Find the minimum version from there. [#27253]: https://github.com/JuliaLang/julia/issues/27253 [#27258]: https://github.com/JuliaLang/julia/issues/27258 [#27298]: https://github.com/JuliaLang/julia/issues/27298 +[#27401]: https://github.com/JuliaLang/julia/issues/27401 diff --git a/src/Compat.jl b/src/Compat.jl index dea39c126..fb7b77da5 100644 --- a/src/Compat.jl +++ b/src/Compat.jl @@ -1925,6 +1925,17 @@ if VERSION < v"0.7.0-DEV.5278" export something end +if !isdefined(LinearAlgebra, :opnorm) # julia#27401 + opnorm(A::AbstractMatrix, p::Real=2) = LinearAlgebra.norm(A, p) + const norm = LinearAlgebra.vecnorm + const dot = LinearAlgebra.vecdot +else + const opnorm = LinearAlgebra.opnorm + const norm = LinearAlgebra.norm + const dot = LinearAlgebra.dot +end +const ⋅ = dot + # https://github.com/JuliaLang/julia/pull/27253 @static if VERSION < v"0.7.0-alpha.44" Base.atan(x::Real, y::Real) = atan2(x, y) diff --git a/test/runtests.jl b/test/runtests.jl index 4a65f2caa..cdeb89103 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1813,6 +1813,14 @@ let sep = Compat.Sys.iswindows() ? ';' : ':' end end +# julia#27401 +import Compat: ⋅ +@test Compat.opnorm([1 2;3 4]) ≈ 5.464985704219043 +@test Compat.opnorm([1 2;3 4], 1) ≈ 6 +@test Compat.norm([1 2;3 4]) ≈ 5.477225575051661 +@test Compat.norm([1 2;3 4], 1) ≈ 10 +@test Compat.dot([1 2;3 4], [5 6;7 8]) == [1 2;3 4] ⋅ [5 6;7 8] ≈ 70 + # 0.7.0-alpha.44 @test atan(1, 2) == atan(0.5) @test atan(1.0, 2.0) == atan(0.5)