1: #
   2: # Copyright (c) 1980 Regents of the University of California.
   3: # All rights reserved.  The Berkeley software License Agreement
   4: # specifies the terms and conditions for redistribution.
   5: #
   6: #	@(#)cbrt.s	5.1 (Berkeley) 5/8/85
   7: #
   8: #
   9: # double cbrt(arg)
  10: # double arg
  11: # no error exits
  12: #method: range reduction to [1/8,1], poly appox, newtons method
  13: # J F Jarvis, August 10,1978
  14: .globl  _cbrt
  15: .text
  16: .align  1
  17: _cbrt:
  18:         .word   0x00c0
  19:         bispsw  $0xe0
  20:         clrl    r3
  21:         movd    4(ap),r4
  22:         jgtr    range
  23:         jeql    retz
  24:         mnegd   r4,r4   # |arg| in r0,r1
  25:         movl    $0x100,r3       # sign bit of result
  26: range:
  27:         extzv   $7,$8,r4,r6
  28:         insv    $128,$7,$8,r4   # 0.5<= frac: r4,r5 <1.0
  29:         clrl    r7
  30:         ediv    $3,r6,r6,r7     # r6= expnt/3; r7= expnt%3
  31:         addb2   $86,r6
  32:         bisl2   r3,r6   # sign,exponent of result
  33:         polyf   r4,$3,pcoef     # initial estimate is Hart&Cheney CBRT 0642
  34:                                                 # D=4.1
  35:         muld3   r0,r0,r2        # Newtons method, iteration 1, H&C 6.1.10
  36:         divd3   r2,r4,r2
  37:         subd3   r2,r0,r2
  38:         muld2   third,r2
  39:         subd2   r2,r0   # D=8.2
  40:         muld3   r0,r0,r2        # iteration 2
  41:         divd3   r2,r4,r2
  42:         subd3   r2,r0,r2
  43:         muld2   third,r2
  44:         subd2   r2,r0
  45:         muld2   hc[r7],r0       # set range
  46:         insv    r6,$7,$9,r0     # set sign,exponent
  47:         ret
  48: retz:
  49:         clrd    r0
  50:         ret
  51: .data
  52: .align  2
  53: third: .double 0d0.33333333333333333333e+0
  54: hc:
  55:         .double 0d1.25992104989487316476e+0
  56:         .double 0d1.58740105196819947475e+0
  57:         .double 0d1.0e+0
  58: pcoef:
  59:         .float 0f0.1467073818e+0
  60:         .float 0f-0.5173964673e+0
  61:         .float 0f0.9319858515e+0
  62:         .float 0f0.4387762363e+0

Defined functions

_cbrt declared in line 14; defined in line 17; used 3 times
range defined in line 26; used 1 times
  • in line 22
retz defined in line 48; used 1 times
  • in line 23

Defined variables

hc defined in line 54; used 1 times
  • in line 45
pcoef defined in line 58; used 1 times
  • in line 33
third defined in line 53; used 2 times
Last modified: 1985-05-08
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 496
Valid CSS Valid XHTML 1.0 Strict