Blame | Last modification | View Log | Download | RSS feed
/** R : A Computer Langage for Statistical Data Analysis* Copyright (C) 1995, 1996 Robert Gentleman and Ross Ihaka** 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 2 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, write to the Free Software* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#ifndef MATHLIB_H_#define MATHLIB_H_#include "Arith.h"#ifdef Macintosh#include <fp.h>double hypot(double x, double y);#else#include <math.h>#endif/* SGI math.h conflict */#undef qexp#include <stdlib.h>#include <limits.h>#include <float.h>#include <errno.h>/* 30 Decimal-place constants computed with bc (scale=32; proper round) */#ifndef M_1_SQRT_2#define M_1_SQRT_2 0.707106781186547524400844362105#endif#ifndef M_PI#define M_PI 3.141592653589793238462643383279#endif#ifndef M_PI_half#define M_PI_half 1.570796326794896619231321691640#endif#ifndef M_SQRT_PI#define M_SQRT_PI 1.772453850905516027298167483341#endif#ifndef M_1_SQRT_2PI#define M_1_SQRT_2PI 0.398942280401432677939946059934#endif/* log(sqrt(2*pi)) = log(2*pi)/2 : */#ifndef M_LN_SQRT_2PI#define M_LN_SQRT_2PI 0.918938533204672741780329736406#endif#ifndef HAVE_RINTdouble rint(double);#endif/* Random Number Generation */extern double snorm(void);extern double sunif(void);extern double sexp(void);/* Port Constants */extern int F77_SYMBOL(i1mach)(int*);extern double F77_SYMBOL(d1mach)(int*);/* Fortran Compatibility */extern double fint(double);extern double fmax2(double, double);extern double fmin2(double, double);extern double fmod(double, double);extern double fsign(double, double);extern double fsquare(double);extern double fcube(double);extern int imax2(int, int);extern int imin2(int, int);/* Utilities */extern double rround(double, double);extern double prec(double, double);extern double sign(double);extern double trunc(double);/* Mathematical Special Functions */extern double beta(double, double);extern double lbeta(double, double);extern double gamma(double);extern double lgamma(double);extern double lfastchoose(double, double);extern double fastchoose(double, double);extern double choose(double, double);extern double lchoose(double, double);extern void dpsifn(double, int, int, int, double*, int*, int*);extern double digamma(double);extern double trigamma(double);extern double tetragamma(double);extern double pentagamma(double);/* Distributions */extern double dbeta(double, double, double);extern double pbeta(double, double, double);extern double pbeta_b(double, double, double, double);extern double qbeta(double, double, double);extern double rbeta(double, double);extern double dbinom(double, double, double);extern double pbinom(double, double, double);extern double qbinom(double, double, double);extern double rbinom(double, double);extern double dcauchy(double, double, double);extern double pcauchy(double, double, double);extern double qcauchy(double, double, double);extern double rcauchy(double, double);extern double dchisq(double, double);extern double pchisq(double, double);extern double qchisq(double, double);extern double rchisq(double);extern double dexp(double, double);extern double pexp(double, double);extern double qexp(double, double);extern double rexp(double);extern double df(double, double, double);extern double pf(double, double, double);extern double qf(double, double, double);extern double rf(double, double);extern double dgamma(double, double, double);extern double pgamma(double, double, double);extern double qgamma(double, double, double);extern double rgamma(double, double);extern double dgeom(double, double);extern double pgeom(double, double);extern double qgeom(double, double);extern double rgeom(double);extern double dhyper(double, double, double, double);extern double phyper(double, double, double, double);extern double qhyper(double, double, double, double);extern double rhyper(double, double, double);extern double dlnorm(double, double, double);extern double plnorm(double, double, double);extern double qlnorm(double, double, double);extern double rlnorm(double, double);extern double dlogis(double, double, double);extern double plogis(double, double, double);extern double qlogis(double, double, double);extern double rlogis(double, double);extern double dnbinom(double, double, double);extern double pnbinom(double, double, double);extern double qnbinom(double, double, double);extern double rnbinom(double, double);extern double dnchisq(double, double, double);extern double pnchisq(double, double, double);extern double qnchisq(double, double, double);extern double rnchisq(double, double);extern double dnorm(double, double, double);extern double pnorm(double, double, double);extern double qnorm(double, double, double);extern double rnorm(double, double);extern double dpois(double, double);extern double ppois(double, double);extern double qpois(double, double);extern double rpois(double);extern double dt(double, double);extern double pt(double, double);extern double qt(double, double);extern double rt(double);extern double dunif(double, double, double);extern double punif(double, double, double);extern double qunif(double, double, double);extern double runif(double, double);extern double dweibull(double, double, double);extern double pweibull(double, double, double);extern double qweibull(double, double, double);extern double rweibull(double, double);extern int errno;#endif