@@ -370,6 +370,41 @@ Random.seed!(100)
370
370
@test all (o4cp .== z4)
371
371
@test all (BLAS. gemv (' N' , U4, o4) .== v41)
372
372
@test all (BLAS. gemv (' N' , U4, o4) .== v41)
373
+ @testset " non-standard strides" begin
374
+ if elty <: Complex
375
+ A = elty[1 + 2im 3 + 4im 5 + 6im 7 + 8im ; 2 + 3im 4 + 5im 6 + 7im 8 + 9im ; 3 + 4im 5 + 6im 7 + 8im 9 + 10im ]
376
+ v = elty[1 + 2im , 2 + 3im , 3 + 4im , 4 + 5im ]
377
+ dest = view (ones (elty, 5 ), 4 : - 2 : 2 )
378
+ @test BLAS. gemv! (' N' , elty (2 ), view (A, 2 : 3 , 2 : 2 : 4 ), view (v, 1 : 3 : 4 ), elty (3 ), dest) == elty[- 35 + 178im , - 39 + 202im ]
379
+ @test BLAS. gemv (' N' , elty (- 1 ), view (A, 2 : 3 , 2 : 3 ), view (v, 2 : - 1 : 1 )) == elty[15 - 41im , 17 - 49im ]
380
+ @test BLAS. gemv (' N' , view (A, 1 : 0 , 1 : 2 ), view (v, 1 : 2 )) == elty[]
381
+ dest = view (ones (elty, 5 ), 4 : - 2 : 2 )
382
+ @test BLAS. gemv! (' T' , elty (2 ), view (A, 2 : 3 , 2 : 2 : 4 ), view (v, 1 : 3 : 4 ), elty (3 ), dest) == elty[- 29 + 124im , - 45 + 220im ]
383
+ @test BLAS. gemv (' T' , elty (- 1 ), view (A, 2 : 3 , 2 : 3 ), view (v, 2 : - 1 : 1 )) == elty[14 - 38im , 18 - 54im ]
384
+ @test BLAS. gemv (' T' , view (A, 2 : 3 , 2 : 1 ), view (v, 1 : 2 )) == elty[]
385
+ dest = view (ones (elty, 5 ), 4 : - 2 : 2 )
386
+ @test BLAS. gemv! (' C' , elty (2 ), view (A, 2 : 3 , 2 : 2 : 4 ), view (v, 1 : 3 : 4 ), elty (3 ), dest) == elty[131 + 8im , 227 + 24im ]
387
+ @test BLAS. gemv (' C' , elty (- 1 ), view (A, 2 : 3 , 2 : 3 ), view (v, 2 : - 1 : 1 )) == elty[- 40 - 6im , - 56 - 10im ]
388
+ @test BLAS. gemv (' C' , view (A, 2 : 3 , 2 : 1 ), view (v, 1 : 2 )) == elty[]
389
+ else
390
+ A = elty[1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ]
391
+ v = elty[1 , 2 , 3 , 4 ]
392
+ dest = view (ones (elty, 5 ), 4 : - 2 : 2 )
393
+ @test BLAS. gemv! (' N' , elty (2 ), view (A, 2 : 3 , 2 : 2 : 4 ), view (v, 1 : 3 : 4 ), elty (3 ), dest) == elty[79 , 119 ]
394
+ @test BLAS. gemv (' N' , elty (- 1 ), view (A, 2 : 3 , 2 : 3 ), view (v, 2 : - 1 : 1 )) == elty[- 19 , - 31 ]
395
+ @test BLAS. gemv (' N' , view (A, 1 : 0 , 1 : 2 ), view (v, 1 : 2 )) == elty[]
396
+ for trans = (' T' , ' C' )
397
+ dest = view (ones (elty, 5 ), 4 : - 2 : 2 )
398
+ @test BLAS. gemv! (trans, elty (2 ), view (A, 2 : 3 , 2 : 2 : 4 ), view (v, 1 : 3 : 4 ), elty (3 ), dest) == elty[95 , 115 ]
399
+ @test BLAS. gemv (trans, elty (- 1 ), view (A, 2 : 3 , 2 : 3 ), view (v, 2 : - 1 : 1 )) == elty[- 22 , - 25 ]
400
+ @test BLAS. gemv (trans, view (A, 2 : 3 , 2 : 1 ), view (v, 1 : 2 )) == elty[]
401
+ end
402
+ end
403
+ for trans = (' N' , ' T' , ' C' )
404
+ @test_throws ErrorException BLAS. gemv (trans, view (A, 1 : 2 : 3 , 1 : 2 ), view (v, 1 : 2 ))
405
+ @test_throws ErrorException BLAS. gemv (trans, view (A, 1 : 2 , 2 : - 1 : 1 ), view (v, 1 : 2 ))
406
+ end
407
+ end
373
408
end
374
409
@testset " gemm" begin
375
410
@test all (BLAS. gemm (' N' , ' N' , I4, I4) .== I4)
@@ -459,6 +494,7 @@ Base.setindex!(A::WrappedArray{T, N}, v, I::Vararg{Int, N}) where {T, N} = setin
459
494
Base. unsafe_convert (:: Type{Ptr{T}} , A:: WrappedArray{T} ) where T = Base. unsafe_convert (Ptr{T}, A. A)
460
495
461
496
Base. strides (A:: WrappedArray ) = strides (A. A)
497
+ Base. elsize (:: Type{WrappedArray{T,N}} ) where {T,N} = Base. elsize (Array{T,N})
462
498
463
499
@testset " strided interface adjtrans" begin
464
500
x = WrappedArray ([1 , 2 , 3 , 4 ])
0 commit comments