< prev index next >

src/java.base/share/native/libfdlibm/e_asin.c

Print this page
rev 16214 : 8170663: Fix minor issues in corelib and servicabilty coding.
Reviewed-by: dsamersoff, dholmes
Contributed-by: David CARLIER <devnexen@gmail.com>, goetz.lindenmaier@sap.com

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1998, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -94,13 +94,18 @@
                     /* asin(1)=+-pi/2 with inexact */
                 return x*pio2_hi+x*pio2_lo;
             return (x-x)/(x-x);         /* asin(|x|>1) is NaN */
         } else if (ix<0x3fe00000) {     /* |x|<0.5 */
             if(ix<0x3e400000) {         /* if |x| < 2**-27 */
-                if(huge+x>one) return x;/* return x with inexact if x!=0*/
-            } else
+                if (huge+x>one) {
+                    return x;/* return x with inexact if x!=0*/
+                }
+                // Never reached. If so, t=0 will result in returning x
+                // which is correct for |x| < 2**-27.
+            } else {
                 t = x*x;
+            }
                 p = t*(pS0+t*(pS1+t*(pS2+t*(pS3+t*(pS4+t*pS5)))));
                 q = one+t*(qS1+t*(qS2+t*(qS3+t*qS4)));
                 w = p/q;
                 return x+x*w;
         }
< prev index next >