Annotation of 43BSD/usr.lib/libm/VAX/sincos.s, revision 1.1

1.1     ! root        1: # 
        !             2: # Copyright (c) 1985 Regents of the University of California.
        !             3: # 
        !             4: # Use and reproduction of this software are granted  in  accordance  with
        !             5: # the terms and conditions specified in  the  Berkeley  Software  License
        !             6: # Agreement (in particular, this entails acknowledgement of the programs'
        !             7: # source, and inclusion of this notice) with the additional understanding
        !             8: # that  all  recipients  should regard themselves as participants  in  an
        !             9: # ongoing  research  project and hence should  feel  obligated  to report
        !            10: # their  experiences (good or bad) with these elementary function  codes,
        !            11: # using "sendbug 4bsd-bugs@BERKELEY", to the authors.
        !            12: #
        !            13: 
        !            14: # @(#)sincos.s 1.1 (Berkeley) 8/21/85
        !            15: 
        !            16: #  This is the implementation of Peter Tang's double precision  
        !            17: #  sine and cosine for the VAX using Bob Corbett's argument reduction.
        !            18: #  
        !            19: #  Notes:
        !            20: #       under 1,024,000 random arguments testing on [0,2*pi] 
        !            21: #       sin() observed maximum error = 0.814 ulps
        !            22: #       cos() observed maximum error = 0.792 ulps
        !            23: #
        !            24: # double sin(arg)
        !            25: # double arg;
        !            26: # method: true range reduction to [-pi/4,pi/4], P. Tang  &  B. Corbett
        !            27: # S. McDonald, April 4,  1985
        !            28: #
        !            29:        .globl  _sin
        !            30:        .text
        !            31:        .align  1
        !            32: 
        !            33: _sin:  .word   0xffc           # save r2-r11
        !            34:        movq    4(ap),r0
        !            35:        bicw3   $0x807f,r0,r2
        !            36:        beql    1f              # if x is zero or reserved operand then return x
        !            37: #
        !            38: # Save the PSL's IV & FU bits on the stack.
        !            39: #
        !            40:        movpsl  r2
        !            41:        bicw3   $0xff9f,r2,-(sp)
        !            42: #
        !            43: # Clear the IV & FU bits.
        !            44: #
        !            45:        bicpsw  $0x0060
        !            46: #
        !            47: #  Entered by  sine    ; save  0  in  r4 .
        !            48: #
        !            49:        jsb     libm$argred
        !            50:        movl    $0,r4
        !            51:        jsb     libm$sincos
        !            52:        bispsw  (sp)+
        !            53: 1:     ret
        !            54: 
        !            55: #
        !            56: # double cos(arg)
        !            57: # double arg;
        !            58: # method: true range reduction to [-pi/4,pi/4], P. Tang  &  B. Corbett
        !            59: # S. McDonald, April 4,  1985
        !            60: #
        !            61:        .globl  _cos
        !            62:        .text
        !            63:        .align  1
        !            64: 
        !            65: _cos:  .word   0xffc           # save r2-r11
        !            66:        movq    4(ap),r0
        !            67:        bicw3   $0x7f,r0,r2
        !            68:        cmpw    $0x8000,r2
        !            69:        beql    1f              # if x is reserved operand then return x
        !            70: #
        !            71: # Save the PSL's IV & FU bits on the stack.
        !            72: #
        !            73:        movpsl  r2
        !            74:        bicw3   $0xff9f,r2,-(sp)
        !            75: #
        !            76: # Clear the IV & FU bits.
        !            77: #
        !            78:        bicpsw  $0x0060
        !            79: #
        !            80: #  Entered by  cosine  ; save  1  in  r4 .
        !            81: #
        !            82:        jsb     libm$argred
        !            83:        movl    $1,r4
        !            84:        jsb     libm$sincos
        !            85:        bispsw  (sp)+
        !            86: 1:     ret

unix.superglobalmegacorp.com

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