diff options
author | Kevin Ryde <user42@zip.com.au> | 2001-05-11 00:31:13 +0200 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2001-05-11 00:31:13 +0200 |
commit | 1982015f58608a573f70d7e2da4bbec088f9b2e8 (patch) | |
tree | 8545c7f5144c96e361912719e51272aff0cf2dea /mpf/ceilfloor.c | |
parent | 1a32126a71cfa467908a1c388838aba66de8e412 (diff) | |
download | gmp-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.c | 7 |
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; |