|
44 | 44 | (10,)=>:, (10,10)=>:, (10,10,10)=>:, |
45 | 45 | (10,10,10)=>[1], (10,10,10)=>[2], (10,10,10)=>[3], |
46 | 46 | (0,)=>[1]] |
| 47 | + # mapreduce |
47 | 48 | @test compare(A->mapreduce(identity, +, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
48 | 49 | @test compare(A->mapreduce(identity, *, A; dims=dims, init=one(ET)), AT, rand(range, sz)) |
49 | 50 | @test compare(A->mapreduce(x->x+x, +, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
50 | | - end |
51 | | - end |
52 | | - # Test more corner cases. Tests from AcceleraterKernels.jl |
53 | | - # Cover empty (size 0) and non-singleton (size 3) axes; the size-10 loop above |
54 | | - # already covers the common non-edge shape. |
55 | | - for dims in [1,2,3,4,[1,2],[1,3],[1,4],[2,3],[2,4],[3,4],[1,2,3],[1,2,4],[1,3,4],[2,3,4],[1,2,3,4]], |
56 | | - isize in (0, 3), jsize in (0, 3), ksize in (0, 3) |
57 | | - @test compare(A->mapreduce(x->x+x, +, A; init=zero(Int32), dims), AT, rand(Int32(1):Int32(10), isize, jsize, ksize)) |
58 | | - end |
59 | | -end |
60 | 51 |
|
61 | | -@testsuite "reductions/reduce" (AT, eltypes)->begin |
62 | | - @testset "$ET" for ET in eltypes |
63 | | - range = ET <: Real ? (ET(1):ET(10)) : ET |
64 | | - for (sz,dims) in [(10,)=>[1], (10,10)=>[1,2], (10,10,10)=>[1,2,3], (10,10,10)=>[], |
65 | | - (10,)=>:, (10,10)=>:, (10,10,10)=>:, |
66 | | - (10,10,10)=>[1], (10,10,10)=>[2], (10,10,10)=>[3], |
67 | | - (0,)=>[1]] |
| 52 | + # reduce |
68 | 53 | @test compare(A->reduce(+, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
69 | 54 | @test compare(A->reduce(*, A; dims=dims, init=one(ET)), AT, rand(range, sz)) |
70 | | - if ET <: Integer |
71 | | - @test compare(A->reduce(&, A; dims=dims, init=~zero(ET)), AT, rand(range, sz)) |
72 | | - @test compare(A->reduce(|, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
73 | | - @test compare(A->reduce(⊻, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
74 | | - end |
75 | 55 | end |
76 | 56 | end |
77 | 57 | # Test more corner cases. Tests from AcceleraterKernels.jl |
78 | 58 | # Cover empty (size 0) and non-singleton (size 3) axes; the size-10 loop above |
79 | 59 | # already covers the common non-edge shape. |
80 | 60 | for dims in [1,2,3,4,[1,2],[1,3],[1,4],[2,3],[2,4],[3,4],[1,2,3],[1,2,4],[1,3,4],[2,3,4],[1,2,3,4]], |
81 | 61 | isize in (0, 3), jsize in (0, 3), ksize in (0, 3) |
| 62 | + @test compare(A->mapreduce(x->x+x, +, A; init=zero(Int32), dims), AT, rand(Int32(1):Int32(10), isize, jsize, ksize)) |
82 | 63 | @test compare(A->reduce(+, A; init=zero(Int32), dims), AT, rand(Int32(1):Int32(10), isize, jsize, ksize)) |
83 | 64 | end |
84 | 65 | end |
|
118 | 99 | end |
119 | 100 | end |
120 | 101 |
|
| 102 | +@testsuite "reductions/and or xor" (AT, eltypes)->begin |
| 103 | + @testset "$ET" for ET in filter(x -> x <: Integer, eltypes) |
| 104 | + range = ET <: Real ? (ET(1):ET(10)) : ET |
| 105 | + for (sz,dims) in [(10,)=>[1], (10,10)=>[1,2], (10,10,10)=>[1,2,3], (10,10,10)=>[], |
| 106 | + (10,)=>:, (10,10)=>:, (10,10,10)=>:, |
| 107 | + (10,10,10)=>[1], (10,10,10)=>[2], (10,10,10)=>[3], |
| 108 | + (0,)=>[1]] |
| 109 | + @test compare(A->reduce(&, A; dims=dims, init=~zero(ET)), AT, rand(range, sz)) |
| 110 | + @test compare(A->reduce(|, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
| 111 | + @test compare(A->reduce(⊻, A; dims=dims, init=zero(ET)), AT, rand(range, sz)) |
| 112 | + end |
| 113 | + end |
| 114 | +end |
| 115 | + |
121 | 116 | @testsuite "reductions/minimum maximum extrema" (AT, eltypes)->begin |
122 | 117 | @testset "$ET" for ET in eltypes |
123 | 118 | ET <: Complex && continue |
|
0 commit comments