Annotation of researchv10dc/libc/math/sinh.c, revision 1.1

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

unix.superglobalmegacorp.com

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