{-# LINE 1 "src/Data/Number/Flint/Calcium/Ca/Poly/FFI.hsc" #-}
module Data.Number.Flint.Calcium.Ca.Poly.FFI (
CaPoly (..)
, CCaPoly (..)
, newCaPoly
, withCaPoly
, withNewCaPoly
, ca_poly_init
, ca_poly_clear
, ca_poly_fit_length
, _ca_poly_set_length
, _ca_poly_normalise
, ca_poly_zero
, ca_poly_one
, ca_poly_x
, ca_poly_set_ca
, ca_poly_set_si
, ca_poly_set
, ca_poly_set_fmpz_poly
, ca_poly_set_fmpq_poly
, ca_poly_set_coeff_ca
, ca_poly_transfer
, ca_poly_randtest
, ca_poly_randtest_rational
, ca_poly_get_str
, ca_poly_fprint
, ca_poly_print
, ca_poly_printn
, ca_poly_is_proper
, ca_poly_make_monic
, _ca_poly_reverse
, ca_poly_reverse
, _ca_poly_check_equal
, ca_poly_check_equal
, ca_poly_check_is_zero
, ca_poly_check_is_one
, _ca_poly_shift_left
, ca_poly_shift_left
, _ca_poly_shift_right
, ca_poly_shift_right
, ca_poly_neg
, _ca_poly_add
, ca_poly_add
, _ca_poly_sub
, ca_poly_sub
, _ca_poly_mul
, ca_poly_mul
, _ca_poly_mullow
, ca_poly_mullow
, ca_poly_mul_ca
, ca_poly_div_ca
, _ca_poly_divrem_basecase
, ca_poly_divrem_basecase
, _ca_poly_divrem
, ca_poly_divrem
, ca_poly_div
, ca_poly_rem
, _ca_poly_pow_ui_trunc
, ca_poly_pow_ui_trunc
, _ca_poly_pow_ui
, ca_poly_pow_ui
, _ca_poly_evaluate_horner
, ca_poly_evaluate_horner
, _ca_poly_evaluate
, ca_poly_evaluate
, _ca_poly_compose
, ca_poly_compose
, _ca_poly_derivative
, ca_poly_derivative
, _ca_poly_integral
, ca_poly_integral
, _ca_poly_inv_series
, ca_poly_inv_series
, _ca_poly_div_series
, ca_poly_div_series
, _ca_poly_exp_series
, ca_poly_exp_series
, _ca_poly_log_series
, ca_poly_log_series
, _ca_poly_gcd_euclidean
, ca_poly_gcd_euclidean
, _ca_poly_gcd
, ca_poly_gcd
, ca_poly_factor_squarefree
, ca_poly_squarefree_part
, _ca_poly_set_roots
, ca_poly_set_roots
, _ca_poly_roots
, ca_poly_roots
, _ca_poly_vec_init
, ca_poly_vec_init
, _ca_poly_vec_fit_length
, ca_poly_vec_set_length
, _ca_poly_vec_clear
, ca_poly_vec_clear
, ca_poly_vec_append
) where
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.C.Types
import Foreign.C.String
import Foreign.Storable
import Data.Number.Flint.Flint
import Data.Number.Flint.Fmpz.Poly
import Data.Number.Flint.Fmpq.Poly
import Data.Number.Flint.Calcium
import Data.Number.Flint.Calcium.Ca.Types
import Data.Number.Flint.Calcium.Ca
instance Storable CCaPoly where
{-# INLINE sizeOf #-}
sizeOf :: CCaPoly -> Int
sizeOf CCaPoly
_ = (Int
24)
{-# LINE 135 "src/Data/Number/Flint/Calcium/Ca/Poly/FFI.hsc" #-}
{-# INLINE alignment #-}
alignment :: CCaPoly -> Int
alignment CCaPoly
_ = Int
8
{-# LINE 137 "src/Data/Number/Flint/Calcium/Ca/Poly/FFI.hsc" #-}
peek = error "CCaPoly.peek: Not defined"
poke :: Ptr CCaPoly -> CCaPoly -> IO ()
poke = [Char] -> Ptr CCaPoly -> CCaPoly -> IO ()
forall a. HasCallStack => [Char] -> a
error [Char]
"CCaPoly.poke: Not defined"
newCaPoly :: CaCtx -> IO CaPoly
newCaPoly ctx :: CaCtx
ctx@(CaCtx ForeignPtr CCaCtx
fctx) = do
ForeignPtr CCaPoly
x <- IO (ForeignPtr CCaPoly)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CCaPoly -> (Ptr CCaPoly -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CCaPoly
x ((Ptr CCaPoly -> IO ()) -> IO ())
-> (Ptr CCaPoly -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr CCaPoly
xp -> do
CaCtx -> (Ptr CCaCtx -> IO ()) -> IO (CaCtx, ())
forall {a}. CaCtx -> (Ptr CCaCtx -> IO a) -> IO (CaCtx, a)
withCaCtx CaCtx
ctx ((Ptr CCaCtx -> IO ()) -> IO (CaCtx, ()))
-> (Ptr CCaCtx -> IO ()) -> IO (CaCtx, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CCaCtx
ctxp -> do
Ptr CCaPoly -> Ptr CCaCtx -> IO ()
ca_poly_init Ptr CCaPoly
xp Ptr CCaCtx
ctxp
FinalizerEnvPtr CCaPoly CCaCtx
-> Ptr CCaPoly -> ForeignPtr CCaCtx -> IO ()
forall env a.
FinalizerEnvPtr env a -> Ptr env -> ForeignPtr a -> IO ()
addForeignPtrFinalizerEnv FinalizerEnvPtr CCaPoly CCaCtx
p_ca_poly_clear Ptr CCaPoly
xp ForeignPtr CCaCtx
fctx
CaPoly -> IO CaPoly
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CaPoly -> IO CaPoly) -> CaPoly -> IO CaPoly
forall a b. (a -> b) -> a -> b
$ ForeignPtr CCaPoly -> CaPoly
CaPoly ForeignPtr CCaPoly
x
{-# INLINE withCaPoly #-}
withCaPoly :: CaPoly -> (Ptr CCaPoly -> IO a) -> IO (CaPoly, a)
withCaPoly (CaPoly ForeignPtr CCaPoly
x) Ptr CCaPoly -> IO a
f = do
ForeignPtr CCaPoly
-> (Ptr CCaPoly -> IO (CaPoly, a)) -> IO (CaPoly, a)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CCaPoly
x ((Ptr CCaPoly -> IO (CaPoly, a)) -> IO (CaPoly, a))
-> (Ptr CCaPoly -> IO (CaPoly, a)) -> IO (CaPoly, a)
forall a b. (a -> b) -> a -> b
$ \Ptr CCaPoly
xp -> Ptr CCaPoly -> IO a
f Ptr CCaPoly
xp IO a -> (a -> IO (CaPoly, a)) -> IO (CaPoly, a)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (CaPoly, a) -> IO (CaPoly, a)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ((CaPoly, a) -> IO (CaPoly, a))
-> (a -> (CaPoly, a)) -> a -> IO (CaPoly, a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ForeignPtr CCaPoly -> CaPoly
CaPoly ForeignPtr CCaPoly
x,)
withNewCaPoly :: CaCtx -> (Ptr CCaPoly -> IO a) -> IO (CaPoly, a)
withNewCaPoly CaCtx
ctx Ptr CCaPoly -> IO a
f = do
CaPoly
x <- CaCtx -> IO CaPoly
newCaPoly CaCtx
ctx
CaPoly -> (Ptr CCaPoly -> IO a) -> IO (CaPoly, a)
forall {a}. CaPoly -> (Ptr CCaPoly -> IO a) -> IO (CaPoly, a)
withCaPoly CaPoly
x Ptr CCaPoly -> IO a
f
foreign import ccall "ca_poly.h ca_poly_init"
ca_poly_init :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_clear"
ca_poly_clear :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h &ca_poly_clear"
p_ca_poly_clear :: FunPtr (Ptr CCaPoly -> Ptr CCaCtx -> IO ())
foreign import ccall "ca_poly.h ca_poly_fit_length"
ca_poly_fit_length :: Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_set_length"
_ca_poly_set_length :: Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_normalise"
_ca_poly_normalise :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_zero"
ca_poly_zero :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_one"
ca_poly_one :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_x"
ca_poly_x :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set_ca"
ca_poly_set_ca :: Ptr CCaPoly -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set_si"
ca_poly_set_si :: Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set"
ca_poly_set :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set_fmpz_poly"
ca_poly_set_fmpz_poly :: Ptr CCaPoly -> Ptr CFmpzPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set_fmpq_poly"
ca_poly_set_fmpq_poly :: Ptr CCaPoly -> Ptr CFmpqPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set_coeff_ca"
ca_poly_set_coeff_ca :: Ptr CCaPoly -> CLong -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_transfer"
ca_poly_transfer :: Ptr CCaPoly -> Ptr CCaCtx -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_randtest"
ca_poly_randtest :: Ptr CCaPoly -> Ptr CFRandState -> CLong -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_randtest_rational"
ca_poly_randtest_rational :: Ptr CCaPoly -> Ptr CFRandState -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_get_str"
ca_poly_get_str :: Ptr CCaPoly -> Ptr CCaCtx -> IO CString
foreign import ccall "ca_poly.h ca_poly_fprint"
ca_poly_fprint :: Ptr CFile -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
ca_poly_print :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
ca_poly_print :: Ptr CCaPoly -> Ptr CCaCtx -> IO ()
ca_poly_print Ptr CCaPoly
poly Ptr CCaCtx
ctx = do
(Ptr CCaPoly -> IO CString) -> Ptr CCaPoly -> IO CInt
forall a. (Ptr a -> IO CString) -> Ptr a -> IO CInt
printCStr (\Ptr CCaPoly
poly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CString
ca_poly_get_str Ptr CCaPoly
poly Ptr CCaCtx
ctx) Ptr CCaPoly
poly
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
foreign import ccall "ca_poly.h ca_poly_printn"
ca_poly_printn :: Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_is_proper"
ca_poly_is_proper :: Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h ca_poly_make_monic"
ca_poly_make_monic :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h _ca_poly_reverse"
_ca_poly_reverse :: Ptr CCa -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_reverse"
ca_poly_reverse :: Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_check_equal"
_ca_poly_check_equal :: Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO (Ptr CTruth)
foreign import ccall "ca_poly.h ca_poly_check_equal"
ca_poly_check_equal :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO (Ptr CTruth)
foreign import ccall "ca_poly.h ca_poly_check_is_zero"
ca_poly_check_is_zero :: Ptr CCaPoly -> Ptr CCaCtx -> IO (Ptr CTruth)
foreign import ccall "ca_poly.h ca_poly_check_is_one"
ca_poly_check_is_one :: Ptr CCaPoly -> Ptr CCaCtx -> IO (Ptr CTruth)
foreign import ccall "ca_poly.h _ca_poly_shift_left"
_ca_poly_shift_left :: Ptr CCa -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_shift_left"
ca_poly_shift_left :: Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_shift_right"
_ca_poly_shift_right :: Ptr CCa -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_shift_right"
ca_poly_shift_right :: Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_neg"
ca_poly_neg :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_add"
_ca_poly_add :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_add"
ca_poly_add :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_sub"
_ca_poly_sub :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_sub"
ca_poly_sub :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_mul"
_ca_poly_mul :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_mul"
ca_poly_mul :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_mullow"
_ca_poly_mullow :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_mullow"
ca_poly_mullow :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_mul_ca"
ca_poly_mul_ca :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_div_ca"
ca_poly_div_ca :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_divrem_basecase"
_ca_poly_divrem_basecase :: Ptr CCa -> Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_divrem_basecase"
ca_poly_divrem_basecase :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h _ca_poly_divrem"
_ca_poly_divrem :: Ptr CCa -> Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_divrem"
ca_poly_divrem :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h ca_poly_div"
ca_poly_div :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h ca_poly_rem"
ca_poly_rem :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h _ca_poly_pow_ui_trunc"
_ca_poly_pow_ui_trunc :: Ptr CCa -> Ptr CCa -> CLong -> CULong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_pow_ui_trunc"
ca_poly_pow_ui_trunc :: Ptr CCaPoly -> Ptr CCaPoly -> CULong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_pow_ui"
_ca_poly_pow_ui :: Ptr CCa -> Ptr CCa -> CLong -> CULong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_pow_ui"
ca_poly_pow_ui :: Ptr CCaPoly -> Ptr CCaPoly -> CULong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_evaluate_horner"
_ca_poly_evaluate_horner :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_evaluate_horner"
ca_poly_evaluate_horner :: Ptr CCa -> Ptr CCaPoly -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_evaluate"
_ca_poly_evaluate :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_evaluate"
ca_poly_evaluate :: Ptr CCa -> Ptr CCaPoly -> Ptr CCa -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_compose"
_ca_poly_compose :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_compose"
ca_poly_compose :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_derivative"
_ca_poly_derivative :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_derivative"
ca_poly_derivative :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_integral"
_ca_poly_integral :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_integral"
ca_poly_integral :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_inv_series"
_ca_poly_inv_series :: Ptr CCa -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_inv_series"
ca_poly_inv_series :: Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_div_series"
_ca_poly_div_series :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_div_series"
ca_poly_div_series :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_exp_series"
_ca_poly_exp_series :: Ptr CCa -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_exp_series"
ca_poly_exp_series :: Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_log_series"
_ca_poly_log_series :: Ptr CCa -> Ptr CCa -> CLong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_log_series"
ca_poly_log_series :: Ptr CCaPoly -> Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_gcd_euclidean"
_ca_poly_gcd_euclidean :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO CLong
foreign import ccall "ca_poly.h ca_poly_gcd_euclidean"
ca_poly_gcd_euclidean :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h _ca_poly_gcd"
_ca_poly_gcd :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO CLong
foreign import ccall "ca_poly.h ca_poly_gcd"
ca_poly_gcd :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h ca_poly_factor_squarefree"
ca_poly_factor_squarefree :: Ptr CCa -> Ptr CCaPolyVec -> Ptr CULong -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h ca_poly_squarefree_part"
ca_poly_squarefree_part :: Ptr CCaPoly -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h _ca_poly_set_roots"
_ca_poly_set_roots :: Ptr CCa -> Ptr CCa -> Ptr CULong -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_set_roots"
ca_poly_set_roots :: Ptr CCaPoly -> Ptr CCaVec -> Ptr CULong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_roots"
_ca_poly_roots :: Ptr CCa -> Ptr CCa -> CLong -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h ca_poly_roots"
ca_poly_roots :: Ptr CCaVec -> Ptr CULong -> Ptr CCaPoly -> Ptr CCaCtx -> IO CInt
foreign import ccall "ca_poly.h _ca_poly_vec_init"
_ca_poly_vec_init :: CLong -> Ptr CCaCtx -> IO (Ptr CCaPoly)
foreign import ccall "ca_poly.h ca_poly_vec_init"
ca_poly_vec_init :: Ptr CCaPolyVec -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_vec_fit_length"
_ca_poly_vec_fit_length :: Ptr CCaPolyVec -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_vec_set_length"
ca_poly_vec_set_length :: Ptr CCaPolyVec -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h _ca_poly_vec_clear"
_ca_poly_vec_clear :: Ptr CCaPoly -> CLong -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_vec_clear"
ca_poly_vec_clear :: Ptr CCaPolyVec -> Ptr CCaCtx -> IO ()
foreign import ccall "ca_poly.h ca_poly_vec_append"
ca_poly_vec_append :: Ptr CCaPolyVec -> Ptr CCaPoly -> Ptr CCaCtx -> IO ()