The R Project SVN R

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 r 1
/*
2
 *  R : A Computer Langage for Statistical Data Analysis
3
 *  Copyright (C) 1995, 1996  Robert Gentleman and Ross Ihaka
4
 *
5
 *  This program is free software; you can redistribute it and/or modify
6
 *  it under the terms of the GNU General Public License as published by
7
 *  the Free Software Foundation; either version 2 of the License, or
8
 *  (at your option) any later version.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License
16
 *  along with this program; if not, write to the Free Software
17
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
 */
19
 
20
#ifndef MATHLIB_H_
21
#define MATHLIB_H_
22
 
23
#include "Arith.h"
24
 
25
#ifdef Macintosh
26
#include <fp.h>
27
double hypot(double x, double y);
28
#else
29
#include <math.h>
30
#endif
31
 
32
/* SGI math.h conflict */
33
#undef qexp
34
 
35
#include <stdlib.h>
36
#include <limits.h>
37
#include <float.h>
38
#include <errno.h>
39
 
40
/* 30 Decimal-place constants computed with bc  (scale=32; proper round) */
41
 
42
#ifndef M_1_SQRT_2
43
#define M_1_SQRT_2	0.707106781186547524400844362105
44
#endif
45
 
46
#ifndef M_PI
47
#define M_PI		3.141592653589793238462643383279
48
#endif
49
 
50
#ifndef M_PI_half
51
#define M_PI_half	1.570796326794896619231321691640
52
#endif
53
 
54
#ifndef M_SQRT_PI
55
#define M_SQRT_PI	1.772453850905516027298167483341
56
#endif
57
 
58
#ifndef M_1_SQRT_2PI
59
#define M_1_SQRT_2PI	0.398942280401432677939946059934
60
#endif
61
 
62
/* log(sqrt(2*pi)) = log(2*pi)/2 : */
63
#ifndef M_LN_SQRT_2PI
64
#define M_LN_SQRT_2PI	0.918938533204672741780329736406
65
#endif
66
 
67
 
68
#ifndef	HAVE_RINT
69
double rint(double);
70
#endif
71
 
72
	/* Random Number Generation */
73
 
74
extern double snorm(void);
75
extern double sunif(void);
76
extern double sexp(void);
77
 
78
	/* Port Constants */
79
 
80
extern int F77_SYMBOL(i1mach)(int*);
81
extern double F77_SYMBOL(d1mach)(int*);
82
 
83
	/* Fortran Compatibility */
84
 
85
extern double fint(double);
86
extern double fmax2(double, double);
87
extern double fmin2(double, double);
88
extern double fmod(double, double);
89
extern double fsign(double, double);
90
extern double fsquare(double);
91
extern double fcube(double);
92
extern int imax2(int, int);
93
extern int imin2(int, int);
94
 
95
	/* Utilities */
96
 
97
extern double rround(double, double);
98
extern double prec(double, double);
99
extern double sign(double);
100
extern double trunc(double);
101
 
102
 
103
	/* Mathematical Special Functions */
104
 
105
extern double beta(double, double);
106
extern double lbeta(double, double);
107
extern double gamma(double);
108
extern double lgamma(double);
109
extern double lfastchoose(double, double);
110
extern double fastchoose(double, double);
111
extern double choose(double, double);
112
extern double lchoose(double, double);
113
extern void dpsifn(double, int, int, int, double*, int*, int*);
114
extern double digamma(double);
115
extern double trigamma(double);
116
extern double tetragamma(double);
117
extern double pentagamma(double);
118
 
119
	/* Distributions */
120
 
121
extern double dbeta(double, double, double);
122
extern double pbeta(double, double, double);
123
extern double pbeta_b(double, double, double, double);
124
extern double qbeta(double, double, double);
125
extern double rbeta(double, double);
126
 
127
extern double dbinom(double, double, double);
128
extern double pbinom(double, double, double);
129
extern double qbinom(double, double, double);
130
extern double rbinom(double, double);
131
 
132
extern double dcauchy(double, double, double);
133
extern double pcauchy(double, double, double);
134
extern double qcauchy(double, double, double);
135
extern double rcauchy(double, double);
136
 
137
extern double dchisq(double, double);
138
extern double pchisq(double, double);
139
extern double qchisq(double, double);
140
extern double rchisq(double);
141
 
142
extern double dexp(double, double);
143
extern double pexp(double, double);
144
extern double qexp(double, double);
145
extern double rexp(double);
146
 
147
extern double df(double, double, double);
148
extern double pf(double, double, double);
149
extern double qf(double, double, double);
150
extern double rf(double, double);
151
 
152
extern double dgamma(double, double, double);
153
extern double pgamma(double, double, double);
154
extern double qgamma(double, double, double);
155
extern double rgamma(double, double);
156
 
157
extern double dgeom(double, double);
158
extern double pgeom(double, double);
159
extern double qgeom(double, double);
160
extern double rgeom(double);
161
 
162
extern double dhyper(double, double, double, double);
163
extern double phyper(double, double, double, double);
164
extern double qhyper(double, double, double, double);
165
extern double rhyper(double, double, double);
166
 
167
extern double dlnorm(double, double, double);
168
extern double plnorm(double, double, double);
169
extern double qlnorm(double, double, double);
170
extern double rlnorm(double, double);
171
 
172
extern double dlogis(double, double, double);
173
extern double plogis(double, double, double);
174
extern double qlogis(double, double, double);
175
extern double rlogis(double, double);
176
 
177
extern double dnbinom(double, double, double);
178
extern double pnbinom(double, double, double);
179
extern double qnbinom(double, double, double);
180
extern double rnbinom(double, double);
181
 
182
extern double dnchisq(double, double, double);
183
extern double pnchisq(double, double, double);
184
extern double qnchisq(double, double, double);
185
extern double rnchisq(double, double);
186
 
187
extern double dnorm(double, double, double);
188
extern double pnorm(double, double, double);
189
extern double qnorm(double, double, double);
190
extern double rnorm(double, double);
191
 
192
extern double dpois(double, double);
193
extern double ppois(double, double);
194
extern double qpois(double, double);
195
extern double rpois(double);
196
 
197
extern double dt(double, double);
198
extern double pt(double, double);
199
extern double qt(double, double);
200
extern double rt(double);
201
 
202
extern double dunif(double, double, double);
203
extern double punif(double, double, double);
204
extern double qunif(double, double, double);
205
extern double runif(double, double);
206
 
207
extern double dweibull(double, double, double);
208
extern double pweibull(double, double, double);
209
extern double qweibull(double, double, double);
210
extern double rweibull(double, double);
211
 
212
extern int errno;
213
 
214
#endif