$A$ and $B$ are $n \times n$ matrices and $v$ is a vector with $n$ elements. $Av$ has $\approx 2n^2$ flops and $A+B$ has $n^2$ flops. Following this logic, $(A+B)v$ should be faster than $Av+Bv$.
Yet, when I run the following code in matlab
```A = rand(2000,2000);
B = rand(2000,2000);
v = rand(2000,1);
tic
D=zeros(size(A));
D = A;
for i =1:100
    D = A + B;
    (D)*v;
end
toc
tic
for i =1:100
    (A*v+B*v);
end
toc
```
The opposite is true. Av+Bv is over twice as fast. Any explanations?
It is likely that Matlab is performing some matrix multiplication optimizations internally, which can make the matrix addition and multiplication with a vector computation faster when performed in a single expression (i.e., `(A+B)*v`) rather than separate steps (i.e., `A*v+B*v`). You can try using the `mldivide` function for matrix-vector multiplication to see if it makes a difference:
```sc
First, let's clarify some terminology and assumptions. In your description, you stated that multiplying a matrix with a vector has approximately 2n^2 flops, which is inconsistent with the information you provided about A + B having n^2 flops. If we assume that both A and B are dense matrices and that the flop count for multiplying a matrix with a vector (Ax) is O(n^2), then Ax requires n^