# Bug in matrix times subarray with decreasing index

**URL:** <https://discourse.julialang.org/t/bug-in-matrix-times-subarray-with-decreasing-index/19802>\
**Category:** General Usage\
**Tags:** linearalgebra\
**Created:** [January 19, 2019, 5:00am UTC](https://discourse.julialang.org/t/bug-in-matrix-times-subarray-with-decreasing-index/19802 "2019-01-19T05:00:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![abelsiqueira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abelsiqueira/32/47269_2.png) [@abelsiqueira](https://discourse.julialang.org/u/abelsiqueira)\
**Post date:** [January 19, 2019, 5:00am UTC](https://discourse.julialang.org/t/bug-in-matrix-times-subarray-with-decreasing-index/19802/1 "2019-01-19T05:00:04Z")

</div>

Simple MWE:

```julia
A = ones(2,2)
v = [1.0; 2.0]
A * v # [3.0; 3.0]
A * v[2:-1:1] # [3.0; 3.0]
A * view(v, 2:-1:1) # [2.0; 2.0] ????

```

Is this a bug?

---

<div class="post-metadata">

**Author:** ![tkoolen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkoolen/32/1603_2.png) [@tkoolen](https://discourse.julialang.org/u/tkoolen)\
**Post date:** [January 19, 2019, 5:24am UTC](https://discourse.julialang.org/t/bug-in-matrix-times-subarray-with-decreasing-index/19802/2 "2019-01-19T05:24:04Z")

</div>

Yes. The matrix multiplication ultimately dispatches to `BLAS` `gemv`:

[https://github.com/JuliaLang/julia/blob/099e826241fca365a120df9bac9a9fede6e7bae4/stdlib/LinearAlgebra/src/blas.jl#L564](https://github.com/JuliaLang/julia/blob/099e826241fca365a120df9bac9a9fede6e7bae4/stdlib/LinearAlgebra/src/blas.jl#L564)

via

[https://github.com/JuliaLang/julia/blob/099e826241fca365a120df9bac9a9fede6e7bae4/stdlib/LinearAlgebra/src/matmul.jl#L346](https://github.com/JuliaLang/julia/blob/099e826241fca365a120df9bac9a9fede6e7bae4/stdlib/LinearAlgebra/src/matmul.jl#L346)

`BLAS` `gemv` probably assumes that the stride is nonnegative. `LinearAlgebra.generic_matvecmul!` does do the right thing though, so the latter method could just check for a negative stride and fall back to that.

---

<div class="post-metadata">

**Author:** ![abelsiqueira](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abelsiqueira/32/47269_2.png) [@abelsiqueira](https://discourse.julialang.org/u/abelsiqueira)\
**Post date:** [January 19, 2019, 1:19pm UTC](https://discourse.julialang.org/t/bug-in-matrix-times-subarray-with-decreasing-index/19802/3 "2019-01-19T13:19:34Z")

</div>

Poster the [issue](https://github.com/JuliaLang/julia/issues/30765). Thanks.
