mirror of
https://github.com/vale981/arb
synced 2025-03-05 17:31:38 -05:00
add poly is_zero, is_one, is_x methods
This commit is contained in:
parent
5810ef58da
commit
6f294eab35
4 changed files with 71 additions and 15 deletions
19
acb_poly.h
19
acb_poly.h
|
@ -69,6 +69,25 @@ ACB_POLY_INLINE slong acb_poly_degree(const acb_poly_t poly)
|
||||||
return poly->length - 1;
|
return poly->length - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ACB_POLY_INLINE int
|
||||||
|
acb_poly_is_zero(const acb_poly_t z)
|
||||||
|
{
|
||||||
|
return acb_poly_length(z) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ACB_POLY_INLINE int
|
||||||
|
acb_poly_is_one(const acb_poly_t z)
|
||||||
|
{
|
||||||
|
return (acb_poly_length(z) == 1) && acb_is_one(z->coeffs);
|
||||||
|
}
|
||||||
|
|
||||||
|
ACB_POLY_INLINE int
|
||||||
|
acb_poly_is_x(const acb_poly_t z)
|
||||||
|
{
|
||||||
|
return (acb_poly_length(z) == 2) && acb_is_zero(z->coeffs)
|
||||||
|
&& acb_is_one(z->coeffs + 1);
|
||||||
|
}
|
||||||
|
|
||||||
ACB_POLY_INLINE void acb_poly_zero(acb_poly_t poly)
|
ACB_POLY_INLINE void acb_poly_zero(acb_poly_t poly)
|
||||||
{
|
{
|
||||||
poly->length = 0;
|
poly->length = 0;
|
||||||
|
|
19
arb_poly.h
19
arb_poly.h
|
@ -77,6 +77,25 @@ ARB_POLY_INLINE slong arb_poly_degree(const arb_poly_t poly)
|
||||||
return poly->length - 1;
|
return poly->length - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ARB_POLY_INLINE int
|
||||||
|
arb_poly_is_zero(const arb_poly_t z)
|
||||||
|
{
|
||||||
|
return arb_poly_length(z) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ARB_POLY_INLINE int
|
||||||
|
arb_poly_is_one(const arb_poly_t z)
|
||||||
|
{
|
||||||
|
return (arb_poly_length(z) == 1) && arb_is_one(z->coeffs);
|
||||||
|
}
|
||||||
|
|
||||||
|
ARB_POLY_INLINE int
|
||||||
|
arb_poly_is_x(const arb_poly_t z)
|
||||||
|
{
|
||||||
|
return (arb_poly_length(z) == 2) && arb_is_zero(z->coeffs)
|
||||||
|
&& arb_is_one(z->coeffs + 1);
|
||||||
|
}
|
||||||
|
|
||||||
ARB_POLY_INLINE void arb_poly_zero(arb_poly_t poly)
|
ARB_POLY_INLINE void arb_poly_zero(arb_poly_t poly)
|
||||||
{
|
{
|
||||||
poly->length = 0;
|
poly->length = 0;
|
||||||
|
|
|
@ -76,6 +76,15 @@ Basic properties and manipulation
|
||||||
so the return value of this function is effectively
|
so the return value of this function is effectively
|
||||||
an upper bound.
|
an upper bound.
|
||||||
|
|
||||||
|
.. function:: int acb_poly_is_zero(const acb_poly_t poly)
|
||||||
|
|
||||||
|
.. function:: int acb_poly_is_one(const acb_poly_t poly)
|
||||||
|
|
||||||
|
.. function:: int acb_poly_is_x(const acb_poly_t poly)
|
||||||
|
|
||||||
|
Returns 1 if *poly* is exactly the polynomial 0, 1 or *x*
|
||||||
|
respectively. Returns 0 otherwise.
|
||||||
|
|
||||||
.. function:: void acb_poly_zero(acb_poly_t poly)
|
.. function:: void acb_poly_zero(acb_poly_t poly)
|
||||||
|
|
||||||
Sets *poly* to the zero polynomial.
|
Sets *poly* to the zero polynomial.
|
||||||
|
|
|
@ -57,6 +57,30 @@ Memory management
|
||||||
Basic manipulation
|
Basic manipulation
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.. function:: slong arb_poly_length(const arb_poly_t poly)
|
||||||
|
|
||||||
|
Returns the length of *poly*, i.e. zero if *poly* is
|
||||||
|
identically zero, and otherwise one more than the index
|
||||||
|
of the highest term that is not identically zero.
|
||||||
|
|
||||||
|
.. function:: slong arb_poly_degree(const arb_poly_t poly)
|
||||||
|
|
||||||
|
Returns the degree of *poly*, defined as one less than its length.
|
||||||
|
Note that if one or several leading coefficients are balls
|
||||||
|
containing zero, this value can be larger than the true
|
||||||
|
degree of the exact polynomial represented by *poly*,
|
||||||
|
so the return value of this function is effectively
|
||||||
|
an upper bound.
|
||||||
|
|
||||||
|
.. function:: int arb_poly_is_zero(const arb_poly_t poly)
|
||||||
|
|
||||||
|
.. function:: int arb_poly_is_one(const arb_poly_t poly)
|
||||||
|
|
||||||
|
.. function:: int arb_poly_is_x(const arb_poly_t poly)
|
||||||
|
|
||||||
|
Returns 1 if *poly* is exactly the polynomial 0, 1 or *x*
|
||||||
|
respectively. Returns 0 otherwise.
|
||||||
|
|
||||||
.. function:: void arb_poly_zero(arb_poly_t poly)
|
.. function:: void arb_poly_zero(arb_poly_t poly)
|
||||||
|
|
||||||
.. function:: void arb_poly_one(arb_poly_t poly)
|
.. function:: void arb_poly_one(arb_poly_t poly)
|
||||||
|
@ -107,21 +131,6 @@ Basic manipulation
|
||||||
Truncates *poly* to have length at most *n*, i.e. degree
|
Truncates *poly* to have length at most *n*, i.e. degree
|
||||||
strictly smaller than *n*.
|
strictly smaller than *n*.
|
||||||
|
|
||||||
.. function:: slong arb_poly_length(const arb_poly_t poly)
|
|
||||||
|
|
||||||
Returns the length of *poly*, i.e. zero if *poly* is
|
|
||||||
identically zero, and otherwise one more than the index
|
|
||||||
of the highest term that is not identically zero.
|
|
||||||
|
|
||||||
.. function:: slong arb_poly_degree(const arb_poly_t poly)
|
|
||||||
|
|
||||||
Returns the degree of *poly*, defined as one less than its length.
|
|
||||||
Note that if one or several leading coefficients are balls
|
|
||||||
containing zero, this value can be larger than the true
|
|
||||||
degree of the exact polynomial represented by *poly*,
|
|
||||||
so the return value of this function is effectively
|
|
||||||
an upper bound.
|
|
||||||
|
|
||||||
Conversions
|
Conversions
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue