summaryrefslogtreecommitdiff
path: root/src/elementaryFunctions/log1p/slog1ps.c
diff options
context:
space:
mode:
authorjofret2008-06-17 07:31:54 +0000
committerjofret2008-06-17 07:31:54 +0000
commit91772265a76ef33d968c10cf3ae35c165b9179db (patch)
tree62fc9dbb7e7ac000e71deda0faaf7244a30066eb /src/elementaryFunctions/log1p/slog1ps.c
parent2cf8315e0128d713724af22ef91938be1e1d8959 (diff)
downloadscilab2c-91772265a76ef33d968c10cf3ae35c165b9179db.tar.gz
scilab2c-91772265a76ef33d968c10cf3ae35c165b9179db.tar.bz2
scilab2c-91772265a76ef33d968c10cf3ae35c165b9179db.zip
* Update log1p use lnp1m1 as in Scilab Algorithm.
* Update ignored files
Diffstat (limited to 'src/elementaryFunctions/log1p/slog1ps.c')
-rw-r--r--src/elementaryFunctions/log1p/slog1ps.c19
1 files changed, 17 insertions, 2 deletions
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);
+ }
}