RTA update - statistics only until inlining
[cacao.git] / nat / Math.c
1 /* class: java/lang/Math */
2
3 #define DBL_NAN    (*((double*) (&dbl_nan)))
4
5 static u8 dbl_nan    = 0xffffffffffffffffL ;
6
7 /*
8  * Class:     java/lang/Math
9  * Method:    IEEEremainder
10  * Signature: (DD)D
11  */
12 JNIEXPORT double JNICALL Java_java_lang_Math_IEEEremainder ( JNIEnv *env ,  double a, double b)
13 {
14         double d;
15         if (finite(a) && finite(b)) {
16                 d = a / b;
17                 if (finite(d))
18                         return a - floor(d) * b;
19                 return DBL_NAN;
20                 }
21         if (isnan(b))
22                 return DBL_NAN;
23         if (finite(a))
24                 return a;
25         return DBL_NAN;
26 }
27
28 /*
29  * Class:     java/lang/Math
30  * Method:    acos
31  * Signature: (D)D
32  */
33 JNIEXPORT double JNICALL Java_java_lang_Math_acos ( JNIEnv *env ,  double par1)
34 {
35         return acos(par1);
36 }
37
38 /*
39  * Class:     java/lang/Math
40  * Method:    asin
41  * Signature: (D)D
42  */
43 JNIEXPORT double JNICALL Java_java_lang_Math_asin ( JNIEnv *env ,  double par1)
44 {
45         return asin(par1);
46 }
47
48 /*
49  * Class:     java/lang/Math
50  * Method:    atan
51  * Signature: (D)D
52  */
53 JNIEXPORT double JNICALL Java_java_lang_Math_atan ( JNIEnv *env ,  double par1)
54 {
55         return atan(par1);
56 }
57
58 /*
59  * Class:     java/lang/Math
60  * Method:    atan2
61  * Signature: (DD)D
62  */
63 JNIEXPORT double JNICALL Java_java_lang_Math_atan2 ( JNIEnv *env ,  double par1, double par2)
64 {
65         return atan2(par1,par2);
66 }
67
68 /*
69  * Class:     java/lang/Math
70  * Method:    ceil
71  * Signature: (D)D
72  */
73 JNIEXPORT double JNICALL Java_java_lang_Math_ceil ( JNIEnv *env ,  double par1)
74 {
75         return ceil(par1);
76 }
77
78 /*
79  * Class:     java/lang/Math
80  * Method:    cos
81  * Signature: (D)D
82  */
83 JNIEXPORT double JNICALL Java_java_lang_Math_cos ( JNIEnv *env ,  double par1)
84 {
85         return cos(par1);
86 }
87
88 /*
89  * Class:     java/lang/Math
90  * Method:    exp
91  * Signature: (D)D
92  */
93 JNIEXPORT double JNICALL Java_java_lang_Math_exp ( JNIEnv *env ,  double par1)
94 {
95         return exp(par1);
96 }
97
98 /*
99  * Class:     java/lang/Math
100  * Method:    floor
101  * Signature: (D)D
102  */
103 JNIEXPORT double JNICALL Java_java_lang_Math_floor ( JNIEnv *env ,  double par1)
104 {
105         return floor(par1);
106 }
107
108 /*
109  * Class:     java/lang/Math
110  * Method:    log
111  * Signature: (D)D
112  */
113 JNIEXPORT double JNICALL Java_java_lang_Math_log ( JNIEnv *env ,  double par1)
114 {
115         if (par1<0.0) {
116                 exceptionptr = proto_java_lang_ArithmeticException;
117                 return 0.0;
118                 }
119         return log(par1);
120 }
121
122 /*
123  * Class:     java/lang/Math
124  * Method:    pow
125  * Signature: (DD)D
126  */
127 JNIEXPORT double JNICALL Java_java_lang_Math_pow ( JNIEnv *env ,  double par1, double par2)
128 {
129         return pow(par1,par2);
130 }
131
132 /*
133  * Class:     java/lang/Math
134  * Method:    rint
135  * Signature: (D)D
136  */
137 JNIEXPORT double JNICALL Java_java_lang_Math_rint ( JNIEnv *env ,  double par1)
138 {
139         return rint(par1); /* phil, 1998/12/12 */
140 }
141
142 /*
143  * Class:     java/lang/Math
144  * Method:    sin
145  * Signature: (D)D
146  */
147 JNIEXPORT double JNICALL Java_java_lang_Math_sin ( JNIEnv *env ,  double par1)
148 {
149         return sin(par1);
150 }
151
152 /*
153  * Class:     java/lang/Math
154  * Method:    sqrt
155  * Signature: (D)D
156  */
157 JNIEXPORT double JNICALL Java_java_lang_Math_sqrt ( JNIEnv *env ,  double par1)
158 {
159         if (par1<0.0) {
160                 exceptionptr = proto_java_lang_ArithmeticException;
161                 return 0.0;
162                 }
163         return sqrt(par1);
164 }
165
166 /*
167  * Class:     java/lang/Math
168  * Method:    tan
169  * Signature: (D)D
170  */
171 JNIEXPORT double JNICALL Java_java_lang_Math_tan ( JNIEnv *env ,  double par1)
172 {
173         return tan(par1);
174 }