Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
e93a0fe4
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
大约 1 年 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e93a0fe4
编写于
11月 18, 2012
作者:
S
Szabolcs Nagy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
math: expl.c cleanup
raise overflow and underflow when necessary, fix various comments.
上级
ab1772c5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
24 deletion
+19
-24
src/math/expl.c
src/math/expl.c
+19
-24
未找到文件。
src/math/expl.c
浏览文件 @
e93a0fe4
...
...
@@ -35,7 +35,7 @@
* x k f
* e = 2 e.
*
* A Pade' form of degree
2/3
is used to approximate exp(f) - 1
* A Pade' form of degree
5/6
is used to approximate exp(f) - 1
* in the basic range [-0.5 ln 2, 0.5 ln 2].
*
*
...
...
@@ -86,42 +86,37 @@ static const long double Q[4] = {
2.0000000000000000000897E0L
,
};
static
const
long
double
C1
=
6.9314575195312500000000E-1L
,
C2
=
1.4286068203094172321215E-6L
,
MAXLOGL
=
1.1356523406294143949492E4L
,
MINLOGL
=
-
1.13994985314888605586758E4L
,
LOG2EL
=
1.4426950408889634073599E0L
;
LN2HI
=
6.9314575195312500000000E-1L
,
LN2LO
=
1.4286068203094172321215E-6L
,
LOG2E
=
1.4426950408889634073599E0L
;
long
double
expl
(
long
double
x
)
{
long
double
px
,
xx
;
int
n
;
int
k
;
if
(
isnan
(
x
))
return
x
;
if
(
x
>
MAXLOGL
)
return
INFINITY
;
if
(
x
<
MINLOGL
)
return
0
.
0
;
if
(
x
>
11356
.
5234062941439488L
)
/* x > ln(2^16384 - 0.5) */
return
x
*
0x1
p16383L
;
if
(
x
<
-
11399
.
4985314888605581L
)
/* x < ln(2^-16446) */
return
0
x1
p
-
10000L
*
0x1
p
-
10000L
;
/* Express e**x = e**g 2**n
* = e**g e**(n loge(2))
* = e**(g + n loge(2))
/* Express e**x = e**f 2**k
* = e**(f + k ln(2))
*/
px
=
floorl
(
LOG2E
L
*
x
+
0
.
5
);
/* floor() truncates toward -infinity. */
n
=
px
;
x
-=
px
*
C1
;
x
-=
px
*
C2
;
px
=
floorl
(
LOG2E
*
x
+
0
.
5
);
k
=
px
;
x
-=
px
*
LN2HI
;
x
-=
px
*
LN2LO
;
/* rational approximation for exponential
* of the fractional part:
* e**x = 1 + 2x P(x**2)/(Q(x**2) - P(x**2))
/* rational approximation of the fractional part:
* e**x = 1 + 2x P(x**2)/(Q(x**2) - x P(x**2))
*/
xx
=
x
*
x
;
px
=
x
*
__polevll
(
xx
,
P
,
2
);
x
=
px
/
(
__polevll
(
xx
,
Q
,
3
)
-
px
);
x
=
px
/
(
__polevll
(
xx
,
Q
,
3
)
-
px
);
x
=
1
.
0
+
2
.
0
*
x
;
x
=
scalbnl
(
x
,
n
);
return
x
;
return
scalbnl
(
x
,
k
);
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录