Annotation of coherent/b/lib/libm/i8087/cos87.m, revision 1.1

1.1     ! root        1: //////////
        !             2: / libm 8087
        !             3: / cos(d), sin(d)
        !             4: //////////
        !             5: 
        !             6: #include "larges.h"
        !             7: #include "ifno8087.h"
        !             8: 
        !             9:        .globl  cos_
        !            10:        .globl  sin_
        !            11:        .globl  tan
        !            12: 
        !            13: //////////
        !            14: / double
        !            15: / cos(angle)
        !            16: / double angle;
        !            17: /
        !            18: / double
        !            19: / sin(angle)
        !            20: / double angle;
        !            21: //////////
        !            22: 
        !            23: d      =       RASIZE          / arg offset
        !            24: 
        !            25: cos_:
        !            26:        ifno8087(_cos_)
        !            27:        clc                     / Clear Carry for cos.
        !            28:        jmp     0f
        !            29: 
        !            30: sin_:
        !            31:        ifno8087(_sin_)
        !            32:        stc                     / Set Carry for sin.
        !            33: 
        !            34: 0:     mov     bx, sp
        !            35:        fdld    Pss d(bx)       / Load argument d.
        !            36: 
        !            37:        pushf                   / Save the flags.
        !            38:        Gcall   tan             / Get x, y.
        !            39:        fld     st              / x, x, y
        !            40:        fmul    st,st           / x*x, x, y
        !            41:        fld     st2             / y, x*x, x, y
        !            42:        fmul    st,st           / y*y, x*x, x, y
        !            43:        fadd                    / x*x + y*y, x, y
        !            44:        fsqrt                   / r = sqrt(x*x + y*y), x, y
        !            45:        popf                    / Restore the flags.
        !            46:        jc      1f              / Carry set for sin.
        !            47:        fdiv                    / cos(d) = x / r, y.
        !            48:        fstp    st1             / Pop the stack, return result.
        !            49:        Gret
        !            50: 
        !            51: 1:     fstp    st1             / r, y.
        !            52:        fdiv                    / sin(d) = y / r
        !            53:        Gret

unix.superglobalmegacorp.com

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