Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: denominator
Section: conversions
C-Name: denominator
Prototype: GDG
Help: denominator(f,{D}): denominator of f.
Doc:
denominator of $f$. The meaning of this is clear when $f$ is a rational number
or function. If $f$ is an integer or a polynomial, it is treated as a rational
number or function, respectively, and the result is equal to $1$. For
polynomials, you probably want to use
\bprog
denominator( content(f) )
@eprog\noindent instead. As for modular objects, \typ{INTMOD} and \typ{PADIC}
have denominator $1$, and the denominator of a \typ{POLMOD} is the
denominator of its lift.
If $f$ is a recursive structure, for instance a vector or matrix, the lcm
of the denominators of its components (a common denominator) is computed.
This also applies for \typ{COMPLEX}s and \typ{QUAD}s.
\misctitle{Warning} Multivariate objects are created according to variable
priorities, with possibly surprising side effects ($x/y$ is a polynomial, but
$y/x$ is a rational function). See \secref{se:priority}.
The optional argument $D$ allows to control over which ring we compute the
denominator and get a more predictable behaviour:
\item $1$: we only consider the underlying $\Q$-structure and the
denominator is a (positive) rational integer
\item a simple variable, say \kbd{'x}: all entries as rational functions
in $K(x)$ and the denominator is a polynomial in $x$.
\bprog
? f = x + 1/y + 1/2;
? denominator(f) \\ a t_POL in x
%2 = 1
? denominator(f, 1) \\ Q-denominator
%3 = 2
? denominator(f, x) \\ as a t_POL in x, seen above
%4 = 1
? denominator(f, y) \\ as a rational function in y
%5 = 2*y
@eprog
Variant: Also available are
\fun{GEN}{denom}{GEN x} which implements the not very useful default
behaviour ($D$ is \kbd{NULL}) and \fun{GEN}{Q_denom}{GEN x} ($D = 1$).