diff options
Diffstat (limited to 'src/elementaryFunctions')
-rw-r--r-- | src/elementaryFunctions/log1p/Makefile.am | 1 | ||||
-rw-r--r-- | src/elementaryFunctions/log1p/Makefile.in | 2 | ||||
-rw-r--r-- | src/elementaryFunctions/log1p/dlog1ps.c | 8 | ||||
-rw-r--r-- | src/elementaryFunctions/log1p/slog1ps.c | 19 |
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); + } } |