Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:15:26

0001 /*
0002     Copyright (C) 2012 Fredrik Johansson
0003 
0004     This file is part of FLINT.
0005 
0006     FLINT is free software: you can redistribute it and/or modify it under
0007     the terms of the GNU Lesser General Public License (LGPL) as published
0008     by the Free Software Foundation; either version 3 of the License, or
0009     (at your option) any later version.  See <https://www.gnu.org/licenses/>.
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     /* precomputation data */
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