@@ -237,9 +237,47 @@ elts = (Float32, Float64, ComplexF32, ComplexF64)
237237 end
238238 end
239239
240- # KroneckerArrays.dist
240+ # isapprox
241+
242+ rng = StableRNG (123 )
243+ a1 = randn (rng, elt, (2 , 2 ))
244+ a = a1 ⊗ randn (rng, elt, (3 , 3 ))
245+ b = a1 ⊗ randn (rng, elt, (3 , 3 ))
246+ @test isapprox (a, b; atol = norm (a - b) * (1 + 2 eps (real (elt))))
247+ @test ! isapprox (a, b; atol = norm (a - b) * (1 - 2 eps (real (elt))))
248+ @test isapprox (
249+ a, b;
250+ rtol = norm (a - b) / max (norm (a), norm (b)) * (1 + 2 eps (real (elt)))
251+ )
252+ @test ! isapprox (
253+ a, b;
254+ rtol = norm (a - b) / max (norm (a), norm (b)) * (1 - 2 eps (real (elt)))
255+ )
256+ @test isapprox (
257+ a, b; atol = norm (a - b) * (1 + 2 eps (real (elt))),
258+ rtol = norm (a - b) / max (norm (a), norm (b)) * (1 + 2 eps (real (elt)))
259+ )
260+ @test isapprox (
261+ a, b; atol = norm (a - b) * (1 + 2 eps (real (elt))),
262+ rtol = norm (a - b) / max (norm (a), norm (b)) * (1 - 2 eps (real (elt)))
263+ )
264+ @test isapprox (
265+ a, b; atol = norm (a - b) * (1 - 2 eps (real (elt))),
266+ rtol = norm (a - b) / max (norm (a), norm (b)) * (1 + 2 eps (real (elt)))
267+ )
268+ @test ! isapprox (
269+ a, b; atol = norm (a - b) * (1 - 2 eps (real (elt))),
270+ rtol = norm (a - b) / max (norm (a), norm (b)) * (1 - 2 eps (real (elt)))
271+ )
272+
273+ a = randn (elt, (2 , 2 )) ⊗ randn (elt, (3 , 3 ))
274+ b = randn (elt, (2 , 2 )) ⊗ randn (elt, (3 , 3 ))
275+ @test_throws ArgumentError isapprox (a, b)
276+
277+ # KroneckerArrays.dist_kronecker
241278 rng = StableRNG (123 )
242- a = randn (rng, 100 , 100 ) ⊗ randn (rng, 100 , 100 )
243- b = (arg1 (a) + 1.0e-1 * randn (rng, size (arg1 (a)))) ⊗ (arg2 (a) + 1.0e-1 * randn (rng, size (arg2 (a))))
279+ a = randn (rng, (100 , 100 )) ⊗ randn (rng, (100 , 100 ))
280+ b = (arg1 (a) + randn (rng, size (arg1 (a))) / 10 ) ⊗
281+ (arg2 (a) + randn (rng, size (arg2 (a))) / 10 )
244282 @test KroneckerArrays. dist_kronecker (a, b) ≈ norm (collect (a) - collect (b)) rtol = 1.0e-2
245283end
0 commit comments