1 /* 2 * Copyright 2015 Google Inc. 3 * 4 * This code is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU General Public License version 2 only, as 6 * published by the Free Software Foundation. Google designates this 7 * particular file as subject to the "Classpath" exception as provided 8 * by Google in the LICENSE file that accompanied this code. 9 * 10 * This code is distributed in the hope that it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 * version 2 for more details (a copy is included in the LICENSE file that 14 * accompanied this code). 15 * 16 * You should have received a copy of the GNU General Public License version 17 * 2 along with this work; if not, write to the Free Software Foundation, 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 */ 20 21 #include "jni.h" 22 #include <nativehelper/JNIHelp.h> 23 #include "nativehelper/jni_macros.h" 24 25 #include <stdlib.h> 26 #include <math.h> 27 28 JNIEXPORT jdouble JNICALL 29 Math_cos(jdouble d) { 30 return cos(d); 31 } 32 33 JNIEXPORT jdouble JNICALL 34 Math_sin(jdouble d) { 35 return sin(d); 36 } 37 38 JNIEXPORT jdouble JNICALL 39 Math_tan(jdouble d) { 40 return tan(d); 41 } 42 43 JNIEXPORT jdouble JNICALL 44 Math_asin(jdouble d) { 45 return asin(d); 46 } 47 48 JNIEXPORT jdouble JNICALL 49 Math_acos(jdouble d) { 50 return acos(d); 51 } 52 53 JNIEXPORT jdouble JNICALL 54 Math_atan(jdouble d) { 55 return atan(d); 56 } 57 58 JNIEXPORT jdouble JNICALL 59 Math_exp(jdouble d) { 60 return exp(d); 61 } 62 63 JNIEXPORT jdouble JNICALL 64 Math_log(jdouble d) { 65 return log(d); 66 } 67 68 JNIEXPORT jdouble JNICALL 69 Math_log10(jdouble d) { 70 return log10(d); 71 } 72 73 JNIEXPORT jdouble JNICALL 74 Math_sqrt(jdouble d) { 75 return sqrt(d); 76 } 77 78 JNIEXPORT jdouble JNICALL 79 Math_cbrt(jdouble d) { 80 return cbrt(d); 81 } 82 83 JNIEXPORT jdouble JNICALL 84 Math_atan2(jdouble d1, jdouble d2) { 85 return atan2(d1, d2); 86 } 87 88 JNIEXPORT jdouble JNICALL 89 Math_pow(jdouble d1, jdouble d2) { 90 return pow(d1, d2); 91 } 92 93 JNIEXPORT jdouble JNICALL 94 Math_IEEEremainder(jdouble dividend, jdouble divisor) { 95 return remainder(dividend, divisor); 96 } 97 98 JNIEXPORT jdouble JNICALL 99 Math_cosh(jdouble d) { 100 return cosh(d); 101 } 102 103 JNIEXPORT jdouble JNICALL 104 Math_sinh(jdouble d) { 105 return sinh(d); 106 } 107 108 JNIEXPORT jdouble JNICALL 109 Math_tanh(jdouble d) { 110 return tanh(d); 111 } 112 113 JNIEXPORT jdouble JNICALL 114 Math_hypot(jdouble x, jdouble y) { 115 return hypot(x, y); 116 } 117 118 JNIEXPORT jdouble JNICALL 119 Math_log1p(jdouble d) { 120 return log1p(d); 121 } 122 123 JNIEXPORT jdouble JNICALL 124 Math_expm1(jdouble d) { 125 return expm1(d); 126 } 127 128 JNIEXPORT jdouble JNICALL 129 Math_floor(jdouble d) { 130 return floor(d); 131 } 132 133 JNIEXPORT jdouble JNICALL 134 Math_ceil(jdouble d) { 135 return ceil(d); 136 } 137 138 JNIEXPORT jdouble JNICALL 139 Math_rint(jdouble d) { 140 return rint(d); 141 } 142 143 static JNINativeMethod gMethods[] = { 144 FAST_NATIVE_METHOD(Math, IEEEremainder, "(DD)D"), 145 FAST_NATIVE_METHOD(Math, acos, "(D)D"), 146 FAST_NATIVE_METHOD(Math, asin, "(D)D"), 147 FAST_NATIVE_METHOD(Math, atan, "(D)D"), 148 FAST_NATIVE_METHOD(Math, atan2, "(DD)D"), 149 FAST_NATIVE_METHOD(Math, cbrt, "(D)D"), 150 FAST_NATIVE_METHOD(Math, cos, "(D)D"), 151 FAST_NATIVE_METHOD(Math, ceil, "(D)D"), 152 FAST_NATIVE_METHOD(Math, cosh, "(D)D"), 153 FAST_NATIVE_METHOD(Math, exp, "(D)D"), 154 FAST_NATIVE_METHOD(Math, expm1, "(D)D"), 155 FAST_NATIVE_METHOD(Math, floor, "(D)D"), 156 FAST_NATIVE_METHOD(Math, hypot, "(DD)D"), 157 FAST_NATIVE_METHOD(Math, log, "(D)D"), 158 FAST_NATIVE_METHOD(Math, log10, "(D)D"), 159 FAST_NATIVE_METHOD(Math, log1p, "(D)D"), 160 FAST_NATIVE_METHOD(Math, pow, "(DD)D"), 161 FAST_NATIVE_METHOD(Math, rint, "(D)D"), 162 FAST_NATIVE_METHOD(Math, sin, "(D)D"), 163 FAST_NATIVE_METHOD(Math, sinh, "(D)D"), 164 FAST_NATIVE_METHOD(Math, sqrt, "(D)D"), 165 FAST_NATIVE_METHOD(Math, tan, "(D)D"), 166 FAST_NATIVE_METHOD(Math, tanh, "(D)D"), 167 }; 168 169 void register_java_lang_Math(JNIEnv* env) { 170 jniRegisterNativeMethods(env, "java/lang/Math", gMethods, NELEM(gMethods)); 171 } 172