{-# LINE 1 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
module Data.Number.Flint.Acb.Mat.FFI (
AcbMat (..)
, CAcbMat (..)
, newAcbMat
, newAcbMatFromFmpzMat
, newAcbMatFromFmpzMatRound
, newAcbMatFromFmpqMat
, newAcbMatFromArbMat
, newAcbMatFromArbMatRound
, withAcbMat
, withNewAcbMat
, acb_mat_init
, acb_mat_clear
, acb_mat_allocated_bytes
, acb_mat_window_init
, acb_mat_entry
, acb_mat_set
, acb_mat_set_fmpz_mat
, acb_mat_set_round_fmpz_mat
, acb_mat_set_fmpq_mat
, acb_mat_set_arb_mat
, acb_mat_set_round_arb_mat
, acb_mat_randtest
, acb_mat_randtest_eig
, acb_mat_get_strd
, acb_mat_printd
, acb_mat_fprintd
, acb_mat_get_strn
, acb_mat_printn
, acb_mat_fprintn
, acb_mat_equal
, acb_mat_overlaps
, acb_mat_contains
, acb_mat_contains_fmpz_mat
, acb_mat_contains_fmpq_mat
, acb_mat_eq
, acb_mat_ne
, acb_mat_is_real
, acb_mat_is_empty
, acb_mat_is_square
, acb_mat_is_exact
, acb_mat_is_zero
, acb_mat_is_finite
, acb_mat_is_triu
, acb_mat_is_tril
, acb_mat_is_diag
, acb_mat_zero
, acb_mat_one
, acb_mat_ones
, acb_mat_indeterminate
, acb_mat_dft
, acb_mat_transpose
, acb_mat_conjugate_transpose
, acb_mat_conjugate
, acb_mat_bound_inf_norm
, acb_mat_frobenius_norm
, acb_mat_bound_frobenius_norm
, acb_mat_neg
, acb_mat_add
, acb_mat_sub
, acb_mat_mul_classical
, acb_mat_mul_threaded
, acb_mat_mul_reorder
, acb_mat_mul
, acb_mat_mul_entrywise
, acb_mat_sqr_classical
, acb_mat_sqr
, acb_mat_pow_ui
, acb_mat_approx_mul
, acb_mat_scalar_mul_2exp_si
, acb_mat_scalar_addmul_si
, acb_mat_scalar_addmul_fmpz
, acb_mat_scalar_addmul_arb
, acb_mat_scalar_addmul_acb
, acb_mat_scalar_mul_si
, acb_mat_scalar_mul_fmpz
, acb_mat_scalar_mul_arb
, acb_mat_scalar_mul_acb
, acb_mat_scalar_div_si
, acb_mat_scalar_div_fmpz
, acb_mat_scalar_div_arb
, acb_mat_scalar_div_acb
, acb_mat_lu_classical
, acb_mat_lu_recursive
, acb_mat_lu
, acb_mat_solve_tril_classical
, acb_mat_solve_tril_recursive
, acb_mat_solve_tril
, acb_mat_solve_triu_classical
, acb_mat_solve_triu_recursive
, acb_mat_solve_triu
, acb_mat_solve_lu_precomp
, acb_mat_solve
, acb_mat_solve_lu
, acb_mat_solve_precond
, acb_mat_inv
, acb_mat_det_lu
, acb_mat_det_precond
, acb_mat_det
, acb_mat_approx_solve_triu
, acb_mat_approx_solve_tril
, acb_mat_approx_lu
, acb_mat_approx_solve_lu_precomp
, acb_mat_approx_solve
, acb_mat_approx_inv
, _acb_mat_charpoly
, acb_mat_charpoly
, _acb_mat_companion
, acb_mat_companion
, acb_mat_exp_taylor_sum
, acb_mat_exp
, acb_mat_trace
, _acb_mat_diag_prod
, acb_mat_diag_prod
, acb_mat_get_mid
, acb_mat_add_error_mag
, acb_mat_approx_eig_qr
, acb_mat_eig_global_enclosure
, acb_mat_eig_enclosure_rump
, acb_mat_eig_simple_rump
, acb_mat_eig_simple_vdhoeven_mourrain
, acb_mat_eig_simple
, acb_mat_eig_multiple_rump
, acb_mat_eig_multiple
) where
import System.IO.Unsafe
import Control.Monad
import Foreign.C.String
import Foreign.C.Types
import Foreign.ForeignPtr
import Foreign.Ptr
import Foreign.Storable
import Foreign.Marshal
import Foreign.Marshal.Array
import Data.Number.Flint.Flint
import Data.Number.Flint.Fmpz
import Data.Number.Flint.Fmpz.Mat
import Data.Number.Flint.Fmpq.Mat
import Data.Number.Flint.Arb.Types
import Data.Number.Flint.Arb.Mat
import Data.Number.Flint.Acb.Types
import Data.Number.Flint.Acb.Poly
data AcbMat = AcbMat {-# UNPACK #-} !(ForeignPtr CAcbMat)
data CAcbMat = CAcbMat (Ptr CAcb) CLong CLong (Ptr (Ptr CAcb))
instance Storable CAcbMat where
{-# INLINE sizeOf #-}
sizeOf :: CAcbMat -> Int
sizeOf CAcbMat
_ = (Int
32)
{-# LINE 188 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
{-# INLINE alignment #-}
alignment :: CAcbMat -> Int
alignment CAcbMat
_ = Int
8
{-# LINE 190 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
peek ptr = CAcbMat
<$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 192 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
<*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 193 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
<*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 194 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
<*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 195 "src/Data/Number/Flint/Acb/Mat/FFI.hsc" #-}
poke = error "CAcbMat.poke: Not defined."
newAcbMat :: CLong -> CLong -> IO AcbMat
newAcbMat CLong
rows CLong
cols = do
ForeignPtr CAcbMat
x <- IO (ForeignPtr CAcbMat)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CAcbMat -> (Ptr CAcbMat -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO ()) -> IO ())
-> (Ptr CAcbMat -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
x -> Ptr CAcbMat -> CLong -> CLong -> IO ()
acb_mat_init Ptr CAcbMat
x CLong
rows CLong
cols
FinalizerPtr CAcbMat -> ForeignPtr CAcbMat -> IO ()
forall a. FinalizerPtr a -> ForeignPtr a -> IO ()
addForeignPtrFinalizer FinalizerPtr CAcbMat
p_acb_mat_clear ForeignPtr CAcbMat
x
AcbMat -> IO AcbMat
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AcbMat -> IO AcbMat) -> AcbMat -> IO AcbMat
forall a b. (a -> b) -> a -> b
$ ForeignPtr CAcbMat -> AcbMat
AcbMat ForeignPtr CAcbMat
x
newAcbMatFromFmpzMat :: FmpzMat -> IO AcbMat
newAcbMatFromFmpzMat FmpzMat
a = do
ForeignPtr CAcbMat
x <- IO (ForeignPtr CAcbMat)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CAcbMat
-> (Ptr CAcbMat -> IO (FmpzMat, ())) -> IO (FmpzMat, ())
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO (FmpzMat, ())) -> IO (FmpzMat, ()))
-> (Ptr CAcbMat -> IO (FmpzMat, ())) -> IO (FmpzMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
x -> do
FmpzMat -> (Ptr CFmpzMat -> IO ()) -> IO (FmpzMat, ())
forall {a}. FmpzMat -> (Ptr CFmpzMat -> IO a) -> IO (FmpzMat, a)
withFmpzMat FmpzMat
a ((Ptr CFmpzMat -> IO ()) -> IO (FmpzMat, ()))
-> (Ptr CFmpzMat -> IO ()) -> IO (FmpzMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CFmpzMat
a -> do
CFmpzMat Ptr CFmpz
_ CLong
rows CLong
cols Ptr (Ptr CFmpz)
_ <- Ptr CFmpzMat -> IO CFmpzMat
forall a. Storable a => Ptr a -> IO a
peek Ptr CFmpzMat
a
Ptr CAcbMat -> CLong -> CLong -> IO ()
acb_mat_init Ptr CAcbMat
x CLong
rows CLong
cols
Ptr CAcbMat -> Ptr CFmpzMat -> IO ()
acb_mat_set_fmpz_mat Ptr CAcbMat
x Ptr CFmpzMat
a
FinalizerPtr CAcbMat -> ForeignPtr CAcbMat -> IO ()
forall a. FinalizerPtr a -> ForeignPtr a -> IO ()
addForeignPtrFinalizer FinalizerPtr CAcbMat
p_acb_mat_clear ForeignPtr CAcbMat
x
AcbMat -> IO AcbMat
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AcbMat -> IO AcbMat) -> AcbMat -> IO AcbMat
forall a b. (a -> b) -> a -> b
$ ForeignPtr CAcbMat -> AcbMat
AcbMat ForeignPtr CAcbMat
x
newAcbMatFromFmpzMatRound :: FmpzMat -> CLong -> IO ()
newAcbMatFromFmpzMatRound FmpzMat
a CLong
prec = do
ForeignPtr CAcbMat
x <- IO (ForeignPtr CAcbMat)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CAcbMat
-> (Ptr CAcbMat -> IO (FmpzMat, ())) -> IO (FmpzMat, ())
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO (FmpzMat, ())) -> IO (FmpzMat, ()))
-> (Ptr CAcbMat -> IO (FmpzMat, ())) -> IO (FmpzMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
x -> do
FmpzMat -> (Ptr CFmpzMat -> IO ()) -> IO (FmpzMat, ())
forall {a}. FmpzMat -> (Ptr CFmpzMat -> IO a) -> IO (FmpzMat, a)
withFmpzMat FmpzMat
a ((Ptr CFmpzMat -> IO ()) -> IO (FmpzMat, ()))
-> (Ptr CFmpzMat -> IO ()) -> IO (FmpzMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CFmpzMat
a -> do
CFmpzMat Ptr CFmpz
_ CLong
rows CLong
cols Ptr (Ptr CFmpz)
_ <- Ptr CFmpzMat -> IO CFmpzMat
forall a. Storable a => Ptr a -> IO a
peek Ptr CFmpzMat
a
Ptr CAcbMat -> CLong -> CLong -> IO ()
acb_mat_init Ptr CAcbMat
x CLong
rows CLong
cols
Ptr CAcbMat -> Ptr CFmpzMat -> CLong -> IO ()
acb_mat_set_round_fmpz_mat Ptr CAcbMat
x Ptr CFmpzMat
a CLong
prec
FinalizerPtr CAcbMat -> ForeignPtr CAcbMat -> IO ()
forall a. FinalizerPtr a -> ForeignPtr a -> IO ()
addForeignPtrFinalizer FinalizerPtr CAcbMat
p_acb_mat_clear ForeignPtr CAcbMat
x
newAcbMatFromFmpqMat :: FmpqMat -> CLong -> IO AcbMat
newAcbMatFromFmpqMat FmpqMat
a CLong
prec = do
ForeignPtr CAcbMat
x <- IO (ForeignPtr CAcbMat)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CAcbMat
-> (Ptr CAcbMat -> IO (FmpqMat, ())) -> IO (FmpqMat, ())
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO (FmpqMat, ())) -> IO (FmpqMat, ()))
-> (Ptr CAcbMat -> IO (FmpqMat, ())) -> IO (FmpqMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
x -> do
FmpqMat -> (Ptr CFmpqMat -> IO ()) -> IO (FmpqMat, ())
forall {a}. FmpqMat -> (Ptr CFmpqMat -> IO a) -> IO (FmpqMat, a)
withFmpqMat FmpqMat
a ((Ptr CFmpqMat -> IO ()) -> IO (FmpqMat, ()))
-> (Ptr CFmpqMat -> IO ()) -> IO (FmpqMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CFmpqMat
a -> do
CFmpqMat Ptr CFmpq
_ CLong
rows CLong
cols Ptr (Ptr CFmpq)
_ <- Ptr CFmpqMat -> IO CFmpqMat
forall a. Storable a => Ptr a -> IO a
peek Ptr CFmpqMat
a
Ptr CAcbMat -> CLong -> CLong -> IO ()
acb_mat_init Ptr CAcbMat
x CLong
rows CLong
cols
Ptr CAcbMat -> Ptr CFmpqMat -> CLong -> IO ()
acb_mat_set_fmpq_mat Ptr CAcbMat
x Ptr CFmpqMat
a CLong
prec
FinalizerPtr CAcbMat -> ForeignPtr CAcbMat -> IO ()
forall a. FinalizerPtr a -> ForeignPtr a -> IO ()
addForeignPtrFinalizer FinalizerPtr CAcbMat
p_acb_mat_clear ForeignPtr CAcbMat
x
AcbMat -> IO AcbMat
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AcbMat -> IO AcbMat) -> AcbMat -> IO AcbMat
forall a b. (a -> b) -> a -> b
$ ForeignPtr CAcbMat -> AcbMat
AcbMat ForeignPtr CAcbMat
x
newAcbMatFromArbMat :: ArbMat -> IO AcbMat
newAcbMatFromArbMat ArbMat
a = do
ForeignPtr CAcbMat
x <- IO (ForeignPtr CAcbMat)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CAcbMat
-> (Ptr CAcbMat -> IO (ArbMat, ())) -> IO (ArbMat, ())
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO (ArbMat, ())) -> IO (ArbMat, ()))
-> (Ptr CAcbMat -> IO (ArbMat, ())) -> IO (ArbMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
x -> do
ArbMat -> (Ptr CArbMat -> IO ()) -> IO (ArbMat, ())
forall {a}. ArbMat -> (Ptr CArbMat -> IO a) -> IO (ArbMat, a)
withArbMat ArbMat
a ((Ptr CArbMat -> IO ()) -> IO (ArbMat, ()))
-> (Ptr CArbMat -> IO ()) -> IO (ArbMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CArbMat
a -> do
CArbMat Ptr CArb
_ CLong
rows CLong
cols Ptr (Ptr CArb)
_ <- Ptr CArbMat -> IO CArbMat
forall a. Storable a => Ptr a -> IO a
peek Ptr CArbMat
a
Ptr CAcbMat -> CLong -> CLong -> IO ()
acb_mat_init Ptr CAcbMat
x CLong
rows CLong
cols
Ptr CAcbMat -> Ptr CArbMat -> IO ()
acb_mat_set_arb_mat Ptr CAcbMat
x Ptr CArbMat
a
FinalizerPtr CAcbMat -> ForeignPtr CAcbMat -> IO ()
forall a. FinalizerPtr a -> ForeignPtr a -> IO ()
addForeignPtrFinalizer FinalizerPtr CAcbMat
p_acb_mat_clear ForeignPtr CAcbMat
x
AcbMat -> IO AcbMat
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AcbMat -> IO AcbMat) -> AcbMat -> IO AcbMat
forall a b. (a -> b) -> a -> b
$ ForeignPtr CAcbMat -> AcbMat
AcbMat ForeignPtr CAcbMat
x
newAcbMatFromArbMatRound :: ArbMat -> CLong -> IO ()
newAcbMatFromArbMatRound ArbMat
a CLong
prec = do
ForeignPtr CAcbMat
x <- IO (ForeignPtr CAcbMat)
forall a. Storable a => IO (ForeignPtr a)
mallocForeignPtr
ForeignPtr CAcbMat
-> (Ptr CAcbMat -> IO (ArbMat, ())) -> IO (ArbMat, ())
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO (ArbMat, ())) -> IO (ArbMat, ()))
-> (Ptr CAcbMat -> IO (ArbMat, ())) -> IO (ArbMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
x -> do
ArbMat -> (Ptr CArbMat -> IO ()) -> IO (ArbMat, ())
forall {a}. ArbMat -> (Ptr CArbMat -> IO a) -> IO (ArbMat, a)
withArbMat ArbMat
a ((Ptr CArbMat -> IO ()) -> IO (ArbMat, ()))
-> (Ptr CArbMat -> IO ()) -> IO (ArbMat, ())
forall a b. (a -> b) -> a -> b
$ \Ptr CArbMat
a -> do
CArbMat Ptr CArb
_ CLong
rows CLong
cols Ptr (Ptr CArb)
_ <- Ptr CArbMat -> IO CArbMat
forall a. Storable a => Ptr a -> IO a
peek Ptr CArbMat
a
Ptr CAcbMat -> CLong -> CLong -> IO ()
acb_mat_init Ptr CAcbMat
x CLong
rows CLong
cols
Ptr CAcbMat -> Ptr CArbMat -> CLong -> IO ()
acb_mat_set_round_arb_mat Ptr CAcbMat
x Ptr CArbMat
a CLong
prec
FinalizerPtr CAcbMat -> ForeignPtr CAcbMat -> IO ()
forall a. FinalizerPtr a -> ForeignPtr a -> IO ()
addForeignPtrFinalizer FinalizerPtr CAcbMat
p_acb_mat_clear ForeignPtr CAcbMat
x
{-# INLINE withAcbMat #-}
withAcbMat :: AcbMat -> (Ptr CAcbMat -> IO a) -> IO (AcbMat, a)
withAcbMat (AcbMat ForeignPtr CAcbMat
x) Ptr CAcbMat -> IO a
f = do
ForeignPtr CAcbMat
-> (Ptr CAcbMat -> IO (AcbMat, a)) -> IO (AcbMat, a)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr CAcbMat
x ((Ptr CAcbMat -> IO (AcbMat, a)) -> IO (AcbMat, a))
-> (Ptr CAcbMat -> IO (AcbMat, a)) -> IO (AcbMat, a)
forall a b. (a -> b) -> a -> b
$ \Ptr CAcbMat
px -> Ptr CAcbMat -> IO a
f Ptr CAcbMat
px IO a -> (a -> IO (AcbMat, a)) -> IO (AcbMat, a)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (AcbMat, a) -> IO (AcbMat, a)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ((AcbMat, a) -> IO (AcbMat, a))
-> (a -> (AcbMat, a)) -> a -> IO (AcbMat, a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ForeignPtr CAcbMat -> AcbMat
AcbMat ForeignPtr CAcbMat
x,)
{-# INLINE withNewAcbMat #-}
withNewAcbMat :: CLong -> CLong -> (Ptr CAcbMat -> IO a) -> IO (AcbMat, a)
withNewAcbMat CLong
rows CLong
cols Ptr CAcbMat -> IO a
f = do
AcbMat
x <- CLong -> CLong -> IO AcbMat
newAcbMat CLong
rows CLong
cols
AcbMat -> (Ptr CAcbMat -> IO a) -> IO (AcbMat, a)
forall {a}. AcbMat -> (Ptr CAcbMat -> IO a) -> IO (AcbMat, a)
withAcbMat AcbMat
x Ptr CAcbMat -> IO a
f
foreign import ccall "acb_mat.h acb_mat_init"
acb_mat_init :: Ptr CAcbMat -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_clear"
acb_mat_clear :: Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h &acb_mat_clear"
p_acb_mat_clear :: FunPtr (Ptr CAcbMat -> IO ())
foreign import ccall "acb_mat.h acb_mat_allocated_bytes"
acb_mat_allocated_bytes :: Ptr CAcbMat -> IO CLong
foreign import ccall "acb_mat.h acb_mat_window_init"
acb_mat_window_init :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> CLong -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_entry_"
acb_mat_entry :: Ptr CAcbMat -> CLong -> CLong -> IO (Ptr CAcb)
foreign import ccall "acb_mat.h acb_mat_set"
acb_mat_set :: Ptr CAcbMat -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_set_fmpz_mat"
acb_mat_set_fmpz_mat :: Ptr CAcbMat -> Ptr CFmpzMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_set_round_fmpz_mat"
acb_mat_set_round_fmpz_mat :: Ptr CAcbMat -> Ptr CFmpzMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_set_fmpq_mat"
acb_mat_set_fmpq_mat :: Ptr CAcbMat -> Ptr CFmpqMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_set_arb_mat"
acb_mat_set_arb_mat :: Ptr CAcbMat -> Ptr CArbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_set_round_arb_mat"
acb_mat_set_round_arb_mat :: Ptr CAcbMat -> Ptr CArbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_randtest"
acb_mat_randtest :: Ptr CAcbMat -> Ptr CFRandState -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_randtest_eig"
acb_mat_randtest_eig :: Ptr CAcbMat -> Ptr CFRandState -> Ptr CAcb -> CLong -> IO ()
foreign import ccall "acb_mat acb_mat_get_strd"
acb_mat_get_strd :: Ptr CAcbMat -> CLong -> IO CString
foreign import ccall "acb_mat acb_mat_get_strn"
acb_mat_get_strn :: Ptr CAcbMat -> CLong -> ArbStrOption -> IO CString
acb_mat_printd :: Ptr CAcbMat -> CLong -> IO ()
acb_mat_printd :: Ptr CAcbMat -> CLong -> IO ()
acb_mat_printd Ptr CAcbMat
mat CLong
digits = do
(Ptr CAcbMat -> IO CString) -> Ptr CAcbMat -> IO CInt
forall a. (Ptr a -> IO CString) -> Ptr a -> IO CInt
printCStr (\Ptr CAcbMat
mat -> Ptr CAcbMat -> CLong -> IO CString
acb_mat_get_strd Ptr CAcbMat
mat CLong
digits) Ptr CAcbMat
mat
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
foreign import ccall "acb_mat.h acb_mat_fprintd"
acb_mat_fprintd :: Ptr CFile -> Ptr CAcbMat -> CLong -> IO ()
acb_mat_printn :: Ptr CAcbMat -> CLong -> ArbStrOption -> IO ()
acb_mat_printn :: Ptr CAcbMat -> CLong -> ArbStrOption -> IO ()
acb_mat_printn Ptr CAcbMat
mat CLong
digits ArbStrOption
options = do
(Ptr CAcbMat -> IO CString) -> Ptr CAcbMat -> IO CInt
forall a. (Ptr a -> IO CString) -> Ptr a -> IO CInt
printCStr (\Ptr CAcbMat
mat -> Ptr CAcbMat -> CLong -> ArbStrOption -> IO CString
acb_mat_get_strn Ptr CAcbMat
mat CLong
digits ArbStrOption
options) Ptr CAcbMat
mat
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
foreign import ccall "acb_mat.h acb_mat_fprintn"
acb_mat_fprintn :: Ptr CFile -> Ptr CAcbMat -> CLong -> ArbStrOption -> IO ()
foreign import ccall "acb_mat.h acb_mat_equal"
acb_mat_equal :: Ptr CAcbMat -> Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_overlaps"
acb_mat_overlaps :: Ptr CAcbMat -> Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_contains"
acb_mat_contains :: Ptr CAcbMat -> Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_contains_fmpz_mat"
acb_mat_contains_fmpz_mat :: Ptr CAcbMat -> Ptr CFmpzMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_contains_fmpq_mat"
acb_mat_contains_fmpq_mat :: Ptr CAcbMat -> Ptr CFmpqMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_eq"
acb_mat_eq :: Ptr CAcbMat -> Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_ne"
acb_mat_ne :: Ptr CAcbMat -> Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_real"
acb_mat_is_real :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_empty"
acb_mat_is_empty :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_square"
acb_mat_is_square :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_exact"
acb_mat_is_exact :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_zero"
acb_mat_is_zero :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_finite"
acb_mat_is_finite :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_triu"
acb_mat_is_triu :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_tril"
acb_mat_is_tril :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_is_diag"
acb_mat_is_diag :: Ptr CAcbMat -> IO CInt
foreign import ccall "acb_mat.h acb_mat_zero"
acb_mat_zero :: Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_one"
acb_mat_one :: Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_ones"
acb_mat_ones :: Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_indeterminate"
acb_mat_indeterminate :: Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_dft"
acb_mat_dft :: Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_transpose"
acb_mat_transpose :: Ptr CAcbMat -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_conjugate_transpose"
acb_mat_conjugate_transpose :: Ptr CAcbMat -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_conjugate"
acb_mat_conjugate :: Ptr CAcbMat -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_bound_inf_norm"
acb_mat_bound_inf_norm :: Ptr CMag -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_frobenius_norm"
acb_mat_frobenius_norm :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_bound_frobenius_norm"
acb_mat_bound_frobenius_norm :: Ptr CMag -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_neg"
acb_mat_neg :: Ptr CAcbMat -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_add"
acb_mat_add :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_sub"
acb_mat_sub :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_mul_classical"
acb_mat_mul_classical :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_mul_threaded"
acb_mat_mul_threaded :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_mul_reorder"
acb_mat_mul_reorder :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_mul"
acb_mat_mul :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_mul_entrywise"
acb_mat_mul_entrywise :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_sqr_classical"
acb_mat_sqr_classical :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_sqr"
acb_mat_sqr :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_pow_ui"
acb_mat_pow_ui :: Ptr CAcbMat -> Ptr CAcbMat -> CULong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_approx_mul"
acb_mat_approx_mul :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_mul_2exp_si"
acb_mat_scalar_mul_2exp_si :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_addmul_si"
acb_mat_scalar_addmul_si :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_addmul_fmpz"
acb_mat_scalar_addmul_fmpz :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CFmpz -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_addmul_arb"
acb_mat_scalar_addmul_arb :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CArb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_addmul_acb"
acb_mat_scalar_addmul_acb :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_mul_si"
acb_mat_scalar_mul_si :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_mul_fmpz"
acb_mat_scalar_mul_fmpz :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CFmpz -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_mul_arb"
acb_mat_scalar_mul_arb :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CArb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_mul_acb"
acb_mat_scalar_mul_acb :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_div_si"
acb_mat_scalar_div_si :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_div_fmpz"
acb_mat_scalar_div_fmpz :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CFmpz -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_div_arb"
acb_mat_scalar_div_arb :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CArb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_scalar_div_acb"
acb_mat_scalar_div_acb :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_lu_classical"
acb_mat_lu_classical :: Ptr CLong -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_lu_recursive"
acb_mat_lu_recursive :: Ptr CLong -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_lu"
acb_mat_lu :: Ptr CLong -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_solve_tril_classical"
acb_mat_solve_tril_classical :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve_tril_recursive"
acb_mat_solve_tril_recursive :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve_tril"
acb_mat_solve_tril :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve_triu_classical"
acb_mat_solve_triu_classical :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve_triu_recursive"
acb_mat_solve_triu_recursive :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve_triu"
acb_mat_solve_triu :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve_lu_precomp"
acb_mat_solve_lu_precomp :: Ptr CAcbMat -> Ptr CLong -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_solve"
acb_mat_solve :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_solve_lu"
acb_mat_solve_lu :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_solve_precond"
acb_mat_solve_precond :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_inv"
acb_mat_inv :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_det_lu"
acb_mat_det_lu :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_det_precond"
acb_mat_det_precond :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_det"
acb_mat_det :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_approx_solve_triu"
acb_mat_approx_solve_triu :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_approx_solve_tril"
acb_mat_approx_solve_tril :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CInt -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_approx_lu"
acb_mat_approx_lu :: Ptr CLong -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_approx_solve_lu_precomp"
acb_mat_approx_solve_lu_precomp :: Ptr CAcbMat -> Ptr CLong -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_approx_solve"
acb_mat_approx_solve :: Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_approx_inv"
acb_mat_approx_inv :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h _acb_mat_charpoly"
_acb_mat_charpoly :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_charpoly"
acb_mat_charpoly :: Ptr CAcbPoly -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h _acb_mat_companion"
_acb_mat_companion :: Ptr CAcbMat -> Ptr CAcb -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_companion"
acb_mat_companion :: Ptr CAcbMat -> Ptr CAcbPoly -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_exp_taylor_sum"
acb_mat_exp_taylor_sum :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_exp"
acb_mat_exp :: Ptr CAcbMat -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_trace"
acb_mat_trace :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h _acb_mat_diag_prod"
_acb_mat_diag_prod :: Ptr CAcb -> Ptr CAcbMat -> CLong -> CLong -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_diag_prod"
acb_mat_diag_prod :: Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_get_mid"
acb_mat_get_mid :: Ptr CAcbMat -> Ptr CAcbMat -> IO ()
foreign import ccall "acb_mat.h acb_mat_add_error_mag"
acb_mat_add_error_mag :: Ptr CAcbMat -> Ptr CMag -> IO ()
foreign import ccall "acb_mat.h acb_mat_approx_eig_qr"
acb_mat_approx_eig_qr :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CMag -> CLong -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_eig_global_enclosure"
acb_mat_eig_global_enclosure :: Ptr CMag -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_eig_enclosure_rump"
acb_mat_eig_enclosure_rump :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO ()
foreign import ccall "acb_mat.h acb_mat_eig_simple_rump"
acb_mat_eig_simple_rump :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_eig_simple_vdhoeven_mourrain"
acb_mat_eig_simple_vdhoeven_mourrain :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_eig_simple"
acb_mat_eig_simple :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_eig_multiple_rump"
acb_mat_eig_multiple_rump :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO CInt
foreign import ccall "acb_mat.h acb_mat_eig_multiple"
acb_mat_eig_multiple :: Ptr CAcb -> Ptr CAcbMat -> Ptr CAcb -> Ptr CAcbMat -> CLong -> IO CInt