The R Project SVN R

Rev

Rev 2737 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2737 Rev 3076
Line 1... Line 1...
1
#ifndef MATHLIB_H
1
#ifndef MATHLIB_H
2
#define MATHLIB_H
2
#define MATHLIB_H
3
 
3
 
-
 
4
#define MATHLIB_IN_R/*-- Mathlib as part of R --*/
-
 
5
 
4
#include "Arith.h"
6
#include "Arith.h"
-
 
7
#include "Random.h"
5
 
8
 
6
#ifdef FORTRAN_H
9
#ifdef FORTRAN_H
7
#error __MUST__include "Mathlib.h"  _before_  "Fortran.h"
10
#error __MUST__include "Mathlib.h"  _before_  "Fortran.h"
8
#endif
11
#endif
9
 
12
 
Line 53... Line 56...
53
/* log(sqrt(pi/2)) = log(pi/2)/2 : */
56
/* log(sqrt(pi/2)) = log(pi/2)/2 : */
54
#define M_LN_SQRT_PId2	0.225791352644727432363097614947441
57
#define M_LN_SQRT_PId2	0.225791352644727432363097614947441
55
#endif
58
#endif
56
 
59
 
57
 
60
 
-
 
61
#ifdef MATHLIB_IN_R/* Mathlib in R */
58
 
62
 
-
 
63
#include "Error.h"
-
 
64
# define MATHLIB_ERROR(fmt,x)		error(fmt,x);
-
 
65
# define MATHLIB_WARNING(fmt,x)		warning(fmt,x)
-
 
66
# define MATHLIB_WARNING2(fmt,x,x2)	warning(fmt,x,x2)
-
 
67
# define MATHLIB_WARNING3(fmt,x,x2,x3)	warning(fmt,x,x2,x3)
-
 
68
# define MATHLIB_WARNING4(fmt,x,x2,x3,x4) warning(fmt,x,x2,x3,x4)
-
 
69
 
-
 
70
#else/* Mathlib standalone */
-
 
71
 
-
 
72
#include <stdio.h>
59
#define MATHLIB_ERROR(x)   { printf("%s\n",x); exit(1); }
73
# define MATHLIB_ERROR(fmt,x)   { printf(fmt,x); exit(1) }
60
#define MATHLIB_WARNING(x) { printf("%s\n",x); }
74
# define MATHLIB_WARNING(fmt,x)		printf(fmt,x)
-
 
75
# define MATHLIB_WARNING2(fmt,x,x2)	printf(fmt,x,x2)
-
 
76
# define MATHLIB_WARNING3(fmt,x,x2,x3)	printf(fmt,x,x2,x3)
-
 
77
# define MATHLIB_WARNING4(fmt,x,x2,x3,x4) printf(fmt,x,x2,x3,x4)
-
 
78
#endif
61
 
79
 
62
#define ME_NONE		0
80
#define ME_NONE		0
63
#define ME_DOMAIN	1
81
#define ME_DOMAIN	1
64
#define ME_RANGE	2
82
#define ME_RANGE	2
65
#define ME_NOCONV	3
83
#define ME_NOCONV	3
Line 111... Line 129...
111
#endif
129
#endif
112
 
130
 
113
	/* Name Hiding to Avoid Clashes with Fortran */
131
	/* Name Hiding to Avoid Clashes with Fortran */
114
 
132
 
115
#ifdef HIDE_NAMES
133
#ifdef HIDE_NAMES
116
#define d1mach	c_d1mach
134
# define d1mach	c_d1mach
117
#define i1mach	c_i1mach
135
# define i1mach	c_i1mach
118
#endif
136
#endif
119
 
137
 
120
#define	rround	fround
138
#define	rround	fround
121
#define	prec	fprec
139
#define	prec	fprec
122
#define	trunc	ftrunc
140
#define	trunc	ftrunc
123
/* NO!  fsign(.) has 2 arguments;  sign(.) has 1..
-
 
124
 #define	sign	fsign
-
 
125
*/
-
 
126
 
141
 
127
	/* Machine Characteristics */
142
	/* Machine Characteristics */
128
 
143
 
129
double	d1mach(int);
144
double	d1mach(int);
130
double	d1mach_(int*);
145
double	d1mach_(int*);
Line 133... Line 148...
133
 
148
 
134
	/* General Support Functions */
149
	/* General Support Functions */
135
 
150
 
136
int	imax2(int, int);
151
int	imax2(int, int);
137
int	imin2(int, int);
152
int	imin2(int, int);
138
double	sign(double);
-
 
139
double	fmax2(double, double);
153
double	fmax2(double, double);
140
double	fmin2(double, double);
154
double	fmin2(double, double);
141
double	fmod(double, double);
155
double	fmod(double, double);
142
double	fprec(double, double);
156
double	fprec(double, double);
143
double	fround(double, double);
157
double	fround(double, double);
144
double	ftrunc(double);
158
double	ftrunc(double);
-
 
159
double	sign(double);
145
double	fsign(double, double);
160
double	fsign(double, double);
146
double	fsquare(double);
161
double	fsquare(double);
147
double	fcube(double);
162
double	fcube(double);
148
 
163
 
149
	/* Random Number Generators */
164
	/* Random Number Generators */