|
|
Power 6/32 Unix version 1.2b
/* @(#)exp.s 4.1/4.2 10/31/84 CCI-CPG */ /* Double-precision exponential function recoded with new algorithm polynomial at CCI-CPG. The coefficients are #1067 from Hart and etc. (18.08D) */ .data .comm _errno,4 .align 2 _p0: .long 0x45bd3d04, 0x7f734dbd # .double 1513.9067990543389 .align 2 _p1: .long 0x42a19dd4, 0x989f60db # .double 20.202065651286927 .align 2 _p2: .long 0x3dbd2e42, 0xab70bdab # .double 0.023093347753750234 .align 2 _q0: .long 0x468881b1, 0x7c3a652b # .double 4368.2116627275585 .align 2 _q1: .long 0x44692f28, 0x7ae89543 # .double 233.18421142748162 .align 2 _q2: .long 0x40800000, 0x00000000 # .double 1 .align 2 _log2e: .long 0x40b8aa3b, 0x295c17f1 # .double 1.4426950408889634 .align 2 _sqrt2: .long 0x40b504f3, 0x33f9de65 # .double 1.4142135623730951 .align 2 _maxf: .long 0x471c4000, 0x00000000 # .double 10000 .text LL0: .align 1 .globl _exp .data .align 2 L56: .long 0x40800000, 0x00000000 # .double 1 .text .data .align 2 L59: .long 0x7ffffffe, 0xfffffffe # .double 1.7014117331926443e+38 .text .data .align 2 L60: .long 0x40000000, 0x00000000 # .double 0.5 .text .set L51,0xc .data .text _exp: .word L51 subl3 $88,fp,sp tstl 4(fp) jneq L55 movl L56+4,r1 movl L56,r0 ret L55: lnd _maxf cmpd 4(fp) jleq L57 clrl r1 clrl r0 ret L57: cmpd2 4(fp),_maxf jleq L58 movl $34,_errno movl L59+4,r1 movl L59,r0 ret L58: ldd 4(fp) muld _log2e std 4(fp) pushl 8(fp) pushl 4(fp) callf $12,_floor ldd r0 cvdl -88(fp) cvld -88(fp) std r0 ldd 4(fp) subd r0 subd L60 std -60(fp) muld -60(fp) std -84(fp) ldd _p2 muld -84(fp) addd _p1 muld -84(fp) addd _p0 muld -60(fp) std -68(fp) ldd _q2 muld -84(fp) addd _q1 muld -84(fp) addd _q0 std -76(fp) pushl -88(fp) addd -68(fp) muld _sqrt2 std r0 ldd -76(fp) subd -68(fp) std r2 ldd r0 divd r2 pushd callf $16,_ldexp ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.