BSD 4_3_Reno release
[unix-history] / usr / src / lib / libm / ieee / cabs.c
index 0ca22f3..3474912 100644 (file)
@@ -1,20 +1,30 @@
-/* 
+/*
  * Copyright (c) 1985 Regents of the University of California.
  * 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 are permitted
+ * provided that: (1) source distributions retain this entire copyright
+ * notice and comment, and (2) distributions including binaries display
+ * the following acknowledgement:  ``This product includes software
+ * developed by the University of California, Berkeley and its contributors''
+ * in the documentation or other materials provided with the distribution
+ * and in all advertising materials mentioning features or use of this
+ * software. 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * 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
+ * the sendbug(8) program, to the authors.
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] =
-"@(#)cabs.c    1.2 (Berkeley) 8/21/85; 5.1 (ucb.elefunt) %G%";
-#endif /* not lint */
+static char sccsid[] = "@(#)cabs.c     5.5 (Berkeley) 6/1/90";
+#endif /* not lint */
 
 /* HYPOT(X,Y)
  * RETURN THE SQUARE ROOT OF X^2 + Y^2  WHERE Z=X+iY
 
 /* HYPOT(X,Y)
  * RETURN THE SQUARE ROOT OF X^2 + Y^2  WHERE Z=X+iY
@@ -68,39 +78,31 @@ static char sccsid[] =
  * from decimal to binary accurately enough to produce the hexadecimal values
  * shown.
  */
  * 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;
 {
 
 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 */
                      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))
 
        if(finite(x))
            if(finite(y))
@@ -178,11 +180,11 @@ struct { double x,y;} *z;
 double hypot(x,y)
 double x, 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 */
                      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))
 
        if(finite(x))
            if(finite(y))