@@ -383,14 +383,20 @@ I,J,N = findnz(z)
383
383
@test vecnorm (A) ≈ vecnorm (parent (A))
384
384
@test vecdot (v, v) ≈ vecdot (v0, v0)
385
385
386
- v = OffsetArray ([1 ,1e100 ,1 ,- 1e100 ], (- 3 ,))* 1000
387
- v2 = OffsetArray ([1 ,- 1e100 ,1 ,1e100 ], (5 ,))* 1000
388
- @test isa (v, OffsetArray)
389
- cv = OffsetArray ([1 ,1e100 ,1e100 ,2 ], (- 3 ,))* 1000
390
- cv2 = OffsetArray ([1 ,- 1e100 ,- 1e100 ,2 ], (5 ,))* 1000
391
- @test isequal (cumsum_kbn (v), cv)
392
- @test isequal (cumsum_kbn (v2), cv2)
393
- @test isequal (sum_kbn (v), sum_kbn (parent (v)))
386
+ # Prior to its removal from Base, cumsum_kbn was used here. To achieve the same level of
387
+ # accuracy in the tests, we need to use BigFloats with enlarged precision.
388
+ @testset " high-precision array reduction" begin
389
+ setprecision (BigFloat, 500 ) do
390
+ v = OffsetArray (BigFloat[1 ,1e100 ,1 ,- 1e100 ], (- 3 ,)) .* 1000
391
+ v2 = OffsetArray (BigFloat[1 ,- 1e100 ,1 ,1e100 ], ( 5 ,)) .* 1000
392
+ @test isa (v, OffsetArray)
393
+ cv = OffsetArray (BigFloat[1 , 1e100 , 1e100 ,2 ], (- 3 ,)) .* 1000
394
+ cv2 = OffsetArray (BigFloat[1 ,- 1e100 ,- 1e100 ,2 ], ( 5 ,)) .* 1000
395
+ @test isequal (cumsum (v), cv)
396
+ @test isequal (cumsum (v2), cv2)
397
+ @test isequal (sum (v), sum (parent (v)))
398
+ end
399
+ end
394
400
395
401
io = IOBuffer ()
396
402
writedlm (io, A)
0 commit comments