summaryrefslogtreecommitdiff
path: root/mpf/ceilfloor.c
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2001-05-11 00:31:13 +0200
committerKevin Ryde <user42@zip.com.au>2001-05-11 00:31:13 +0200
commit1982015f58608a573f70d7e2da4bbec088f9b2e8 (patch)
tree8545c7f5144c96e361912719e51272aff0cf2dea /mpf/ceilfloor.c
parent1a32126a71cfa467908a1c388838aba66de8e412 (diff)
downloadgmp-1982015f58608a573f70d7e2da4bbec088f9b2e8.tar.gz
* mpf/ceilfloor.c, mpf/trunc.c: Set exp to 0 when setting r to 0.
Believe this was a problem in 3.1.1 too.
Diffstat (limited to 'mpf/ceilfloor.c')
-rw-r--r--mpf/ceilfloor.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/mpf/ceilfloor.c b/mpf/ceilfloor.c
index ac32dc495..ff86c3322 100644
--- a/mpf/ceilfloor.c
+++ b/mpf/ceilfloor.c
@@ -41,7 +41,9 @@ mpf_ceil_or_floor (mpf_ptr r, mpf_srcptr u, int dir)
size = SIZ(u);
if (size == 0)
{
+ zero:
SIZ(r) = 0;
+ EXP(r) = 0;
return;
}
@@ -50,10 +52,11 @@ mpf_ceil_or_floor (mpf_ptr r, mpf_srcptr u, int dir)
if (exp <= 0)
{
/* u is only a fraction */
+ if ((size ^ dir) < 0)
+ goto zero;
rp[0] = 1;
EXP(r) = 1;
- dir = ((size ^ dir) >= 0 ? dir : 0);
- SIZ(r) = (size != 0 ? dir : 0);
+ SIZ(r) = dir;
return;
}
EXP(r) = exp;