Binnary Splitting

Binnary Splitting — Binnary splitting algorithms used to evaluate sums fast and with arbitrary precision

Synopsis

#define             NCM_BINSPLIT_DECL                   (name,
                                                         v,
                                                         u,
                                                         n,
                                                         data)
#define             NCM_BINSPLIT_DENC_NULL              (a,
                                                         b,
                                                         c,
                                                         d)
extern mpz_t        NCM_BINSPLIT_ONE;
struct              NcmBinSplit;
void                (*NcmBinSplitEval)                  (NcmBinSplit *bs,
                                                         gulong n1,
                                                         gulong n2);
NcmBinSplit *       ncm_binsplit_alloc                  (gpointer userdata);
void                ncm_binsplit_eval_join              (NcmBinSplit *bs,
                                                         NcmBinSplitEval bs_eval,
                                                         gulong nt);
gulong              ncm_binsplit_eval_prec              (NcmBinSplit *bs,
                                                         NcmBinSplitEval bs_eval,
                                                         gulong step,
                                                         glong prec);
void                ncm_binsplit_get                    (NcmBinSplit *bs,
                                                         mpfr_t res);
gdouble             ncm_binsplit_get_d                  (NcmBinSplit *bs,
                                                         mp_rnd_t rnd);
void                ncm_binsplit_get_q                  (NcmBinSplit *bs,
                                                         mpq_t q);
void                ncm_binsplit_join                   (NcmBinSplit *bs,
                                                         NcmBinSplit *bs_l,
                                                         NcmBinSplit *bs_r);
glong               ncm_binsplit_test_next              (NcmBinSplit *bs,
                                                         NcmBinSplitEval bs_eval,
                                                         gulong nt);

Description

FIXME

Details

NCM_BINSPLIT_DECL()

#define NCM_BINSPLIT_DECL(name,v,u,n,data) static inline void name (mpz_t v, mpz_t u, gulong n, gpointer data)

NCM_BINSPLIT_DENC_NULL()

#define NCM_BINSPLIT_DENC_NULL(a,b,c,d) 

NCM_BINSPLIT_ONE

extern mpz_t NCM_BINSPLIT_ONE;

struct NcmBinSplit

struct NcmBinSplit {
};

FIXME


NcmBinSplitEval ()

void                (*NcmBinSplitEval)                  (NcmBinSplit *bs,
                                                         gulong n1,
                                                         gulong n2);

ncm_binsplit_alloc ()

NcmBinSplit *       ncm_binsplit_alloc                  (gpointer userdata);

FIXME

userdata :

FIXME

Returns :

FIXME

ncm_binsplit_eval_join ()

void                ncm_binsplit_eval_join              (NcmBinSplit *bs,
                                                         NcmBinSplitEval bs_eval,
                                                         gulong nt);

FIXME

bs :

a NcmBinSplit

bs_eval :

a NcmBinSplitEval

nt :

FIXME

ncm_binsplit_eval_prec ()

gulong              ncm_binsplit_eval_prec              (NcmBinSplit *bs,
                                                         NcmBinSplitEval bs_eval,
                                                         gulong step,
                                                         glong prec);

FIXME

bs :

a NcmBinSplit

bs_eval :

a NcmBinSplitEval

step :

FIXME

prec :

FIXME

Returns :

FIXME

ncm_binsplit_get ()

void                ncm_binsplit_get                    (NcmBinSplit *bs,
                                                         mpfr_t res);

FIXME

bs :

a NcmBinSplit

res :

FIXME

ncm_binsplit_get_d ()

gdouble             ncm_binsplit_get_d                  (NcmBinSplit *bs,
                                                         mp_rnd_t rnd);

FIXME

bs :

a NcmBinSplit

rnd :

FIXME

Returns :

FIXME

ncm_binsplit_get_q ()

void                ncm_binsplit_get_q                  (NcmBinSplit *bs,
                                                         mpq_t q);

FIXME

bs :

a NcmBinSplit

q :

FIXME

ncm_binsplit_join ()

void                ncm_binsplit_join                   (NcmBinSplit *bs,
                                                         NcmBinSplit *bs_l,
                                                         NcmBinSplit *bs_r);

FIXME

bs :

a NcmBinSplit

bs_l :

a NcmBinSplit

bs_r :

a NcmBinSplit

ncm_binsplit_test_next ()

glong               ncm_binsplit_test_next              (NcmBinSplit *bs,
                                                         NcmBinSplitEval bs_eval,
                                                         gulong nt);

FIXME

bs :

a NcmBinSplit

bs_eval :

a NcmBinSplitEval

nt :

FIXME

Returns :

FIXME