summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/elementaryFunctions/log1p/Makefile.am1
-rw-r--r--src/elementaryFunctions/log1p/Makefile.in2
-rw-r--r--src/elementaryFunctions/log1p/dlog1ps.c8
-rw-r--r--src/elementaryFunctions/log1p/slog1ps.c19
4 files changed, 22 insertions, 8 deletions
diff --git a/src/elementaryFunctions/log1p/Makefile.am b/src/elementaryFunctions/log1p/Makefile.am
index 1989cd9b..660c2917 100644
--- a/src/elementaryFunctions/log1p/Makefile.am
+++ b/src/elementaryFunctions/log1p/Makefile.am
@@ -41,6 +41,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/type/libFloatComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
$(top_builddir)/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la \
$(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
$(top_builddir)/elementaryFunctions/log/libLog.la \
$(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
diff --git a/src/elementaryFunctions/log1p/Makefile.in b/src/elementaryFunctions/log1p/Makefile.in
index 1dfc9f7f..8242b6c5 100644
--- a/src/elementaryFunctions/log1p/Makefile.in
+++ b/src/elementaryFunctions/log1p/Makefile.in
@@ -70,6 +70,7 @@ am__DEPENDENCIES_1 = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/type/libFloatComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
$(top_builddir)/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la \
$(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
$(top_builddir)/elementaryFunctions/log/libLog.la \
$(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
@@ -240,6 +241,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/type/libFloatComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
$(top_builddir)/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la \
$(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
$(top_builddir)/elementaryFunctions/log/libLog.la \
$(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
diff --git a/src/elementaryFunctions/log1p/dlog1ps.c b/src/elementaryFunctions/log1p/dlog1ps.c
index 8275ea57..4c055c86 100644
--- a/src/elementaryFunctions/log1p/dlog1ps.c
+++ b/src/elementaryFunctions/log1p/dlog1ps.c
@@ -12,6 +12,7 @@
#include "log1p.h"
#include "log.h"
+#include "lnp1m1.h"
double dlog1ps(double in) {
static double A = -1.0/3.0;
@@ -23,12 +24,7 @@ double dlog1ps(double in) {
}
else if(A <= in && in <= B)
{/* use the function log((1+g)/(1-g)) with g = x/(x + 2) */
- double Temp = 0;
- Temp = in / ( in + 2);
- /*
-return lnp1m1(Temp);
- */
- return 0;
+ return dlnp1m1s(in / (in + 2));
}
else
{/* use the standard formula */
diff --git a/src/elementaryFunctions/log1p/slog1ps.c b/src/elementaryFunctions/log1p/slog1ps.c
index 22d59544..501de6b0 100644
--- a/src/elementaryFunctions/log1p/slog1ps.c
+++ b/src/elementaryFunctions/log1p/slog1ps.c
@@ -10,9 +10,24 @@
*
*/
-#include <math.h>
#include "log1p.h"
+#include "log.h"
+#include "lnp1m1.h"
float slog1ps(float in) {
- return (log1pf(in));
+ static double A = -1.0/3.0;
+ static double B = 0.5;
+
+ if(in < -1)
+ {/* got NaN */
+ return (in - in) / (in - in); /* NaN */
+ }
+ else if(A <= in && in <= B)
+ {/* use the function log((1+g)/(1-g)) with g = x/(x + 2) */
+ return slnp1m1s(in / (in + 2));
+ }
+ else
+ {/* use the standard formula */
+ return slogs(in + 1);
+ }
}