blob: f8014bcd41a62c3c9bddc2981f3c94a810fda2d9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "jni.h"
/* #include "fltconst.h" */
#if defined(__P)
#undef __P
#endif /* defined(__P) */
#include "fdlibm.h"
jdouble internal_ceil (jdouble arg1);
jdouble internal_log (jdouble arg1);
jdouble internal_cos (jdouble arg1);
jdouble internal_pow (jdouble arg1, jdouble arg2);
jdouble internal_sqrt (jdouble arg1);
void traceCall (char *name, double *arg1, double *arg2, double *result);
jdouble internal_atan (jdouble arg1);
jdouble internal_atan2 (jdouble arg1, jdouble arg2);
jdouble internal_asin (jdouble arg1);
jdouble internal_IEEEremainder (jdouble arg1, jdouble arg2);
jdouble internal_floor (jdouble arg1);
jdouble internal_acos (jdouble arg1);
jdouble internal_exp (jdouble arg1);
jdouble internal_tan (jdouble arg1);
jdouble internal_sin (jdouble arg1);
jdouble internal_rint (jdouble arg1);
jdouble internal_cbrt (jdouble arg1);
jdouble internal_sinh (jdouble arg1);
jdouble internal_cosh (jdouble arg1);
jdouble internal_tanh (jdouble arg1);
jdouble internal_expm1(jdouble arg1);
jdouble internal_hypot(jdouble arg1, jdouble arg2);
jdouble internal_log1p(jdouble arg1);
jdouble internal_log10(jdouble arg1);
jdouble internal_nextafter(jdouble arg1,jdouble arg2);
jfloat internal_nextafterf(jfloat arg1,jfloat arg2);
jdouble
internal_acos (jdouble arg1)
{
jdouble result;
result = acos (arg1);
return result;
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_acos (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_acos (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_acos (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_acos (arg1);
}
jdouble
internal_asin (jdouble arg1)
{
jdouble result;
result = asin (arg1);
return result;
}
jdouble
internal_atan (jdouble arg1)
{
jdouble result;
result = atan (arg1);
return result;
}
jdouble
internal_atan2 (jdouble arg1, jdouble arg2)
{
jdouble result;
result = atan2 (arg1, arg2);
return result;
}
jdouble
internal_cbrt (jdouble arg1)
{
jdouble result;
result = cbrt (arg1);
return result;
}
jdouble
internal_ceil (jdouble arg1)
{
jdouble result;
result = ceil (arg1);
return result;
}
jdouble
internal_cos (jdouble arg1)
{
jdouble result;
result = cos (arg1);
return result;
}
jdouble
internal_cosh (jdouble arg1)
{
jdouble result;
result = cosh (arg1);
return result;
}
jdouble
internal_exp (jdouble arg1)
{
jdouble result;
result = exp (arg1);
return result;
}
jdouble
internal_expm1 (jdouble arg1)
{
jdouble result;
result = expm1 (arg1);
return result;
}
jdouble
internal_floor (jdouble arg1)
{
jdouble result;
result = floor (arg1);
return result;
}
jdouble
internal_hypot (jdouble arg1, jdouble arg2)
{
jdouble result;
result = hypot (arg1, arg2);
return result;
}
jdouble
internal_IEEEremainder (jdouble arg1, jdouble arg2)
{
jdouble result;
result = remainder (arg1, arg2);
return result;
}
jdouble
internal_log (jdouble arg1)
{
jdouble result;
result = log (arg1);
return result;
}
jdouble
internal_log10 (jdouble arg1)
{
jdouble result;
result = log10 (arg1);
return result;
}
jdouble
internal_log1p (jdouble arg1)
{
jdouble result;
result = log1p (arg1);
return result;
}
jdouble
internal_nextafter(jdouble arg1,jdouble arg2){
jdouble result;
result = nextafter (arg1,arg2);
return result;
}
/*
* Please note: this method is just for Float.ulp() use, not necessarilly
* has same behavior with nextafter(double, double)
*/
jfloat
internal_nextafterf(jfloat arg1,jfloat arg2){
jint hx = *(jint*)&arg1;
jint hy = *(jint*)&arg2;
if (!(hx&0x7fffffff)){ /* arg1 == 0 */
*(jint*)&arg1 = (hy & 0x80000000) | 0x1;
return arg1;
}
if((hx > 0) ^ (hx > hy)){ /* |arg1| < |arg2| */
hx += 1;
}else{
hx -= 1;
}
*(jint*)&arg1 = hx;
return arg1;
}
jdouble
internal_pow (jdouble arg1, jdouble arg2)
{
jdouble result;
result = pow (arg1, arg2);
return result;
}
jdouble
internal_rint (jdouble arg1)
{
jdouble result;
result = rint (arg1);
return result;
}
jdouble
internal_sin (jdouble arg1)
{
jdouble result;
result = sin (arg1);
return result;
}
jdouble
internal_sinh (jdouble arg1)
{
jdouble result;
result = sinh (arg1);
return result;
}
jdouble
internal_sqrt (jdouble arg1)
{
jdouble result;
result = sqrt (arg1);
return result;
}
jdouble
internal_tan (jdouble arg1)
{
jdouble result;
result = tan (arg1);
return result;
}
jdouble
internal_tanh (jdouble arg1)
{
jdouble result;
result = tanh (arg1);
return result;
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_asin (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_asin (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_asin (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_asin (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_atan (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_atan (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_atan (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_atan (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_atan2 (JNIEnv * env, jclass jclazz, jdouble arg1,
jdouble arg2)
{
return internal_atan2 (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_atan2 (JNIEnv * env, jclass jclazz, jdouble arg1,
jdouble arg2)
{
return internal_atan2 (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_cbrt (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_cbrt (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_cbrt (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_cbrt (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_ceil (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_ceil (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_ceil (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_ceil (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_cos (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_cos (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_cos (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_cos (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_cosh (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_cosh (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_cosh (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_cosh (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_exp (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_exp (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_exp (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_exp (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_expm1 (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_expm1 (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_expm1 (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_expm1 (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_floor (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_floor (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_floor (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_floor (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_hypot (JNIEnv * env, jclass jclazz,
jdouble arg1, jdouble arg2)
{
return internal_hypot (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_hypot (JNIEnv * env, jclass jclazz, jdouble arg1,
jdouble arg2)
{
return internal_hypot (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_IEEEremainder (JNIEnv * env, jclass jclazz,
jdouble arg1, jdouble arg2)
{
return internal_IEEEremainder (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_IEEEremainder (JNIEnv * env, jclass jclazz, jdouble arg1,
jdouble arg2)
{
return internal_IEEEremainder (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_log (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_log (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_log (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_log (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_log10 (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_log10 (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_log10 (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_log10 (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_log1p (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_log1p (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_log1p(JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_log1p (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_nextafter (JNIEnv * env, jclass jclazz, jdouble arg1, jdouble arg2)
{
return internal_nextafter(arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_nextafter (JNIEnv * env, jclass jclazz, jdouble arg1, jdouble arg2)
{
return internal_nextafter(arg1, arg2);
}
JNIEXPORT jfloat JNICALL
Java_java_lang_StrictMath_nextafterf (JNIEnv * env, jclass jclazz, jfloat arg1, jfloat arg2)
{
return internal_nextafterf(arg1, arg2);
}
JNIEXPORT jfloat JNICALL
Java_java_lang_Math_nextafterf (JNIEnv * env, jclass jclazz, jfloat arg1, jfloat arg2)
{
return internal_nextafterf(arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_pow (JNIEnv * env, jclass jclazz, jdouble arg1,
jdouble arg2)
{
return internal_pow (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_doPow (JNIEnv * env, jclass jclazz, jdouble arg1,
jdouble arg2)
{
return internal_pow (arg1, arg2);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_rint (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_rint (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_rint (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_rint (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_sin (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_sin (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_sin (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_sin (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_sinh (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_sinh (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_sinh (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_sinh (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_sqrt (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_sqrt (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_sqrt (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_sqrt (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_tan (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_tan (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_tan (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_tan (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_tanh (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_tanh (arg1);
}
JNIEXPORT jdouble JNICALL
Java_java_lang_Math_tanh (JNIEnv * env, jclass jclazz, jdouble arg1)
{
return internal_tanh (arg1);
}