@@ -66,17 +66,38 @@ using Test
66
66
A′ = @. A1 + A2 + A3
67
67
@test findmin (A′) == vfindmin (+ , A1, A2, A3)
68
68
@test findmin (A′, dims= 2 ) == vfindmin (+ , A1, A2, A3, dims= 2 )
69
+ #
69
70
v1 = rand (5 )
70
71
v2 = rand (5 )
71
72
v3 = rand (5 )
72
73
v′ = @. v1 + v2 + v3;
73
74
@test findmin (v′) == vfindmin (+ , v1, v2, v3)
75
+ #
76
+ A = rand (5 ,5 ,5 ,5 )
77
+ A′ = cos .(A)
78
+ val1, ind1 = findmax (A′, dims= (2 ,4 ))
79
+ val2, ind2 = vfindmax (cos, A, dims= (2 ,4 ))
80
+ @test ind1 == ind2 && val1 ≈ val2
81
+ #
82
+ g (x) = ifelse (abs (x) ≥ 2 , 100 , 1 )
83
+ A = randn (5 ,5 ,5 ,5 )
84
+ A′ = g .(A)
85
+ val1, ind1 = findmax (A′, dims= (2 ,4 ))
86
+ val2, ind2 = vfindmax (g, A, dims= (2 ,4 ))
87
+ @test ind1 == ind2 && val1 ≈ val2
74
88
end
75
89
@testset " vfindminmax_vararg" begin
76
90
A′ = @. A1 * A2 + A3;
77
91
@test findmin (A′) == vfindmin ((x, y, z) -> x * y + z, A1, A2, A3)
78
92
val1, ind1 = findmin (A′, dims= 2 )
79
93
val2, ind2 = vfindmin ((x, y, z) -> x * y + z, A1, A2, A3, dims= 2 )
80
94
@test ind1 == ind2 && val1 ≈ val2
95
+ #
96
+ B1, B2, B3 = randn (5 ,5 ,5 ,5 ), randn (5 ,5 ,5 ,5 ), randn (5 ,5 ,5 ,5 );
97
+ h (x, y, z) = ifelse (x ≥ .5 , 100 , 1 ) * y + √ abs (z)
98
+ B′ = h .(B1, B2, B3)
99
+ val1, ind1 = findmax (B′, dims= (2 ,4 ))
100
+ val2, ind2 = vfindmax (h, B1, B2, B3, dims= (2 ,4 ))
101
+ @test ind1 == ind2 && val1 ≈ val2
81
102
end
82
103
end
0 commit comments