use crate::*;
use flint_sys::fmpq_poly;
impl_from_unsafe! {
None
RatPoly, u64 {usize u64 u32 u16 u8}
fmpq_poly::fmpq_poly_set_ui
}
impl_from_unsafe! {
None
RatPoly, i64 {isize i64 i32 i16 i8}
fmpq_poly::fmpq_poly_set_si
}
impl_from_unsafe! {
None
RatPoly, Integer
fmpq_poly::fmpq_poly_set_fmpz
}
impl_from_unsafe! {
None
RatPoly, IntMod
fmpq_poly::fmpq_poly_set_fmpz
}
impl_from_unsafe! {
None
RatPoly, Rational
fmpq_poly::fmpq_poly_set_fmpq
}
impl_from_unsafe! {
None
RatPoly, IntPoly
fmpq_poly::fmpq_poly_set_fmpz_poly
}
impl_from! {
RatPoly, IntModPoly
{
fn from(x: &IntModPoly) -> RatPoly {
RatPoly::from(IntPoly::from(x))
}
}
}
impl_from! {
RatPoly, FinFldElem
{
fn from(x: &FinFldElem) -> RatPoly {
RatPoly::from(IntPoly::from(x))
}
}
}
impl<T, const CAP: usize> From<[T; CAP]> for RatPoly
where
T: Into<Rational>
{
fn from(coeffs: [T; CAP]) -> RatPoly {
let mut res = RatPoly::with_capacity(coeffs.len());
for (i, x) in coeffs.into_iter().enumerate() {
res.set_coeff(i, x.into());
}
res
}
}
impl<const CAP: usize> From<[&Rational; CAP]> for RatPoly {
fn from(coeffs: [&Rational; CAP]) -> RatPoly {
let mut res = RatPoly::with_capacity(coeffs.len());
for (i, x) in coeffs.into_iter().enumerate() {
res.set_coeff(i, x);
}
res
}
}
impl<'a, T> From<&'a [T]> for RatPoly
where
&'a T: Into<Rational>
{
fn from(coeffs: &'a [T]) -> RatPoly {
let mut res = RatPoly::with_capacity(coeffs.len());
for (i, x) in coeffs.iter().enumerate() {
res.set_coeff(i, x.into());
}
res
}
}
impl From<&[Rational]> for RatPoly {
fn from(coeffs: &[Rational]) -> RatPoly {
let mut res = RatPoly::with_capacity(coeffs.len());
for (i, x) in coeffs.iter().enumerate() {
res.set_coeff(i, x);
}
res
}
}