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