/usr/include/giac/intg.h is in libgiac-dev 1.2.3.57+dfsg1-2build3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | // -*- mode:C++ ; compile-command: "g++ -I.. -g -c intg.cc" -*-
/*
* Copyright (C) 2000,2014 B. Parisse, Institut Fourier, 38402 St Martin d'Heres
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _GIAC_INTG_H
#define _GIAC_INTG_H
#include "first.h"
#include <string>
#ifndef NO_NAMESPACE_GIAC
namespace giac {
#endif // ndef NO_NAMESPACE_GIAC
class gen;
class identificateur;
struct unary_function_ptr;
gen complex_subst(const gen & e,const vecteur & substin,const vecteur & substout,GIAC_CONTEXT);
gen complex_subst(const gen & e,const gen & x,const gen & newx,GIAC_CONTEXT);
vecteur lvarxwithinv(const gen &e,const gen & x,GIAC_CONTEXT);
bool is_constant_wrt(const gen & e,const gen & x,GIAC_CONTEXT);
bool is_linear_wrt(const gen & e,const gen &x,gen & a,gen & b,GIAC_CONTEXT);
bool is_quadratic_wrt(const gen & e,const gen &x,gen & a,gen & b,gen & c,GIAC_CONTEXT);
gen linear_apply(const gen & e,const gen & x,gen & remains, GIAC_CONTEXT, gen (* f)(const gen &,const gen &,gen &,const context *));
gen lnabs(const gen & x,GIAC_CONTEXT);
extern const unary_function_ptr * const at_surd ;
gen surd(const gen & c,int n,GIAC_CONTEXT);
gen _surd(const gen & args,GIAC_CONTEXT);
// find surd/NTHROOT inside e, set subst1 to list of surd/NTHROOT and subst2
// to replacement by pow
void surd2pow(const gen & e,vecteur & subst1,vecteur & subst2,GIAC_CONTEXT);
gen invexptoexpneg(const gen& g,GIAC_CONTEXT);
bool is_rewritable_as_f_of(const gen & fu,const gen & u,gen & fx,const gen & gen_x,GIAC_CONTEXT);
gen firstcoefftrunc(const gen & e);
// special version of lvarx that does not remove cst powers
vecteur lvarxpow(const gen &e,const gen & x);
// Check for hypergeometric e, if true
// write e(x+1)/e(x) as P(n+1)/P(n)*Q(x)/R(x+1)
bool is_hypergeometric(const gen & e,const identificateur &x,vecteur &v,polynome & P,polynome & Q,polynome & R,GIAC_CONTEXT);
// Write a fraction A/B as E[P]/P*Q/E[R] where E[P]=subst(P,x,x+1)
// and Q and all positive shifts of R are prime together
void AB2PQR(const polynome & A,const polynome & B,polynome & P,polynome & Q, polynome & R);
polynome taylor(const polynome & P,const gen & g);
// int(ratfrac,x=-inf..inf)
bool intgab_ratfrac(const gen & e,const gen & x,gen & value,GIAC_CONTEXT);
// integr. of rat. fcns.
gen integrate_gen_rem(const gen & e, const gen & x, gen & remains_to_integrate,GIAC_CONTEXT);
gen integrate_id_rem(const gen & e, const gen & x, gen & remains_to_integrate,GIAC_CONTEXT,int intmode); // intmode bit 0 is used for sqrt int control, bit 1 control step/step info
gen integrate_id_rem(const gen & e, const gen & x, gen & remains_to_integrate,GIAC_CONTEXT);
gen linear_integrate(const gen & e,const gen & x,gen & remains_to_integrate,GIAC_CONTEXT);
gen integrate_id(const gen & e,const identificateur & x,GIAC_CONTEXT);
gen integrate_gen(const gen & e,const gen & f,GIAC_CONTEXT);
gen _integrate(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_integrate ;
bool tegral(const gen & f,const gen & x,const gen & a,const gen &b,const gen & eps,int nmax,gen & value,GIAC_CONTEXT);
double rombergo(const gen & f,const gen & x, const gen & a, const gen & b, int n,GIAC_CONTEXT);
double rombergt(const gen & f,const gen & x, const gen & a, const gen & b, int n,GIAC_CONTEXT);
gen romberg(const gen & f0,const gen & x0,const gen & a,const gen &b,const gen & eps,int nmax,GIAC_CONTEXT);
gen evalf_int(const gen & f0,const gen & x0,const gen & a,const gen &b,const gen & eps,int nmax,bool romberg_method,GIAC_CONTEXT);
gen symb_romberg(const gen & a,const gen & b);
gen _romberg(const gen & args,GIAC_CONTEXT);
gen _gaussquad(const gen & args,GIAC_CONTEXT);
gen ggb_var(const gen & f); // return vx_var or the first var in f if vx_var not there
extern const unary_function_ptr * const at_romberg;
// remove quote inside a maple-like sum/product argument vector
// returns true if maple syntax was used
bool maple_sum_product_unquote(vecteur & v,GIAC_CONTEXT);
// replace x=a..b by x,a,b in the second vector arg
bool adjust_int_sum_arg(vecteur & v,int & s);
bool rational_sum(const gen & e,const gen & x,gen & res,gen& remains_to_sum,bool allow_psi,GIAC_CONTEXT);
gen prodsum(const gen & g,bool isprod);
polynome taylor(const polynome & P,const gen & g);
bool gosper(const polynome & P,const polynome & Q,const polynome & R,polynome & Y,gen & deno,GIAC_CONTEXT);
bool is_hypergeometric(const gen & e,const identificateur &x,vecteur &v,polynome & P,polynome & Q,polynome & R,GIAC_CONTEXT);
gen sum(const gen & e,const gen & x,gen & remains_to_sum,GIAC_CONTEXT);
gen sum_loop(const gen & e,const gen & x,int i,int j,GIAC_CONTEXT);
gen sum(const gen & e,const gen & x,const gen & a,const gen &b,GIAC_CONTEXT);
gen _sum(const gen & args,GIAC_CONTEXT) ;
gen _Sum(const gen & args,GIAC_CONTEXT) ;
gen bernoulli(const gen & x);
gen _bernoulli(const gen & args,GIAC_CONTEXT) ;
vecteur double2vecteur(const double * y,int dim);
// type=0 for seq, 1 for prod, 2 for sum
gen seqprod(const gen & g,int type,GIAC_CONTEXT);
bool rational_sum(const gen & e,const gen & x,gen & res,gen& remains_to_sum,bool allow_psi,GIAC_CONTEXT);
gen sum(const gen & e,const gen & x,gen & remains_to_sum,GIAC_CONTEXT);
gen sum(const gen & e,const gen & x,const gen & a,const gen &b,GIAC_CONTEXT);
gen _sum(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_sum;
gen sum_loop(const gen & e,const gen & x,int i,int j,GIAC_CONTEXT);
void decompose_plus(const vecteur & arg,const gen & x,vecteur & non_constant,gen & plus_constant,GIAC_CONTEXT);
void decompose_prod(const vecteur & arg,const gen & x,vecteur & non_constant,gen & prod_constant,bool signcst,GIAC_CONTEXT);
gen bernoulli(const gen & x);
gen _bernoulli(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_bernoulli;
// solve dy/dt=f(t,y) with initial value y(t0)=y0 to final value t1
// returns by default y[t1] or a std::vector of [t,y[t]]
// if return_curve is true stop as soon as y is outside ymin,ymax
// f is eitheir a prog (t,y) -> f(t,y) or a comp [f(t,y) t y]
gen odesolve(const gen & t0orig,const gen & t1orig,const gen & f,const gen & y0orig,double tstep,bool return_curve,double * ymin,double * ymax,int maxstep,GIAC_CONTEXT);
gen _odesolve(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_odesolve;
gen preval(const gen & f,const gen & x,const gen & a,const gen & b,GIAC_CONTEXT);
gen _ibpdv(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_ibpdv;
gen fourier_an(const gen & f,const gen & x,const gen & T,const gen & n,const gen & a,GIAC_CONTEXT);
gen fourier_bn(const gen & f,const gen & x,const gen & T,const gen & n,const gen & a,GIAC_CONTEXT);
gen fourier_cn(const gen & f,const gen & x,const gen & T,const gen & n,const gen & a,GIAC_CONTEXT);
gen _fourier_an(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_fourier_an ;
gen _fourier_bn(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_fourier_bn ;
gen _fourier_cn(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_fourier_cn ;
void comprim(vecteur & v);
#ifndef NO_NAMESPACE_GIAC
} // namespace giac
#endif // ndef NO_NAMESPACE_GIAC
#endif // _GIAC_INTG_H
|