Annotation of 43BSDReno/lib/libm/common_source/mathimpl.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1988 The Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * Redistribution and use in source and binary forms are permitted
                      6:  * provided that: (1) source distributions retain this entire copyright
                      7:  * notice and comment, and (2) distributions including binaries display
                      8:  * the following acknowledgement:  ``This product includes software
                      9:  * developed by the University of California, Berkeley and its contributors''
                     10:  * in the documentation or other materials provided with the distribution
                     11:  * and in all advertising materials mentioning features or use of this
                     12:  * software. Neither the name of the University nor the names of its
                     13:  * contributors may be used to endorse or promote products derived
                     14:  * from this software without specific prior written permission.
                     15:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     16:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     17:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     18:  *
                     19:  * All recipients should regard themselves as participants in an ongoing
                     20:  * research project and hence should feel obligated to report their
                     21:  * experiences (good or bad) with these elementary function codes, using
                     22:  * the sendbug(8) program, to the authors.
                     23:  *
                     24:  *     @(#)mathimpl.h  5.2 (Berkeley) 6/1/90
                     25:  */
                     26: 
                     27: #include <math.h>
                     28: 
                     29: #ifdef __STDC__
                     30: #define const const
                     31: #else
                     32: #define const /**/
                     33: #endif
                     34: 
                     35: #if defined(vax)||defined(tahoe)
                     36: 
                     37: /* Deal with different ways to concatenate in cpp */
                     38: #  ifdef __STDC__
                     39: #    define    cat3(a,b,c) a ## b ## c
                     40: #  else
                     41: #    define    cat3(a,b,c) a/**/b/**/c
                     42: #  endif
                     43: 
                     44: /* Deal with vax/tahoe byte order issues */
                     45: #  ifdef vax
                     46: #    define    cat3t(a,b,c) cat3(a,b,c)
                     47: #  else
                     48: #    define    cat3t(a,b,c) cat3(a,c,b)
                     49: #  endif
                     50: 
                     51: #  define vccast(name) (*(const double *)(cat3(name,,x)))
                     52: 
                     53:    /*
                     54:     * Define a constant to high precision on a Vax or Tahoe.
                     55:     *
                     56:     * Args are the name to define, the decimal floating point value,
                     57:     * four 16-bit chunks of the float value in hex
                     58:     * (because the vax and tahoe differ in float format!), the power
                     59:     * of 2 of the hex-float exponent, and the hex-float mantissa.
                     60:     * Most of these arguments are not used at compile time; they are
                     61:     * used in a post-check to make sure the constants were compiled
                     62:     * correctly.
                     63:     *
                     64:     * People who want to use the constant will have to do their own
                     65:     *     #define foo vccast(foo)
                     66:     * since CPP cannot do this for them from inside another macro (sigh).
                     67:     * We define "vccast" if this needs doing.
                     68:     */
                     69: #  define vc(name, value, x1,x2,x3,x4, bexp, xval) \
                     70:        const static long cat3(name,,x)[] = {cat3t(0x,x1,x2), cat3t(0x,x3,x4)};
                     71: 
                     72: #  define ic(name, value, bexp, xval) ;
                     73: 
                     74: #else  /* vax or tahoe */
                     75: 
                     76:    /* Hooray, we have an IEEE machine */
                     77: #  undef vccast
                     78: #  define vc(name, value, x1,x2,x3,x4, bexp, xval) ;
                     79: 
                     80: #  define ic(name, value, bexp, xval) \
                     81:        const static double name = value;
                     82: 
                     83: #endif /* defined(vax)||defined(tahoe) */
                     84: 
                     85: 
                     86: /*
                     87:  * Functions internal to the math package, yet not static.
                     88:  */
                     89: extern double  exp__E();
                     90: extern double  log__L();
                     91: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.