1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #include <android/api-level.h>
17 #include <features.h>
18 #include <math.h>
19 #include <stdio.h>
20 
21 long double ld, ld1, ldn;
22 double d, d1, dn;
23 float f, f1, fn;
24 int fail_count = 0;
25 
TEST_EQ(long double a,long double b)26 void TEST_EQ(long double a, long double b)
27 {
28     long double diff = a - b;
29     if (diff < 0)
30        diff = -diff;
31     if (diff > 0.0000001)
32        fail_count ++;
33 }
34 
main()35 int main()
36 {
37 #if __ANDROID_API__ >= 9
38 #if  __ANDROID_API__ < 20
39     sincosl(0.73, &ld, &ld1);
40     sincos(0.72, &d, &d1);
41     sincosf(0.71f, &f, &f1);
42     TEST_EQ(ld, 0.6668696L);
43     TEST_EQ(ld1, 0.7451744L);
44     TEST_EQ(d, 0.6593847);
45     TEST_EQ(d1, 0.7518057);
46     TEST_EQ(f, 0.6518338f);
47     TEST_EQ(f1, 0.7583619f);
48 #endif
49 #if __ANDROID_API__ >= 13
50     ldn = nanl("");
51     dn = nan("");
52     fn = nanf("");
53 #if __ANDROID_API__ >= 18
54     ld = 1234L;
55     ld = logbl(ld);
56     TEST_EQ(ld, 10L);
57     ld = log2l(ld);
58     TEST_EQ(ld, 3.321928L);
59     d  = 56.78;
60     d = log2(d);
61     TEST_EQ(d, 5.827311);
62     f  = 0.9012f;
63     f = log2f(f);
64     TEST_EQ(f, -.1500808f);
65     ld = nexttowardl(ld, 0);
66     d = nexttoward(d, 0);
67 #endif
68 #endif
69 #endif
70     if (fail_count)
71         printf("fail_count = %d\n", fail_count);
72 
73     return fail_count;
74 }
75