I am reading the review, Grand Unification of Quantum Algorithms, which covers the area known as "Quantum Singular Value Transform (QSVT)."
I am really trying to understand it behind the context of Hamiltonian Simulation, and have read many papers and watched a few videos outlining the methods.
I understand that we can block encode an $N \times M$ matrix $H$ into a unitary $U$.
We can then construct $V_{\phi}(\theta) = \prod_{n=0}^{d - 1} R_\phi(\theta)$ for $\vec{\phi} \in \mathbb{R}^d$ where $R_\phi(\theta)$ is a rotation about axis $\phi$ by angle $\theta$.
This forms the matrix
$ \begin{bmatrix} P(a) & iQ(a)\sqrt{1-a^2} \\ iQ^*(a)\sqrt{1-a^2} & P^*(a) \end{bmatrix} $
where $deg(P), deg(Q) \leq d$ with a few more constraints that aren't important for now.
Then note that $e^{-iHt} = cos(Ht) - isin(Ht)$. This then allows us to break the problem into simulation of $cos(Ht)$ and $-isin(Ht)$.
We then use the Jacobi-Anger function expansion to approximate $cos(Ht)$ and $sin(Ht)$ up to some degree $d$.
These approximations are then used as the function $P(a)$ by picking some $\vec{\phi}$.
But how exactly would you pick the $\vec{\phi}$ for this case? I found some sources mentioning Remez-Type exchanges, but I can't find any implementations.
Thanks for any help!