---
 mingw-w64-crt/Makefile.am              | 18 ++++++++++++++++++
 mingw-w64-crt/math/arm-common/acosh.c  | 16 ++++++++++++++++
 mingw-w64-crt/math/arm-common/acoshf.c | 16 ++++++++++++++++
 mingw-w64-crt/math/arm-common/acoshl.c | 16 ++++++++++++++++
 mingw-w64-crt/math/arm-common/asinh.c  | 18 ++++++++++++++++++
 mingw-w64-crt/math/arm-common/asinhf.c | 18 ++++++++++++++++++
 mingw-w64-crt/math/arm-common/asinhl.c | 16 ++++++++++++++++
 mingw-w64-crt/math/arm-common/atanh.c  | 17 +++++++++++++++++
 mingw-w64-crt/math/arm-common/atanhf.c | 17 +++++++++++++++++
 mingw-w64-crt/math/arm-common/atanhl.c | 16 ++++++++++++++++
 10 files changed, 168 insertions(+)
 create mode 100644 mingw-w64-crt/math/arm-common/acosh.c
 create mode 100644 mingw-w64-crt/math/arm-common/acoshf.c
 create mode 100644 mingw-w64-crt/math/arm-common/acoshl.c
 create mode 100644 mingw-w64-crt/math/arm-common/asinh.c
 create mode 100644 mingw-w64-crt/math/arm-common/asinhf.c
 create mode 100644 mingw-w64-crt/math/arm-common/asinhl.c
 create mode 100644 mingw-w64-crt/math/arm-common/atanh.c
 create mode 100644 mingw-w64-crt/math/arm-common/atanhf.c
 create mode 100644 mingw-w64-crt/math/arm-common/atanhl.c

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 42031291f..3856d9181 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -258,6 +258,15 @@ src_msvcrtarm32+=\
   math/arm/nearbyintl.S \
   math/arm/trunc.S \
   math/arm/truncf.S \
+  math/arm-common/acosh.c \
+  math/arm-common/acoshf.c \
+  math/arm-common/acoshl.c \
+  math/arm-common/asinh.c \
+  math/arm-common/asinhf.c \
+  math/arm-common/asinhl.c \
+  math/arm-common/atanh.c \
+  math/arm-common/atanhf.c \
+  math/arm-common/atanhl.c \
   math/arm-common/copysignl.c \
   math/arm-common/expm1.c \
   math/arm-common/expm1f.c \
@@ -277,6 +286,15 @@ endif
 
 src_msvcrtarm64=\
   $(src_msvcrt) \
+  math/arm-common/acosh.c \
+  math/arm-common/acoshf.c \
+  math/arm-common/acoshl.c \
+  math/arm-common/asinh.c \
+  math/arm-common/asinhf.c \
+  math/arm-common/asinhl.c \
+  math/arm-common/atanh.c \
+  math/arm-common/atanhf.c \
+  math/arm-common/atanhl.c \
   math/arm-common/copysignl.c \
   math/arm-common/expm1.c \
   math/arm-common/expm1f.c \
diff --git a/mingw-w64-crt/math/arm-common/acosh.c 
b/mingw-w64-crt/math/arm-common/acosh.c
new file mode 100644
index 000000000..a26840d86
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/acosh.c
@@ -0,0 +1,16 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+double acosh(double x)
+{
+  if (x < 1.0)
+    return NAN;
+  if (isinf(x*x))
+    return log(2) + log(x);
+  return log(x + sqrt(x*x - 1));
+}
diff --git a/mingw-w64-crt/math/arm-common/acoshf.c 
b/mingw-w64-crt/math/arm-common/acoshf.c
new file mode 100644
index 000000000..d02e94da6
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/acoshf.c
@@ -0,0 +1,16 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+float acoshf(float x)
+{
+  if (x < 1.0)
+    return NAN;
+  if (isinf(x*x))
+    return logf(2) + logf(x);
+  return logf(x + sqrtf(x*x - 1));
+}
diff --git a/mingw-w64-crt/math/arm-common/acoshl.c 
b/mingw-w64-crt/math/arm-common/acoshl.c
new file mode 100644
index 000000000..c2157bebc
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/acoshl.c
@@ -0,0 +1,16 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+long double acoshl(long double x)
+{
+#if defined(__arm__) || defined(_ARM_) || defined(__aarch64__) || 
defined(_ARM64_)
+    return acosh(x);
+#else
+#error Not supported on your platform yet
+#endif
+}
diff --git a/mingw-w64-crt/math/arm-common/asinh.c 
b/mingw-w64-crt/math/arm-common/asinh.c
new file mode 100644
index 000000000..8db2cc90e
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/asinh.c
@@ -0,0 +1,18 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+double asinh(double x)
+{
+  if (isinf(x*x + 1)) {
+    if (x > 0)
+      return log(2) + log(x);
+    else
+      return log(2) - log(-x);
+  }
+  return log(x + sqrt(x*x + 1));
+}
diff --git a/mingw-w64-crt/math/arm-common/asinhf.c 
b/mingw-w64-crt/math/arm-common/asinhf.c
new file mode 100644
index 000000000..82fd6605e
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/asinhf.c
@@ -0,0 +1,18 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+float asinhf(float x)
+{
+  if (isinf(x*x + 1)) {
+    if (x > 0)
+      return logf(2) + logf(x);
+    else
+      return logf(2) - logf(-x);
+  }
+  return logf(x + sqrtf(x*x + 1));
+}
diff --git a/mingw-w64-crt/math/arm-common/asinhl.c 
b/mingw-w64-crt/math/arm-common/asinhl.c
new file mode 100644
index 000000000..556b3c4f5
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/asinhl.c
@@ -0,0 +1,16 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+long double asinhl(long double x)
+{
+#if defined(__arm__) || defined(_ARM_) || defined(__aarch64__) || 
defined(_ARM64_)
+    return asinh(x);
+#else
+#error Not supported on your platform yet
+#endif
+}
diff --git a/mingw-w64-crt/math/arm-common/atanh.c 
b/mingw-w64-crt/math/arm-common/atanh.c
new file mode 100644
index 000000000..08302c0e2
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/atanh.c
@@ -0,0 +1,17 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+double atanh(double x)
+{
+  if (x > 1 || x < -1)
+    return NAN;
+  if (-1e-6 < x && x < 1e-6)
+    return x + x*x*x/3;
+  else
+    return (log(1 + x) - log(1 - x)) / 2;
+}
diff --git a/mingw-w64-crt/math/arm-common/atanhf.c 
b/mingw-w64-crt/math/arm-common/atanhf.c
new file mode 100644
index 000000000..a29492305
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/atanhf.c
@@ -0,0 +1,17 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+float atanhf(float x)
+{
+  if (x > 1 || x < -1)
+    return NAN;
+  if (-1e-6 < x && x < 1e-6)
+    return x + x*x*x/3;
+  else
+    return (logf(1 + x) - logf(1 - x)) / 2;
+}
diff --git a/mingw-w64-crt/math/arm-common/atanhl.c 
b/mingw-w64-crt/math/arm-common/atanhl.c
new file mode 100644
index 000000000..c4d124b9f
--- /dev/null
+++ b/mingw-w64-crt/math/arm-common/atanhl.c
@@ -0,0 +1,16 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <math.h>
+
+long double atanhl(long double x)
+{
+#if defined(__arm__) || defined(_ARM_) || defined(__aarch64__) || 
defined(_ARM64_)
+    return atanh(x);
+#else
+#error Not supported on your platform yet
+#endif
+}
-- 
2.17.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to