<aside> ❗ This and many more summaries can be found on https://dcamenisch.github.io/ethz-summaries/notes/. Feel free to leave a comment in the document if you spot any mistakes! As always no guarantees for completeness or correctness are made.
</aside>
The method .block(int i, int j, int m, int n) returns a sub-matrix starting at the top left corner $(i, j)$ with size $m, n$.
All numerical libraries store the entries of a dense **matrix $A \in \mathbb{K}^{m,n}$ in a linear array of length $mn$.
$$ A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} \\ \text{Row major: } [1,\ 2, \ 3,\ 4,\ 5,\ 6,\ 7,\ 8,\ 9] \\ \text{Column major: } [1,\ 4,\ 7,\ 2,\ 5,\ 8,\ 3,\ 6,\ 9] $$
Performing elementary operations through simple (nested) loops, we arrive at the following complexity bounds:
Computational Cost of Basic Operations
Definition: The Kronecker product $A \otimes B$ of two matrices $A \in \mathbb{K}^{m,n}$ and $B \in \mathbb{K}^{l,k}$ is the $(ml) \times (nk)$-matrix
$$ A \otimes B := \begin{bmatrix} (A){11}B & (A){12}B & \cdots & (A){1n}B \\ (A){21}B & (A){22}B & \cdots & (A){2n}B \\ \vdots & \vdots & & \vdots \\ (A){m1}B & (A){m2}B & \cdots & (A)_{mn}B \end{bmatrix} \in \mathbb{K}^{ml,\ nk} $$
Computers are finite automatons, which therefore can only handle finitely many number, not $\R$.
The set of machine numbers $\mathbb{M}$ cannot be close under elementary arithmetic operations $+, \ -, \ \cdot , \ /,$ that is, when adding, multiplying, etc. This leads to the fact, that roundoff errors are inevitable.