Annotation of coherent/b/lib/libm/i8087/cosh87.m, revision 1.1.1.1

1.1       root        1: //////////
                      2: / libm 8087
                      3: / cosh(d), sinh(d)
                      4: //////////
                      5: 
                      6: #include "larges.h"
                      7: #include "ifno8087.h"
                      8: 
                      9:        .globl  cosh_
                     10:        .globl  sinh_
                     11:        .globl  exp
                     12: 
                     13: //////////
                     14: / double
                     15: / cosh(d)
                     16: / double d;
                     17: /
                     18: / double
                     19: / sinh(d)
                     20: / double d;
                     21: /
                     22: / cosh(d) = (exp(d) + 1/exp(d))/2
                     23: / sinh(d) = (exp(d) - 1/exp(d))/2
                     24: //////////
                     25: 
                     26: d      =       RASIZE          / arg offset
                     27: 
                     28: cosh_:
                     29:        ifno8087(_cosh_)
                     30:        clc                     / Clear Carry to indicate cosh.
                     31:        jmp     0f              / Go to common code.
                     32: 
                     33: sinh_:
                     34:        ifno8087(_sinh_)
                     35:        stc                     / Set Carry to indicate sinh.
                     36: 
                     37: 0:
                     38:        mov     bx, sp
                     39:        fdld    Pss d(bx)       / Load argument d.
                     40: 
                     41:        pushf                   / Save the Carry flag.
                     42:        Gcall   exp             / exp(d)
                     43:        fld     st              / exp(d), exp(d)
                     44:        fld1                    / 1, exp(d), exp(d)
                     45:        fdiv    st,st1          / 1/exp(d), exp(d)
                     46:        popf                    / Restore the flags.
                     47:        jnc     1f              / Jump if cosh.
                     48:        fchs                    / -1/exp(d), exp(d) for cosh
                     49: 
                     50: 1:     fadd                    / exp(d) +- 1/exp(d)
                     51:        fidiv   cs:two          / (exp(d) +- 1/exp(d)) / 2
                     52:        Gret
                     53: 
                     54: //////////
                     55: / data
                     56: //////////
                     57: two:   .word   2

unix.superglobalmegacorp.com

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