Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*
0002     Copyright (C) 2013 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 ACB_CALC_H
0013 #define ACB_CALC_H
0014 
0015 #include "acb_types.h"
0016 
0017 #ifdef __cplusplus
0018 extern "C" {
0019 #endif
0020 
0021 typedef int (*acb_calc_func_t)(acb_ptr out,
0022     const acb_t inp, void * param, slong order, slong prec);
0023 
0024 /* Integration (old) */
0025 
0026 void acb_calc_cauchy_bound(arb_t bound, acb_calc_func_t func,
0027     void * param, const acb_t x, const arb_t radius,
0028     slong maxdepth, slong prec);
0029 
0030 int acb_calc_integrate_taylor(acb_t res,
0031     acb_calc_func_t func, void * param,
0032     const acb_t a, const acb_t b,
0033     const arf_t inner_radius,
0034     const arf_t outer_radius,
0035     slong accuracy_goal, slong prec);
0036 
0037 /* Integration */
0038 
0039 typedef struct
0040 {
0041     slong deg_limit;
0042     slong eval_limit;
0043     slong depth_limit;
0044     int use_heap;
0045     int verbose;
0046 }
0047 acb_calc_integrate_opt_struct;
0048 
0049 typedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1];
0050 
0051 void acb_calc_integrate_opt_init(acb_calc_integrate_opt_t options);
0052 
0053 int
0054 acb_calc_integrate(acb_t res, acb_calc_func_t f, void * param,
0055     const acb_t a, const acb_t b,
0056     slong goal, const mag_t tol,
0057     const acb_calc_integrate_opt_t options,
0058     slong prec);
0059 
0060 int
0061 acb_calc_integrate_gl_auto_deg(acb_t res, slong * eval_count,
0062     acb_calc_func_t f, void * param,
0063     const acb_t a, const acb_t b, const mag_t tol,
0064     slong deg_limit, int verbose, slong prec);
0065 
0066 #ifdef __cplusplus
0067 }
0068 #endif
0069 
0070 #endif