Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
cb8fce4b
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
接近 2 年 前同步成功
通知
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看板
提交
cb8fce4b
编写于
3月 23, 2012
作者:
N
nsz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix tgammal: don't set the signgam global
(tgamma must be thread-safe, signgam is for lgamma* functions)
上级
494ba80e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
13 deletion
+6
-13
src/math/tgammal.c
src/math/tgammal.c
+6
-13
未找到文件。
src/math/tgammal.c
浏览文件 @
cb8fce4b
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
* SYNOPSIS:
* SYNOPSIS:
*
*
* long double x, y, tgammal();
* long double x, y, tgammal();
* extern int signgam;
*
*
* y = tgammal( x );
* y = tgammal( x );
*
*
...
@@ -29,10 +28,7 @@
...
@@ -29,10 +28,7 @@
* DESCRIPTION:
* DESCRIPTION:
*
*
* Returns gamma function of the argument. The result is
* Returns gamma function of the argument. The result is
* correctly signed, and the sign (+1 or -1) is also
* correctly signed.
* returned in a global (extern) variable named signgam.
* This variable is also filled in by the logarithmic gamma
* function lgamma().
*
*
* Arguments |x| <= 13 are reduced by recurrence and the function
* Arguments |x| <= 13 are reduced by recurrence and the function
* approximated by a rational function of degree 7/8 in the
* approximated by a rational function of degree 7/8 in the
...
@@ -209,9 +205,8 @@ static long double stirf(long double x)
...
@@ -209,9 +205,8 @@ static long double stirf(long double x)
long
double
tgammal
(
long
double
x
)
long
double
tgammal
(
long
double
x
)
{
{
long
double
p
,
q
,
z
;
long
double
p
,
q
,
z
;
int
i
;
int
i
,
sign
;
signgam
=
1
;
if
(
isnan
(
x
))
if
(
isnan
(
x
))
return
NAN
;
return
NAN
;
if
(
x
==
INFINITY
)
if
(
x
==
INFINITY
)
...
@@ -220,6 +215,7 @@ long double tgammal(long double x)
...
@@ -220,6 +215,7 @@ long double tgammal(long double x)
return
x
-
x
;
return
x
-
x
;
q
=
fabsl
(
x
);
q
=
fabsl
(
x
);
if
(
q
>
13
.
0
)
{
if
(
q
>
13
.
0
)
{
sign
=
1
;
if
(
q
>
MAXGAML
)
if
(
q
>
MAXGAML
)
goto
goverf
;
goto
goverf
;
if
(
x
<
0
.
0
)
{
if
(
x
<
0
.
0
)
{
...
@@ -228,7 +224,7 @@ long double tgammal(long double x)
...
@@ -228,7 +224,7 @@ long double tgammal(long double x)
return
(
x
-
x
)
/
(
x
-
x
);
return
(
x
-
x
)
/
(
x
-
x
);
i
=
p
;
i
=
p
;
if
((
i
&
1
)
==
0
)
if
((
i
&
1
)
==
0
)
sign
gam
=
-
1
;
sign
=
-
1
;
z
=
q
-
p
;
z
=
q
-
p
;
if
(
z
>
0
.
5L
)
{
if
(
z
>
0
.
5L
)
{
p
+=
1
.
0
;
p
+=
1
.
0
;
...
@@ -238,13 +234,13 @@ long double tgammal(long double x)
...
@@ -238,13 +234,13 @@ long double tgammal(long double x)
z
=
fabsl
(
z
)
*
stirf
(
q
);
z
=
fabsl
(
z
)
*
stirf
(
q
);
if
(
z
<=
PIL
/
LDBL_MAX
)
{
if
(
z
<=
PIL
/
LDBL_MAX
)
{
goverf:
goverf:
return
sign
gam
*
INFINITY
;
return
sign
*
INFINITY
;
}
}
z
=
PIL
/
z
;
z
=
PIL
/
z
;
}
else
{
}
else
{
z
=
stirf
(
x
);
z
=
stirf
(
x
);
}
}
return
sign
gam
*
z
;
return
sign
*
z
;
}
}
z
=
1
.
0
;
z
=
1
.
0
;
...
@@ -269,8 +265,6 @@ goverf:
...
@@ -269,8 +265,6 @@ goverf:
p
=
__polevll
(
x
,
P
,
7
);
p
=
__polevll
(
x
,
P
,
7
);
q
=
__polevll
(
x
,
Q
,
8
);
q
=
__polevll
(
x
,
Q
,
8
);
z
=
z
*
p
/
q
;
z
=
z
*
p
/
q
;
if
(
z
<
0
)
signgam
=
-
1
;
return
z
;
return
z
;
small:
small:
...
@@ -279,7 +273,6 @@ small:
...
@@ -279,7 +273,6 @@ small:
if
(
x
<
0
.
0
)
{
if
(
x
<
0
.
0
)
{
x
=
-
x
;
x
=
-
x
;
q
=
z
/
(
x
*
__polevll
(
x
,
SN
,
8
));
q
=
z
/
(
x
*
__polevll
(
x
,
SN
,
8
));
signgam
=
-
1
;
}
else
}
else
q
=
z
/
(
x
*
__polevll
(
x
,
S
,
8
));
q
=
z
/
(
x
*
__polevll
(
x
,
S
,
8
));
return
q
;
return
q
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录