### How does SageMath compute the Jordan form of a block diagonal matrix?

Let $m$ be a block diagonal matrix $diag(b_1, \dots, b_m)$. Let $(p_i)$ be the orthogonal projections such that $b_i = p_i m p_i$. If we compute the Jordan form of $m$ using SageMath as follows:

```
sage: jf, q = m.jordan_form(transformation=True)
```

**Question 1**: Does SageMath computes the Jordan form of $m$ by computing the Jordan form of each $b_i$?
(more precisely, $p_i$ commutes with $\pi^{-1} q \pi$, for some permutation matrix $\pi$?).

In fact, what ~~I am ~~we are really interested in here is the simultanenous diagonalization: let $m$, $n$ be two simultaneously diagonalizable matrix. Make the following:

```
sage: jf1, q1 = m.jordan_form(transformation=True)
sage: nn= ~q1 * n * q1
sage: jf2, q2 = nn.jordan_form(transformation=True)
```

**Question 2**: Is it true that the change-of-basis matrix $q=q_1q_2$ both diagonalizes $m$ and $n$?

A positive answer to Q1 should imply a positive answer to Q2.

If you know a better way to make simultaneous diagonalization, please let me know. More generally, ~~I am ~~we are also interested in simultaneous block-diagonalization, more precisely, if $m$ and $n$ does not commute, the $*$-algebra they generate is isomorphic to $\bigoplus_i M_{n_i}(\mathbb{C})$ with at least one $i$ such that $n_i>1$, and we are interested in the block-diagonalization according to this decomposition.