File indexing completed on 2026-11-07 10:15:26
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef HYPGEOM_H
0013 #define HYPGEOM_H
0014
0015 #include "fmpz_types.h"
0016 #include "arb_types.h"
0017
0018 #ifdef __cplusplus
0019 extern "C" {
0020 #endif
0021
0022 typedef struct
0023 {
0024 fmpz_poly_t A;
0025 fmpz_poly_t B;
0026 fmpz_poly_t P;
0027 fmpz_poly_t Q;
0028
0029
0030 int have_precomputed;
0031 slong r;
0032 slong boundC;
0033 slong boundD;
0034 slong boundK;
0035 mag_t MK;
0036 }
0037 hypgeom_struct;
0038
0039 typedef hypgeom_struct hypgeom_t[1];
0040
0041 void hypgeom_init(hypgeom_t hyp);
0042
0043 void hypgeom_clear(hypgeom_t hyp);
0044
0045 void hypgeom_precompute(hypgeom_t hyp);
0046
0047 slong hypgeom_estimate_terms(const mag_t z, int r, slong prec);
0048
0049 slong hypgeom_bound(mag_t error, int r,
0050 slong C, slong D, slong K, const mag_t TK, const mag_t z, slong prec);
0051
0052 void arb_hypgeom_sum(arb_t P, arb_t Q, const hypgeom_t hyp, slong n, slong prec);
0053
0054 void arb_hypgeom_infsum(arb_t P, arb_t Q, hypgeom_t hyp, slong target_prec, slong prec);
0055
0056 #ifdef __cplusplus
0057 }
0058 #endif
0059
0060 #endif