Annotation of 43BSDReno/lib/libm/vax/sincos.s, revision 1.1.1.1

1.1       root        1: # Copyright (c) 1985 Regents of the University of California.
                      2: # All rights reserved.
                      3: #
                      4: # Redistribution and use in source and binary forms are permitted
                      5: # provided that the above copyright notice and this paragraph are
                      6: # duplicated in all such forms and that any documentation,
                      7: # advertising materials, and other materials related to such
                      8: # distribution and use acknowledge that the software was developed
                      9: # by the University of California, Berkeley.  The name of the
                     10: # University may not be used to endorse or promote products derived
                     11: # from this software without specific prior written permission.
                     12: # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     13: # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     14: # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     15: #
                     16: # All recipients should regard themselves as participants in an ongoing
                     17: # research project and hence should feel obligated to report their
                     18: # experiences (good or bad) with these elementary function codes, using
                     19: # the sendbug(8) program, to the authors.
                     20: #
                     21: #      @(#)sincos.s    5.3 (Berkeley) 6/30/88
                     22: #
                     23:        .data
                     24:        .align  2
                     25: _sccsid:
                     26: .asciz "@(#)sincos.s   1.1 (Berkeley) 8/21/85; 5.3 (ucb.elefunt) 6/30/88"
                     27: 
                     28: #  This is the implementation of Peter Tang's double precision  
                     29: #  sine and cosine for the VAX using Bob Corbett's argument reduction.
                     30: #  
                     31: #  Notes:
                     32: #       under 1,024,000 random arguments testing on [0,2*pi] 
                     33: #       sin() observed maximum error = 0.814 ulps
                     34: #       cos() observed maximum error = 0.792 ulps
                     35: #
                     36: # double sin(arg)
                     37: # double arg;
                     38: # method: true range reduction to [-pi/4,pi/4], P. Tang  &  B. Corbett
                     39: # S. McDonald, April 4,  1985
                     40: #
                     41:        .globl  _sin
                     42:        .text
                     43:        .align  1
                     44: 
                     45: _sin:  .word   0xffc           # save r2-r11
                     46:        movq    4(ap),r0
                     47:        bicw3   $0x807f,r0,r2
                     48:        beql    1f              # if x is zero or reserved operand then return x
                     49: #
                     50: # Save the PSL's IV & FU bits on the stack.
                     51: #
                     52:        movpsl  r2
                     53:        bicw3   $0xff9f,r2,-(sp)
                     54: #
                     55: # Clear the IV & FU bits.
                     56: #
                     57:        bicpsw  $0x0060
                     58: #
                     59: #  Entered by  sine    ; save  0  in  r4 .
                     60: #
                     61:        jsb     libm$argred
                     62:        movl    $0,r4
                     63:        jsb     libm$sincos
                     64:        bispsw  (sp)+
                     65: 1:     ret
                     66: 
                     67: #
                     68: # double cos(arg)
                     69: # double arg;
                     70: # method: true range reduction to [-pi/4,pi/4], P. Tang  &  B. Corbett
                     71: # S. McDonald, April 4,  1985
                     72: #
                     73:        .globl  _cos
                     74:        .text
                     75:        .align  1
                     76: 
                     77: _cos:  .word   0xffc           # save r2-r11
                     78:        movq    4(ap),r0
                     79:        bicw3   $0x7f,r0,r2
                     80:        cmpw    $0x8000,r2
                     81:        beql    1f              # if x is reserved operand then return x
                     82: #
                     83: # Save the PSL's IV & FU bits on the stack.
                     84: #
                     85:        movpsl  r2
                     86:        bicw3   $0xff9f,r2,-(sp)
                     87: #
                     88: # Clear the IV & FU bits.
                     89: #
                     90:        bicpsw  $0x0060
                     91: #
                     92: #  Entered by  cosine  ; save  1  in  r4 .
                     93: #
                     94:        jsb     libm$argred
                     95:        movl    $1,r4
                     96:        jsb     libm$sincos
                     97:        bispsw  (sp)+
                     98: 1:     ret

unix.superglobalmegacorp.com

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