summaryrefslogtreecommitdiffstats
path: root/luni/src/main/native/java_lang_StrictMath.cpp
blob: cfe375e178a774dba156a0df7d5a9eb62cd1f94d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*
 * Copyright (C) 2006 The Android Open Source Project
 *
 * Licensed 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.
 */

#define LOG_TAG "StrictMath"

#include "../../external/fdlibm/fdlibm.h"

#include "jni.h"
#include "JNIHelp.h"
#include "JniConstants.h"

static jdouble StrictMath_sin(JNIEnv*, jclass, jdouble a) {
    return ieee_sin(a);
}

static jdouble StrictMath_cos(JNIEnv*, jclass, jdouble a) {
    return ieee_cos(a);
}

static jdouble StrictMath_tan(JNIEnv*, jclass, jdouble a) {
    return ieee_tan(a);
}

static jdouble StrictMath_asin(JNIEnv*, jclass, jdouble a) {
    return ieee_asin(a);
}

static jdouble StrictMath_acos(JNIEnv*, jclass, jdouble a) {
    return ieee_acos(a);
}

static jdouble StrictMath_atan(JNIEnv*, jclass, jdouble a) {
    return ieee_atan(a);
}

static jdouble StrictMath_exp(JNIEnv*, jclass, jdouble a) {
    return ieee_exp(a);
}

static jdouble StrictMath_log(JNIEnv*, jclass, jdouble a) {
    return ieee_log(a);
}

static jdouble StrictMath_sqrt(JNIEnv*, jclass, jdouble a) {
    return ieee_sqrt(a);
}

static jdouble StrictMath_IEEEremainder(JNIEnv*, jclass, jdouble a, jdouble b) {
    return ieee_remainder(a, b);
}

static jdouble StrictMath_floor(JNIEnv*, jclass, jdouble a) {
    return ieee_floor(a);
}

static jdouble StrictMath_ceil(JNIEnv*, jclass, jdouble a) {
    return ieee_ceil(a);
}

static jdouble StrictMath_rint(JNIEnv*, jclass, jdouble a) {
    return ieee_rint(a);
}

static jdouble StrictMath_atan2(JNIEnv*, jclass, jdouble a, jdouble b) {
    return ieee_atan2(a, b);
}

static jdouble StrictMath_pow(JNIEnv*, jclass, jdouble a, jdouble b) {
    return ieee_pow(a,b);
}

static jdouble StrictMath_sinh(JNIEnv*, jclass, jdouble a) {
    return ieee_sinh(a);
}

static jdouble StrictMath_tanh(JNIEnv*, jclass, jdouble a) {
    return ieee_tanh(a);
}

static jdouble StrictMath_cosh(JNIEnv*, jclass, jdouble a) {
    return ieee_cosh(a);
}

static jdouble StrictMath_log10(JNIEnv*, jclass, jdouble a) {
    return ieee_log10(a);
}

static jdouble StrictMath_cbrt(JNIEnv*, jclass, jdouble a) {
    return ieee_cbrt(a);
}

static jdouble StrictMath_expm1(JNIEnv*, jclass, jdouble a) {
    return ieee_expm1(a);
}

static jdouble StrictMath_hypot(JNIEnv*, jclass, jdouble a, jdouble b) {
    return ieee_hypot(a, b);
}

static jdouble StrictMath_log1p(JNIEnv*, jclass, jdouble a) {
    return ieee_log1p(a);
}

static jdouble StrictMath_nextafter(JNIEnv*, jclass, jdouble a, jdouble b) {
    return ieee_nextafter(a, b);
}

static JNINativeMethod gMethods[] = {
    NATIVE_METHOD(StrictMath, IEEEremainder, "!(DD)D"),
    NATIVE_METHOD(StrictMath, acos, "!(D)D"),
    NATIVE_METHOD(StrictMath, asin, "!(D)D"),
    NATIVE_METHOD(StrictMath, atan, "!(D)D"),
    NATIVE_METHOD(StrictMath, atan2, "!(DD)D"),
    NATIVE_METHOD(StrictMath, cbrt, "!(D)D"),
    NATIVE_METHOD(StrictMath, ceil, "!(D)D"),
    NATIVE_METHOD(StrictMath, cos, "!(D)D"),
    NATIVE_METHOD(StrictMath, cosh, "!(D)D"),
    NATIVE_METHOD(StrictMath, exp, "!(D)D"),
    NATIVE_METHOD(StrictMath, expm1, "!(D)D"),
    NATIVE_METHOD(StrictMath, floor, "!(D)D"),
    NATIVE_METHOD(StrictMath, hypot, "!(DD)D"),
    NATIVE_METHOD(StrictMath, log, "!(D)D"),
    NATIVE_METHOD(StrictMath, log10, "!(D)D"),
    NATIVE_METHOD(StrictMath, log1p, "!(D)D"),
    NATIVE_METHOD(StrictMath, nextafter, "!(DD)D"),
    NATIVE_METHOD(StrictMath, pow, "!(DD)D"),
    NATIVE_METHOD(StrictMath, rint, "!(D)D"),
    NATIVE_METHOD(StrictMath, sin, "!(D)D"),
    NATIVE_METHOD(StrictMath, sinh, "!(D)D"),
    NATIVE_METHOD(StrictMath, sqrt, "!(D)D"),
    NATIVE_METHOD(StrictMath, tan, "!(D)D"),
    NATIVE_METHOD(StrictMath, tanh, "!(D)D"),
};
void register_java_lang_StrictMath(JNIEnv* env) {
    jniRegisterNativeMethods(env, "java/lang/StrictMath", gMethods, NELEM(gMethods));
}