blob: 35754cd0e6e3987cd0802b7e155e724450e29937 [file] [log] [blame]
The Android Open Source Projectadc854b2009-03-03 19:28:47 -08001/*
2 * Copyright 2006 The Android Open Source Project
3 *
4 * Native functions for java.lang.Math.
5 */
6#include "jni.h"
7#include "JNIHelp.h"
8
9#include <stdlib.h>
10#include <math.h>
11
12/* native public static double sin(double a); */
13static jdouble jsin(JNIEnv* env, jclass clazz, jdouble a)
14{
15 return sin(a);
16}
17
18/* native public static double cos(double a); */
19static jdouble jcos(JNIEnv* env, jclass clazz, jdouble a)
20{
21 return cos(a);
22}
23
24/* native public static double tan(double a); */
25static jdouble jtan(JNIEnv* env, jclass clazz, jdouble a)
26{
27 return tan(a);
28}
29
30/* native public static double asin(double a); */
31static jdouble jasin(JNIEnv* env, jclass clazz, jdouble a)
32{
33 return asin(a);
34}
35
36/* native public static double acos(double a); */
37static jdouble jacos(JNIEnv* env, jclass clazz, jdouble a)
38{
39 return acos(a);
40}
41
42/* native public static double atan(double a); */
43static jdouble jatan(JNIEnv* env, jclass clazz, jdouble a)
44{
45 return atan(a);
46}
47
48/* native public static double exp(double a); */
49static jdouble jexp(JNIEnv* env, jclass clazz, jdouble a)
50{
51 return exp(a);
52}
53
54/* native public static double log(double a); */
55static jdouble jlog(JNIEnv* env, jclass clazz, jdouble a)
56{
57 return log(a);
58}
59
60/* native public static double sqrt(double a); */
61static jdouble jsqrt(JNIEnv* env, jclass clazz, jdouble a)
62{
63 return sqrt(a);
64}
65
66/* native public static double IEEEremainder(double a, double b); */
67static jdouble jieee_remainder(JNIEnv* env, jclass clazz, jdouble a, jdouble b)
68{
69 return remainder(a, b);
70}
71
72/* native public static double floor(double a); */
73static jdouble jfloor(JNIEnv* env, jclass clazz, jdouble a)
74{
75 return floor(a);
76}
77
78/* native public static double ceil(double a); */
79static jdouble jceil(JNIEnv* env, jclass clazz, jdouble a)
80{
81 return ceil(a);
82}
83
84/* native public static double rint(double a); */
85static jdouble jrint(JNIEnv* env, jclass clazz, jdouble a)
86{
87 return rint(a);
88}
89
90/* native public static double atan2(double a, double b); */
91static jdouble jatan2(JNIEnv* env, jclass clazz, jdouble a, jdouble b)
92{
93 return atan2(a, b);
94}
95
96/* native public static double pow(double a, double b); */
97static jdouble jpow(JNIEnv* env, jclass clazz, jdouble a, jdouble b)
98{
99 return pow(a, b);
100}
101
102/* native public static double sinh(double a); */
103static jdouble jsinh(JNIEnv* env, jclass clazz, jdouble a)
104{
105 return sinh(a);
106}
107
108/* native public static double tanh(double a); */
109static jdouble jtanh(JNIEnv* env, jclass clazz, jdouble a)
110{
111 return tanh(a);
112}
113
114/* native public static double cosh(double a); */
115static jdouble jcosh(JNIEnv* env, jclass clazz, jdouble a)
116{
117 return cosh(a);
118}
119
120/* native public static double log10(double a); */
121static jdouble jlog10(JNIEnv* env, jclass clazz, jdouble a)
122{
123 return log10(a);
124}
125
126/* native public static double cbrt(double a); */
127static jdouble jcbrt(JNIEnv* env, jclass clazz, jdouble a)
128{
129 return cbrt(a);
130}
131
132/* native public static double expm1(double a); */
133static jdouble jexpm1(JNIEnv* env, jclass clazz, jdouble a)
134{
135 return expm1(a);
136}
137
138/* native public static double hypot(double a, double b); */
139static jdouble jhypot(JNIEnv* env, jclass clazz, jdouble a, jdouble b)
140{
141 return hypot(a, b);
142}
143
144/* native public static double log1p(double a); */
145static jdouble jlog1p(JNIEnv* env, jclass clazz, jdouble a)
146{
147 return log1p(a);
148}
149
150/* native public static double nextafter(double a, double b); */
151static jdouble jnextafter(JNIEnv* env, jclass clazz, jdouble a, jdouble b)
152{
153 return nextafter(a, b);
154}
155
156/* native public static float nextafterf(float a, float b); */
157static jfloat jnextafterf(JNIEnv* env, jclass clazz, jfloat a, jfloat b)
158{
159 return nextafterf(a, b);
160}
161
Elliott Hughesace7e6f2010-03-26 23:23:38 -0700162static jdouble copySign(JNIEnv* env, jclass clazz, jdouble a, jdouble b) {
163 return copysign(a, b);
164}
165
166static jfloat copySign_f(JNIEnv* env, jclass clazz, jfloat a, jfloat b) {
167 return copysignf(a, b);
168}
169
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800170/*
171 * JNI registration.
172 */
173static JNINativeMethod gMethods[] = {
174 /* name, signature, funcPtr */
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800175 { "IEEEremainder", "(DD)D", jieee_remainder },
Elliott Hughesace7e6f2010-03-26 23:23:38 -0700176 { "acos", "(D)D", jacos },
177 { "asin", "(D)D", jasin },
178 { "atan", "(D)D", jatan },
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800179 { "atan2", "(DD)D", jatan2 },
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800180 { "cbrt", "(D)D", jcbrt },
Elliott Hughesace7e6f2010-03-26 23:23:38 -0700181 { "ceil", "(D)D", jceil },
182 { "copySign", "(DD)D", copySign },
183 { "copySign", "(FF)F", copySign_f },
184 { "cos", "(D)D", jcos },
185 { "cosh", "(D)D", jcosh },
186 { "exp", "(D)D", jexp },
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800187 { "expm1", "(D)D", jexpm1 },
Elliott Hughesace7e6f2010-03-26 23:23:38 -0700188 { "floor", "(D)D", jfloor },
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800189 { "hypot", "(DD)D", jhypot },
Elliott Hughesace7e6f2010-03-26 23:23:38 -0700190 { "log", "(D)D", jlog },
191 { "log10", "(D)D", jlog10 },
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800192 { "log1p", "(D)D", jlog1p },
193 { "nextafter", "(DD)D", jnextafter },
194 { "nextafterf", "(FF)F", jnextafterf },
Elliott Hughesace7e6f2010-03-26 23:23:38 -0700195 { "pow", "(DD)D", jpow },
196 { "rint", "(D)D", jrint },
197 { "sin", "(D)D", jsin },
198 { "sinh", "(D)D", jsinh },
199 { "sqrt", "(D)D", jsqrt },
200 { "tan", "(D)D", jtan },
201 { "tanh", "(D)D", jtanh },
The Android Open Source Projectadc854b2009-03-03 19:28:47 -0800202};
203
204int register_java_lang_Math(JNIEnv* env)
205{
206 return jniRegisterNativeMethods(env, "java/lang/Math", gMethods,
207 NELEM(gMethods));
208}