11module DiffTests
22
3- using LinearAlgebra: det, norm, dot, tr
3+ using LinearAlgebra: det, norm, dot, tr, Diagonal, LowerTriangular, UpperTriangular
4+ using SparseArrays: sparse
45using Statistics: mean
56
67#=
249250const INPLACE_ARRAY_TO_ARRAY_FUNCS = (chebyquad!, brown_almost_linear!, trigonometric!,
250251 mutation_test_1!, mutation_test_2!)
251252
253+ # ###########################
254+ # f(x::VecOrMat)::VecOrMat #
255+ # ###########################
256+
257+ diag_matrix (:: Type{T} , n:: Integer ) where T<: Real =
258+ Diagonal (LinRange (convert (T, 0.01 ), convert (T, 100.0 ), n))
259+ diag_matrix (x:: VecOrMat ) = diag_matrix (Float64, size (x, 1 ))
260+
261+ lehmer_matrix (:: Type{T} , n:: Integer ) where T<: Real =
262+ [convert (T, min (i, j)/ max (i, j)) for i in 1 : n, j in 1 : n]
263+ lehmer_matrix (x:: VecOrMat ) = lehmer_matrix (Float64, size (x, 1 ))
264+
265+ test_matrix = lehmer_matrix
266+
267+ # left multiplication by a constant matrix
268+ diag_lmul (x:: VecOrMat ) = diag_matrix (x) * x
269+ dense_lmul (x:: VecOrMat ) = test_matrix (x) * x
270+ utriag_lmul (x:: VecOrMat ) = UpperTriangular (test_matrix (x)) * x
271+ ltriag_lmul (x:: VecOrMat ) = LowerTriangular (test_matrix (x)) * x
272+ sparse_lmul (x:: VecOrMat ) = sparse (test_matrix (x)) * x
273+ sp_utriag_lmul (x:: VecOrMat ) = UpperTriangular (sparse (test_matrix (x))) * x
274+ sp_ltriag_lmul (x:: VecOrMat ) = LowerTriangular (sparse (test_matrix (x))) * x
275+
276+ # left division by a constant matrix
277+ diag_ldiv (x:: VecOrMat ) = diag_matrix (x) \ x
278+ dense_ldiv (x:: VecOrMat ) = test_matrix (x) \ x
279+ utriag_ldiv (x:: VecOrMat ) = UpperTriangular (test_matrix (x)) \ x
280+ ltriag_ldiv (x:: VecOrMat ) = LowerTriangular (test_matrix (x)) \ x
281+ sparse_ldiv (x:: VecOrMat ) = sparse (test_matrix (x)) \ x
282+ sp_utriag_ldiv (x:: VecOrMat ) = UpperTriangular (sparse (test_matrix (x))) \ x
283+ sp_ltriag_ldiv (x:: VecOrMat ) = LowerTriangular (sparse (test_matrix (x))) \ x
284+
285+ const VECTOR_TO_VECTOR_FUNCS = (diag_lmul, dense_lmul, utriag_lmul, ltriag_lmul,
286+ sparse_lmul, sp_utriag_lmul, sp_ltriag_lmul,
287+ diag_ldiv, utriag_ldiv, ltriag_ldiv,
288+ sparse_ldiv, sp_utriag_ldiv, sp_ltriag_ldiv,)
289+
252290# #####################
253291# f(x::Array)::Array #
254292# #####################
@@ -274,6 +312,10 @@ const ARRAY_TO_ARRAY_FUNCS = (-, chebyquad, brown_almost_linear, trigonometric,
274312# f(::Matrix)::Matrix #
275313# ######################
276314
277- const MATRIX_TO_MATRIX_FUNCS = (inv,)
315+ const MATRIX_TO_MATRIX_FUNCS = (inv,
316+ diag_lmul, dense_lmul, utriag_lmul, ltriag_lmul,
317+ sparse_lmul, sp_utriag_lmul, sp_ltriag_lmul,
318+ diag_ldiv, utriag_ldiv, ltriag_ldiv,
319+ sparse_ldiv, sp_utriag_ldiv, sp_ltriag_ldiv,)
278320
279321end # module
0 commit comments