// -*- mode:C++ ; compile-command: "g++ -I.. -g -c moyal.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 .
*/
#ifndef _GIAC_MOYAL_H
#define _GIAC_MOYAL_H
#include "first.h"
#ifndef NO_NAMESPACE_GIAC
namespace giac {
#endif // ndef NO_NAMESPACE_GIAC
class gen;
gen incomplete_beta(double a,double b,double p,bool regularize=true);
gen lower_incomplete_gamma(double s,double z,bool regularize,GIAC_CONTEXT); // lower incomplete
gen moyal(const gen & a,const gen & b,const gen & vars,const gen & order);
gen _moyal(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_moyal ;
gen Airy_Ai(const gen & a,const gen & b,const gen & vars,const gen & order);
gen _Airy_Ai(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_Airy_Ai ;
gen Airy_Bi(const gen & a,const gen & b,const gen & vars,const gen & order);
gen _Airy_Bi(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_Airy_Bi ;
double randNorm(GIAC_CONTEXT);
void randnorm2(double & r1,double & r2,GIAC_CONTEXT);
gen _randNorm(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_randNorm ;
extern const unary_function_ptr * const at_randnormald ;
gen _randexp(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_randexp ;
gen randpoisson(double lambda,GIAC_CONTEXT);
gen randbinomial(int n,double P,GIAC_CONTEXT);
double randchisquare(int k,GIAC_CONTEXT);
double randstudent(int k,GIAC_CONTEXT);
double randfisher(int k1,int k2,GIAC_CONTEXT);
extern const unary_function_ptr * const at_randchisquare ;
extern const unary_function_ptr * const at_randchisquared ;
extern const unary_function_ptr * const at_randstudent ;
extern const unary_function_ptr * const at_randstudentd ;
extern const unary_function_ptr * const at_randfisherd ;
extern const unary_function_ptr * const at_fisher ;
extern const unary_function_ptr * const at_fisherd ;
extern const unary_function_ptr * const at_randfisher ;
extern const unary_function_ptr * const at_cauchyd ;
extern const unary_function_ptr * const at_cauchy ;
extern const unary_function_ptr * const at_cauchy_cdf ;
extern const unary_function_ptr * const at_cauchy_icdf ;
extern const unary_function_ptr * const at_multinomial ;
extern const unary_function_ptr * const at_randmultinomial;
gen _UTPN(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_UTPN ;
gen UTPC(const gen & n_orig,const gen & x0,GIAC_CONTEXT);
gen _UTPC(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_UTPC ;
gen UTPT(const gen & n_orig,const gen & x0,GIAC_CONTEXT);
gen _UTPT(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_UTPT ;
gen UTPF(const gen & num,const gen & den,const gen & x0,GIAC_CONTEXT);
gen _UTPF(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_UTPF ;
gen binomial(const gen & n,const gen & k,const gen & p,GIAC_CONTEXT);
gen _binomial(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_binomial ;
extern const unary_function_ptr * const at_BINOMIAL ;
gen _negbinomial(const gen & g,GIAC_CONTEXT);
extern const unary_function_ptr * const at_negbinomial ;
gen binomial_cdf(const gen & n,const gen &p,const gen & x0,const gen & x,GIAC_CONTEXT);
gen _binomial_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_binomial_cdf ;
gen binomial_icdf(const gen & n,const gen &p,const gen & x_orig,GIAC_CONTEXT);
gen _binomial_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_binomial_icdf ;
gen poisson(const gen & m,const gen & k,GIAC_CONTEXT);
gen _poisson(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_poisson ;
extern const unary_function_ptr * const at_POISSON ;
double poisson_cdf(double lambda,double x);
gen poisson_cdf(const gen & n,const gen & x,GIAC_CONTEXT);
gen _poisson_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_poisson_cdf ;
gen poisson_icdf(const gen & m,const gen & t_orig,GIAC_CONTEXT);
gen _poisson_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_poisson_icdf ;
gen _normald(const gen & g,GIAC_CONTEXT);
extern const unary_function_ptr * const at_normald ;
extern const unary_function_ptr * const at_NORMALD ;
gen _normal_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_normal_cdf ;
gen _normal_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_normal_icdf ;
gen student(const gen & n,const gen & x,GIAC_CONTEXT);
gen _student(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_student ;
extern const unary_function_ptr * const at_studentd ;
gen student_cdf(const gen & dof,const gen & x1,const gen & x2,GIAC_CONTEXT);
gen _student_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_student_cdf ;
gen student_icdf(const gen & m,const gen & t_orig,GIAC_CONTEXT);
gen _student_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_student_icdf ;
gen geometric(const gen & p,const gen & k,GIAC_CONTEXT);
gen _geometric(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_geometric ;
gen geometric_cdf(const gen & p,const gen & k,GIAC_CONTEXT);
gen _geometric_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_geometric_cdf ;
gen geometric_icdf(const gen & p,const gen & k,GIAC_CONTEXT);
gen _geometric_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_geometric_icdf ;
gen _randgeometric(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_randgeometric ;
extern const unary_function_ptr * const at_uniformd ;
extern const unary_function_ptr * const at_uniform ;
extern const unary_function_ptr * const at_uniform_cdf ;
extern const unary_function_ptr * const at_uniform_icdf ;
extern const unary_function_ptr * const at_uniformd_cdf ;
extern const unary_function_ptr * const at_uniformd_icdf ;
extern const unary_function_ptr * const at_exponentiald ;
extern const unary_function_ptr * const at_exponential ;
extern const unary_function_ptr * const at_exponential_cdf ;
extern const unary_function_ptr * const at_exponential_icdf ;
extern const unary_function_ptr * const at_exponentiald_cdf ;
extern const unary_function_ptr * const at_exponentiald_icdf ;
gen chisquare(const gen & n,const gen & x,GIAC_CONTEXT);
gen _chisquare(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_chisquare ;
extern const unary_function_ptr * const at_chisquared ;
gen chisquare_cdf(const gen & dof,const gen & x1,const gen & x2,GIAC_CONTEXT);
gen _chisquare_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_chisquare_cdf ;
gen chisquare_icdf(const gen & m,const gen & t_orig,GIAC_CONTEXT);
gen _chisquare_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_chisquare_icdf ;
gen snedecor(const gen & a,const gen & b,const gen & x,GIAC_CONTEXT);
gen _snedecor(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_snedecor ;
gen snedecor_cdf(const gen & ndof,const gen & ddof,const gen & x,GIAC_CONTEXT);
gen _snedecor_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_snedecor_cdf ;
gen snedecor_icdf(const gen & num,const gen & den,const gen & t_orig,GIAC_CONTEXT);
gen _snedecor_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_snedecor_icdf ;
extern const unary_function_ptr * const at_weibulld ;
extern const unary_function_ptr * const at_wilcoxont ;
extern const unary_function_ptr * const at_wilcoxonp ;
extern const unary_function_ptr * const at_wilcoxons ;
gen Beta(const gen & a,const gen& b,GIAC_CONTEXT);
gen _Beta(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_Beta ;
gen _betad(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_betad ;
gen _betad_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_betad_cdf ;
gen _betad_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_betad_icdf ;
gen _gammad(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_gammad ;
gen _gammad_cdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_gammad_cdf ;
gen _gammad_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_gammad_icdf ;
gen _kolmogorovd(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_kolmogorovd ;
gen _kolmogorovt(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_kolmogorovt ;
gen _negbinomial_icdf(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_negbinomial_icdf ;
// return 0 if not distrib
// 1 normal, 2 binomial, 3 negbinomial, 4 poisson, 5 student,
// 6 fisher, 7 cauchy, 8 weibull, 9 betad, 10 gammad, 11 chisquare
int is_distribution(const gen & args);
bool is_discrete_distribution(int nd);
int distrib_nargs(int nd); // number of args for the distribution
bool distrib_support(int nd,gen & a,gen &b,bool truncate);
// icdf and cdf function corresponding to the codes above
gen icdf(int n);
gen cdf(int n);
gen distribution(int nd);
int giacmax(const std::vector & X);
int giacmin(const std::vector & X);
void effectif(const std::vector & x,std::vector & eff,int m);
void somme(const std::vector & x,const std::vector &y,std::vector & z);
double upper_incomplete_gammad(double s,double z,bool regularize);
gen _upper_incomplete_gamma(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_upper_incomplete_gamma ;
gen _polygamma(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_polygamma ;
// kind=0: BesselI, =1 BesselJ, =2 BesselK, =3 BesselY
gen Bessel(const gen & g,int kind,GIAC_CONTEXT);
gen _BesselI(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_BesselI ;
gen _BesselJ(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_BesselJ ;
gen _BesselK(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_BesselK ;
gen _BesselY(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_BesselY ;
gen _harmonic(const gen & args,GIAC_CONTEXT);
extern const unary_function_ptr * const at_harmonic ;
gen _constants_catalog(const gen & g,GIAC_CONTEXT);
#ifndef NO_NAMESPACE_GIAC
} // namespace giac
#endif // ndef NO_NAMESPACE_GIAC
#endif // _GIAC_MOYAL_H