|
855 | 855 | @test ndims(copy(bc)) == ndims([v for v in bc]) == ndims(collect(bc)) == ndims(bc) |
856 | 856 | end |
857 | 857 |
|
| 858 | +# issue 43847: collect preserves shape of broadcasted |
| 859 | +let |
| 860 | + bc = Broadcast.broadcasted(*, [1 2; 3 4], 2) |
| 861 | + @test collect(Iterators.product(bc, bc)) == collect(Iterators.product(copy(bc), copy(bc))) |
| 862 | + |
| 863 | + a1 = AD1(rand(2,3)) |
| 864 | + bc1 = Broadcast.broadcasted(*, a1, 2) |
| 865 | + @test collect(Iterators.product(bc1, bc1)) == collect(Iterators.product(copy(bc1), copy(bc1))) |
| 866 | + |
| 867 | + # using ndims of second arg |
| 868 | + bc2 = Broadcast.broadcasted(*, 2, a1) |
| 869 | + @test collect(Iterators.product(bc2, bc2)) == collect(Iterators.product(copy(bc2), copy(bc2))) |
| 870 | + |
| 871 | + # >2 args |
| 872 | + bc3 = Broadcast.broadcasted(*, a1, 3, a1) |
| 873 | + @test collect(Iterators.product(bc3, bc3)) == collect(Iterators.product(copy(bc3), copy(bc3))) |
| 874 | + |
| 875 | + # including a tuple and custom array type |
| 876 | + bc4 = Broadcast.broadcasted(*, (1,2,3), AD1(rand(3))) |
| 877 | + @test collect(Iterators.product(bc4, bc4)) == collect(Iterators.product(copy(bc4), copy(bc4))) |
| 878 | + |
| 879 | + # testing ArrayConflict |
| 880 | + @test Broadcast.broadcasted(+, AD1(rand(3)), AD2(rand(3))) isa Broadcast.Broadcasted{Broadcast.ArrayConflict} |
| 881 | + @test Broadcast.broadcasted(+, AD1(rand(3)), AD2(rand(3))) isa Broadcast.Broadcasted{<:Broadcast.AbstractArrayStyle{Any}} |
| 882 | + |
| 883 | + @test @inferred(Base.IteratorSize(Broadcast.broadcasted((1,2,3),a1,zeros(3,3,3)))) === Base.HasShape{3}() |
| 884 | + |
| 885 | + # inference on nested |
| 886 | + bc = Base.broadcasted(+, AD1(randn(3)), AD1(randn(3))) |
| 887 | + bc_nest = Base.broadcasted(+, bc , bc) |
| 888 | + @test @inferred(Base.IteratorSize(bc_nest)) === Base.HasShape{1}() |
| 889 | + end |
| 890 | + |
858 | 891 | # issue #31295 |
859 | 892 | let a = rand(5), b = rand(5), c = copy(a) |
860 | 893 | view(identity(a), 1:3) .+= view(b, 1:3) |
|
0 commit comments