reorganize scicos_sundials as std lib
[scilab.git] / scilab / modules / scicos / src / scicos_sundials / include / sundials / sundials_math.h
1 /*
2  * -----------------------------------------------------------------
3  * $Revision: 1.1 $
4  * $Date: 2006/07/05 15:27:52 $
5  * -----------------------------------------------------------------
6  * Programmer(s): Scott D. Cohen, Alan C. Hindmarsh and
7  *                Aaron Collier @ LLNL
8  * -----------------------------------------------------------------
9  * Copyright (c) 2002, The Regents of the University of California.
10  * Produced at the Lawrence Livermore National Laboratory.
11  * All rights reserved.
12  * For details, see the LICENSE file.
13  * -----------------------------------------------------------------
14  * This is the header file for a simple C-language math library. The
15  * routines listed here work with the type realtype as defined in
16  * the header file sundials_types.h.
17  * -----------------------------------------------------------------
18  */
19
20 #ifndef _SUNDIALSMATH_H
21 #define _SUNDIALSMATH_H
22
23 #ifdef __cplusplus  /* wrapper to enable C++ usage */
24 extern "C" {
25 #endif
26
27 #include <sundials/sundials_types.h>
28
29 /*
30  * -----------------------------------------------------------------
31  * Macros : MIN and MAX
32  * -----------------------------------------------------------------
33  * MIN(A,B) returns the minimum of A and B
34  *
35  * MAX(A,B) returns the maximum of A and B
36  *
37  * SQR(A) returns A^2
38  * -----------------------------------------------------------------
39  */
40
41 #ifndef MIN
42 #define MIN(A, B) ((A) < (B) ? (A) : (B))
43 #endif
44
45 #ifndef MAX
46 #define MAX(A, B) ((A) > (B) ? (A) : (B))
47 #endif
48
49 #ifndef SQR
50 #define SQR(A) ((A)*(A))
51 #endif
52
53 #ifndef ABS
54 #define ABS RAbs
55 #endif
56
57 #ifndef SQRT
58 #define SQRT RSqrt
59 #endif
60
61 #ifndef EXP
62 #define EXP RExp
63 #endif
64
65 /*
66  * -----------------------------------------------------------------
67  * Function : RPowerI
68  * -----------------------------------------------------------------
69  * Usage : int exponent;
70  *         realtype base, ans;
71  *         ans = RPowerI(base,exponent);
72  * -----------------------------------------------------------------
73  * RPowerI returns the value of base^exponent, where base is of type
74  * realtype and exponent is of type int.
75  * -----------------------------------------------------------------
76  */
77
78 realtype RPowerI(realtype base, int exponent);
79
80 /*
81  * -----------------------------------------------------------------
82  * Function : RPowerR
83  * -----------------------------------------------------------------
84  * Usage : realtype base, exponent, ans;
85  *         ans = RPowerR(base,exponent);
86  * -----------------------------------------------------------------
87  * RPowerR returns the value of base^exponent, where both base and
88  * exponent are of type realtype. If base < ZERO, then RPowerR
89  * returns ZERO.
90  * -----------------------------------------------------------------
91  */
92
93 realtype RPowerR(realtype base, realtype exponent);
94
95 /*
96  * -----------------------------------------------------------------
97  * Function : RSqrt
98  * -----------------------------------------------------------------
99  * Usage : realtype sqrt_x;
100  *         sqrt_x = RSqrt(x);
101  * -----------------------------------------------------------------
102  * RSqrt(x) returns the square root of x. If x < ZERO, then RSqrt
103  * returns ZERO.
104  * -----------------------------------------------------------------
105  */
106
107 realtype RSqrt(realtype x);
108
109 /*
110  * -----------------------------------------------------------------
111  * Function : RAbs (a.k.a. ABS)
112  * -----------------------------------------------------------------
113  * Usage : realtype abs_x;
114  *         abs_x = RAbs(x);
115  * -----------------------------------------------------------------
116  * RAbs(x) returns the absolute value of x.
117  * -----------------------------------------------------------------
118  */
119
120 realtype RAbs(realtype x);
121
122 /*
123  * -----------------------------------------------------------------
124  * Function : RExp (a.k.a. EXP)
125  * -----------------------------------------------------------------
126  * Usage : realtype exp_x;
127  *         exp_x = RExp(x);
128  * -----------------------------------------------------------------
129  * RExp(x) returns e^x (base-e exponential function).
130  * -----------------------------------------------------------------
131  */
132
133 realtype RExp(realtype x);
134
135 #ifdef __cplusplus
136 }
137 #endif
138
139 #endif