Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: bestapprPade Section: number_theoretical C-Name: bestapprPade Prototype: GD-1,L, Help: bestapprPade(x, {B}): returns a rational function approximation to x. This function applies to series, polmods, and rational functions of course. Otherwise it applies recursively to all components. Doc: using variants of the extended Euclidean algorithm (Pad\'{e} approximants), returns a rational function approximation $a/b$ to $x$, whose denominator is limited by $B$, if present. If $B$ is omitted, return the best approximation affordable given the input accuracy; if you are looking for true rational functions, presumably approximated to sufficient accuracy, you should first try that option. Otherwise, $B$ must be a nonnegative real (impose $0 \leq \text{degree}(b) \leq B$). \item If $x$ is a \typ{POLMOD} modulo $N$ this function performs rational modular reconstruction modulo $N$. The routine then returns the unique rational function $a/b$ in coprime polynomials, with $\text{degree}(b)\leq B$ and $\text{degree}(a)$ minimal, which is congruent to $x$ modulo $N$. Omitting $B$ amounts to choosing it equal to the floor of $\text{degree}(N) / 2$. If rational reconstruction is not possible (no suitable $a/b$ exists), returns $[]$. \bprog ? T = Mod(x^3 + x^2 + x + 3, x^4 - 2); ? bestapprPade(T) %2 = (2*x - 1)/(x - 1) ? U = Mod(1 + x + x^2 + x^3 + x^5, x^9); ? bestapprPade(U) \\ internally chooses B = 4 %3 = [] ? bestapprPade(U, 5) \\ with B = 5, a solution exists %4 = (2*x^4 + x^3 - x - 1)/(-x^5 + x^3 + x^2 - 1) @eprog \item If $x$ is a \typ{SER}, we implicitly convert the input to a \typ{POLMOD} modulo $N = t^k$ where $k$ is the series absolute precision. \bprog ? T = 1 + t + t^2 + t^3 + t^4 + t^5 + t^6 + O(t^7); \\ mod t^7 ? bestapprPade(T) %1 = 1/(-t + 1) @eprog \item If $x$ is a \typ{RFRAC}, we implicitly convert the input to a \typ{POLMOD} modulo $N = t^k$ where $k = 2B + 1$. If $B$ was omitted, we return $x$: \bprog ? T = (4*t^2 + 2*t + 3)/(t+1)^10; ? bestapprPade(T,1) %2 = [] \\ impossible ? bestapprPade(T,2) %3 = 27/(337*t^2 + 84*t + 9) ? bestapprPade(T,3) %4 = (4253*t - 3345)/(-39007*t^3 - 28519*t^2 - 8989*t - 1115) @eprog\noindent The function applies recursively to components of complex objects (polynomials, vectors, \dots). If rational reconstruction fails for even a single entry, return $[]$.