Annotation of researchv9/cmd/cfront/libC/complex/cos.c, revision 1.1

1.1     ! root        1: 
        !             2: #include "complex.h"
        !             3: #include "const.h"
        !             4: 
        !             5: complex cos(complex z)
        !             6: /*
        !             7:        The cosine of z: cos(z)=cosh(iz).
        !             8: */
        !             9: {
        !            10:        complex y(-z.im, z.re); 
        !            11:        return cosh(y);
        !            12: }
        !            13: 
        !            14: 
        !            15: 
        !            16: complex cosh(complex z)
        !            17: /*
        !            18:        The complex hyperbolic cosine of z
        !            19: */
        !            20: {
        !            21:        double  cosh_x, sinh_x, cos_y, sin_y;
        !            22: 
        !            23: #define        COSH_GOOD       1e7
        !            24: #define        COSH_HUGE       1e38
        !            25: 
        !            26:        if (z.re > MAX_EXPONENT) {
        !            27:                complex_error(C_COSH_RE, z.re);
        !            28:                cosh_x = sinh_x = COSH_HUGE;
        !            29:        }
        !            30:        else if (z.re < MIN_EXPONENT) {
        !            31:                complex_error(C_COSH_RE, z.re);
        !            32:                cosh_x = COSH_HUGE;
        !            33:                sinh_x = -COSH_HUGE;
        !            34:        }
        !            35:        else {
        !            36:                double pos_exp = exp(z.re); 
        !            37:                double neg_exp = 1/pos_exp;
        !            38:                cosh_x = (pos_exp + neg_exp)/2;
        !            39:                sinh_x = (pos_exp - neg_exp)/2;
        !            40:        }
        !            41: 
        !            42:        if (ABS(z.im) > COSH_GOOD) {
        !            43:                complex_error(C_COSH_IM, z.im);
        !            44:                cos_y = sin_y = 0;
        !            45:        }
        !            46:        else {
        !            47:                cos_y = cos(z.im);
        !            48:                sin_y = sin(z.im);
        !            49:        }
        !            50: 
        !            51:        return complex(cos_y*cosh_x, sin_y*sinh_x);
        !            52: }

unix.superglobalmegacorp.com

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