Annotation of 42BSD/usr.lib/libF77/sinh.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *     "@(#)sinh.c     1.1"
        !             3:  */
        !             4: 
        !             5: /*
        !             6:        sinh(arg) returns the hyperbolic sine of its floating-
        !             7:        point argument.
        !             8: 
        !             9:        The exponential function is called for arguments
        !            10:        greater in magnitude than 0.5.
        !            11: 
        !            12:        A series is used for arguments smaller in magnitude than 0.5.
        !            13:        The coefficients are #2029 from Hart & Cheney. (20.36D)
        !            14: 
        !            15:        cosh(arg) is computed from the exponential function for
        !            16:        all arguments.
        !            17: */
        !            18: 
        !            19: double exp();
        !            20: 
        !            21: static double p0  = -0.6307673640497716991184787251e+6;
        !            22: static double p1  = -0.8991272022039509355398013511e+5;
        !            23: static double p2  = -0.2894211355989563807284660366e+4;
        !            24: static double p3  = -0.2630563213397497062819489e+2;
        !            25: static double q0  = -0.6307673640497716991212077277e+6;
        !            26: static double q1   = 0.1521517378790019070696485176e+5;
        !            27: static double q2  = -0.173678953558233699533450911e+3;
        !            28: 
        !            29: double
        !            30: sinh(arg)
        !            31: double arg;
        !            32: {
        !            33:        double temp, argsq;
        !            34:        register sign;
        !            35: 
        !            36:        sign = 1;
        !            37:        if(arg < 0) {
        !            38:                arg = - arg;
        !            39:                sign = -1;
        !            40:        }
        !            41: 
        !            42:        if(arg > 21.) {
        !            43:                temp = exp(arg)/2;
        !            44:                if (sign>0)
        !            45:                        return(temp);
        !            46:                else
        !            47:                        return(-temp);
        !            48:        }
        !            49: 
        !            50:        if(arg > 0.5) {
        !            51:                return(sign*(exp(arg) - exp(-arg))/2);
        !            52:        }
        !            53: 
        !            54:        argsq = arg*arg;
        !            55:        temp = (((p3*argsq+p2)*argsq+p1)*argsq+p0)*arg;
        !            56:        temp /= (((argsq+q2)*argsq+q1)*argsq+q0);
        !            57:        return(sign*temp);
        !            58: }
        !            59: 
        !            60: double
        !            61: cosh(arg)
        !            62: double arg;
        !            63: {
        !            64:        if(arg < 0)
        !            65:                arg = - arg;
        !            66:        if(arg > 21.) {
        !            67:                return(exp(arg)/2);
        !            68:        }
        !            69: 
        !            70:        return((exp(arg) + exp(-arg))/2);
        !            71: }

unix.superglobalmegacorp.com

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