1f6603c60Sopenharmony_ci/*
2f6603c60Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License.
5f6603c60Sopenharmony_ci * You may obtain a copy of the License at
6f6603c60Sopenharmony_ci *
7f6603c60Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8f6603c60Sopenharmony_ci *
9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and
13f6603c60Sopenharmony_ci * limitations under the License.
14f6603c60Sopenharmony_ci */
15f6603c60Sopenharmony_ci
16f6603c60Sopenharmony_ci#include "ComplexTest.h"
17f6603c60Sopenharmony_ci
18f6603c60Sopenharmony_ci#include <stdio.h>
19f6603c60Sopenharmony_ci#include <stdlib.h>
20f6603c60Sopenharmony_ci#include <unistd.h>
21f6603c60Sopenharmony_ci#include <math.h>
22f6603c60Sopenharmony_ci#include <limits.h>
23f6603c60Sopenharmony_ci#include <complex.h>
24f6603c60Sopenharmony_ci#include "log.h"
25f6603c60Sopenharmony_ci#include "MathUtils.h"
26f6603c60Sopenharmony_ci
27f6603c60Sopenharmony_ci#ifdef __cplusplus
28f6603c60Sopenharmony_ciextern "C" {
29f6603c60Sopenharmony_ci#endif
30f6603c60Sopenharmony_ci
31f6603c60Sopenharmony_ci
32f6603c60Sopenharmony_ciint TestCabs()
33f6603c60Sopenharmony_ci{
34f6603c60Sopenharmony_ci    const int testCount = 3;
35f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
36f6603c60Sopenharmony_ci    testZ[0] = 1.0 + 3.0 * I;
37f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
38f6603c60Sopenharmony_ci    testZ[2] = 6.5555555 - 5.0 * I;
39f6603c60Sopenharmony_ci    double expected[] = {3.16227766016837952279, 3.0, 8.24471393764394};
40f6603c60Sopenharmony_ci
41f6603c60Sopenharmony_ci    int sum = 0;
42f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
43f6603c60Sopenharmony_ci        double d = cabs(testZ[i]);
44f6603c60Sopenharmony_ci        if (!Equal(d, expected[i])) {
45f6603c60Sopenharmony_ci            LOG("cabs of %lf+%lfi failed, expected:%.20lf, actual:%.20lf\n",
46f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
47f6603c60Sopenharmony_ci            sum++;
48f6603c60Sopenharmony_ci        }
49f6603c60Sopenharmony_ci    }
50f6603c60Sopenharmony_ci    return sum;
51f6603c60Sopenharmony_ci}
52f6603c60Sopenharmony_ci
53f6603c60Sopenharmony_ciint TestCabsf()
54f6603c60Sopenharmony_ci{
55f6603c60Sopenharmony_ci    const int testCount = 3;
56f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
57f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
58f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
59f6603c60Sopenharmony_ci    testZ[2] = 6.555 - 5.0 * I;
60f6603c60Sopenharmony_ci    float expected[] = {5.0, 3.0, 8.244272};
61f6603c60Sopenharmony_ci
62f6603c60Sopenharmony_ci    int sum = 0;
63f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
64f6603c60Sopenharmony_ci        float d = cabsf(testZ[i]);
65f6603c60Sopenharmony_ci        if (!Equalf(d, expected[i])) {
66f6603c60Sopenharmony_ci            LOG("cabsf of %f+%fi failed, expected:%.10f, actual:%.10f",
67f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
68f6603c60Sopenharmony_ci            sum++;
69f6603c60Sopenharmony_ci        }
70f6603c60Sopenharmony_ci    }
71f6603c60Sopenharmony_ci    return sum;
72f6603c60Sopenharmony_ci}
73f6603c60Sopenharmony_ci
74f6603c60Sopenharmony_ciint TestCabsl()
75f6603c60Sopenharmony_ci{
76f6603c60Sopenharmony_ci    const int testCount = 3;
77f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
78f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
79f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
80f6603c60Sopenharmony_ci    testZ[2] = 1.23456789123456789 - 2.0 * I;
81f6603c60Sopenharmony_ci    long double expected[] = {5.0, 3.0, 2.35035271354479216};
82f6603c60Sopenharmony_ci
83f6603c60Sopenharmony_ci    int sum = 0;
84f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
85f6603c60Sopenharmony_ci        long double d = cabsl(testZ[i]);
86f6603c60Sopenharmony_ci        if (!Equall(d, expected[i])) {
87f6603c60Sopenharmony_ci            LOG("cabsl of %Lf+%Lfi failed, expected:%.20Lf, actual:%.20Lf",
88f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
89f6603c60Sopenharmony_ci            sum++;
90f6603c60Sopenharmony_ci        }
91f6603c60Sopenharmony_ci    }
92f6603c60Sopenharmony_ci    return sum;
93f6603c60Sopenharmony_ci}
94f6603c60Sopenharmony_ci
95f6603c60Sopenharmony_ciint TestCacos()
96f6603c60Sopenharmony_ci{
97f6603c60Sopenharmony_ci    const int testCount = 3;
98f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
99f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
100f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
101f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
102f6603c60Sopenharmony_ci    double _Complex expected[testCount];
103f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
104f6603c60Sopenharmony_ci
105f6603c60Sopenharmony_ci    expected[0] = 0.93681246115571925603 + (-2.30550903124346850959) * I;
106f6603c60Sopenharmony_ci    expected[1] = 1.57079632679489655800 + 1.81844645923206682525 * I;
107f6603c60Sopenharmony_ci    expected[2] = 1.09661331246844784282 + 1.54935939824075052940 * I;
108f6603c60Sopenharmony_ci
109f6603c60Sopenharmony_ci    int sum = 0;
110f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
111f6603c60Sopenharmony_ci        resultval[i] = cacos(testZ[i]);
112f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
113f6603c60Sopenharmony_ci            LOG("ctanl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
114f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
115f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
116f6603c60Sopenharmony_ci            sum++;
117f6603c60Sopenharmony_ci        }
118f6603c60Sopenharmony_ci    }
119f6603c60Sopenharmony_ci    return sum;
120f6603c60Sopenharmony_ci}
121f6603c60Sopenharmony_ci
122f6603c60Sopenharmony_ciint TestCacosf()
123f6603c60Sopenharmony_ci{
124f6603c60Sopenharmony_ci    const int testCount = 3;
125f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
126f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
127f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
128f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
129f6603c60Sopenharmony_ci    float _Complex expected[testCount];
130f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
131f6603c60Sopenharmony_ci
132f6603c60Sopenharmony_ci    expected[0] = 0.9368131757 + -2.3055081367 * I;
133f6603c60Sopenharmony_ci    expected[1] = 1.5707963705 + 1.8184465170 * I;
134f6603c60Sopenharmony_ci    expected[2] = 1.0966134071 + 1.5493593216 * I;
135f6603c60Sopenharmony_ci
136f6603c60Sopenharmony_ci    int sum = 0;
137f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
138f6603c60Sopenharmony_ci        resultval[i] = cacosf(testZ[i]);
139f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
140f6603c60Sopenharmony_ci            LOG("cacosf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
141f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
142f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
143f6603c60Sopenharmony_ci            sum++;
144f6603c60Sopenharmony_ci        }
145f6603c60Sopenharmony_ci    }
146f6603c60Sopenharmony_ci    return sum;
147f6603c60Sopenharmony_ci}
148f6603c60Sopenharmony_ci
149f6603c60Sopenharmony_ciint TestCacosh()
150f6603c60Sopenharmony_ci{
151f6603c60Sopenharmony_ci    const int testCount = 3;
152f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
153f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
154f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
155f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
156f6603c60Sopenharmony_ci    double _Complex expected[testCount];
157f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
158f6603c60Sopenharmony_ci
159f6603c60Sopenharmony_ci    expected[0] = 2.30550903124346850959 + 0.93681246115571925603 * I;
160f6603c60Sopenharmony_ci    expected[1] = 1.81844645923206682525 + -1.57079632679489655800 * I;
161f6603c60Sopenharmony_ci    expected[2] = 1.54935939824075052940 + -1.09661331246844784282 * I;
162f6603c60Sopenharmony_ci
163f6603c60Sopenharmony_ci    int sum = 0;
164f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
165f6603c60Sopenharmony_ci        resultval[i] = cacosh(testZ[i]);
166f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
167f6603c60Sopenharmony_ci            LOG("cocosh of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
168f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
169f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
170f6603c60Sopenharmony_ci            sum++;
171f6603c60Sopenharmony_ci        }
172f6603c60Sopenharmony_ci    }
173f6603c60Sopenharmony_ci    return sum;
174f6603c60Sopenharmony_ci}
175f6603c60Sopenharmony_ci
176f6603c60Sopenharmony_ciint TestCacoshf()
177f6603c60Sopenharmony_ci{
178f6603c60Sopenharmony_ci    const int testCount = 3;
179f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
180f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
181f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
182f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
183f6603c60Sopenharmony_ci    float _Complex expected[testCount];
184f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
185f6603c60Sopenharmony_ci    expected[0] = 2.3055081367 + 0.9368131757 * I;
186f6603c60Sopenharmony_ci    expected[1] = 1.8184465170 + -1.5707963705 * I;
187f6603c60Sopenharmony_ci    expected[2] = 1.5493593216 + -1.0966134071 * I;
188f6603c60Sopenharmony_ci
189f6603c60Sopenharmony_ci    int sum = 0;
190f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
191f6603c60Sopenharmony_ci        resultval[i] = cacoshf(testZ[i]);
192f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
193f6603c60Sopenharmony_ci            LOG("cacoshf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
194f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
195f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
196f6603c60Sopenharmony_ci            sum++;
197f6603c60Sopenharmony_ci        }
198f6603c60Sopenharmony_ci    }
199f6603c60Sopenharmony_ci    return sum;
200f6603c60Sopenharmony_ci}
201f6603c60Sopenharmony_ci
202f6603c60Sopenharmony_ciint TestCacoshl()
203f6603c60Sopenharmony_ci{
204f6603c60Sopenharmony_ci    const int testCount = 3;
205f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
206f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
207f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
208f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
209f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
210f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
211f6603c60Sopenharmony_ci    expected[0] = 2.30550903124346850959 + 0.93681246115571925603 * I;
212f6603c60Sopenharmony_ci    expected[1] = 1.81844645923206682525 + -1.57079632679489655800 * I;
213f6603c60Sopenharmony_ci    expected[2] = 1.54935939824075052940 + -1.09661331246844784282 * I;
214f6603c60Sopenharmony_ci
215f6603c60Sopenharmony_ci    int sum = 0;
216f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
217f6603c60Sopenharmony_ci        resultval[i] = cacoshl(testZ[i]);
218f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
219f6603c60Sopenharmony_ci            LOG("cacoshl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
220f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
221f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
222f6603c60Sopenharmony_ci            sum++;
223f6603c60Sopenharmony_ci        }
224f6603c60Sopenharmony_ci    }
225f6603c60Sopenharmony_ci    return sum;
226f6603c60Sopenharmony_ci}
227f6603c60Sopenharmony_ci
228f6603c60Sopenharmony_ciint TestCacosl()
229f6603c60Sopenharmony_ci{
230f6603c60Sopenharmony_ci    const int testCount = 3;
231f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
232f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
233f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
234f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
235f6603c60Sopenharmony_ci    long _Complex expected[testCount];
236f6603c60Sopenharmony_ci    long _Complex resultval[testCount];
237f6603c60Sopenharmony_ci
238f6603c60Sopenharmony_ci    expected[0] = 0.936812 - 2.305509 * I;
239f6603c60Sopenharmony_ci    expected[1] = 1.570796 + 1.818446 * I;
240f6603c60Sopenharmony_ci    expected[2] = 1.096613 + 1.549359 * I;
241f6603c60Sopenharmony_ci
242f6603c60Sopenharmony_ci    int sum = 0;
243f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
244f6603c60Sopenharmony_ci        resultval[i] = cacosl(testZ[i]);
245f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
246f6603c60Sopenharmony_ci            LOG("cacosl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf+%.20Lfi\n",
247f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
248f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
249f6603c60Sopenharmony_ci            sum++;
250f6603c60Sopenharmony_ci        }
251f6603c60Sopenharmony_ci    }
252f6603c60Sopenharmony_ci    return sum;
253f6603c60Sopenharmony_ci}
254f6603c60Sopenharmony_ci
255f6603c60Sopenharmony_ciint TestCarg()
256f6603c60Sopenharmony_ci{
257f6603c60Sopenharmony_ci    const int testCount = 3;
258f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
259f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
260f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
261f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
262f6603c60Sopenharmony_ci    double expected[] = {0.92729521800161218703, -1.57079632679489655800, -1.01776488671168796607};
263f6603c60Sopenharmony_ci
264f6603c60Sopenharmony_ci    int sum = 0;
265f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
266f6603c60Sopenharmony_ci        double resultval = carg(testZ[i]);
267f6603c60Sopenharmony_ci        if (!Equal(resultval, expected[i])) {
268f6603c60Sopenharmony_ci            LOG("carg of %Lf+%Lfi failed, expected:%.20Lf, actual:%.20Lf\n",
269f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], resultval);
270f6603c60Sopenharmony_ci            sum++;
271f6603c60Sopenharmony_ci        }
272f6603c60Sopenharmony_ci    }
273f6603c60Sopenharmony_ci    return sum;
274f6603c60Sopenharmony_ci}
275f6603c60Sopenharmony_ci
276f6603c60Sopenharmony_ciint TestCargf()
277f6603c60Sopenharmony_ci{
278f6603c60Sopenharmony_ci    const int testCount = 3;
279f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
280f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
281f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
282f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
283f6603c60Sopenharmony_ci    float expected[] = {0.9272952180, -1.5707963268, -1.0177677870};
284f6603c60Sopenharmony_ci
285f6603c60Sopenharmony_ci    int sum = 0;
286f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
287f6603c60Sopenharmony_ci        float resultval = cargf(testZ[i]);
288f6603c60Sopenharmony_ci        if (!Equalf(resultval, expected[i])) {
289f6603c60Sopenharmony_ci            LOG("cargf of %f+%fi failed, \n expected:%.10f,\n actual:%.10f\n",
290f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], resultval);
291f6603c60Sopenharmony_ci            sum++;
292f6603c60Sopenharmony_ci        }
293f6603c60Sopenharmony_ci    }
294f6603c60Sopenharmony_ci    return sum;
295f6603c60Sopenharmony_ci}
296f6603c60Sopenharmony_ci
297f6603c60Sopenharmony_ciint TestCargl()
298f6603c60Sopenharmony_ci{
299f6603c60Sopenharmony_ci    const int testCount = 3;
300f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
301f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
302f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
303f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
304f6603c60Sopenharmony_ci    long double expected[] = {0.92729521800161218703, -1.57079632679489655800, -1.01776774326071883792};
305f6603c60Sopenharmony_ci
306f6603c60Sopenharmony_ci    int sum = 0;
307f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
308f6603c60Sopenharmony_ci        long double resultval = cargl(testZ[i]);
309f6603c60Sopenharmony_ci        if (!Equall(resultval, expected[i])) {
310f6603c60Sopenharmony_ci            LOG("cargl of %Lf+%Lfi failed, expected:%.20Lf, actual:%.20Lf\n",
311f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], resultval);
312f6603c60Sopenharmony_ci            sum++;
313f6603c60Sopenharmony_ci        }
314f6603c60Sopenharmony_ci    }
315f6603c60Sopenharmony_ci    return sum;
316f6603c60Sopenharmony_ci}
317f6603c60Sopenharmony_ci
318f6603c60Sopenharmony_ciint TestCasin()
319f6603c60Sopenharmony_ci{
320f6603c60Sopenharmony_ci    const int testCount = 3;
321f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
322f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
323f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
324f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
325f6603c60Sopenharmony_ci    double _Complex expected[testCount];
326f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
327f6603c60Sopenharmony_ci
328f6603c60Sopenharmony_ci    expected[0] = 0.63398400000000000000 + 2.30550900000000000000 * I;
329f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 - 1.81844600000000000000 * I;
330f6603c60Sopenharmony_ci    expected[2] = 0.51505965148270682619 + -1.56954262407246969424 * I;
331f6603c60Sopenharmony_ci
332f6603c60Sopenharmony_ci    int sum = 0;
333f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
334f6603c60Sopenharmony_ci        resultval[i] = casin(testZ[i]);
335f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
336f6603c60Sopenharmony_ci            LOG("casin of %.20Lf+%.20Lfi failed,\n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf+%.20Lfi\n",
337f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
338f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
339f6603c60Sopenharmony_ci            sum++;
340f6603c60Sopenharmony_ci        }
341f6603c60Sopenharmony_ci    }
342f6603c60Sopenharmony_ci    return sum;
343f6603c60Sopenharmony_ci}
344f6603c60Sopenharmony_ci
345f6603c60Sopenharmony_ciint TestCasinf()
346f6603c60Sopenharmony_ci{
347f6603c60Sopenharmony_ci    const int testCount = 3;
348f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
349f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
350f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
351f6603c60Sopenharmony_ci    testZ[2] = 1.123456 - 2.0 * I;
352f6603c60Sopenharmony_ci    float _Complex expected[testCount];
353f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
354f6603c60Sopenharmony_ci
355f6603c60Sopenharmony_ci    expected[0] = 0.6339831948 + 2.3055081367 * I;
356f6603c60Sopenharmony_ci    expected[1] = 0.0000000000 - 1.8184460000 * I;
357f6603c60Sopenharmony_ci    expected[2] = 0.4741830000 - 1.5493590000 * I;
358f6603c60Sopenharmony_ci
359f6603c60Sopenharmony_ci    int sum = 0;
360f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
361f6603c60Sopenharmony_ci        resultval[i] = casinf(testZ[i]);
362f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
363f6603c60Sopenharmony_ci            LOG("casinf of %.10f+%.10fi failed,\n expected:%.10f+%.10fi,\n actual:%.10f+%.10fi\n",
364f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
365f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
366f6603c60Sopenharmony_ci            sum++;
367f6603c60Sopenharmony_ci        }
368f6603c60Sopenharmony_ci    }
369f6603c60Sopenharmony_ci    return sum;
370f6603c60Sopenharmony_ci}
371f6603c60Sopenharmony_ci
372f6603c60Sopenharmony_ciint TestCasinh()
373f6603c60Sopenharmony_ci{
374f6603c60Sopenharmony_ci    const int testCount = 3;
375f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
376f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
377f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
378f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
379f6603c60Sopenharmony_ci    double _Complex expected[testCount];
380f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
381f6603c60Sopenharmony_ci
382f6603c60Sopenharmony_ci    expected[0] = 2.29991404087926865074 + 0.91761685335147724629 * I;
383f6603c60Sopenharmony_ci    expected[1] = 1.76274717403908720570 + -1.57079632679489655800 * I;
384f6603c60Sopenharmony_ci    expected[2] = 1.52957806263130779989 + -0.97493960889397524028 * I;
385f6603c60Sopenharmony_ci
386f6603c60Sopenharmony_ci    int sum = 0;
387f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
388f6603c60Sopenharmony_ci        resultval[i] = casinh(testZ[i]);
389f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
390f6603c60Sopenharmony_ci            LOG("casinh of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
391f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
392f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
393f6603c60Sopenharmony_ci            sum++;
394f6603c60Sopenharmony_ci        }
395f6603c60Sopenharmony_ci    }
396f6603c60Sopenharmony_ci    return sum;
397f6603c60Sopenharmony_ci}
398f6603c60Sopenharmony_ci
399f6603c60Sopenharmony_ciint TestCasinhf()
400f6603c60Sopenharmony_ci{
401f6603c60Sopenharmony_ci    const int testCount = 3;
402f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
403f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
404f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
405f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
406f6603c60Sopenharmony_ci    float _Complex expected[testCount];
407f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
408f6603c60Sopenharmony_ci
409f6603c60Sopenharmony_ci    expected[0] = 2.2999134064 + 0.9176163673 * I;
410f6603c60Sopenharmony_ci    expected[1] = 1.7627469301 + -1.5707963705 * I;
411f6603c60Sopenharmony_ci    expected[2] = 1.5295758247 + -0.9749425054 * I;
412f6603c60Sopenharmony_ci
413f6603c60Sopenharmony_ci    int sum = 0;
414f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
415f6603c60Sopenharmony_ci        resultval[i] = casinhf(testZ[i]);
416f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
417f6603c60Sopenharmony_ci            LOG("casinhf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
418f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
419f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
420f6603c60Sopenharmony_ci            sum++;
421f6603c60Sopenharmony_ci        }
422f6603c60Sopenharmony_ci    }
423f6603c60Sopenharmony_ci    return sum;
424f6603c60Sopenharmony_ci}
425f6603c60Sopenharmony_ci
426f6603c60Sopenharmony_ciint TestCasinhl()
427f6603c60Sopenharmony_ci{
428f6603c60Sopenharmony_ci    const int testCount = 3;
429f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
430f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
431f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
432f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
433f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
434f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
435f6603c60Sopenharmony_ci
436f6603c60Sopenharmony_ci    expected[0] = 2.29991404087926865074 + 0.91761685335147724629 * I;
437f6603c60Sopenharmony_ci    expected[1] = 1.76274717403908720570 + -1.57079632679489655800 * I;
438f6603c60Sopenharmony_ci    expected[2] = 1.52957598661739924140 + -0.97494239607734123343 * I;
439f6603c60Sopenharmony_ci
440f6603c60Sopenharmony_ci    int sum = 0;
441f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
442f6603c60Sopenharmony_ci        resultval[i] = casinhl(testZ[i]);
443f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
444f6603c60Sopenharmony_ci            LOG("casinhl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
445f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
446f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
447f6603c60Sopenharmony_ci            sum++;
448f6603c60Sopenharmony_ci        }
449f6603c60Sopenharmony_ci    }
450f6603c60Sopenharmony_ci    return sum;
451f6603c60Sopenharmony_ci}
452f6603c60Sopenharmony_ci
453f6603c60Sopenharmony_ciint TestCasinl()
454f6603c60Sopenharmony_ci{
455f6603c60Sopenharmony_ci    const int testCount = 3;
456f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
457f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
458f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
459f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
460f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
461f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
462f6603c60Sopenharmony_ci
463f6603c60Sopenharmony_ci    expected[0] = 0.63398400000000000000 + 2.30550900000000000000 * I;
464f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 - 1.81844600000000000000 * I;
465f6603c60Sopenharmony_ci    expected[2] = 0.51505680174746037991 + -1.56954114502494923578 * I;
466f6603c60Sopenharmony_ci
467f6603c60Sopenharmony_ci    int sum = 0;
468f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
469f6603c60Sopenharmony_ci        resultval[i] = casinl(testZ[i]);
470f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
471f6603c60Sopenharmony_ci            LOG("casinl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
472f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
473f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
474f6603c60Sopenharmony_ci            sum++;
475f6603c60Sopenharmony_ci        }
476f6603c60Sopenharmony_ci    }
477f6603c60Sopenharmony_ci    return sum;
478f6603c60Sopenharmony_ci}
479f6603c60Sopenharmony_ci
480f6603c60Sopenharmony_ciint TestCatan()
481f6603c60Sopenharmony_ci{
482f6603c60Sopenharmony_ci    const int testCount = 3;
483f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
484f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
485f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
486f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
487f6603c60Sopenharmony_ci    double _Complex expected[testCount];
488f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
489f6603c60Sopenharmony_ci
490f6603c60Sopenharmony_ci    expected[0] = 1.44830699523146444463 + 0.15899719167999917802 * I;
491f6603c60Sopenharmony_ci    expected[1] = -1.57079632679489655800 + -0.34657359027997264311 * I;
492f6603c60Sopenharmony_ci    expected[2] = 1.32100260208930864181 + -0.35694146805942778000 * I;
493f6603c60Sopenharmony_ci
494f6603c60Sopenharmony_ci    int sum = 0;
495f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
496f6603c60Sopenharmony_ci        resultval[i] = catan(testZ[i]);
497f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
498f6603c60Sopenharmony_ci            LOG("catan of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
499f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
500f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
501f6603c60Sopenharmony_ci            sum++;
502f6603c60Sopenharmony_ci        }
503f6603c60Sopenharmony_ci    }
504f6603c60Sopenharmony_ci    return sum;
505f6603c60Sopenharmony_ci}
506f6603c60Sopenharmony_ci
507f6603c60Sopenharmony_ciint TestCatanf()
508f6603c60Sopenharmony_ci{
509f6603c60Sopenharmony_ci    const int testCount = 3;
510f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
511f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
512f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
513f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
514f6603c60Sopenharmony_ci    float _Complex expected[testCount];
515f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
516f6603c60Sopenharmony_ci    expected[0] = 1.4483070000 + 0.1589970000 * I;
517f6603c60Sopenharmony_ci    expected[1] = -1.5707962513 + -0.3465735912 * I;
518f6603c60Sopenharmony_ci    expected[2] = 1.3210030794 + -0.3569429517 * I;
519f6603c60Sopenharmony_ci
520f6603c60Sopenharmony_ci    int sum = 0;
521f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
522f6603c60Sopenharmony_ci        resultval[i] = catanf(testZ[i]);
523f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
524f6603c60Sopenharmony_ci            LOG("catanf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
525f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
526f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
527f6603c60Sopenharmony_ci            sum++;
528f6603c60Sopenharmony_ci        }
529f6603c60Sopenharmony_ci    }
530f6603c60Sopenharmony_ci    return sum;
531f6603c60Sopenharmony_ci}
532f6603c60Sopenharmony_ci
533f6603c60Sopenharmony_ciint TestCatanh()
534f6603c60Sopenharmony_ci{
535f6603c60Sopenharmony_ci    const int testCount = 3;
536f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
537f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
538f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
539f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
540f6603c60Sopenharmony_ci    double _Complex expected[testCount];
541f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
542f6603c60Sopenharmony_ci
543f6603c60Sopenharmony_ci    expected[0] = 0.11750100000000000000 + 1.40992100000000000000 * I;
544f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 - 1.24904600000000000000 * I;
545f6603c60Sopenharmony_ci    expected[2] = 0.19913075343655456395 + -1.20880401646302515495 * I;
546f6603c60Sopenharmony_ci
547f6603c60Sopenharmony_ci    int sum = 0;
548f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
549f6603c60Sopenharmony_ci        resultval[i] = catanh(testZ[i]);
550f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
551f6603c60Sopenharmony_ci            LOG("catanh of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
552f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
553f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
554f6603c60Sopenharmony_ci            sum++;
555f6603c60Sopenharmony_ci        }
556f6603c60Sopenharmony_ci    }
557f6603c60Sopenharmony_ci    return sum;
558f6603c60Sopenharmony_ci}
559f6603c60Sopenharmony_ci
560f6603c60Sopenharmony_ciint TestCatanhf()
561f6603c60Sopenharmony_ci{
562f6603c60Sopenharmony_ci    const int testCount = 3;
563f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
564f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
565f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
566f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
567f6603c60Sopenharmony_ci    float _Complex expected[testCount];
568f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
569f6603c60Sopenharmony_ci
570f6603c60Sopenharmony_ci    expected[0] = 0.1175010000 + 1.4099210000 * I;
571f6603c60Sopenharmony_ci    expected[1] = 0.0000000000 - 1.2490460000 * I;
572f6603c60Sopenharmony_ci    expected[2] = 0.1991299987 + -1.2088029385 * I;
573f6603c60Sopenharmony_ci
574f6603c60Sopenharmony_ci    int sum = 0;
575f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
576f6603c60Sopenharmony_ci        resultval[i] = catanhf(testZ[i]);
577f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
578f6603c60Sopenharmony_ci            LOG("catanhf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
579f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
580f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
581f6603c60Sopenharmony_ci            sum++;
582f6603c60Sopenharmony_ci        }
583f6603c60Sopenharmony_ci    }
584f6603c60Sopenharmony_ci    return sum;
585f6603c60Sopenharmony_ci}
586f6603c60Sopenharmony_ci
587f6603c60Sopenharmony_ciint TestCatanhl()
588f6603c60Sopenharmony_ci{
589f6603c60Sopenharmony_ci    const int testCount = 3;
590f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
591f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
592f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
593f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
594f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
595f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
596f6603c60Sopenharmony_ci
597f6603c60Sopenharmony_ci    expected[0] = 0.11750100000000000000 + 1.40992100000000000000 * I;
598f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 - 1.24904600000000000000 * I;
599f6603c60Sopenharmony_ci    expected[2] = 0.19913000142015302441 + -1.20880294804886800897 * I;
600f6603c60Sopenharmony_ci
601f6603c60Sopenharmony_ci    int sum = 0;
602f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
603f6603c60Sopenharmony_ci        resultval[i] = catanhl(testZ[i]);
604f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
605f6603c60Sopenharmony_ci            LOG("catanhl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
606f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
607f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
608f6603c60Sopenharmony_ci            sum++;
609f6603c60Sopenharmony_ci        }
610f6603c60Sopenharmony_ci    }
611f6603c60Sopenharmony_ci    return sum;
612f6603c60Sopenharmony_ci}
613f6603c60Sopenharmony_ci
614f6603c60Sopenharmony_ciint TestCatanl()
615f6603c60Sopenharmony_ci{
616f6603c60Sopenharmony_ci    const int testCount = 3;
617f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
618f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
619f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
620f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
621f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
622f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
623f6603c60Sopenharmony_ci
624f6603c60Sopenharmony_ci    expected[0] = 1.44830699523146444463 + 0.15899719167999917802 * I;
625f6603c60Sopenharmony_ci    expected[1] = -1.57079632679489655800 + -0.34657359027997264311 * I;
626f6603c60Sopenharmony_ci    expected[2] = 1.32100304043625027539 + -0.35694293478475969117 * I;
627f6603c60Sopenharmony_ci
628f6603c60Sopenharmony_ci    int sum = 0;
629f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
630f6603c60Sopenharmony_ci        resultval[i] = catanl(testZ[i]);
631f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
632f6603c60Sopenharmony_ci            LOG("catanl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
633f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
634f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
635f6603c60Sopenharmony_ci            sum++;
636f6603c60Sopenharmony_ci        }
637f6603c60Sopenharmony_ci    }
638f6603c60Sopenharmony_ci    return sum;
639f6603c60Sopenharmony_ci}
640f6603c60Sopenharmony_ci
641f6603c60Sopenharmony_ciint TestCcos()
642f6603c60Sopenharmony_ci{
643f6603c60Sopenharmony_ci    const int testCount = 3;
644f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
645f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
646f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
647f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
648f6603c60Sopenharmony_ci    double _Complex expected[testCount];
649f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
650f6603c60Sopenharmony_ci
651f6603c60Sopenharmony_ci    expected[0] = -27.03494560 - 3.85115333 * I;
652f6603c60Sopenharmony_ci    expected[1] = 10.06766200;
653f6603c60Sopenharmony_ci    expected[2] = 1.24125772 + 3.42377699 * I;
654f6603c60Sopenharmony_ci
655f6603c60Sopenharmony_ci    int sum = 0;
656f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
657f6603c60Sopenharmony_ci        resultval[i] = ccos(testZ[i]);
658f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
659f6603c60Sopenharmony_ci            LOG("ccos of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
660f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
661f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
662f6603c60Sopenharmony_ci            sum++;
663f6603c60Sopenharmony_ci        }
664f6603c60Sopenharmony_ci    }
665f6603c60Sopenharmony_ci    return sum;
666f6603c60Sopenharmony_ci}
667f6603c60Sopenharmony_ci
668f6603c60Sopenharmony_ciint TestCcosf()
669f6603c60Sopenharmony_ci{
670f6603c60Sopenharmony_ci    const int testCount = 3;
671f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
672f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
673f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
674f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
675f6603c60Sopenharmony_ci    float _Complex expected[testCount];
676f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
677f6603c60Sopenharmony_ci
678f6603c60Sopenharmony_ci    expected[0] = -27.0349445343 + -3.8511533737 * I;
679f6603c60Sopenharmony_ci    expected[1] = 10.0676620000;
680f6603c60Sopenharmony_ci    expected[2] = 1.2412856817 + 3.4237675667 * I;
681f6603c60Sopenharmony_ci
682f6603c60Sopenharmony_ci    int sum = 0;
683f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
684f6603c60Sopenharmony_ci        resultval[i] = ccosf(testZ[i]);
685f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
686f6603c60Sopenharmony_ci            LOG("ccosf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
687f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
688f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
689f6603c60Sopenharmony_ci            sum++;
690f6603c60Sopenharmony_ci        }
691f6603c60Sopenharmony_ci    }
692f6603c60Sopenharmony_ci    return sum;
693f6603c60Sopenharmony_ci}
694f6603c60Sopenharmony_ci
695f6603c60Sopenharmony_ciint TestCcosh()
696f6603c60Sopenharmony_ci{
697f6603c60Sopenharmony_ci    const int testCount = 3;
698f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
699f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
700f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
701f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
702f6603c60Sopenharmony_ci    double _Complex expected[testCount];
703f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
704f6603c60Sopenharmony_ci
705f6603c60Sopenharmony_ci    expected[0] = -6.58066304 - 7.58155274 * I;
706f6603c60Sopenharmony_ci    expected[1] = -0.98999249;
707f6603c60Sopenharmony_ci    expected[2] = -0.77566723 - 1.43029421 * I;
708f6603c60Sopenharmony_ci
709f6603c60Sopenharmony_ci    int sum = 0;
710f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
711f6603c60Sopenharmony_ci        resultval[i] = ccosh(testZ[i]);
712f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
713f6603c60Sopenharmony_ci            LOG("ccosh of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
714f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
715f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
716f6603c60Sopenharmony_ci            sum++;
717f6603c60Sopenharmony_ci        }
718f6603c60Sopenharmony_ci    }
719f6603c60Sopenharmony_ci    return sum;
720f6603c60Sopenharmony_ci}
721f6603c60Sopenharmony_ci
722f6603c60Sopenharmony_ciint TestCcoshf()
723f6603c60Sopenharmony_ci{
724f6603c60Sopenharmony_ci    const int testCount = 3;
725f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
726f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
727f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
728f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
729f6603c60Sopenharmony_ci    float _Complex expected[testCount];
730f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
731f6603c60Sopenharmony_ci
732f6603c60Sopenharmony_ci    expected[0] = -6.5806630000 - 7.5815530000 * I;
733f6603c60Sopenharmony_ci    expected[1] = -0.9899920000;
734f6603c60Sopenharmony_ci    expected[2] = -0.7756620646 + -1.4302809238 * I;
735f6603c60Sopenharmony_ci
736f6603c60Sopenharmony_ci    int sum = 0;
737f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
738f6603c60Sopenharmony_ci        resultval[i] = ccoshf(testZ[i]);
739f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
740f6603c60Sopenharmony_ci            LOG("ccoshf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
741f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
742f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
743f6603c60Sopenharmony_ci            sum++;
744f6603c60Sopenharmony_ci        }
745f6603c60Sopenharmony_ci    }
746f6603c60Sopenharmony_ci    return sum;
747f6603c60Sopenharmony_ci}
748f6603c60Sopenharmony_ci
749f6603c60Sopenharmony_ciint TestCcoshl()
750f6603c60Sopenharmony_ci{
751f6603c60Sopenharmony_ci    const int testCount = 3;
752f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
753f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
754f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
755f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
756f6603c60Sopenharmony_ci    long _Complex expected[testCount];
757f6603c60Sopenharmony_ci    long _Complex resultval[testCount];
758f6603c60Sopenharmony_ci
759f6603c60Sopenharmony_ci    expected[0] = -6.580663 - 7.581553 * I;
760f6603c60Sopenharmony_ci    expected[1] = -0.989992;
761f6603c60Sopenharmony_ci    expected[2] = -0.775667 - 1.430294 * I;
762f6603c60Sopenharmony_ci
763f6603c60Sopenharmony_ci    int sum = 0;
764f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
765f6603c60Sopenharmony_ci        resultval[i] = ccoshl(testZ[i]);
766f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
767f6603c60Sopenharmony_ci            LOG("ccoshl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
768f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
769f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
770f6603c60Sopenharmony_ci            sum++;
771f6603c60Sopenharmony_ci        }
772f6603c60Sopenharmony_ci    }
773f6603c60Sopenharmony_ci    return sum;
774f6603c60Sopenharmony_ci}
775f6603c60Sopenharmony_ci
776f6603c60Sopenharmony_ciint TestCcosl()
777f6603c60Sopenharmony_ci{
778f6603c60Sopenharmony_ci    const int testCount = 3;
779f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
780f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
781f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
782f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
783f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
784f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
785f6603c60Sopenharmony_ci
786f6603c60Sopenharmony_ci    expected[0] = -27.03494560307422389656 + -3.85115333481177701813 * I;
787f6603c60Sopenharmony_ci    expected[1] = 10.06766200000000000000;
788f6603c60Sopenharmony_ci    expected[2] = 1.24128574667119084829 + 3.42376754746658606976 * I;
789f6603c60Sopenharmony_ci
790f6603c60Sopenharmony_ci    int sum = 0;
791f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
792f6603c60Sopenharmony_ci        resultval[i] = ccosl(testZ[i]);
793f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
794f6603c60Sopenharmony_ci            LOG("ccosl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
795f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
796f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
797f6603c60Sopenharmony_ci            sum++;
798f6603c60Sopenharmony_ci        }
799f6603c60Sopenharmony_ci    }
800f6603c60Sopenharmony_ci    return sum;
801f6603c60Sopenharmony_ci}
802f6603c60Sopenharmony_ci
803f6603c60Sopenharmony_ciint TestCexp()
804f6603c60Sopenharmony_ci{
805f6603c60Sopenharmony_ci    const int testCount = 3;
806f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
807f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
808f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
809f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
810f6603c60Sopenharmony_ci    double _Complex expected[testCount];
811f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
812f6603c60Sopenharmony_ci
813f6603c60Sopenharmony_ci    expected[0] = -13.12878308146215822205 + -15.20078446306795427745 * I;
814f6603c60Sopenharmony_ci    expected[1] = -0.989992000000000000000 - 0.141120000000000000000 * I;
815f6603c60Sopenharmony_ci    expected[2] = -1.43025218442476775849 + -3.12515803748498344206 * I;
816f6603c60Sopenharmony_ci
817f6603c60Sopenharmony_ci    int sum = 0;
818f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
819f6603c60Sopenharmony_ci        resultval[i] = cexp(testZ[i]);
820f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
821f6603c60Sopenharmony_ci            LOG("cexp of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
822f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
823f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
824f6603c60Sopenharmony_ci            sum++;
825f6603c60Sopenharmony_ci        }
826f6603c60Sopenharmony_ci    }
827f6603c60Sopenharmony_ci    return sum;
828f6603c60Sopenharmony_ci}
829f6603c60Sopenharmony_ci
830f6603c60Sopenharmony_ciint TestCexpf()
831f6603c60Sopenharmony_ci{
832f6603c60Sopenharmony_ci    const int testCount = 3;
833f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
834f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
835f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
836f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
837f6603c60Sopenharmony_ci    float _Complex expected[testCount];
838f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
839f6603c60Sopenharmony_ci
840f6603c60Sopenharmony_ci    expected[0] = -13.1287830000 - 15.2007840000 * I;
841f6603c60Sopenharmony_ci    expected[1] = -0.9899920000 - 0.1411200000 * I;
842f6603c60Sopenharmony_ci    expected[2] = -1.4302409887 + -3.1251332760 * I;
843f6603c60Sopenharmony_ci
844f6603c60Sopenharmony_ci    int sum = 0;
845f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
846f6603c60Sopenharmony_ci        resultval[i] = cexpf(testZ[i]);
847f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
848f6603c60Sopenharmony_ci            LOG("cexpf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
849f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
850f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
851f6603c60Sopenharmony_ci            sum++;
852f6603c60Sopenharmony_ci        }
853f6603c60Sopenharmony_ci    }
854f6603c60Sopenharmony_ci    return sum;
855f6603c60Sopenharmony_ci}
856f6603c60Sopenharmony_ci
857f6603c60Sopenharmony_ciint TestCexpl()
858f6603c60Sopenharmony_ci{
859f6603c60Sopenharmony_ci    const int testCount = 3;
860f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
861f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
862f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
863f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
864f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
865f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
866f6603c60Sopenharmony_ci
867f6603c60Sopenharmony_ci    expected[0] = -13.12878308146215822205 + -15.20078446306795427745 * I;
868f6603c60Sopenharmony_ci    expected[1] = -0.98999200000000000000 - 0.14112000000000000000 * I;
869f6603c60Sopenharmony_ci    expected[2] = -1.43024089977955104480 + -3.12513338008534180545 * I;
870f6603c60Sopenharmony_ci
871f6603c60Sopenharmony_ci    int sum = 0;
872f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
873f6603c60Sopenharmony_ci        resultval[i] = cexpl(testZ[i]);
874f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
875f6603c60Sopenharmony_ci            LOG("cexpl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
876f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
877f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
878f6603c60Sopenharmony_ci            sum++;
879f6603c60Sopenharmony_ci        }
880f6603c60Sopenharmony_ci    }
881f6603c60Sopenharmony_ci    return sum;
882f6603c60Sopenharmony_ci}
883f6603c60Sopenharmony_ci
884f6603c60Sopenharmony_ciint TestCimag()
885f6603c60Sopenharmony_ci{
886f6603c60Sopenharmony_ci    const int testCount = 3;
887f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
888f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
889f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
890f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
891f6603c60Sopenharmony_ci    double expected[] = {4.000000, -3.000000, -2.000000};
892f6603c60Sopenharmony_ci
893f6603c60Sopenharmony_ci    int sum = 0;
894f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
895f6603c60Sopenharmony_ci        double d = cimag(testZ[i]);
896f6603c60Sopenharmony_ci        if (!Equal(d, expected[i])) {
897f6603c60Sopenharmony_ci            LOG("cimag of %.20Lf+%.20Lfi failed, expected:%.20Lf, actual:%.20Lf",
898f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
899f6603c60Sopenharmony_ci            sum++;
900f6603c60Sopenharmony_ci        }
901f6603c60Sopenharmony_ci    }
902f6603c60Sopenharmony_ci    return sum;
903f6603c60Sopenharmony_ci}
904f6603c60Sopenharmony_ci
905f6603c60Sopenharmony_ciint TestCimagf()
906f6603c60Sopenharmony_ci{
907f6603c60Sopenharmony_ci    const int testCount = 3;
908f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
909f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
910f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
911f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
912f6603c60Sopenharmony_ci    float _Complex expected[] = {4.000000, -3.000000, -2.000000};
913f6603c60Sopenharmony_ci
914f6603c60Sopenharmony_ci    int sum = 0;
915f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
916f6603c60Sopenharmony_ci        float  d = cimagf(testZ[i]);
917f6603c60Sopenharmony_ci        if (!Equalf(d, expected[i])) {
918f6603c60Sopenharmony_ci            LOG("cimagf of %.10f+%.10fi failed, expected:%.10f, actual:%.10f",
919f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
920f6603c60Sopenharmony_ci            sum++;
921f6603c60Sopenharmony_ci        }
922f6603c60Sopenharmony_ci    }
923f6603c60Sopenharmony_ci    return sum;
924f6603c60Sopenharmony_ci}
925f6603c60Sopenharmony_ci
926f6603c60Sopenharmony_ciint TestCimagl()
927f6603c60Sopenharmony_ci{
928f6603c60Sopenharmony_ci    const int testCount = 3;
929f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
930f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
931f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
932f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
933f6603c60Sopenharmony_ci    long double  expected[testCount];
934f6603c60Sopenharmony_ci
935f6603c60Sopenharmony_ci    expected[0] = 4.000000;
936f6603c60Sopenharmony_ci    expected[1] = -3.000000;
937f6603c60Sopenharmony_ci    expected[2] = -2.000000;
938f6603c60Sopenharmony_ci
939f6603c60Sopenharmony_ci    int sum = 0;
940f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
941f6603c60Sopenharmony_ci        long double  d = cimagl(testZ[i]);
942f6603c60Sopenharmony_ci        if (!Equall(d, expected[i])) {
943f6603c60Sopenharmony_ci            LOG("cimagl of %.20Lf+%.20Lfi failed, expected:%.20Lf, actual:%.20Lf",
944f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
945f6603c60Sopenharmony_ci            sum++;
946f6603c60Sopenharmony_ci        }
947f6603c60Sopenharmony_ci    }
948f6603c60Sopenharmony_ci    return sum;
949f6603c60Sopenharmony_ci}
950f6603c60Sopenharmony_ci
951f6603c60Sopenharmony_ciint TestClog()
952f6603c60Sopenharmony_ci{
953f6603c60Sopenharmony_ci    const int testCount = 3;
954f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
955f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
956f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
957f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
958f6603c60Sopenharmony_ci    double _Complex expected[testCount];
959f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
960f6603c60Sopenharmony_ci
961f6603c60Sopenharmony_ci    expected[0] = 1.60943791243410028180 + 0.92729521800161218703 * I;
962f6603c60Sopenharmony_ci    expected[1] = 1.09861228866810978211 + -1.57079632679489655800 * I;
963f6603c60Sopenharmony_ci    expected[2] = 0.85456540748777654048 + -1.01776488671168796607 * I;
964f6603c60Sopenharmony_ci
965f6603c60Sopenharmony_ci    int sum = 0;
966f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
967f6603c60Sopenharmony_ci        resultval[i] = clog(testZ[i]);
968f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
969f6603c60Sopenharmony_ci            LOG("clog of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
970f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
971f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
972f6603c60Sopenharmony_ci            sum++;
973f6603c60Sopenharmony_ci        }
974f6603c60Sopenharmony_ci    }
975f6603c60Sopenharmony_ci    return sum;
976f6603c60Sopenharmony_ci}
977f6603c60Sopenharmony_ci
978f6603c60Sopenharmony_ciint TestClogf()
979f6603c60Sopenharmony_ci{
980f6603c60Sopenharmony_ci    const int testCount = 3;
981f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
982f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
983f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
984f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
985f6603c60Sopenharmony_ci    float _Complex expected[testCount];
986f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
987f6603c60Sopenharmony_ci
988f6603c60Sopenharmony_ci    expected[0] = 1.6094380000 + 0.9272950000 * I;
989f6603c60Sopenharmony_ci    expected[1] = 1.0986123085 + -1.5707963705 * I;
990f6603c60Sopenharmony_ci    expected[2] = 0.8545635939 + -1.0177677870 * I;
991f6603c60Sopenharmony_ci
992f6603c60Sopenharmony_ci    int sum = 0;
993f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
994f6603c60Sopenharmony_ci        resultval[i] = clogf(testZ[i]);
995f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
996f6603c60Sopenharmony_ci            LOG("clogf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
997f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
998f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
999f6603c60Sopenharmony_ci            sum++;
1000f6603c60Sopenharmony_ci        }
1001f6603c60Sopenharmony_ci    }
1002f6603c60Sopenharmony_ci    return sum;
1003f6603c60Sopenharmony_ci}
1004f6603c60Sopenharmony_ci
1005f6603c60Sopenharmony_ciint TestClogl()
1006f6603c60Sopenharmony_ci{
1007f6603c60Sopenharmony_ci    const int testCount = 3;
1008f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1009f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1010f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1011f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
1012f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1013f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1014f6603c60Sopenharmony_ci
1015f6603c60Sopenharmony_ci    expected[0] = 1.60943791243410028180 + 0.92729521800161218703 * I;
1016f6603c60Sopenharmony_ci    expected[1] = 1.09861228866810978211 + -1.57079632679489655800 * I;
1017f6603c60Sopenharmony_ci    expected[2] = 0.85456364419155605994 + -1.01776774326071883792 * I;
1018f6603c60Sopenharmony_ci    int sum = 0;
1019f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1020f6603c60Sopenharmony_ci        resultval[i] = clogl(testZ[i]);
1021f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1022f6603c60Sopenharmony_ci            LOG("clogl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1023f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1024f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1025f6603c60Sopenharmony_ci            sum++;
1026f6603c60Sopenharmony_ci        }
1027f6603c60Sopenharmony_ci    }
1028f6603c60Sopenharmony_ci    return sum;
1029f6603c60Sopenharmony_ci}
1030f6603c60Sopenharmony_ci
1031f6603c60Sopenharmony_ciint TestConj()
1032f6603c60Sopenharmony_ci{
1033f6603c60Sopenharmony_ci    const int testCount = 3;
1034f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1035f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1036f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1037f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1038f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1039f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1040f6603c60Sopenharmony_ci    expected[0] = 4.000000 - 3.000000 * I;
1041f6603c60Sopenharmony_ci    expected[1] = 0.000000 - 3.000000 * I;
1042f6603c60Sopenharmony_ci    expected[2] = 2.256000 - 1.030000 * I;
1043f6603c60Sopenharmony_ci    int sum = 0;
1044f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1045f6603c60Sopenharmony_ci        resultval[i] = conj(testZ[i]);
1046f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1047f6603c60Sopenharmony_ci            LOG("conj of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1048f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1049f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1050f6603c60Sopenharmony_ci            sum++;
1051f6603c60Sopenharmony_ci        }
1052f6603c60Sopenharmony_ci    }
1053f6603c60Sopenharmony_ci    return sum;
1054f6603c60Sopenharmony_ci}
1055f6603c60Sopenharmony_ci
1056f6603c60Sopenharmony_ciint TestConjf()
1057f6603c60Sopenharmony_ci{
1058f6603c60Sopenharmony_ci    const int testCount = 3;
1059f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1060f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1061f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1062f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1063f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1064f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1065f6603c60Sopenharmony_ci
1066f6603c60Sopenharmony_ci    expected[0] = 4.000000 - 3.000000 * I;
1067f6603c60Sopenharmony_ci    expected[1] = 0.000000 - 3.000000 * I;
1068f6603c60Sopenharmony_ci    expected[2] = 2.256000 - 1.030000 * I;
1069f6603c60Sopenharmony_ci    int sum = 0;
1070f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1071f6603c60Sopenharmony_ci        resultval[i] = conjf(testZ[i]);
1072f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1073f6603c60Sopenharmony_ci            LOG("conjf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
1074f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1075f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1076f6603c60Sopenharmony_ci            sum++;
1077f6603c60Sopenharmony_ci        }
1078f6603c60Sopenharmony_ci    }
1079f6603c60Sopenharmony_ci    return sum;
1080f6603c60Sopenharmony_ci}
1081f6603c60Sopenharmony_ci
1082f6603c60Sopenharmony_ciint TestConjl()
1083f6603c60Sopenharmony_ci{
1084f6603c60Sopenharmony_ci    const int testCount = 3;
1085f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1086f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1087f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1088f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1089f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1090f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1091f6603c60Sopenharmony_ci
1092f6603c60Sopenharmony_ci    expected[0] = 4.000000 - 3.000000 * I;
1093f6603c60Sopenharmony_ci    expected[1] = 0.000000 - 3.000000 * I;
1094f6603c60Sopenharmony_ci    expected[2] = 2.256000 - 1.030000 * I;
1095f6603c60Sopenharmony_ci
1096f6603c60Sopenharmony_ci    int sum = 0;
1097f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1098f6603c60Sopenharmony_ci        resultval[i] = conjl(testZ[i]);
1099f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1100f6603c60Sopenharmony_ci            LOG("conjl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1101f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1102f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1103f6603c60Sopenharmony_ci            sum++;
1104f6603c60Sopenharmony_ci        }
1105f6603c60Sopenharmony_ci    }
1106f6603c60Sopenharmony_ci    return sum;
1107f6603c60Sopenharmony_ci}
1108f6603c60Sopenharmony_ci
1109f6603c60Sopenharmony_ciint TestCpow()
1110f6603c60Sopenharmony_ci{
1111f6603c60Sopenharmony_ci    const int testCount = 3;
1112f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1113f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1114f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1115f6603c60Sopenharmony_ci    double _Complex power[testCount];
1116f6603c60Sopenharmony_ci
1117f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1118f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1119f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
1120f6603c60Sopenharmony_ci
1121f6603c60Sopenharmony_ci    power[0] = 2.0 + 3.0 * I;
1122f6603c60Sopenharmony_ci    power[1] = 2.0 - 2.0 * I;
1123f6603c60Sopenharmony_ci    power[2] = 0.0 - 3.0 * I;
1124f6603c60Sopenharmony_ci
1125f6603c60Sopenharmony_ci    expected[0] = 1.42600947539257538743 + 0.60243463019053899998 * I;
1126f6603c60Sopenharmony_ci    expected[1] = 0.22800935530979718480 + 0.31507871264107617515 * I;
1127f6603c60Sopenharmony_ci    expected[2] = -0.03953800026646088484 + -0.02578534206891676742 * I;
1128f6603c60Sopenharmony_ci
1129f6603c60Sopenharmony_ci    int sum = 0;
1130f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1131f6603c60Sopenharmony_ci        resultval[i] = cpow(testZ[i], power[i]);
1132f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equal(cimag(expected[i]), cimag(resultval[i])))) {
1133f6603c60Sopenharmony_ci            LOG("cpow of %.20Lf+%.20Lfi,%.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1134f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(power[i]), cimag(power[i]),
1135f6603c60Sopenharmony_ci                creal(expected[i]), cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1136f6603c60Sopenharmony_ci            sum++;
1137f6603c60Sopenharmony_ci        }
1138f6603c60Sopenharmony_ci    }
1139f6603c60Sopenharmony_ci    return sum;
1140f6603c60Sopenharmony_ci}
1141f6603c60Sopenharmony_ci
1142f6603c60Sopenharmony_ciint TestCpowf()
1143f6603c60Sopenharmony_ci{
1144f6603c60Sopenharmony_ci    const int testCount = 3;
1145f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1146f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1147f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1148f6603c60Sopenharmony_ci    float _Complex power[testCount];
1149f6603c60Sopenharmony_ci
1150f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1151f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1152f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
1153f6603c60Sopenharmony_ci
1154f6603c60Sopenharmony_ci    power[0] = 2.0 + 3.0 * I;
1155f6603c60Sopenharmony_ci    power[1] = 2.0 - 2.0 * I;
1156f6603c60Sopenharmony_ci    power[2] = 0.0 - 3.0 * I;
1157f6603c60Sopenharmony_ci
1158f6603c60Sopenharmony_ci    expected[0] = 1.4260095358 + 0.6024347544 * I;
1159f6603c60Sopenharmony_ci    expected[1] = 0.2280094773 + 0.3150786161 * I;
1160f6603c60Sopenharmony_ci    expected[2] = -0.0395375155 + -0.0257853400 * I;
1161f6603c60Sopenharmony_ci
1162f6603c60Sopenharmony_ci    int sum = 0;
1163f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1164f6603c60Sopenharmony_ci        resultval[i] = cpowf(testZ[i], power[i]);
1165f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1166f6603c60Sopenharmony_ci            LOG("cpowf of %.10f+%.10fi,%.20Lf+%.20Lfi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
1167f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(power[i]), cimag(power[i]),
1168f6603c60Sopenharmony_ci                creal(expected[i]), cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1169f6603c60Sopenharmony_ci            sum++;
1170f6603c60Sopenharmony_ci        }
1171f6603c60Sopenharmony_ci    }
1172f6603c60Sopenharmony_ci    return sum;
1173f6603c60Sopenharmony_ci}
1174f6603c60Sopenharmony_ci
1175f6603c60Sopenharmony_ciint TestCpowl()
1176f6603c60Sopenharmony_ci{
1177f6603c60Sopenharmony_ci    const int testCount = 3;
1178f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1179f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1180f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1181f6603c60Sopenharmony_ci    long double _Complex power[testCount];
1182f6603c60Sopenharmony_ci
1183f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1184f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1185f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
1186f6603c60Sopenharmony_ci
1187f6603c60Sopenharmony_ci    power[0] = 2.0 + 3.0 * I;
1188f6603c60Sopenharmony_ci    power[1] = 2.0 - 2.0 * I;
1189f6603c60Sopenharmony_ci    power[2] = 0.0 - 3.0 * I;
1190f6603c60Sopenharmony_ci
1191f6603c60Sopenharmony_ci    expected[0] = 1.42600947539257538743 + 0.60243463019053899998 * I;
1192f6603c60Sopenharmony_ci    expected[1] = 0.22800935530979718480 + 0.31507871264107617515 * I;
1193f6603c60Sopenharmony_ci    expected[2] = -0.03953752504023075320 + -0.02578533024804808421 * I;
1194f6603c60Sopenharmony_ci
1195f6603c60Sopenharmony_ci    int sum = 0;
1196f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1197f6603c60Sopenharmony_ci        resultval[i] = cpowl(testZ[i], power[i]);
1198f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1199f6603c60Sopenharmony_ci            LOG("cpowl of %.20Lf+%.20Lfi,%.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1200f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(power[i]), cimag(power[i]),
1201f6603c60Sopenharmony_ci                creal(expected[i]), cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1202f6603c60Sopenharmony_ci            sum++;
1203f6603c60Sopenharmony_ci        }
1204f6603c60Sopenharmony_ci    }
1205f6603c60Sopenharmony_ci    return sum;
1206f6603c60Sopenharmony_ci}
1207f6603c60Sopenharmony_ci
1208f6603c60Sopenharmony_ciint TestCproj()
1209f6603c60Sopenharmony_ci{
1210f6603c60Sopenharmony_ci    const int testCount = 3;
1211f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1212f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1213f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1214f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1215f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1216f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1217f6603c60Sopenharmony_ci    expected[0] = 4.000000 + 3.000000 * I;
1218f6603c60Sopenharmony_ci    expected[1] = 0.000000 + 3.000000 * I;
1219f6603c60Sopenharmony_ci    expected[2] = 2.256000 + 1.030000 * I;
1220f6603c60Sopenharmony_ci
1221f6603c60Sopenharmony_ci    int sum = 0;
1222f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1223f6603c60Sopenharmony_ci        resultval[i] = cproj(testZ[i]);
1224f6603c60Sopenharmony_ci        if ((!Equal (creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1225f6603c60Sopenharmony_ci            LOG("cprojof %.20f+%.20fi failed, \n expected:%.20f+%.20fi,\n actual:%.20f +%.20fi\n",
1226f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1227f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1228f6603c60Sopenharmony_ci            sum++;
1229f6603c60Sopenharmony_ci        }
1230f6603c60Sopenharmony_ci    }
1231f6603c60Sopenharmony_ci    return sum;
1232f6603c60Sopenharmony_ci}
1233f6603c60Sopenharmony_ci
1234f6603c60Sopenharmony_ciint TestCprojf()
1235f6603c60Sopenharmony_ci{
1236f6603c60Sopenharmony_ci    const int testCount = 3;
1237f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1238f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1239f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1240f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1241f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1242f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1243f6603c60Sopenharmony_ci    expected[0] = 4.000000 + 3.000000 * I;
1244f6603c60Sopenharmony_ci    expected[1] = 0.000000 + 3.000000 * I;
1245f6603c60Sopenharmony_ci    expected[2] = 2.256000 + 1.030000 * I;
1246f6603c60Sopenharmony_ci
1247f6603c60Sopenharmony_ci    int sum = 0;
1248f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1249f6603c60Sopenharmony_ci        resultval[i] = cprojf(testZ[i]);
1250f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1251f6603c60Sopenharmony_ci            LOG("cprojf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
1252f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1253f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1254f6603c60Sopenharmony_ci            sum++;
1255f6603c60Sopenharmony_ci        }
1256f6603c60Sopenharmony_ci    }
1257f6603c60Sopenharmony_ci    return sum;
1258f6603c60Sopenharmony_ci}
1259f6603c60Sopenharmony_ci
1260f6603c60Sopenharmony_ciint TestCprojl()
1261f6603c60Sopenharmony_ci{
1262f6603c60Sopenharmony_ci    const int testCount = 3;
1263f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1264f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1265f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1266f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1267f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1268f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1269f6603c60Sopenharmony_ci    expected[0] = 4.000000 + 3.000000 * I;
1270f6603c60Sopenharmony_ci    expected[1] = 0.000000 + 3.000000 * I;
1271f6603c60Sopenharmony_ci    expected[2] = 2.256000 + 1.030000 * I;
1272f6603c60Sopenharmony_ci
1273f6603c60Sopenharmony_ci    int sum = 0;
1274f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1275f6603c60Sopenharmony_ci        resultval[i] = cprojl(testZ[i]);
1276f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1277f6603c60Sopenharmony_ci            LOG("cprojl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1278f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1279f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1280f6603c60Sopenharmony_ci            sum++;
1281f6603c60Sopenharmony_ci        }
1282f6603c60Sopenharmony_ci    }
1283f6603c60Sopenharmony_ci    return sum;
1284f6603c60Sopenharmony_ci}
1285f6603c60Sopenharmony_ci
1286f6603c60Sopenharmony_ciint TestCreal()
1287f6603c60Sopenharmony_ci{
1288f6603c60Sopenharmony_ci    const int testCount = 3;
1289f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1290f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1291f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1292f6603c60Sopenharmony_ci    testZ[2] = 1.23456789 - 2.0 * I;
1293f6603c60Sopenharmony_ci    double expected[] = {3.00000000000000000000, 0.00000000000000000000, 1.23456788999999989009};
1294f6603c60Sopenharmony_ci    int sum = 0;
1295f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1296f6603c60Sopenharmony_ci        double d = creal(testZ[i]);
1297f6603c60Sopenharmony_ci        if (!Equal(d, expected[i])) {
1298f6603c60Sopenharmony_ci            LOG("creal of %.20Lf+%.20Lfi failed, expected:%.20Lf, actual:%.20Lf",
1299f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
1300f6603c60Sopenharmony_ci            sum++;
1301f6603c60Sopenharmony_ci        }
1302f6603c60Sopenharmony_ci    }
1303f6603c60Sopenharmony_ci    return sum;
1304f6603c60Sopenharmony_ci}
1305f6603c60Sopenharmony_ci
1306f6603c60Sopenharmony_ciint TestCrealf()
1307f6603c60Sopenharmony_ci{
1308f6603c60Sopenharmony_ci    const int testCount = 3;
1309f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1310f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1311f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1312f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
1313f6603c60Sopenharmony_ci    float expected[] = {3.000000, 0.000000, 1.234560};
1314f6603c60Sopenharmony_ci
1315f6603c60Sopenharmony_ci    int sum = 0;
1316f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1317f6603c60Sopenharmony_ci        float  d = crealf(testZ[i]);
1318f6603c60Sopenharmony_ci        if (!Equalf(d, expected[i])) {
1319f6603c60Sopenharmony_ci            LOG("crealf of %.10f+%.10fi failed, expected:%.10f, actual:%.10f",
1320f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
1321f6603c60Sopenharmony_ci            sum++;
1322f6603c60Sopenharmony_ci        }
1323f6603c60Sopenharmony_ci    }
1324f6603c60Sopenharmony_ci    return sum;
1325f6603c60Sopenharmony_ci}
1326f6603c60Sopenharmony_ci
1327f6603c60Sopenharmony_ci
1328f6603c60Sopenharmony_ciint TestCreall()
1329f6603c60Sopenharmony_ci{
1330f6603c60Sopenharmony_ci    const int testCount = 3;
1331f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1332f6603c60Sopenharmony_ci    testZ[0] = 3.0 + 4.0 * I;
1333f6603c60Sopenharmony_ci    testZ[1] = 0.0 - 3.0 * I;
1334f6603c60Sopenharmony_ci    testZ[2] = 1.23456 - 2.0 * I;
1335f6603c60Sopenharmony_ci    long double  expected[] = {3.000000, 0.000000, 1.234560};
1336f6603c60Sopenharmony_ci
1337f6603c60Sopenharmony_ci    int sum = 0;
1338f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1339f6603c60Sopenharmony_ci        long double  d = creall(testZ[i]);
1340f6603c60Sopenharmony_ci        if (!Equall(d, expected[i])) {
1341f6603c60Sopenharmony_ci            LOG("creall of %.20Lf+%.20Lfi failed, expected:%.20Lf, actual:%.20Lf",
1342f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), expected[i], d);
1343f6603c60Sopenharmony_ci            sum++;
1344f6603c60Sopenharmony_ci        }
1345f6603c60Sopenharmony_ci    }
1346f6603c60Sopenharmony_ci    return sum;
1347f6603c60Sopenharmony_ci}
1348f6603c60Sopenharmony_ci
1349f6603c60Sopenharmony_ciint TestCsin()
1350f6603c60Sopenharmony_ci{
1351f6603c60Sopenharmony_ci    const int testCount = 3;
1352f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1353f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1354f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1355f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1356f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1357f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1358f6603c60Sopenharmony_ci    expected[0] = -9.22649862501591755404 + -6.18447589812529496811 * I;
1359f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 + 0.995055000000000000000 * I;
1360f6603c60Sopenharmony_ci    expected[2] = 1.22263236469252678518 + -0.77333777683149840243 * I;
1361f6603c60Sopenharmony_ci
1362f6603c60Sopenharmony_ci    int sum = 0;
1363f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1364f6603c60Sopenharmony_ci        resultval[i] = csin(testZ[i]);
1365f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equal(cimag(expected[i]), cimag(resultval[i])))) {
1366f6603c60Sopenharmony_ci            LOG("csin of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1367f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1368f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1369f6603c60Sopenharmony_ci            sum++;
1370f6603c60Sopenharmony_ci        }
1371f6603c60Sopenharmony_ci    }
1372f6603c60Sopenharmony_ci    return sum;
1373f6603c60Sopenharmony_ci}
1374f6603c60Sopenharmony_ci
1375f6603c60Sopenharmony_ciint TestCsinf()
1376f6603c60Sopenharmony_ci{
1377f6603c60Sopenharmony_ci    const int testCount = 3;
1378f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1379f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1380f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1381f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1382f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1383f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1384f6603c60Sopenharmony_ci    expected[0] = -7.6192321777 + -6.5481195450 * I;
1385f6603c60Sopenharmony_ci    expected[1] = 0.0000000000 - 0.142547000000 * I;
1386f6603c60Sopenharmony_ci    expected[2] = 1.2226322889 + -0.7733377218 * I;
1387f6603c60Sopenharmony_ci
1388f6603c60Sopenharmony_ci    int sum = 0;
1389f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1390f6603c60Sopenharmony_ci        resultval[i] = csinf(testZ[i]);
1391f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1392f6603c60Sopenharmony_ci            LOG("csinf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f+%.10fi\n",
1393f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1394f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1395f6603c60Sopenharmony_ci            sum++;
1396f6603c60Sopenharmony_ci        }
1397f6603c60Sopenharmony_ci    }
1398f6603c60Sopenharmony_ci    return sum;
1399f6603c60Sopenharmony_ci}
1400f6603c60Sopenharmony_ci
1401f6603c60Sopenharmony_ciint TestCsinh()
1402f6603c60Sopenharmony_ci{
1403f6603c60Sopenharmony_ci    const int testCount = 3;
1404f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1405f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1406f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1407f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1408f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1409f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1410f6603c60Sopenharmony_ci    expected[0] = -30.74488615260046486810 + 1.28017476495887727594 * I;
1411f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 + 0.99505500000000000000 * I;
1412f6603c60Sopenharmony_ci    expected[2] = 2.42996158979828669189 + 4.13629706118861140141 * I;
1413f6603c60Sopenharmony_ci
1414f6603c60Sopenharmony_ci    int sum = 0;
1415f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1416f6603c60Sopenharmony_ci        resultval[i] = csinh(testZ[i]);
1417f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equal(cimag(expected[i]), cimag(resultval[i])))) {
1418f6603c60Sopenharmony_ci            LOG("csinh of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1419f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1420f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1421f6603c60Sopenharmony_ci            sum++;
1422f6603c60Sopenharmony_ci        }
1423f6603c60Sopenharmony_ci    }
1424f6603c60Sopenharmony_ci    return sum;
1425f6603c60Sopenharmony_ci}
1426f6603c60Sopenharmony_ci
1427f6603c60Sopenharmony_ciint TestCsinhf()
1428f6603c60Sopenharmony_ci{
1429f6603c60Sopenharmony_ci    const int testCount = 3;
1430f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1431f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1432f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1433f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1434f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1435f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1436f6603c60Sopenharmony_ci    expected[0] = -27.0168151855 + 3.8537375927 * I;
1437f6603c60Sopenharmony_ci    expected[1] = 0.0000000000 - 0.1425470000 * I;
1438f6603c60Sopenharmony_ci    expected[2] = 2.4299616814 + 4.1362972260 * I;
1439f6603c60Sopenharmony_ci
1440f6603c60Sopenharmony_ci    int sum = 0;
1441f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1442f6603c60Sopenharmony_ci        resultval[i] = csinhf(testZ[i]);
1443f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1444f6603c60Sopenharmony_ci            LOG("csinhf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f+%.10fi\n",
1445f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1446f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1447f6603c60Sopenharmony_ci            sum++;
1448f6603c60Sopenharmony_ci        }
1449f6603c60Sopenharmony_ci    }
1450f6603c60Sopenharmony_ci    return sum;
1451f6603c60Sopenharmony_ci}
1452f6603c60Sopenharmony_ci
1453f6603c60Sopenharmony_ciint TestCsinhl()
1454f6603c60Sopenharmony_ci{
1455f6603c60Sopenharmony_ci    const int testCount = 3;
1456f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1457f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1458f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1459f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1460f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1461f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1462f6603c60Sopenharmony_ci    expected[0] = -30.74488615260046486810 + 1.28017476495887727594 * I;
1463f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 + 0.995055000000000000000 * I;
1464f6603c60Sopenharmony_ci    expected[2] = 2.42996158979828669189 + 4.13629706118861140141 * I;
1465f6603c60Sopenharmony_ci
1466f6603c60Sopenharmony_ci    int sum = 0;
1467f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1468f6603c60Sopenharmony_ci        resultval[i] = csinhl(testZ[i]);
1469f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1470f6603c60Sopenharmony_ci            LOG("csinhl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1471f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1472f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1473f6603c60Sopenharmony_ci            sum++;
1474f6603c60Sopenharmony_ci        }
1475f6603c60Sopenharmony_ci    }
1476f6603c60Sopenharmony_ci    return sum;
1477f6603c60Sopenharmony_ci}
1478f6603c60Sopenharmony_ci
1479f6603c60Sopenharmony_ciint TestCsinl()
1480f6603c60Sopenharmony_ci{
1481f6603c60Sopenharmony_ci    const int testCount = 3;
1482f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1483f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1484f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1485f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1486f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1487f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1488f6603c60Sopenharmony_ci    expected[0] = -9.22649862501591755404 + -6.18447589812529496811 * I;
1489f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 + 0.995055000000000000000 * I;
1490f6603c60Sopenharmony_ci    expected[2] = 1.22263236469252678518 + -0.77333777683149840243 * I;
1491f6603c60Sopenharmony_ci
1492f6603c60Sopenharmony_ci    int sum = 0;
1493f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1494f6603c60Sopenharmony_ci        resultval[i] = csinl(testZ[i]);
1495f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1496f6603c60Sopenharmony_ci            LOG("csinl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1497f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1498f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1499f6603c60Sopenharmony_ci            sum++;
1500f6603c60Sopenharmony_ci        }
1501f6603c60Sopenharmony_ci    }
1502f6603c60Sopenharmony_ci    return sum;
1503f6603c60Sopenharmony_ci}
1504f6603c60Sopenharmony_ci
1505f6603c60Sopenharmony_ciint TestCsqrt()
1506f6603c60Sopenharmony_ci{
1507f6603c60Sopenharmony_ci    const int testCount = 3;
1508f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1509f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1510f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1511f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1512f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1513f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1514f6603c60Sopenharmony_ci    expected[0] = 2.15360235493437635057 + 0.71972432443185685447 * I;
1515f6603c60Sopenharmony_ci    expected[1] = 1.22474487139158894067 + 1.22474487139158916271 * I;
1516f6603c60Sopenharmony_ci    expected[2] = 1.53883190408405168270 + 0.33466943246575064919 * I;
1517f6603c60Sopenharmony_ci
1518f6603c60Sopenharmony_ci    int sum = 0;
1519f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1520f6603c60Sopenharmony_ci        resultval[i] = csqrt(testZ[i]);
1521f6603c60Sopenharmony_ci        if ((!Equal(creal(expected[i]), creal(resultval[i]))) && (!Equal(cimag(expected[i]), cimag(resultval[i])))) {
1522f6603c60Sopenharmony_ci            LOG("csqrt of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1523f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1524f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1525f6603c60Sopenharmony_ci            sum++;
1526f6603c60Sopenharmony_ci        }
1527f6603c60Sopenharmony_ci    }
1528f6603c60Sopenharmony_ci    return sum;
1529f6603c60Sopenharmony_ci}
1530f6603c60Sopenharmony_ci
1531f6603c60Sopenharmony_ciint TestCsqrtf()
1532f6603c60Sopenharmony_ci{
1533f6603c60Sopenharmony_ci    const int testCount = 3;
1534f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1535f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1536f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1537f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1538f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1539f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1540f6603c60Sopenharmony_ci    expected[0] = 2.1213202477 + 0.7071067691 * I;
1541f6603c60Sopenharmony_ci    expected[1] = 1.2247449160 + 1.2247449160 * I;
1542f6603c60Sopenharmony_ci    expected[2] = 1.5388319492 + 0.3346694112 * I;
1543f6603c60Sopenharmony_ci
1544f6603c60Sopenharmony_ci    int sum = 0;
1545f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1546f6603c60Sopenharmony_ci        resultval[i] = csqrtf(testZ[i]);
1547f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1548f6603c60Sopenharmony_ci            LOG("csqrtf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f+%.10fi\n",
1549f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1550f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1551f6603c60Sopenharmony_ci            sum++;
1552f6603c60Sopenharmony_ci        }
1553f6603c60Sopenharmony_ci    }
1554f6603c60Sopenharmony_ci    return sum;
1555f6603c60Sopenharmony_ci}
1556f6603c60Sopenharmony_ci
1557f6603c60Sopenharmony_ciint TestCsqrtl()
1558f6603c60Sopenharmony_ci{
1559f6603c60Sopenharmony_ci    const int testCount = 3;
1560f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1561f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1562f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1563f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1564f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1565f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1566f6603c60Sopenharmony_ci    expected[0] = 2.15360235493437635057 + 0.71972432443185685447 * I;
1567f6603c60Sopenharmony_ci    expected[1] = 1.22474487139158894067 + 1.22474487139158916271 * I;
1568f6603c60Sopenharmony_ci    expected[2] = 1.53883190408405168270 + 0.33466943246575064919 * I;
1569f6603c60Sopenharmony_ci
1570f6603c60Sopenharmony_ci    int sum = 0;
1571f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1572f6603c60Sopenharmony_ci        resultval[i] = csqrtl(testZ[i]);
1573f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1574f6603c60Sopenharmony_ci            LOG("csqrtl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1575f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1576f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1577f6603c60Sopenharmony_ci            sum++;
1578f6603c60Sopenharmony_ci        }
1579f6603c60Sopenharmony_ci    }
1580f6603c60Sopenharmony_ci    return sum;
1581f6603c60Sopenharmony_ci}
1582f6603c60Sopenharmony_ci
1583f6603c60Sopenharmony_ciint TestCtan()
1584f6603c60Sopenharmony_ci{
1585f6603c60Sopenharmony_ci    const int testCount = 3;
1586f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1587f6603c60Sopenharmony_ci    testZ[0] = 1.1 + 2.12 * I;
1588f6603c60Sopenharmony_ci    testZ[1] = 1.0 + 3.12 * I;
1589f6603c60Sopenharmony_ci    testZ[2] = 0.0 + 1.03 * I;
1590f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1591f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1592f6603c60Sopenharmony_ci    expected[0] = 0.02369384883396526489 + 1.01682442264852812563 * I;
1593f6603c60Sopenharmony_ci    expected[1] = 0.00355174767798756632 + 1.00161786795187368604 * I;
1594f6603c60Sopenharmony_ci    expected[2] = 0.00000000000000000000 + 0.77390833985584200000 * I;
1595f6603c60Sopenharmony_ci
1596f6603c60Sopenharmony_ci    int sum = 0;
1597f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1598f6603c60Sopenharmony_ci        resultval[i] = ctan(testZ[i]);
1599f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1600f6603c60Sopenharmony_ci            LOG("ctan of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1601f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1602f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1603f6603c60Sopenharmony_ci            sum++;
1604f6603c60Sopenharmony_ci        }
1605f6603c60Sopenharmony_ci    }
1606f6603c60Sopenharmony_ci    return sum;
1607f6603c60Sopenharmony_ci}
1608f6603c60Sopenharmony_ci
1609f6603c60Sopenharmony_ciint TestCtanf()
1610f6603c60Sopenharmony_ci{
1611f6603c60Sopenharmony_ci    const int testCount = 3;
1612f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1613f6603c60Sopenharmony_ci    testZ[0] = 1.1 + 2.12 * I;
1614f6603c60Sopenharmony_ci    testZ[1] = 1.0 + 3.12 * I;
1615f6603c60Sopenharmony_ci    testZ[2] = 0.0 + 1.03 * I;
1616f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1617f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1618f6603c60Sopenharmony_ci    expected[0] = 0.0236938488 + 1.0168244226 * I;
1619f6603c60Sopenharmony_ci    expected[1] = 0.0035517477 + 1.0016178679 * I;
1620f6603c60Sopenharmony_ci    expected[2] = 0.0000000000 + 0.7739083399 * I;
1621f6603c60Sopenharmony_ci
1622f6603c60Sopenharmony_ci    int sum = 0;
1623f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1624f6603c60Sopenharmony_ci        resultval[i] = ctanf(testZ[i]);
1625f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1626f6603c60Sopenharmony_ci            LOG("ctanf of %.10f+%.10fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f +%.10fi\n",
1627f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1628f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1629f6603c60Sopenharmony_ci            sum++;
1630f6603c60Sopenharmony_ci        }
1631f6603c60Sopenharmony_ci    }
1632f6603c60Sopenharmony_ci    return sum;
1633f6603c60Sopenharmony_ci}
1634f6603c60Sopenharmony_ci
1635f6603c60Sopenharmony_ciint TestCtanh()
1636f6603c60Sopenharmony_ci{
1637f6603c60Sopenharmony_ci    const int testCount = 3;
1638f6603c60Sopenharmony_ci    double _Complex testZ[testCount];
1639f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1640f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1641f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1642f6603c60Sopenharmony_ci    double _Complex expected[testCount];
1643f6603c60Sopenharmony_ci    double _Complex resultval[testCount];
1644f6603c60Sopenharmony_ci    expected[0] = 0.99947419378454971373 + -0.00004382891481422311 * I;
1645f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 + 0.995055000000000000000 * I;
1646f6603c60Sopenharmony_ci    expected[2] = 1.01017902431788741957 + 0.01957765681621519149 * I;
1647f6603c60Sopenharmony_ci
1648f6603c60Sopenharmony_ci    int sum = 0;
1649f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1650f6603c60Sopenharmony_ci        resultval[i] = ctanh(testZ[i]);
1651f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1652f6603c60Sopenharmony_ci            LOG("ctanh of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1653f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1654f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1655f6603c60Sopenharmony_ci            sum++;
1656f6603c60Sopenharmony_ci        }
1657f6603c60Sopenharmony_ci    }
1658f6603c60Sopenharmony_ci    return sum;
1659f6603c60Sopenharmony_ci}
1660f6603c60Sopenharmony_ci
1661f6603c60Sopenharmony_ciint TestCtanhf()
1662f6603c60Sopenharmony_ci{
1663f6603c60Sopenharmony_ci    const int testCount = 3;
1664f6603c60Sopenharmony_ci    float _Complex testZ[testCount];
1665f6603c60Sopenharmony_ci    testZ[0] = 4.0 + 3.0 * I;
1666f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1667f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1668f6603c60Sopenharmony_ci    float _Complex expected[testCount];
1669f6603c60Sopenharmony_ci    float _Complex resultval[testCount];
1670f6603c60Sopenharmony_ci    expected[0] = 0.999356 + -0.000187 * I;
1671f6603c60Sopenharmony_ci    expected[1] = 0.000000 - 0.142547 * I;
1672f6603c60Sopenharmony_ci    expected[2] = 1.010179 + 0.019578 * I;
1673f6603c60Sopenharmony_ci
1674f6603c60Sopenharmony_ci    int sum = 0;
1675f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1676f6603c60Sopenharmony_ci        resultval[i] = ctanhf(testZ[i]);
1677f6603c60Sopenharmony_ci        if ((!Equalf(creal(expected[i]), creal(resultval[i]))) && (!Equalf(cimag(expected[i]), cimag(resultval[i])))) {
1678f6603c60Sopenharmony_ci            LOG("ctanhf of %f+%fi failed, \n expected:%.10f+%.10fi,\n actual:%.10f+%.10fi\n",
1679f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1680f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1681f6603c60Sopenharmony_ci            sum++;
1682f6603c60Sopenharmony_ci        }
1683f6603c60Sopenharmony_ci    }
1684f6603c60Sopenharmony_ci    return sum;
1685f6603c60Sopenharmony_ci}
1686f6603c60Sopenharmony_ci
1687f6603c60Sopenharmony_ciint TestCtanhl()
1688f6603c60Sopenharmony_ci{
1689f6603c60Sopenharmony_ci    const int testCount = 3;
1690f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1691f6603c60Sopenharmony_ci    testZ[0] = 4.12 + 3.1 * I;
1692f6603c60Sopenharmony_ci    testZ[1] = 0.0 + 3.0 * I;
1693f6603c60Sopenharmony_ci    testZ[2] = 2.256 + 1.03 * I;
1694f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1695f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1696f6603c60Sopenharmony_ci    expected[0] = 0.99947419378454971373 + -0.00004382891481422311 * I;
1697f6603c60Sopenharmony_ci    expected[1] = 0.00000000000000000000 + 0.995055000000000000000 * I;
1698f6603c60Sopenharmony_ci    expected[2] = 1.01017902431788741957 + 0.01957765681621519149 * I;
1699f6603c60Sopenharmony_ci
1700f6603c60Sopenharmony_ci    int sum = 0;
1701f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1702f6603c60Sopenharmony_ci        resultval[i] = ctanhl(testZ[i]);
1703f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1704f6603c60Sopenharmony_ci            LOG("ctanhl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1705f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1706f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1707f6603c60Sopenharmony_ci            sum++;
1708f6603c60Sopenharmony_ci        }
1709f6603c60Sopenharmony_ci    }
1710f6603c60Sopenharmony_ci    return sum;
1711f6603c60Sopenharmony_ci}
1712f6603c60Sopenharmony_ci
1713f6603c60Sopenharmony_ciint TestCtanl()
1714f6603c60Sopenharmony_ci{
1715f6603c60Sopenharmony_ci    const int testCount = 3;
1716f6603c60Sopenharmony_ci    long double _Complex testZ[testCount];
1717f6603c60Sopenharmony_ci    testZ[0] = 1.1 + 2.12 * I;
1718f6603c60Sopenharmony_ci    testZ[1] = 1.0 + 3.12 * I;
1719f6603c60Sopenharmony_ci    testZ[2] = 0.0 + 1.03 * I;
1720f6603c60Sopenharmony_ci    long double _Complex expected[testCount];
1721f6603c60Sopenharmony_ci    long double _Complex resultval[testCount];
1722f6603c60Sopenharmony_ci    expected[0] = 0.02369384883396526489 + 1.01682442264852812563 * I;
1723f6603c60Sopenharmony_ci    expected[1] = 0.00355174767798756632 + 1.00161786795187368604 * I;
1724f6603c60Sopenharmony_ci    expected[2] = 0.00000000000000000000 + 0.77390833985584200000 * I;
1725f6603c60Sopenharmony_ci
1726f6603c60Sopenharmony_ci    int sum = 0;
1727f6603c60Sopenharmony_ci    for (int i = 0; i < testCount; ++i) {
1728f6603c60Sopenharmony_ci        resultval[i] = ctanl(testZ[i]);
1729f6603c60Sopenharmony_ci        if ((!Equall(creal(expected[i]), creal(resultval[i]))) && (!Equall(cimag(expected[i]), cimag(resultval[i])))) {
1730f6603c60Sopenharmony_ci            LOG("ctanl of %.20Lf+%.20Lfi failed, \n expected:%.20Lf+%.20Lfi,\n actual:%.20Lf +%.20Lfi\n",
1731f6603c60Sopenharmony_ci                creal(testZ[i]), cimag(testZ[i]), creal(expected[i]),
1732f6603c60Sopenharmony_ci                cimag(expected[i]), creal(resultval[i]), cimag(resultval[i]));
1733f6603c60Sopenharmony_ci            sum++;
1734f6603c60Sopenharmony_ci        }
1735f6603c60Sopenharmony_ci    }
1736f6603c60Sopenharmony_ci    return sum;
1737f6603c60Sopenharmony_ci}
1738f6603c60Sopenharmony_ci
1739f6603c60Sopenharmony_ci#ifdef __cplusplus
1740f6603c60Sopenharmony_ci}
1741f6603c60Sopenharmony_ci#endif