Implement missing hyperbolic Math functions from ES6 (#3670)

Math.cosh, Math.sinh, Math.tanh

C implementation ported from fdlibm.

Part of Issue #3568

JerryScript-DCO-1.0-Signed-off-by: Rafal Walczyna r.walczyna@samsung.com
This commit is contained in:
Rafal Walczyna
2020-04-21 12:34:38 +02:00
committed by GitHub
parent d1bf9635c7
commit bcd5ff3f40
11 changed files with 718 additions and 12 deletions
+147
View File
@@ -967,4 +967,151 @@ main (int argc, char **args)
GEN_DBL_TEST (tan (-6.0));
GEN_DBL_TEST (tan (7.0));
GEN_DBL_TEST (tan (-7.0));
/* cosh tests */
GEN_DBL_TEST (cosh (0.0));
GEN_DBL_TEST (cosh (-0.0));
GEN_DBL_TEST (cosh (1.0));
GEN_DBL_TEST (cosh (-1.0));
GEN_DBL_TEST (cosh (INFINITY));
GEN_DBL_TEST (cosh (-INFINITY));
GEN_DBL_TEST (cosh (NAN));
GEN_DBL_TEST (cosh (M_PI));
GEN_DBL_TEST (cosh (-M_PI));
GEN_DBL_TEST (cosh (2.0 * M_PI));
GEN_DBL_TEST (cosh (-2.0 * M_PI));
GEN_DBL_TEST (cosh (M_PI / 2.0));
GEN_DBL_TEST (cosh (-M_PI / 2.0));
GEN_DBL_TEST (cosh (M_PI / 3.0));
GEN_DBL_TEST (cosh (-M_PI / 3.0));
GEN_DBL_TEST (cosh (M_PI / 4.0));
GEN_DBL_TEST (cosh (-M_PI / 4.0));
GEN_DBL_TEST (cosh (M_PI / 6.0));
GEN_DBL_TEST (cosh (-M_PI / 6.0));
GEN_DBL_TEST (cosh (M_PI * 2.0 / 3.0));
GEN_DBL_TEST (cosh (-M_PI * 2.0 / 3.0));
GEN_DBL_TEST (cosh (M_PI * 5.0 / 6.0));
GEN_DBL_TEST (cosh (-M_PI * 5.0 / 6.0));
GEN_DBL_TEST (cosh (6.9e-18));
GEN_DBL_TEST (cosh (-6.9e-18));
GEN_DBL_TEST (cosh (7.0e-18));
GEN_DBL_TEST (cosh (-7.0e-18));
GEN_DBL_TEST (cosh (7.4e-9));
GEN_DBL_TEST (cosh (-7.4e-9));
GEN_DBL_TEST (cosh (7.5e-9));
GEN_DBL_TEST (cosh (-7.5e-9));
GEN_DBL_TEST (cosh (0.2));
GEN_DBL_TEST (cosh (-0.2));
GEN_DBL_TEST (cosh (0.4));
GEN_DBL_TEST (cosh (-0.4));
GEN_DBL_TEST (cosh (0.7));
GEN_DBL_TEST (cosh (-0.7));
GEN_DBL_TEST (cosh (0.8));
GEN_DBL_TEST (cosh (-0.8));
GEN_DBL_TEST (cosh (3.0));
GEN_DBL_TEST (cosh (-3.0));
GEN_DBL_TEST (cosh (4.0));
GEN_DBL_TEST (cosh (-4.0));
GEN_DBL_TEST (cosh (6.0));
GEN_DBL_TEST (cosh (-6.0));
GEN_DBL_TEST (cosh (7.0));
GEN_DBL_TEST (cosh (-7.0));
/* sinh tests */
GEN_DBL_TEST (sinh (0.0));
GEN_DBL_TEST (sinh (-0.0));
GEN_DBL_TEST (sinh (1.0));
GEN_DBL_TEST (sinh (-1.0));
GEN_DBL_TEST (sinh (INFINITY));
GEN_DBL_TEST (sinh (-INFINITY));
GEN_DBL_TEST (sinh (NAN));
GEN_DBL_TEST (sinh (M_PI));
GEN_DBL_TEST (sinh (-M_PI));
GEN_DBL_TEST (sinh (2.0 * M_PI));
GEN_DBL_TEST (sinh (-2.0 * M_PI));
GEN_DBL_TEST (sinh (M_PI / 2.0));
GEN_DBL_TEST (sinh (-M_PI / 2.0));
GEN_DBL_TEST (sinh (M_PI / 3.0));
GEN_DBL_TEST (sinh (-M_PI / 3.0));
GEN_DBL_TEST (sinh (M_PI / 4.0));
GEN_DBL_TEST (sinh (-M_PI / 4.0));
GEN_DBL_TEST (sinh (M_PI / 6.0));
GEN_DBL_TEST (sinh (-M_PI / 6.0));
GEN_DBL_TEST (sinh (M_PI * 2.0 / 3.0));
GEN_DBL_TEST (sinh (-M_PI * 2.0 / 3.0));
GEN_DBL_TEST (sinh (M_PI * 5.0 / 6.0));
GEN_DBL_TEST (sinh (-M_PI * 5.0 / 6.0));
GEN_DBL_TEST (sinh (6.9e-18));
GEN_DBL_TEST (sinh (-6.9e-18));
GEN_DBL_TEST (sinh (7.0e-18));
GEN_DBL_TEST (sinh (-7.0e-18));
GEN_DBL_TEST (sinh (7.4e-9));
GEN_DBL_TEST (sinh (-7.4e-9));
GEN_DBL_TEST (sinh (7.5e-9));
GEN_DBL_TEST (sinh (-7.5e-9));
GEN_DBL_TEST (sinh (0.2));
GEN_DBL_TEST (sinh (-0.2));
GEN_DBL_TEST (sinh (0.4));
GEN_DBL_TEST (sinh (-0.4));
GEN_DBL_TEST (sinh (0.7));
GEN_DBL_TEST (sinh (-0.7));
GEN_DBL_TEST (sinh (0.8));
GEN_DBL_TEST (sinh (-0.8));
GEN_DBL_TEST (sinh (3.0));
GEN_DBL_TEST (sinh (-3.0));
GEN_DBL_TEST (sinh (4.0));
GEN_DBL_TEST (sinh (-4.0));
GEN_DBL_TEST (sinh (6.0));
GEN_DBL_TEST (sinh (-6.0));
GEN_DBL_TEST (sinh (7.0));
GEN_DBL_TEST (sinh (-7.0));
/* tanh tests */
GEN_DBL_TEST (tanh (0.0));
GEN_DBL_TEST (tanh (-0.0));
GEN_DBL_TEST (tanh (1.0));
GEN_DBL_TEST (tanh (-1.0));
GEN_DBL_TEST (tanh (INFINITY));
GEN_DBL_TEST (tanh (-INFINITY));
GEN_DBL_TEST (tanh (NAN));
GEN_DBL_TEST (tanh (M_PI));
GEN_DBL_TEST (tanh (-M_PI));
GEN_DBL_TEST (tanh (2.0 * M_PI));
GEN_DBL_TEST (tanh (-2.0 * M_PI));
GEN_DBL_TEST (tanh (M_PI / 2.0));
GEN_DBL_TEST (tanh (-M_PI / 2.0));
GEN_DBL_TEST (tanh (M_PI / 3.0));
GEN_DBL_TEST (tanh (-M_PI / 3.0));
GEN_DBL_TEST (tanh (M_PI / 4.0));
GEN_DBL_TEST (tanh (-M_PI / 4.0));
GEN_DBL_TEST (tanh (M_PI / 6.0));
GEN_DBL_TEST (tanh (-M_PI / 6.0));
GEN_DBL_TEST (tanh (M_PI * 2.0 / 3.0));
GEN_DBL_TEST (tanh (-M_PI * 2.0 / 3.0));
GEN_DBL_TEST (tanh (M_PI * 5.0 / 6.0));
GEN_DBL_TEST (tanh (-M_PI * 5.0 / 6.0));
GEN_DBL_TEST (tanh (6.9e-18));
GEN_DBL_TEST (tanh (-6.9e-18));
GEN_DBL_TEST (tanh (7.0e-18));
GEN_DBL_TEST (tanh (-7.0e-18));
GEN_DBL_TEST (tanh (7.4e-9));
GEN_DBL_TEST (tanh (-7.4e-9));
GEN_DBL_TEST (tanh (7.5e-9));
GEN_DBL_TEST (tanh (-7.5e-9));
GEN_DBL_TEST (tanh (0.2));
GEN_DBL_TEST (tanh (-0.2));
GEN_DBL_TEST (tanh (0.4));
GEN_DBL_TEST (tanh (-0.4));
GEN_DBL_TEST (tanh (0.7));
GEN_DBL_TEST (tanh (-0.7));
GEN_DBL_TEST (tanh (0.8));
GEN_DBL_TEST (tanh (-0.8));
GEN_DBL_TEST (tanh (3.0));
GEN_DBL_TEST (tanh (-3.0));
GEN_DBL_TEST (tanh (4.0));
GEN_DBL_TEST (tanh (-4.0));
GEN_DBL_TEST (tanh (6.0));
GEN_DBL_TEST (tanh (-6.0));
GEN_DBL_TEST (tanh (7.0));
GEN_DBL_TEST (tanh (-7.0));
} /* main */