-/*
+/*
* Copyright (c) 1985 Regents of the University of California.
- *
- * Use and reproduction of this software are granted in accordance with
- * the terms and conditions specified in the Berkeley Software License
- * Agreement (in particular, this entails acknowledgement of the programs'
- * source, and inclusion of this notice) with the additional understanding
- * that all recipients should regard themselves as participants in an
- * ongoing research project and hence should feel obligated to report
- * their experiences (good or bad) with these elementary function codes,
- * using "sendbug 4bsd-bugs@BERKELEY", to the authors.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
*/
#ifndef lint
-static char sccsid[] =
-"@(#)cabs.c 1.2 (Berkeley) 8/21/85; 1.7 (ucb.elefunt) %G%";
-#endif /* not lint */
+static char sccsid[] = "@(#)cabs.c 5.6 (Berkeley) 10/9/90";
+#endif /* not lint */
/* HYPOT(X,Y)
* RETURN THE SQUARE ROOT OF X^2 + Y^2 WHERE Z=X+iY
* from decimal to binary accurately enough to produce the hexadecimal values
* shown.
*/
+#include "mathimpl.h"
+
+vc(r2p1hi, 2.4142135623730950345E0 ,8279,411a,ef32,99fc, 2, .9A827999FCEF32)
+vc(r2p1lo, 1.4349369327986523769E-17 ,597d,2484,754b,89b3, -55, .84597D89B3754B)
+vc(sqrt2, 1.4142135623730950622E0 ,04f3,40b5,de65,33f9, 1, .B504F333F9DE65)
-#if defined(vax)||defined(tahoe) /* VAX D format */
-#ifdef vax
-#define _0x(A,B) 0x/**/A/**/B
-#else /* vax */
-#define _0x(A,B) 0x/**/B/**/A
-#endif /* vax */
-/* static double */
-/* r2p1hi = 2.4142135623730950345E0 , Hex 2^ 2 * .9A827999FCEF32 */
-/* r2p1lo = 1.4349369327986523769E-17 , Hex 2^-55 * .84597D89B3754B */
-/* sqrt2 = 1.4142135623730950622E0 ; Hex 2^ 1 * .B504F333F9DE65 */
-static long r2p1hix[] = { _0x(8279,411a), _0x(ef32,99fc)};
-static long r2p1lox[] = { _0x(597d,2484), _0x(754b,89b3)};
-static long sqrt2x[] = { _0x(04f3,40b5), _0x(de65,33f9)};
-#define r2p1hi (*(double*)r2p1hix)
-#define r2p1lo (*(double*)r2p1lox)
-#define sqrt2 (*(double*)sqrt2x)
-#else /* defined(vax)||defined(tahoe) */
-static double
-r2p1hi = 2.4142135623730949234E0 , /*Hex 2^1 * 1.3504F333F9DE6 */
-r2p1lo = 1.2537167179050217666E-16 , /*Hex 2^-53 * 1.21165F626CDD5 */
-sqrt2 = 1.4142135623730951455E0 ; /*Hex 2^ 0 * 1.6A09E667F3BCD */
-#endif /* defined(vax)||defined(tahoe) */
+ic(r2p1hi, 2.4142135623730949234E0 , 1, 1.3504F333F9DE6)
+ic(r2p1lo, 1.2537167179050217666E-16 , -53, 1.21165F626CDD5)
+ic(sqrt2, 1.4142135623730951455E0 , 0, 1.6A09E667F3BCD)
+
+#ifdef vccast
+#define r2p1hi vccast(r2p1hi)
+#define r2p1lo vccast(r2p1lo)
+#define sqrt2 vccast(sqrt2)
+#endif
double
hypot(x,y)
double x, y;
{
- static double zero=0, one=1,
+ static const double zero=0, one=1,
small=1.0E-18; /* fl(1+small)==1 */
- static ibig=30; /* fl(1+2**(2*ibig))==1 */
- double copysign(),scalb(),logb(),sqrt(),t,r;
- int finite(), exp;
+ static const ibig=30; /* fl(1+2**(2*ibig))==1 */
+ double t,r;
+ int exp;
if(finite(x))
if(finite(y))
double hypot(x,y)
double x, y;
{
- static double zero=0, one=1;
+ static const double zero=0, one=1;
small=1.0E-18; /* fl(1+small)==1 */
- static ibig=30; /* fl(1+2**(2*ibig))==1 */
- double copysign(),scalb(),logb(),sqrt(),temp;
- int finite(), exp;
+ static const ibig=30; /* fl(1+2**(2*ibig))==1 */
+ double temp;
+ int exp;
if(finite(x))
if(finite(y))