blob: 04786524f002b356740e5670d450e52958646c84 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
* Copyright (C) Bruno Pincon
*
* This file must be used under the terms of the CeCILL.
* This source file is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
*/
#include "log1p.h"
#include "log.h"
#include "lnp1m1.h"
float slog1ps(float 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);
}
}
|