mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1743 lines
47 KiB
1743 lines
47 KiB
// TITLE("Alpha AXP Power function")
|
|
//++
|
|
//
|
|
// Copyright (c) 1993, 1994 Digital Equipment Corporation
|
|
//
|
|
// Module Name:
|
|
//
|
|
// pow.s
|
|
//
|
|
// Abstract:
|
|
//
|
|
// This module implements a high-performance Alpha AXP specific routine
|
|
// for IEEE double format power.
|
|
//
|
|
// Author:
|
|
//
|
|
// Martha Jaffe
|
|
//
|
|
// Environment:
|
|
//
|
|
// User mode.
|
|
//
|
|
// Revision History:
|
|
//
|
|
// Thomas Van Baak (tvb) 17-Feb-1994
|
|
//
|
|
// Adapted for NT.
|
|
//
|
|
//--
|
|
|
|
#include "ksalpha.h"
|
|
|
|
//
|
|
// Define DPML exception record for NT.
|
|
//
|
|
|
|
.struct 0
|
|
ErErr: .space 4 // error code
|
|
ErCxt: .space 4 // context
|
|
ErPlat: .space 4 // platform
|
|
ErEnv: .space 4 // environment
|
|
ErRet: .space 4 // return value pointer
|
|
ErName: .space 4 // function name
|
|
ErType: .space 8 // flags and fill
|
|
ErVal: .space 8 // return value
|
|
ErArg0: .space 8 // arg 0
|
|
ErArg1: .space 8 // arg 1
|
|
ErArg2: .space 8 // arg 2
|
|
ErArg3: .space 8 // arg 3
|
|
DpmlExceptionLength:
|
|
|
|
//
|
|
// Define stack frame.
|
|
//
|
|
|
|
.struct 0
|
|
Temp0: .space 8 //
|
|
Temp1: .space 8 //
|
|
ExRec: .space DpmlExceptionLength // exception record
|
|
.space 8 // for 16-byte stack alignment
|
|
FrameLength:
|
|
|
|
//
|
|
// Define lower and upper 32-bit parts of 64-bit double.
|
|
//
|
|
|
|
#define LowPart 0x0
|
|
#define HighPart 0x4
|
|
|
|
//
|
|
// Constants for masks and for fetching coefficients
|
|
//
|
|
|
|
#define P0 0x40
|
|
#define P1 0x48
|
|
#define P2 0x50
|
|
#define P3 0x58
|
|
#define P4 0x60
|
|
#define P5 0x68
|
|
#define P6 0x70
|
|
#define P7 0x78
|
|
#define P8 0x80
|
|
#define P9 0x88
|
|
#define P10 0x90
|
|
#define P11 0x98
|
|
#define P12 0xa0
|
|
|
|
//
|
|
// Error codes
|
|
//
|
|
|
|
#define POS_OVERFLOW 0x3d
|
|
#define NEG_OVERFLOW 0x3e
|
|
#define UNDERFLOW 0x3f
|
|
#define NEG_BASE 0x40
|
|
#define ZERO_TO_NEG 0x41
|
|
|
|
#define ONE_TO_INF 0x43
|
|
#define NEG_ZERO_TO_NEG 0x44
|
|
|
|
#define POS_INF_TO_POS 0x46
|
|
#define NEG_INF_TO_POS 0x47
|
|
#define NEG_INF_TO_POS_ODD 0x48
|
|
#define FINITE_TO_INF 0x49
|
|
#define INF_TO_NEG 0x4a
|
|
#define SMALL_TO_INF 0x4b
|
|
|
|
|
|
SBTTL("Power")
|
|
|
|
//++
|
|
//
|
|
// double
|
|
// pow (
|
|
// IN double x
|
|
// IN double y
|
|
// )
|
|
//
|
|
// Routine Description:
|
|
//
|
|
// This function returns the value of x to the power y.
|
|
//
|
|
// Arguments:
|
|
//
|
|
// x (f16) - Supplies the base argument value.
|
|
//
|
|
// y (f17) - Supplies the exponent argument value.
|
|
//
|
|
// Return Value:
|
|
//
|
|
// The double result is returned as the function value in f0.
|
|
//
|
|
//--
|
|
|
|
NESTED_ENTRY(pow, FrameLength, ra)
|
|
|
|
lda sp, -FrameLength(sp) // allocate stack frame
|
|
mov ra, a1 // save return address
|
|
|
|
PROLOGUE_END
|
|
|
|
cpys f16, f16, f1
|
|
ldah t0, 0x10(zero)
|
|
cpys f17, f17, f10
|
|
|
|
stt f16, Temp0(sp)
|
|
ldl v0, Temp0 + HighPart(sp)
|
|
ldah t1, 0x7fe0(zero)
|
|
mov zero, t2
|
|
subl v0, t0, t0
|
|
cmpult t0, t1, t0
|
|
ldah t1, 0x7ff0(zero)
|
|
bne t0, x_is_ok
|
|
|
|
stt f16, Temp0(sp)
|
|
ldl t0, Temp0 + HighPart(sp)
|
|
zapnot t0, 0xf, t3
|
|
and t0, t1, t4
|
|
srl t3, 31, t3
|
|
and t3, 1, t3
|
|
beq t4, LL00a0
|
|
|
|
cmpult t4, t1, t4
|
|
beq t4, LL0068
|
|
|
|
addl t3, 4, t5
|
|
br zero, examine_y
|
|
|
|
//
|
|
// Look at low part of x and then look at y
|
|
//
|
|
|
|
LL0068: ldah t6, 0x10(zero)
|
|
ldl t4, Temp0(sp)
|
|
lda t6, -1(t6)
|
|
and t0, t6, t6
|
|
stl t6, Temp0 + HighPart(sp)
|
|
bis t6, t4, t4
|
|
srl t6, 19, t6
|
|
beq t4, LL0098
|
|
|
|
and t6, 1, t6
|
|
mov t6, t5
|
|
br zero, examine_y
|
|
|
|
LL0098: addl t3, 2, t5
|
|
br zero, examine_y
|
|
|
|
LL00a0: ldl t7, Temp0(sp)
|
|
ldah t4, 0x10(zero)
|
|
lda t4, -1(t4)
|
|
and t0, t4, t0
|
|
bis t0, t7, t7
|
|
stl t0, Temp0 + HighPart(sp)
|
|
mov 6, t6
|
|
cmoveq t7, 8, t6
|
|
addl t3, t6, t5
|
|
|
|
//
|
|
// Examine y for exceptional cases
|
|
//
|
|
|
|
examine_y:
|
|
stt f17, Temp0(sp)
|
|
ldl t0, Temp0 + HighPart(sp)
|
|
zapnot t0, 0xf, t4
|
|
and t0, t1, t3
|
|
srl t4, 31, t4
|
|
and t4, 1, t4
|
|
beq t3, LL0128
|
|
|
|
cmpult t3, t1, t3
|
|
beq t3, LL00f0
|
|
|
|
addl t4, 4, t6
|
|
br zero, LL014c
|
|
|
|
|
|
LL00f0: ldah t3, 0x10(zero)
|
|
ldl t7, Temp0(sp)
|
|
lda t3, -1(t3)
|
|
and t0, t3, t3
|
|
stl t3, Temp0 + HighPart(sp)
|
|
bis t3, t7, t7
|
|
srl t3, 19, t3
|
|
beq t7, LL0120
|
|
|
|
and t3, 1, t3
|
|
mov t3, t6
|
|
br zero, LL014c
|
|
|
|
LL0120: addl t4, 2, t6
|
|
br zero, LL014c
|
|
|
|
LL0128: ldl a0, Temp0(sp)
|
|
ldah t7, 0x10(zero)
|
|
lda t7, -1(t7)
|
|
and t0, t7, t0
|
|
bis t0, a0, a0
|
|
stl t0, Temp0 + HighPart(sp)
|
|
mov 6, t3
|
|
cmoveq a0, 8, t3
|
|
addl t4, t3, t6
|
|
|
|
//
|
|
// Remove easy exceptional cases - y = 0, x or y NaN, inf to inf
|
|
//
|
|
|
|
LL014c: xor t6, 8, a0
|
|
xor t6, 9, t0
|
|
beq a0, return_1
|
|
|
|
beq t0, return_1
|
|
|
|
xor t5, 1, t7
|
|
beq t5, return_x
|
|
|
|
xor t6, 1, t3
|
|
beq t7, return_x
|
|
|
|
xor t5, 2, t4
|
|
beq t6, inf_to_inf
|
|
|
|
mov POS_INF_TO_POS, t0
|
|
beq t3, inf_to_inf
|
|
|
|
bne t4, LL01d0
|
|
|
|
xor t6, 2, a0
|
|
bne a0, LL0190
|
|
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Continue removing exceptional cases
|
|
//
|
|
|
|
LL0190: xor t6, 3, t7
|
|
bne t7, LL01a0
|
|
|
|
mov INF_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
LL01a0: xor t6, 4, t3
|
|
beq t3, LL01c8
|
|
|
|
xor t6, 6, t4
|
|
beq t4, LL01c8
|
|
|
|
xor t6, 5, a0
|
|
beq a0, LL01c0
|
|
|
|
xor t6, 7, t7
|
|
bne t7, LL01d0
|
|
|
|
|
|
LL01c0: mov INF_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
|
|
LL01c8: mov POS_INF_TO_POS, t0
|
|
br zero, except_disp
|
|
|
|
LL01d0: xor t5, 3, t3
|
|
bne t3, LL02a8
|
|
|
|
xor t6, 2, t4
|
|
bne t4, LL01e8
|
|
|
|
mov NEG_INF_TO_POS, t0
|
|
br zero, except_disp
|
|
|
|
|
|
LL01e8: xor t6, 3, a0
|
|
bne a0, LL01f8
|
|
|
|
mov INF_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
LL01f8: xor t6, 5, t7
|
|
xor t6, 7, v0
|
|
beq t7, LL02a0
|
|
|
|
mov NEG_INF_TO_POS, t0
|
|
beq v0, LL02a0
|
|
|
|
xor t6, 6, t6
|
|
bne t6, LL0218
|
|
|
|
br zero, except_disp
|
|
|
|
//
|
|
// x is negative, check if y is integral
|
|
//
|
|
|
|
LL0218: cpys f31, f17, f0
|
|
mov zero, t2
|
|
ldt f11, Two52
|
|
cmptle f0, f11, f12
|
|
fbeq f12, LL0240
|
|
addt f0, f11, f13
|
|
subt f13, f11, f11
|
|
cmpteq f0, f11, f11
|
|
fbeq f11, LL0244
|
|
|
|
LL0240: mov 1, t2
|
|
|
|
//
|
|
// Remove non-integral y, then look for y even
|
|
//
|
|
|
|
LL0244: beq t2, LL0298
|
|
|
|
mov zero, t3
|
|
ldt f12, Two53
|
|
mov NEG_INF_TO_POS_ODD, t4
|
|
cmoveq t3, NEG_INF_TO_POS, t4
|
|
cmptle f12, f0, f13
|
|
mov t4, t0
|
|
fbeq f13, LL0270
|
|
br zero, except_disp
|
|
|
|
LL0270: addt f0, f12, f11
|
|
mov zero, t3
|
|
subt f11, f12, f11
|
|
cmpteq f11, f0, f0
|
|
fbne f0, LL0288
|
|
mov 1, t3
|
|
|
|
//
|
|
// Remove minus infinity to non-integral powers, error cases
|
|
//
|
|
|
|
LL0288: mov NEG_INF_TO_POS_ODD, t4
|
|
cmoveq t3, NEG_INF_TO_POS, t4
|
|
mov t4, t0
|
|
br zero, except_disp
|
|
|
|
LL0298: mov NEG_INF_TO_POS, t0
|
|
br zero, except_disp
|
|
|
|
LL02a0: mov INF_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
LL02a8: xor t5, 8, a0
|
|
bne a0, LL02f0
|
|
|
|
xor t6, 2, t7
|
|
bne t7, LL02c0
|
|
|
|
cpys f31, f31, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Remove zero to negative, error cases
|
|
//
|
|
|
|
LL02c0: xor t6, 3, t3
|
|
bne t3, LL02d0
|
|
|
|
mov ZERO_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
LL02d0: xor t6, 4, t4
|
|
xor t6, 6, t6
|
|
beq t4, LL02e8
|
|
|
|
mov ZERO_TO_NEG, t0
|
|
beq t6, LL02e8
|
|
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Zero to positive powers is ok
|
|
//
|
|
|
|
LL02e8: cpys f31, f31, f0
|
|
br zero, done
|
|
|
|
LL02f0: xor t5, 9, a0
|
|
bne a0, LL03e8
|
|
|
|
xor t6, 2, t7
|
|
bne t7, LL0308
|
|
|
|
cpys f31, f31, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Zero to negative powers is error
|
|
//
|
|
|
|
LL0308: xor t6, 3, t3
|
|
bne t3, LL0318
|
|
|
|
mov ZERO_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
LL0318: xor t6, 6, t4
|
|
bne t4, LL0328
|
|
|
|
cpys f31, f31, f0
|
|
br zero, done
|
|
|
|
|
|
LL0328: xor t6, 7, t5
|
|
bne t5, LL0338
|
|
|
|
mov ZERO_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Check if y is integral
|
|
//
|
|
|
|
LL0338: cpys f31, f17, f13
|
|
mov zero, t5
|
|
ldt f12, Two52
|
|
cmptle f13, f12, f11
|
|
fbeq f11, LL0360
|
|
addt f13, f12, f0
|
|
subt f0, f12, f0
|
|
cmpteq f13, f0, f0
|
|
fbeq f0, LL0364
|
|
|
|
LL0360: mov 1, t5
|
|
|
|
//
|
|
// Remove non-integral y cases and check for y even
|
|
//
|
|
|
|
LL0364: cmpult zero, t5, a0
|
|
beq a0, LL03a0
|
|
|
|
mov zero, t6
|
|
ldt f11, Two53
|
|
cmptle f11, f13, f12
|
|
fbeq f12, LL0388
|
|
br zero, LL03a0
|
|
|
|
|
|
LL0388: addt f13, f11, f0
|
|
mov zero, t6
|
|
subt f0, f11, f0
|
|
cmpteq f0, f13, f0
|
|
fbne f0, LL03a0
|
|
mov 1, t6
|
|
|
|
//
|
|
// x is (negative) zero, look at y (if y > 0, ok; if y < 0, error case)
|
|
//
|
|
|
|
LL03a0: cmptlt f31, f17, f12
|
|
fbeq f12, LL03c8
|
|
beq a0, LL03c0
|
|
|
|
cpys f16, f16, f0
|
|
bne t6, done
|
|
|
|
cpys f31, f31, f0
|
|
br zero, done
|
|
|
|
LL03c0: cpys f31, f31, f0
|
|
br zero, done
|
|
|
|
|
|
LL03c8: fbge f17, LL03e8
|
|
beq a0, LL03e0
|
|
|
|
mov NEG_ZERO_TO_NEG, t7
|
|
cmoveq t6, ZERO_TO_NEG, t7
|
|
mov t7, t0
|
|
br zero, except_disp
|
|
|
|
LL03e0: mov ZERO_TO_NEG, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// y is infinite
|
|
//
|
|
|
|
LL03e8: xor t5, 6, t3
|
|
bne t3, LL0410
|
|
|
|
xor t6, 2, t4
|
|
bne t4, LL0400
|
|
|
|
mov SMALL_TO_INF, t0
|
|
br zero, except_disp
|
|
|
|
|
|
LL0400: xor t6, 3, t6
|
|
bne t6, LL04b0
|
|
|
|
mov FINITE_TO_INF, t0
|
|
br zero, except_disp
|
|
|
|
|
|
LL0410: xor t5, 7, t5
|
|
bne t5, LL04f8
|
|
|
|
xor t6, 2, a0
|
|
bne a0, LL0428
|
|
|
|
mov SMALL_TO_INF, t0
|
|
br zero, except_disp
|
|
|
|
|
|
LL0428: xor t6, 3, t7
|
|
bne t7, LL0438
|
|
|
|
mov FINITE_TO_INF, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Check if y is integral
|
|
//
|
|
|
|
LL0438: xor t6, 6, t3
|
|
beq t3, LL04f0
|
|
|
|
xor t6, 7, t6
|
|
beq t6, LL04f0
|
|
|
|
cpys f31, f17, f11
|
|
mov zero, t4
|
|
ldt f13, Two52
|
|
cmptle f11, f13, f12
|
|
fbeq f12, LL0470
|
|
addt f11, f13, f0
|
|
subt f0, f13, f0
|
|
cmpteq f11, f0, f0
|
|
fbeq f0, LL0474
|
|
|
|
LL0470: mov 1, t4
|
|
|
|
//
|
|
// Remove non-integral cases, look for y even
|
|
//
|
|
|
|
LL0474: beq t4, LL04e8
|
|
|
|
mov zero, v0
|
|
ldt f12, Two53
|
|
cmptle f12, f11, f13
|
|
fbeq f13, LL0490
|
|
br zero, LL04a8
|
|
|
|
LL0490: addt f11, f12, f0
|
|
mov zero, v0
|
|
subt f0, f12, f0
|
|
cmpteq f0, f11, f0
|
|
fbne f0, LL04a8
|
|
mov 1, v0
|
|
|
|
LL04a8: cpys f31, f16, f16
|
|
cmpult zero, v0, t2
|
|
|
|
//
|
|
// Handle denorms
|
|
//
|
|
|
|
LL04b0:
|
|
ldah t0, 0x3ff0(zero)
|
|
ldt f13, Two52
|
|
ldah t3, 0x4320(zero)
|
|
cpyse f13, f16, f12
|
|
subt f12, f13, f16
|
|
stt f16, Temp0(sp)
|
|
ldl a0, Temp0 + HighPart(sp)
|
|
and a0, t1, t7
|
|
subl t7, t0, t0
|
|
subl a0, t0, a0
|
|
subl t0, t3, t0
|
|
mov t0, t4
|
|
br zero, Compute
|
|
|
|
//
|
|
// Negative x to finite non-integral power is error
|
|
//
|
|
|
|
LL04e8: mov NEG_BASE, t0
|
|
br zero, except_disp
|
|
|
|
LL04f0: mov NEG_BASE, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Check for integral y
|
|
//
|
|
|
|
LL04f8: xor t6, 2, t5
|
|
xor t6, 3, t7
|
|
beq t5, LL05b0
|
|
|
|
xor t6, 6, t3
|
|
beq t7, LL05b0
|
|
|
|
beq t3, LL05a8
|
|
|
|
xor t6, 7, t6
|
|
beq t6, LL05a8
|
|
|
|
cpys f31, f17, f11
|
|
mov zero, t4
|
|
ldt f0, Two52
|
|
cmptle f11, f0, f12
|
|
fbeq f12, LL0540
|
|
addt f11, f0, f13
|
|
subt f13, f0, f0
|
|
cmpteq f11, f0, f0
|
|
fbeq f0, LL0544
|
|
|
|
//
|
|
// Sort out non-integral y
|
|
//
|
|
|
|
LL0540: mov 1, t4
|
|
|
|
//
|
|
// y is integral - is it even?
|
|
//
|
|
|
|
LL0544: beq t4, non_int_y
|
|
|
|
ornot zero, zero, t5
|
|
ldt f12, Two53
|
|
srl t5, 33, t5
|
|
mov zero, t0
|
|
cmpult zero, t0, t2
|
|
cmptle f12, f11, f13
|
|
fbeq f13, LL0570
|
|
and v0, t5, v0
|
|
br zero, x_is_ok
|
|
|
|
LL0570: addt f11, f12, f0
|
|
mov zero, t0
|
|
subt f0, f12, f0
|
|
cmpteq f0, f11, f0
|
|
fbne f0, LL0588
|
|
mov 1, t0
|
|
|
|
LL0588: ornot zero, zero, t5
|
|
srl t5, 33, t5
|
|
cmpult zero, t0, t2
|
|
and v0, t5, v0
|
|
br zero, x_is_ok
|
|
|
|
//
|
|
// Non-integral y and negative x is error case
|
|
//
|
|
|
|
non_int_y:
|
|
mov NEG_BASE, t0
|
|
br zero, except_disp
|
|
|
|
LL05a8: mov NEG_BASE, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// We will be able to compute power
|
|
//
|
|
|
|
LL05b0: ornot zero, zero, t7
|
|
srl t7, 33, t7
|
|
and v0, t7, v0
|
|
|
|
//
|
|
// Get x's exponent from the hi word of x
|
|
//
|
|
|
|
x_is_ok:
|
|
and v0, t1, t3
|
|
ldah t6, 0x3ff0(zero)
|
|
subl t3, t6, t3
|
|
mov t3, t4
|
|
subl v0, t4, a0
|
|
|
|
//
|
|
// Computation of log2(x), product y*log2(x), and 2^prod
|
|
//
|
|
|
|
Compute:
|
|
ldah t0, 32(zero)
|
|
ldah t5, 0x10(zero)
|
|
lda t5, 0x1000(t5)
|
|
lda t0, -0x2000(t0)
|
|
addl a0, t5, t5
|
|
and t5, t0, t0
|
|
sra t0, 8, t0
|
|
lda t6, __pow_t_table
|
|
addl t6, t0, t0
|
|
stt f16, Temp0(sp)
|
|
stl a0, Temp0 + HighPart(sp)
|
|
ldt f13, P9(t0)
|
|
ldt f12, Temp0(sp)
|
|
sra t4, 0xf, t4
|
|
ldt f16, One
|
|
ldah a0, 1(zero)
|
|
ldt f18, P2(t6)
|
|
lda a0, -P0(a0)
|
|
addt f12, f13, f11
|
|
ldt f20, P1(t6)
|
|
subt f12, f13, f12
|
|
lda t7, 0xf60(zero)
|
|
lda v0, -0x20(zero)
|
|
divt f16, f11, f11
|
|
cvtts f12, f19
|
|
mult f12, f11, f0
|
|
addt f0, f0, f0
|
|
cvtts f0, f14
|
|
mult f0, f0, f15
|
|
mult f13, f14, f13
|
|
mult f18, f15, f18
|
|
subt f12, f13, f13
|
|
addt f18, f20, f18
|
|
ldt f20, P0(t6)
|
|
subt f12, f19, f12
|
|
mult f19, f14, f19
|
|
stq t4, Temp0(sp)
|
|
ldt f21, P11(t0)
|
|
addt f13, f13, f13
|
|
mult f18, f15, f18
|
|
mult f12, f14, f12
|
|
subt f13, f19, f13
|
|
addt f18, f20, f18
|
|
ldt f20, Temp0(sp)
|
|
ldt f19, 8(t6)
|
|
stt f17, Temp0(sp)
|
|
cvtqt f20, f20
|
|
ldl t3, Temp0 + HighPart(sp)
|
|
mult f14, f19, f19
|
|
subt f13, f12, f12
|
|
mult f18, f15, f15
|
|
ldt f18, 0(t6)
|
|
ldt f13, P12(t0)
|
|
and t3, t1, t3
|
|
sra t3, 0xf, t3
|
|
addt f20, f21, f20
|
|
cmple t3, a0, a0
|
|
mult f12, f11, f11
|
|
mult f15, f0, f0
|
|
ldt f15, 0x10(t6)
|
|
ldah t0, 1(zero)
|
|
lda t0, -0xd80(t0)
|
|
addt f20, f19, f21
|
|
mult f14, f15, f14
|
|
mult f11, f18, f11
|
|
addt f13, f0, f0
|
|
subt f21, f20, f20
|
|
cvtts f21, f12
|
|
addt f0, f11, f0
|
|
subt f19, f20, f19
|
|
subt f21, f12, f21
|
|
addt f0, f14, f0
|
|
addt f0, f19, f0
|
|
addt f0, f21, f21
|
|
beq a0, bad_y
|
|
|
|
stt f12, Temp0(sp)
|
|
ldl t4, Temp0 + HighPart(sp)
|
|
and t4, t1, t4
|
|
sra t4, 0xf, t4
|
|
addl t4, t3, t3
|
|
subl t3, t0, t5
|
|
beq t4, x_was_1
|
|
|
|
cmpule t5, t7, t5
|
|
beq t5, problem_w_product
|
|
|
|
cvtts f17, f18
|
|
mult f21, f17, f11
|
|
mult f18, f12, f13
|
|
subt f17, f18, f18
|
|
cvttq f13, f15
|
|
mult f18, f12, f18
|
|
stt f15, Temp1(sp)
|
|
ldq a0, Temp1(sp)
|
|
addt f11, f18, f11
|
|
addl zero, a0, a0
|
|
stq a0, Temp1(sp)
|
|
and a0, 31, t4
|
|
ldt f20, Temp1(sp)
|
|
addl t4, t4, t4
|
|
ldt f19, P8(t6)
|
|
s8addl t4, zero, t4
|
|
ldt f0, P7(t6)
|
|
addl t6, t4, t4
|
|
cvtqt f20, f20
|
|
ldt f15, P6(t6)
|
|
ldt f14, P5(t6)
|
|
and a0, v0, v0
|
|
ldt f18, P4(t6)
|
|
subt f13, f20, f13
|
|
ldt f20, P3(t6)
|
|
ldah t6, 1(zero)
|
|
lda t6, -P4(t6)
|
|
addt f13, f11, f11
|
|
ldt f13, 0x10a8(t4)
|
|
mult f19, f11, f19
|
|
addt f19, f0, f0
|
|
ldt f19, 0x10b0(t4)
|
|
mult f0, f11, f0
|
|
addt f0, f15, f0
|
|
mult f0, f11, f0
|
|
addt f0, f14, f0
|
|
mult f0, f11, f0
|
|
addt f0, f18, f0
|
|
mult f0, f11, f0
|
|
addt f0, f20, f0
|
|
mult f0, f11, f0
|
|
mult f0, f13, f0
|
|
addt f0, f19, f0
|
|
addt f13, f0, f0
|
|
stt f0, Temp1(sp)
|
|
ldl t5, Temp1 + HighPart(sp)
|
|
and t5, t1, t5
|
|
sra t5, 0xf, t5
|
|
addl v0, t5, t5
|
|
subl t5, 32, t5
|
|
cmpule t5, t6, t5
|
|
beq t5, problem_w_result
|
|
|
|
stt f0, Temp1(sp)
|
|
ldl t7, Temp1 + HighPart(sp)
|
|
sll v0, 0xf, a0
|
|
addl t7, a0, t7
|
|
stl t7, Temp1 + HighPart(sp)
|
|
ldt f0, Temp1(sp)
|
|
beq t2, done
|
|
|
|
cpysn f0, f0, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Final result will underflow or overflow
|
|
//
|
|
|
|
problem_w_result:
|
|
blt v0, underflows
|
|
|
|
mov NEG_OVERFLOW, t4
|
|
cmoveq t2, POS_OVERFLOW, t4
|
|
mov t4, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Product y * log2(x) will underflow or overflow
|
|
//
|
|
|
|
problem_w_product:
|
|
cmplt t3, t0, t0
|
|
beq t0, might_overflow
|
|
|
|
ldt f15, MinusOne
|
|
bne t2, correct_underflow
|
|
|
|
cpys f16, f16, f15
|
|
|
|
//
|
|
// Product y * log2(x) underflows - return + or - 1
|
|
//
|
|
|
|
correct_underflow:
|
|
cpys f15, f15, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Result might overflow or underflow
|
|
//
|
|
|
|
might_overflow:
|
|
cmptlt f31, f12, f14
|
|
fbeq f14, check_further
|
|
cmptlt f31, f17, f18
|
|
fbne f18, overflows
|
|
|
|
//
|
|
// Check further
|
|
//
|
|
|
|
check_further:
|
|
fbge f12, underflows
|
|
fbge f17, underflows
|
|
|
|
//
|
|
// Definite overflow
|
|
//
|
|
|
|
overflows:
|
|
mov NEG_OVERFLOW, t4
|
|
cmoveq t2, POS_OVERFLOW, t4
|
|
mov t4, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// Definite underflow
|
|
//
|
|
|
|
underflows:
|
|
mov UNDERFLOW, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// x was 1, return + or -1
|
|
//
|
|
|
|
x_was_1:
|
|
ldt f20, MinusOne
|
|
bne t2, correct_sgn_1
|
|
|
|
cpys f16, f16, f20
|
|
|
|
//
|
|
// returning -1
|
|
//
|
|
|
|
correct_sgn_1:
|
|
cpys f20, f20, f0
|
|
br zero, done
|
|
|
|
//
|
|
// y was NaN or inf
|
|
//
|
|
|
|
bad_y: stt f17, Temp1(sp)
|
|
ldl t6, Temp1 + HighPart(sp)
|
|
zapnot t6, 0xf, t7
|
|
and t6, t1, t5
|
|
srl t7, 31, t7
|
|
cmpult t5, t1, t1
|
|
and t7, 1, t7
|
|
beq t5, LL0908
|
|
|
|
beq t1, LL08d0
|
|
|
|
addl t7, 4, v0
|
|
br zero, LL092c
|
|
|
|
//
|
|
// Look at lo part of y to distinguish NaN from infinity
|
|
//
|
|
|
|
LL08d0: ldah t4, 0x10(zero)
|
|
ldl t3, Temp1(sp)
|
|
lda t4, -1(t4)
|
|
and t6, t4, t4
|
|
bis t4, t3, t3
|
|
stl t4, Temp1 + HighPart(sp)
|
|
beq t3, LL0900
|
|
|
|
srl t4, 19, t4
|
|
and t4, 1, t4
|
|
mov t4, v0
|
|
br zero, LL092c
|
|
|
|
LL0900: addl t7, 2, v0
|
|
br zero, LL092c
|
|
|
|
LL0908: ldl t2, Temp1(sp)
|
|
ldah a0, 0x10(zero)
|
|
lda a0, -1(a0)
|
|
and t6, a0, t6
|
|
bis t6, t2, t2
|
|
stl t6, Temp1 + HighPart(sp)
|
|
mov 6, t5
|
|
cmoveq t2, 8, t5
|
|
addl t7, t5, v0
|
|
|
|
LL092c: xor v0, 1, t0
|
|
beq v0, y_was_NaN
|
|
|
|
beq t0, y_was_NaN
|
|
|
|
addt f12, f21, f12
|
|
mov ONE_TO_INF, t0
|
|
fbne f12, y_is_inf
|
|
br zero, except_disp
|
|
|
|
//
|
|
// y is infinite - look at sign of y and at log2(x) to distinguish cases
|
|
//
|
|
|
|
y_is_inf:
|
|
xor v0, 2, v0
|
|
bne v0, LL0970
|
|
|
|
mov FINITE_TO_INF, t3
|
|
mov SMALL_TO_INF, t4
|
|
fblt f12, y_inf_x_small
|
|
mov t3, t0
|
|
br zero, except_disp
|
|
|
|
//
|
|
// x was small
|
|
//
|
|
|
|
y_inf_x_small:
|
|
mov t4, t0
|
|
br zero, except_disp
|
|
|
|
LL0970: cmptlt f31, f12, f12
|
|
mov FINITE_TO_INF, a0
|
|
mov SMALL_TO_INF, t2
|
|
mov a0, t0
|
|
fbne f12, LL0988
|
|
br zero, except_disp
|
|
|
|
LL0988: mov t2, t0
|
|
|
|
//
|
|
// The exception dispatch and return
|
|
//
|
|
|
|
except_disp:
|
|
lda t1, powName
|
|
stl t1, ExRec + ErName(sp)
|
|
ldah v0, 0x800(zero)
|
|
stt f1, ExRec + ErArg0(sp)
|
|
bis t0, v0, v0
|
|
stt f10, ExRec + ErArg1(sp)
|
|
|
|
stl v0, ExRec + ErErr(sp)
|
|
lda v0, ExRec(sp)
|
|
bsr ra, __dpml_exception
|
|
ldt f0, 0(v0)
|
|
br zero, done
|
|
|
|
//
|
|
// Return y
|
|
//
|
|
|
|
y_was_NaN:
|
|
cpys f17, f17, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Return y
|
|
//
|
|
|
|
inf_to_inf:
|
|
cpys f17, f17, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Return x - was NaN
|
|
//
|
|
|
|
return_x:
|
|
cpys f16, f16, f0
|
|
br zero, done
|
|
|
|
//
|
|
// Return 1 - x^0 is 1
|
|
//
|
|
|
|
return_1:
|
|
ldt f0, One
|
|
|
|
//
|
|
// Return with result in f0.
|
|
//
|
|
|
|
done:
|
|
lda sp, FrameLength(sp) // deallocate stack frame
|
|
ret zero, (a1) // return through saved ra in a1
|
|
|
|
.end pow
|
|
|
|
.rdata
|
|
.align 3
|
|
|
|
//
|
|
// Define floating point constants.
|
|
//
|
|
|
|
MinusOne:
|
|
.double -1.0
|
|
|
|
One: .double 1.0
|
|
|
|
Two: .double 2.0
|
|
|
|
Two52: .quad 0x4330000000000000 // 2^52 (4503599627370496)
|
|
|
|
Two53: .quad 0x4340000000000000 // 2^53 (9007199254740992)
|
|
|
|
//
|
|
// Function name for dpml_exception.
|
|
//
|
|
|
|
powName:
|
|
.ascii "pow\0"
|
|
|
|
//
|
|
// Power lookup table.
|
|
//
|
|
|
|
.align 3
|
|
__pow_t_table:
|
|
|
|
.double 4.6166241308446828e+001
|
|
.double 4.6166241645812988e+001
|
|
.double -3.3736615924573241e-007
|
|
.double 3.8471867757009264e+000
|
|
.double 5.7707958264828652e-001
|
|
.double 2.1660849395913177e-002
|
|
.double 2.3459849132431777e-004
|
|
.double 1.6938410381884394e-006
|
|
.double 3.8471867757039022e+000
|
|
.double 5.7707801635298150e-001
|
|
.double 1.0305010261356369e-001
|
|
.double 2.1660849392498290e-002
|
|
.double 2.3459619820224674e-004
|
|
.double 1.6938509724129059e-006
|
|
.double 9.1725627021532984e-009
|
|
.double 3.9737294056403906e-011
|
|
.double 1.4345602999278721e-013
|
|
.double 1.0000000000000000e+000
|
|
.double 0.0000000000000000e+000
|
|
.double 0.0000000000000000e+000
|
|
.double 0.0000000000000000e+000
|
|
.double 1.0078125000000000e+000
|
|
.double 3.5927217354413182e-001
|
|
.double 3.5927217453718185e-001
|
|
.double -9.9305000343586817e-010
|
|
.double 1.0156250000000000e+000
|
|
.double 7.1577001691054432e-001
|
|
.double 7.1577002108097076e-001
|
|
.double -4.1704264996119296e-009
|
|
.double 1.0234375000000000e+000
|
|
.double 1.0695360491984089e+000
|
|
.double 1.0695360600948334e+000
|
|
.double -1.0896424445460407e-008
|
|
.double 1.0312500000000000e+000
|
|
.double 1.4206118194705100e+000
|
|
.double 1.4206118285655975e+000
|
|
.double -9.0950875292804230e-009
|
|
.double 1.0390625000000000e+000
|
|
.double 1.7690379360380672e+000
|
|
.double 1.7690379321575165e+000
|
|
.double 3.8805507600434525e-009
|
|
.double 1.0468750000000000e+000
|
|
.double 2.1148540946487180e+000
|
|
.double 2.1148540973663330e+000
|
|
.double -2.7176151540756356e-009
|
|
.double 1.0546875000000000e+000
|
|
.double 2.4580991056265886e+000
|
|
.double 2.4580991268157959e+000
|
|
.double -2.1189207347028338e-008
|
|
.double 1.0625000000000000e+000
|
|
.double 2.7988109200108608e+000
|
|
.double 2.7988108992576599e+000
|
|
.double 2.0753201152020737e-008
|
|
.double 1.0703125000000000e+000
|
|
.double 3.1370266547368550e+000
|
|
.double 3.1370266675949097e+000
|
|
.double -1.2858054762507897e-008
|
|
.double 1.0781250000000000e+000
|
|
.double 3.4727826169014095e+000
|
|
.double 3.4727826118469238e+000
|
|
.double 5.0544858918073901e-009
|
|
.double 1.0859375000000000e+000
|
|
.double 3.8061143271522377e+000
|
|
.double 3.8061143159866333e+000
|
|
.double 1.1165604490890214e-008
|
|
.double 1.0937500000000000e+000
|
|
.double 4.1370565422389269e+000
|
|
.double 4.1370565891265869e+000
|
|
.double -4.6887660344069263e-008
|
|
.double 1.1015625000000000e+000
|
|
.double 4.4656432767613934e+000
|
|
.double 4.4656432867050171e+000
|
|
.double -9.9436233738581598e-009
|
|
.double 1.1093750000000000e+000
|
|
.double 4.7919078241498259e+000
|
|
.double 4.7919077873229980e+000
|
|
.double 3.6826827918140897e-008
|
|
.double 1.1171875000000000e+000
|
|
.double 5.1158827769084612e+000
|
|
.double 5.1158827543258667e+000
|
|
.double 2.2582594631858872e-008
|
|
.double 1.1250000000000000e+000
|
|
.double 5.4376000461539959e+000
|
|
.double 5.4376000165939331e+000
|
|
.double 2.9560062507570542e-008
|
|
.double 1.1328125000000000e+000
|
|
.double 5.7570908804779029e+000
|
|
.double 5.7570909261703491e+000
|
|
.double -4.5692446126210781e-008
|
|
.double 1.1406250000000000e+000
|
|
.double 6.0743858841605514e+000
|
|
.double 6.0743858814239502e+000
|
|
.double 2.7366011603360492e-009
|
|
.double 1.1484375000000000e+000
|
|
.double 6.3895150347636607e+000
|
|
.double 6.3895150423049927e+000
|
|
.double -7.5413319929755668e-009
|
|
.double 1.1562500000000000e+000
|
|
.double 6.7025077001263931e+000
|
|
.double 6.7025077342987061e+000
|
|
.double -3.4172313035237769e-008
|
|
.double 1.1640625000000000e+000
|
|
.double 7.0133926547891701e+000
|
|
.double 7.0133926868438721e+000
|
|
.double -3.2054701778734244e-008
|
|
.double 1.1718750000000000e+000
|
|
.double 7.3221980958681883e+000
|
|
.double 7.3221981525421143e+000
|
|
.double -5.6673926187592411e-008
|
|
.double 1.1796875000000000e+000
|
|
.double 7.6289516584025252e+000
|
|
.double 7.6289516687393188e+000
|
|
.double -1.0336793838283408e-008
|
|
.double 1.1875000000000000e+000
|
|
.double 7.9336804301947357e+000
|
|
.double 7.9336804151535034e+000
|
|
.double 1.5041232383423873e-008
|
|
.double 1.1953125000000000e+000
|
|
.double 8.2364109661648559e+000
|
|
.double 8.2364108562469482e+000
|
|
.double 1.0991790843498190e-007
|
|
.double 1.2031250000000000e+000
|
|
.double 8.5371693022368440e+000
|
|
.double 8.5371692180633545e+000
|
|
.double 8.4173489144335138e-008
|
|
.double 1.2109375000000000e+000
|
|
.double 8.8359809687756012e+000
|
|
.double 8.8359808921813965e+000
|
|
.double 7.6594205329271174e-008
|
|
.double 1.2187500000000000e+000
|
|
.double 9.1328710035919478e+000
|
|
.double 9.1328709125518799e+000
|
|
.double 9.1040067056405146e-008
|
|
.double 1.2265625000000000e+000
|
|
.double 9.4278639645320634e+000
|
|
.double 9.4278640747070312e+000
|
|
.double -1.1017496704487870e-007
|
|
.double 1.2343750000000000e+000
|
|
.double 9.7209839416672938e+000
|
|
.double 9.7209839820861816e+000
|
|
.double -4.0418888058951836e-008
|
|
.double 1.2421875000000000e+000
|
|
.double 1.0012254569099371e+001
|
|
.double 1.0012254476547241e+001
|
|
.double 9.2552130332567041e-008
|
|
.double 1.2500000000000000e+000
|
|
.double 1.0301699036395595e+001
|
|
.double 1.0301698923110962e+001
|
|
.double 1.1328463321778773e-007
|
|
.double 1.2578125000000000e+000
|
|
.double 1.0589340099667742e+001
|
|
.double 1.0589340209960937e+001
|
|
.double -1.1029319414844424e-007
|
|
.double 1.2656250000000000e+000
|
|
.double 1.0875200092307992e+001
|
|
.double 1.0875200033187866e+001
|
|
.double 5.9120125015141084e-008
|
|
.double 1.2734375000000000e+000
|
|
.double 1.1159300935394482e+001
|
|
.double 1.1159301042556763e+001
|
|
.double -1.0716228101327151e-007
|
|
.double 1.2812500000000000e+000
|
|
.double 1.1441664147778678e+001
|
|
.double 1.1441664218902588e+001
|
|
.double -7.1123909709313923e-008
|
|
.double 1.2890625000000000e+000
|
|
.double 1.1722310855866105e+001
|
|
.double 1.1722310781478882e+001
|
|
.double 7.4387223300811990e-008
|
|
.double 1.2968750000000000e+000
|
|
.double 1.2001261803101592e+001
|
|
.double 1.2001261711120605e+001
|
|
.double 9.1980986734758079e-008
|
|
.double 1.3046875000000000e+000
|
|
.double 1.2278537359169672e+001
|
|
.double 1.2278537273406982e+001
|
|
.double 8.5762688761207246e-008
|
|
.double 1.3125000000000000e+000
|
|
.double 1.2554157528920330e+001
|
|
.double 1.2554157495498657e+001
|
|
.double 3.3421672018100162e-008
|
|
.double 1.3203125000000000e+000
|
|
.double 1.2828141961029898e+001
|
|
.double 1.2828141927719116e+001
|
|
.double 3.3310782054458511e-008
|
|
.double 1.3281250000000000e+000
|
|
.double 1.3100509956406457e+001
|
|
.double 1.3100509881973267e+001
|
|
.double 7.4433189594417838e-008
|
|
.double 1.3359375000000000e+000
|
|
.double 1.3371280476348732e+001
|
|
.double 1.3371280431747437e+001
|
|
.double 4.4601294890994412e-008
|
|
.double 1.3437500000000000e+000
|
|
.double 1.3640472150467135e+001
|
|
.double 1.3640472173690796e+001
|
|
.double -2.3223661854144968e-008
|
|
.double 1.3515625000000000e+000
|
|
.double 1.3908103284375189e+001
|
|
.double 1.3908103227615356e+001
|
|
.double 5.6759831801771949e-008
|
|
.double 1.3593750000000000e+000
|
|
.double 1.4174191867159305e+001
|
|
.double 1.4174191951751709e+001
|
|
.double -8.4592403314822612e-008
|
|
.double 1.3671875000000000e+000
|
|
.double 1.4438755578634522e+001
|
|
.double 1.4438755512237549e+001
|
|
.double 6.6396972873718455e-008
|
|
.double 1.3750000000000000e+000
|
|
.double 1.4701811796393512e+001
|
|
.double 1.4701811790466309e+001
|
|
.double 5.9272036046296177e-009
|
|
.double 1.3828125000000000e+000
|
|
.double 1.4963377602655918e+001
|
|
.double 1.4963377714157104e+001
|
|
.double -1.1150118640383083e-007
|
|
.double 1.3906250000000000e+000
|
|
.double 1.5223469790924728e+001
|
|
.double 1.5223469734191895e+001
|
|
.double 5.6732833627606963e-008
|
|
.double 1.3984375000000000e+000
|
|
.double 1.5482104872456205e+001
|
|
.double 1.5482104778289795e+001
|
|
.double 9.4166410649057593e-008
|
|
.double 1.4062500000000000e+000
|
|
.double 1.5739299082549591e+001
|
|
.double 1.5739299058914185e+001
|
|
.double 2.3635406174577014e-008
|
|
.double 1.4140625000000000e+000
|
|
.double 1.5995068386662572e+001
|
|
.double 1.5995068311691284e+001
|
|
.double 7.4971287357386678e-008
|
|
.double 1.4218750000000000e+000
|
|
.double 1.6249428486358280e+001
|
|
.double 1.6249428272247314e+001
|
|
.double 2.1411096611771602e-007
|
|
.double 1.4296875000000000e+000
|
|
.double 1.6502394825089358e+001
|
|
.double 1.6502394676208496e+001
|
|
.double 1.4888086255988012e-007
|
|
.double 1.4375000000000000e+000
|
|
.double 1.6753982593824411e+001
|
|
.double 1.6753982543945313e+001
|
|
.double 4.9879099413412742e-008
|
|
.double 1.4453125000000000e+000
|
|
.double 1.7004206736521986e+001
|
|
.double 1.7004206657409668e+001
|
|
.double 7.9112320182549957e-008
|
|
.double 1.4531250000000000e+000
|
|
.double 1.7253081955457006e+001
|
|
.double 1.7253081798553467e+001
|
|
.double 1.5690353769144059e-007
|
|
.double 1.4609375000000000e+000
|
|
.double 1.7500622716404372e+001
|
|
.double 1.7500622749328613e+001
|
|
.double -3.2924240018740268e-008
|
|
.double 1.4687500000000000e+000
|
|
.double 1.7746843253684396e+001
|
|
.double 1.7746843338012695e+001
|
|
.double -8.4328299403034051e-008
|
|
.double 1.4765625000000000e+000
|
|
.double 1.7991757575074324e+001
|
|
.double 1.7991757392883301e+001
|
|
.double 1.8219102407645195e-007
|
|
.double 1.4843750000000000e+000
|
|
.double 1.8235379466590331e+001
|
|
.double 1.8235379695892334e+001
|
|
.double -2.2930200305113216e-007
|
|
.double 1.4921875000000000e+000
|
|
.double 1.8477722497143958e+001
|
|
.double 1.8477722644805908e+001
|
|
.double -1.4766195014684411e-007
|
|
.double 1.5000000000000000e+000
|
|
.double 1.8718800023076998e+001
|
|
.double 1.8718800067901611e+001
|
|
.double -4.4824613521605356e-008
|
|
.double 1.5078125000000000e+000
|
|
.double 1.8958625192578573e+001
|
|
.double 1.8958625316619873e+001
|
|
.double -1.2404129961848124e-007
|
|
.double 1.5156250000000000e+000
|
|
.double 1.9197210949988087e+001
|
|
.double 1.9197210788726807e+001
|
|
.double 1.6126127911381400e-007
|
|
.double 1.5234375000000000e+000
|
|
.double 1.9434570039987541e+001
|
|
.double 1.9434569835662842e+001
|
|
.double 2.0432470027419287e-007
|
|
.double 1.5312500000000000e+000
|
|
.double 1.9670715011686664e+001
|
|
.double 1.9670714855194092e+001
|
|
.double 1.5649257107941104e-007
|
|
.double 1.5390625000000000e+000
|
|
.double 1.9905658222604039e+001
|
|
.double 1.9905658245086670e+001
|
|
.double -2.2482629384793354e-008
|
|
.double 1.5468750000000000e+000
|
|
.double 2.0139411842547506e+001
|
|
.double 2.0139411926269531e+001
|
|
.double -8.3722023438581091e-008
|
|
.double 1.5546875000000000e+000
|
|
.double 2.0371987857396764e+001
|
|
.double 2.0371987819671631e+001
|
|
.double 3.7725131974471861e-008
|
|
.double 1.5625000000000000e+000
|
|
.double 2.0603398072791190e+001
|
|
.double 2.0603397846221924e+001
|
|
.double 2.2656926643557545e-007
|
|
.double 1.5703125000000000e+000
|
|
.double 2.0833654117725715e+001
|
|
.double 2.0833653926849365e+001
|
|
.double 1.9087635042588152e-007
|
|
.double 1.5781250000000000e+000
|
|
.double 2.1062767448057432e+001
|
|
.double 2.1062767505645752e+001
|
|
.double -5.7588320363631908e-008
|
|
.double 1.5859375000000000e+000
|
|
.double 2.1290749349925640e+001
|
|
.double 2.1290749549865723e+001
|
|
.double -1.9994008335507424e-007
|
|
.double 1.5937500000000000e+000
|
|
.double 2.1517610943087860e+001
|
|
.double 2.1517611026763916e+001
|
|
.double -8.3676057144975244e-008
|
|
.double 1.6015625000000000e+000
|
|
.double 2.1743363184174274e+001
|
|
.double 2.1743363380432129e+001
|
|
.double -1.9625785559308870e-007
|
|
.double 1.6093750000000000e+000
|
|
.double 2.1968016869862989e+001
|
|
.double 2.1968017101287842e+001
|
|
.double -2.3142485360292707e-007
|
|
.double 1.6171875000000000e+000
|
|
.double 2.2191582639978407e+001
|
|
.double 2.2191582679748535e+001
|
|
.double -3.9770127629797963e-008
|
|
.double 1.6250000000000000e+000
|
|
.double 2.2414070980514950e+001
|
|
.double 2.2414071083068848e+001
|
|
.double -1.0255389852355200e-007
|
|
.double 1.6328125000000000e+000
|
|
.double 2.2635492226588248e+001
|
|
.double 2.2635492324829102e+001
|
|
.double -9.8240853562727763e-008
|
|
.double 1.6406250000000000e+000
|
|
.double 2.2855856565315925e+001
|
|
.double 2.2855856418609619e+001
|
|
.double 1.4670630523588789e-007
|
|
.double 1.6484375000000000e+000
|
|
.double 2.3075174038629925e+001
|
|
.double 2.3075173854827881e+001
|
|
.double 1.8380204343371019e-007
|
|
.double 1.6562500000000000e+000
|
|
.double 2.3293454546022375e+001
|
|
.double 2.3293454647064209e+001
|
|
.double -1.0104183524739010e-007
|
|
.double 1.6640625000000000e+000
|
|
.double 2.3510707847226822e+001
|
|
.double 2.3510707855224609e+001
|
|
.double -7.9977856034644568e-009
|
|
.double 1.6718750000000000e+000
|
|
.double 2.3726943564836702e+001
|
|
.double 2.3726943492889404e+001
|
|
.double 7.1947298034792141e-008
|
|
.double 1.6796875000000000e+000
|
|
.double 2.3942171186862730e+001
|
|
.double 2.3942171096801758e+001
|
|
.double 9.0060971363642748e-008
|
|
.double 1.6875000000000000e+000
|
|
.double 2.4156400069230994e+001
|
|
.double 2.4156400203704834e+001
|
|
.double -1.3447384056481607e-007
|
|
.double 1.6953125000000000e+000
|
|
.double 2.4369639438223338e+001
|
|
.double 2.4369639396667480e+001
|
|
.double 4.1555857651188973e-008
|
|
.double 1.7031250000000000e+000
|
|
.double 2.4581898392861643e+001
|
|
.double 2.4581898212432861e+001
|
|
.double 1.8042878214319617e-007
|
|
.double 1.7109375000000000e+000
|
|
.double 2.4793185907237550e+001
|
|
.double 2.4793185710906982e+001
|
|
.double 1.9633056674029319e-007
|
|
.double 1.7187500000000000e+000
|
|
.double 2.5003510832789107e+001
|
|
.double 2.5003510951995850e+001
|
|
.double -1.1920674227914515e-007
|
|
.double 1.7265625000000000e+000
|
|
.double 2.5212881900525812e+001
|
|
.double 2.5212882041931152e+001
|
|
.double -1.4140534214692187e-007
|
|
.double 1.7343750000000000e+000
|
|
.double 2.5421307723203391e+001
|
|
.double 2.5421307563781738e+001
|
|
.double 1.5942165254471939e-007
|
|
.double 1.7421875000000000e+000
|
|
.double 2.5628796797449752e+001
|
|
.double 2.5628796577453613e+001
|
|
.double 2.1999613817580130e-007
|
|
.double 1.7500000000000000e+000
|
|
.double 2.5835357505843330e+001
|
|
.double 2.5835357666015625e+001
|
|
.double -1.6017229356185698e-007
|
|
.double 1.7578125000000000e+000
|
|
.double 2.6040998118945186e+001
|
|
.double 2.6040997982025146e+001
|
|
.double 1.3692003939236474e-007
|
|
.double 1.7656250000000000e+000
|
|
.double 2.6245726797286007e+001
|
|
.double 2.6245726585388184e+001
|
|
.double 2.1189782307244345e-007
|
|
.double 1.7734375000000000e+000
|
|
.double 2.6449551593309280e+001
|
|
.double 2.6449551582336426e+001
|
|
.double 1.0972853699776823e-008
|
|
.double 1.7812500000000000e+000
|
|
.double 2.6652480453271732e+001
|
|
.double 2.6652480602264404e+001
|
|
.double -1.4899267068896274e-007
|
|
.double 1.7890625000000000e+000
|
|
.double 2.6854521219102207e+001
|
|
.double 2.6854521274566650e+001
|
|
.double -5.5464444352106986e-008
|
|
.double 1.7968750000000000e+000
|
|
.double 2.7055681630220008e+001
|
|
.double 2.7055681705474854e+001
|
|
.double -7.5254846470362033e-008
|
|
.double 1.8046875000000000e+000
|
|
.double 2.7255969325313842e+001
|
|
.double 2.7255969524383545e+001
|
|
.double -1.9906970347883273e-007
|
|
.double 1.8125000000000000e+000
|
|
.double 2.7455391844082307e+001
|
|
.double 2.7455391883850098e+001
|
|
.double -3.9767789793217256e-008
|
|
.double 1.8203125000000000e+000
|
|
.double 2.7653956628936967e+001
|
|
.double 2.7653956413269043e+001
|
|
.double 2.1566792461584058e-007
|
|
.double 1.8281250000000000e+000
|
|
.double 2.7851671026668946e+001
|
|
.double 2.7851671218872070e+001
|
|
.double -1.9220312556676271e-007
|
|
.double 1.8359375000000000e+000
|
|
.double 2.8048542290079990e+001
|
|
.double 2.8048542499542236e+001
|
|
.double -2.0946224528680884e-007
|
|
.double 1.8437500000000000e+000
|
|
.double 2.8244577579578920e+001
|
|
.double 2.8244577407836914e+001
|
|
.double 1.7174200621933701e-007
|
|
.double 1.8515625000000000e+000
|
|
.double 2.8439783964744290e+001
|
|
.double 2.8439784049987793e+001
|
|
.double -8.5243501580557185e-008
|
|
.double 1.8593750000000000e+000
|
|
.double 2.8634168425854192e+001
|
|
.double 2.8634168624877930e+001
|
|
.double -1.9902373718522686e-007
|
|
.double 1.8671875000000000e+000
|
|
.double 2.8827737855383955e+001
|
|
.double 2.8827737808227539e+001
|
|
.double 4.7156414804454224e-008
|
|
.double 1.8750000000000000e+000
|
|
.double 2.9020499059472591e+001
|
|
.double 2.9020499229431152e+001
|
|
.double -1.6995855940538013e-007
|
|
.double 1.8828125000000000e+000
|
|
.double 2.9212458759358771e+001
|
|
.double 2.9212458610534668e+001
|
|
.double 1.4882410383872944e-007
|
|
.double 1.8906250000000000e+000
|
|
.double 2.9403623592787024e+001
|
|
.double 2.9403623580932617e+001
|
|
.double 1.1854407209259235e-008
|
|
.double 1.8984375000000000e+000
|
|
.double 2.9594000115384990e+001
|
|
.double 2.9594000339508057e+001
|
|
.double -2.2412306760802678e-007
|
|
.double 1.9062500000000000e+000
|
|
.double 2.9783594802012360e+001
|
|
.double 2.9783594608306885e+001
|
|
.double 1.9370547608148548e-007
|
|
.double 1.9140625000000000e+000
|
|
.double 2.9972414048082257e+001
|
|
.double 2.9972414016723633e+001
|
|
.double 3.1358625195636261e-008
|
|
.double 1.9218750000000000e+000
|
|
.double 3.0160464170855676e+001
|
|
.double 3.0160464286804199e+001
|
|
.double -1.1594852323091928e-007
|
|
.double 1.9296875000000000e+000
|
|
.double 3.0347751410709684e+001
|
|
.double 3.0347751617431641e+001
|
|
.double -2.0672195569090938e-007
|
|
.double 1.9375000000000000e+000
|
|
.double 3.0534281932380008e+001
|
|
.double 3.0534281730651855e+001
|
|
.double 2.0172815121304595e-007
|
|
.double 1.9453125000000000e+000
|
|
.double 3.0720061826178590e+001
|
|
.double 3.0720061779022217e+001
|
|
.double 4.7156373213152730e-008
|
|
.double 1.9531250000000000e+000
|
|
.double 3.0905097109186784e+001
|
|
.double 3.0905097007751465e+001
|
|
.double 1.0143532055180066e-007
|
|
.double 1.9609375000000000e+000
|
|
.double 3.1089393726424703e+001
|
|
.double 3.1089393615722656e+001
|
|
.double 1.1070204746126331e-007
|
|
.double 1.9687500000000000e+000
|
|
.double 3.1272957551997326e+001
|
|
.double 3.1272957324981689e+001
|
|
.double 2.2701563759805731e-007
|
|
.double 1.9765625000000000e+000
|
|
.double 3.1455794390217925e+001
|
|
.double 3.1455794334411621e+001
|
|
.double 5.5806303018042362e-008
|
|
.double 1.9843750000000000e+000
|
|
.double 3.1637909976709306e+001
|
|
.double 3.1637909889221191e+001
|
|
.double 8.7488115898710126e-008
|
|
.double 1.9921875000000000e+000
|
|
.double 3.1819309979483453e+001
|
|
.double 3.1819310188293457e+001
|
|
.double -2.0881000302875003e-007
|
|
.double 2.0000000000000000e+000
|
|
.double 3.2000000000000000e+001
|
|
.double 3.2000000000000000e+001
|
|
.double 0.0000000000000000e+000
|
|
.double 1.0000000000000000e+000
|
|
.double 0.0000000000000000e+000
|
|
.double 1.0218971486541166e+000
|
|
.double 5.1092250289734439e-017
|
|
.double 1.0442737824274138e+000
|
|
.double 8.5518897055379649e-017
|
|
.double 1.0671404006768237e+000
|
|
.double -7.8998539668415821e-017
|
|
.double 1.0905077326652577e+000
|
|
.double -3.0467820798124711e-017
|
|
.double 1.1143867425958924e+000
|
|
.double 1.0410278456845571e-016
|
|
.double 1.1387886347566916e+000
|
|
.double 8.9128126760254078e-017
|
|
.double 1.1637248587775775e+000
|
|
.double 3.8292048369240935e-017
|
|
.double 1.1892071150027210e+000
|
|
.double 3.9820152314656461e-017
|
|
.double 1.2152473599804690e+000
|
|
.double -7.7126306926814881e-017
|
|
.double 1.2418578120734840e+000
|
|
.double 4.6580275918369368e-017
|
|
.double 1.2690509571917332e+000
|
|
.double 2.6679321313421861e-018
|
|
.double 1.2968395546510096e+000
|
|
.double 2.5382502794888315e-017
|
|
.double 1.3252366431597413e+000
|
|
.double -2.8587312100388614e-017
|
|
.double 1.3542555469368927e+000
|
|
.double 7.7009483798029895e-017
|
|
.double 1.3839098819638320e+000
|
|
.double -6.7705116587947863e-017
|
|
.double 1.4142135623730951e+000
|
|
.double -9.6672933134529135e-017
|
|
.double 1.4451808069770467e+000
|
|
.double -3.0237581349939873e-017
|
|
.double 1.4768261459394993e+000
|
|
.double -3.4839945568927958e-017
|
|
.double 1.5091644275934228e+000
|
|
.double -1.0164553277542950e-016
|
|
.double 1.5422108254079407e+000
|
|
.double 7.9498348096976209e-017
|
|
.double 1.5759808451078865e+000
|
|
.double -1.0136916471278304e-017
|
|
.double 1.6104903319492543e+000
|
|
.double 2.4707192569797888e-017
|
|
.double 1.6457554781539649e+000
|
|
.double -1.0125679913674773e-016
|
|
.double 1.6817928305074290e+000
|
|
.double 8.1990100205814965e-017
|
|
.double 1.7186192981224779e+000
|
|
.double -1.8513804182631110e-017
|
|
.double 1.7562521603732995e+000
|
|
.double 2.9601406954488733e-017
|
|
.double 1.7947090750031072e+000
|
|
.double 1.8227458427912087e-017
|
|
.double 1.8340080864093424e+000
|
|
.double 3.2831072242456272e-017
|
|
.double 1.8741676341103000e+000
|
|
.double -6.1227634130041426e-017
|
|
.double 1.9152065613971474e+000
|
|
.double -1.0619946056195963e-016
|
|
.double 1.9571441241754002e+000
|
|
.double 8.9607677910366678e-017
|
|
.double 2.0000000000000000e+000
|
|
|
|
//
|
|
// End of table.
|
|
//
|