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: #	@(#)tanh.s	5.1 (Berkeley) 5/8/85
   7: #
   8: #
   9: # double tanh(arg)
  10: # double arg
  11: # method: tanh(arg)=sinh(arg)/cosh(arg); if |arg|<0.5 sinh(9 is computed from
  12: # a polynomial approx otherwise from exp().
  13: # Only 1 call to exp() is made.
  14: # J F Jarvis, August 17, 1978
  15: .globl _tanh
  16: .globl _exp
  17: .text
  18: .align 1
  19: _tanh:
  20:         .word   0x07c0
  21:         bispsw  $0xe0
  22:         clrl    r10     # sign bit
  23:         movd    4(ap),r6
  24:         jgeq    t1
  25:         movw    $0x8000,r10
  26:         xorw2   r10,r6  # co|arg|
  27: t1:     cmpd    r6,$0d2.0e+1
  28:         jleq    t2
  29:         movd    $0d1.0e+0,r0
  30:         xorw2   r10,r0
  31:         ret
  32: t2:     movd    r6,-(sp)
  33:         calls   $2,_exp
  34:         movd    r0,r8
  35:         divd3   r8,$0d1.0e+0,-(sp)      # exp(-|arg|)
  36:         cmpd    r6,$0d0.5e+0
  37:         jgeq    t3
  38:         muld3   r6,r6,r0        # |arg|<0.5, sinh() from poly approx
  39:         polyd   r0,$5,pcoef
  40:         muld2   r6,r0
  41:         muld2   $0d2.0e+0,r0
  42:         jbr     t4
  43: t3:     subd3   (sp),r8,r0
  44: t4:                             # r0,1 = 2*sinh(|arg|)
  45:         addd3   (sp),r8,r2      # r2,3 = cosh(|arg|);
  46:         divd2   r2,r0   # r0,1 = tanh(|arg|)
  47:         xorw2   r10,r0  # r0,1 = tanh(arg)
  48:         ret
  49: .data
  50: .align  2
  51: pcoef:
  52:         .double 0d0.251726188251e-7
  53:         .double 0d0.275569807356154e-5
  54:         .double 0d0.1984127027907999e-3
  55:         .double 0d0.833333333307759961e-2
  56:         .double 0d0.16666666666667212324e+0
  57:         .double 0d0.99999999999999998116e+0

Defined functions

_tanh declared in line 15; defined in line 19; used 7 times
t1 defined in line 27; used 1 times
  • in line 24
t2 defined in line 32; used 1 times
  • in line 28
t3 defined in line 43; used 1 times
  • in line 37
t4 defined in line 44; used 1 times
  • in line 42

Defined variables

pcoef defined in line 51; used 1 times
  • in line 39
Last modified: 1985-05-08
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 871
Valid CSS Valid XHTML 1.0 Strict