1/*- 2 * Copyright (c) 1985 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Computer Consoles Inc. 7 * 8 * %sccs.include.redist.c% 9 * 10 * @(#)Klogf.s 7.1 (Berkeley) 12/06/90 11 */ 12 13#include "../tahoe/SYS.h" 14 15 .text 16ENTRY(Klogf, R5|R4|R3|R2) 17 subl3 $88,fp,sp 18 clrl 8(fp) 19 tstl 4(fp) 20 jgtr L53 21 movl small+4,r1 22 movl small,r0 23 ret 24L53: pushl 20(fp) # hfs 25 subl3 $88,fp,-(sp) # &exp 26 pushl 8(fp) # arg 27 pushl 4(fp) 28 callf $20,_Kfrexpf 29 ldd r0 30 # movl r1,-56(fp) 31 std -60(fp) # movl r0,-60(fp) 32 jbr L55 33L2000001: 34 pushl 20(fp) # hfs 35 ldd two # 2.0 36 pushd 37 ldd -60(fp) # x 38 pushd 39 callf $24,_Kmuld 40 ldd r0 41 std -60(fp) 42 subl2 $1,-88(fp) 43L55: cmpd2 -60(fp),half 44 jlss L2000001 45 cmpd2 -60(fp),_sqrto2 46 jgeq L59 47 pushl 20(fp) # hfs 48 ldd -60(fp) # x 49 pushd 50 ldd two # 2.0 51 pushd 52 callf $24,_Kmuld 53 ldd r0 54 std -60(fp) 55 subl2 $1,-88(fp) 56L59: pushl 20(fp) # hfs 57 ldd one # 1.0 58 pushd 59 ldd -60(fp) # x 60 pushd 61 callf $24,_Ksubd 62 ldd r0 63 std r2 64 pushl 20(fp) # hfs 65 ldd one # 1.0 66 pushd 67 ldd -60(fp) # x 68 pushd 69 callf $24,_Kaddd 70 ldd r0 71 std r4 72 pushl 20(fp) # hfs 73 ldd r4 # temp result of x-1 74 pushd 75 ldd r2 # temp result of x+1 76 pushd 77 callf $24,_Kdivd 78 ldd r0 79 std -68(fp) # z 80 pushl 20(fp) # hfs 81 pushd # z 82 pushd # z 83 callf $24,_Kmuld 84 ldd r0 85 std -76(fp) # zsq 86 pushl 20(fp) # hfs 87 ldd -76(fp) # zsq 88 pushd 89 ldd _p1 # p1 90 pushd 91 callf $24,_Kmuld 92 ldd r0 93 std r2 94 pushl 20(fp) # hfs 95 ldd _p0 # p0 96 pushd 97 ldd r2 98 pushd 99 callf $24,_Kaddd 100 ldd r0 101 std -84(fp) # temp 102 pushl 20(fp) # hfs 103 ldd -76(fp) # zsq 104 pushd 105 ldd _q1 106 pushd 107 callf $24,_Kmuld 108 ldd r0 109 std r2 110 pushl 20(fp) # hfs 111 ldd _q0 # q0 112 pushd 113 ldd r2 114 pushd 115 callf $24,_Kaddd 116 ldd r0 117 std r2 # temp result of (q1*zsq+q0) 118 pushl 20(fp) # hfs 119 ldd r2 120 pushd 121 ldd -84(fp) # temp 122 pushd 123 callf $24,_Kdivd 124 ldd r0 125 std -84(fp) # put in temp 126 pushl 20(fp) # hfs 127 ldd -68(fp) # z 128 pushd 129 ldd -84(fp) 130 pushd 131 callf $24,_Kmuld 132 ldd r0 133 std r2 134 pushl 20(fp) #hfs 135 pushl $0 # 0 pad 136 pushl -88(fp) # exp 137 pushl $0 # dummy 138 pushl $0 # dummy 139 callf $24,_Kcvtld 140 pushl 20(fp) # hfs 141 ldd _log2 # log2 142 pushd 143 pushl r1 # exp converted 144 pushl r0 145 callf $24,_Kmuld 146 ldd r0 147 std r4 148 pushl 20(fp) # hfs 149 ldd r2 # result of temp*z 150 pushd 151 ldd r4 152 pushd 153 callf $24,_Kaddd 154 ldd r0 155 cvdf 156 stf r0 157 clrl r1 158 ret 159 160 .data 161 .align 2 162_log2: .long 0x40317217, 0xf7d1cf7a # .double 0.69314718055994531 163_ln10: .long 0x41135d8d, 0xddaaa8ac # .double 2.3025850929940457 164_sqrto2:.long 0x403504f3, 0x33f9de65 # .double 0.70710678118654753 165_p0: .long 0xc154114d, 0xeb0ba468 # .double -3.31355617479 166_p1: .long 0x40654226, 0x56bd0c4c # .double 0.89554061525 167_q0: .long 0xc0d4114c, 0xfdc7df02 # .double -1.65677797691 168_q1: .long 0x40800000, 0x00000000 # .double 1 169small: .long 0xfffffffe, 0xfffffffe # .double -1.7014117331926443e+38 170half: .long 0x40000000, 0x00000000 # .double 0.5 171two: .long 0x41000000, 0x00000000 # .double 2 172one: .long 0x40800000, 0x00000000 # .double 1 173