This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMU Common Lisp".
The branch, master has been updated via f61fb8591ba745046f96770093330be7d12e45d2 (commit) from 33adf3d4d02f8416b829569af99735a5b28c9d73 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit f61fb8591ba745046f96770093330be7d12e45d2 Author: Raymond Toy toy.raymond@gmail.com Date: Tue Sep 30 21:11:36 2014 -0700
Fix a couple of issues in the code.
* Use fdlibm_setexception to handle the case when the arg is NaN or Inf. (Previously depended on x+x doing the right thing.) * Fix a compiler warning about possible dangling else by adding braces as needed.
diff --git a/src/lisp/s_scalbn.c b/src/lisp/s_scalbn.c index 4889385..1993bbb 100644 --- a/src/lisp/s_scalbn.c +++ b/src/lisp/s_scalbn.c @@ -52,15 +52,24 @@ tiny = 1.0e-300; k = ((hx&0x7ff00000)>>20) - 54; if (n< -50000) return fdlibm_setexception(x, FDLIBM_UNDERFLOW);; /*underflow*/ } - if (k==0x7ff) return x+x; /* NaN or Inf */ + if (k==0x7ff) { + /* NaN or Inf */ + if(((hx&0xfffff)|lx)!=0) { + return fdlibm_setexception(x, FDLIBM_INVALID); + } else { + return fdlibm_setexception(x, FDLIBM_OVERFLOW); + } + } + k = k+n; if (k > 0x7fe) return fdlibm_setexception(x, FDLIBM_OVERFLOW); /* overflow */ if (k > 0) /* normal result */ {ux.i[HIWORD] = (hx&0x800fffff)|(k<<20); return x;} - if (k <= -54) + if (k <= -54) { if (n > 50000) /* in case integer overflow in n+k */ return fdlibm_setexception(x, FDLIBM_OVERFLOW); /*overflow*/ else return fdlibm_setexception(x, FDLIBM_UNDERFLOW); /*underflow*/ + } k += 54; /* subnormal result */ ux.i[HIWORD] = (hx&0x800fffff)|(k<<20); return x*twom54;
-----------------------------------------------------------------------
Summary of changes: src/lisp/s_scalbn.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
hooks/post-receive