Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

882 lines
27 KiB

// TITLE("Alpha AXP ArcTangent")
//++
//
// Copyright (c) 1993, 1994 Digital Equipment Corporation
//
// Module Name:
//
// atan.s
//
// Abstract:
//
// This module implements a high-performance Alpha AXP specific routine
// for IEEE double format arctangent.
//
// Author:
//
// Andy Garside
//
// Environment:
//
// User mode.
//
// Revision History:
//
// Thomas Van Baak (tvb) 12-Feb-1994
//
// Adapted for NT.
//
//--
#include "ksalpha.h"
//
// Define stack frame.
//
.struct 0
Temp: .space 8 // save argument
.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
//
// Define offsets into atan table.
//
#define ATAN_INF 0xf18
#define ATAN_INF_LO 0xf20
#define POLY_COEF_1 0xf30
#define POLY_COEF_2 0xf38
#define POLY_COEF_3 0xf40
#define POLY_COEF_4 0xf48
#define POLY_COEF_5 0xf50
#define POLY_COEF_6 0xf58
#define POLY_COEF_7 0xf60
#define REDUCE_COEF_1 0xf68
#define REDUCE_COEF_2 0xf70
#define REDUCE_COEF_3 0xf78
#define LARGE_COEF_1 0xf80
#define LARGE_COEF_2 0xf88
#define LARGE_COEF_3 0xf90
SBTTL("Arc Tangent")
//++
//
// double
// atan (
// IN double x
// )
//
// Routine Description:
//
// This function returns the arctangent of the given double argument.
//
// Arguments:
//
// x (f16) - Supplies the argument value.
//
// Return Value:
//
// The double arctangent result is returned as the function value in f0.
//
//--
NESTED_ENTRY(atan, FrameLength, ra)
lda sp, -FrameLength(sp) // allocate stack frame
PROLOGUE_END
cpys f31, f16, f1
ldah v0, 1(zero)
lda v0, -0xf2(v0)
stt f1, Temp(sp)
ldl t0, Temp + HighPart(sp)
lda t1, __atan_t_table
sra t0, 14, t0
subl t0, v0, v0
lda t0, -0x244(v0) // MIN_LARGE_INDEX
blt v0, poly
bge t0, large
//
// reduce range
//
addl t1, v0, t0
ldt f14, REDUCE_COEF_1(t1)
ldt f13, REDUCE_COEF_3(t1)
ldq_u t2, 0(t0)
ldt f11, One
extbl t2, t0, t0
addl t0, t0, t0
s8addl t0, t1, t0
ldt f0, 0x248(t0) // ATAN_TABLE
lda t0, 0x248(t0)
mult f1, f0, f10
subt f1, f0, f0
addt f10, f11, f10
divt f0, f10, f0
ldt f10, REDUCE_COEF_2(t1)
mult f0, f0, f11
mult f11, f11, f12
mult f10, f11, f10
mult f0, f11, f11
mult f13, f12, f12
ldt f13, 8(t0)
addt f10, f14, f10
addt f12, f10, f10
mult f11, f10, f10
addt f0, f10, f0
addt f0, f13, f0
cpys f16, f0, f14
cpys f14, f14, f0
br zero, done
//
// large range
//
large: lda t1, -0xdd1(v0) // MIN_CONSTANT_INDEX
bge t1, const
ldt f12, One
lda t0, __atan_t_table
ldt f10, LARGE_COEF_2(t0)
divt f12, f1, f1
ldt f0, LARGE_COEF_1(t0)
ldt f14, LARGE_COEF_3(t0)
ldt f12, ATAN_INF_LO(t0)
mult f1, f1, f11
mult f11, f11, f13
mult f10, f11, f10
mult f1, f11, f11
subt f1, f12, f1
mult f14, f13, f13
ldt f14, ATAN_INF(t0)
addt f10, f0, f0
addt f13, f0, f0
mult f11, f0, f0
addt f1, f0, f0
subt f14, f0, f0
cpys f16, f0, f10
cpys f10, f10, f0
br zero, done
//
// constant range
//
const: ldah t2, 1(zero)
lda t2, 0xb2(t2) // see if index too big
cmplt v0, t2, v0
bne v0, retinf
stt f16, Temp(sp)
ldl t0, Temp + HighPart(sp)
ldl t2, Temp(sp)
ldah v0, 0x10(zero)
lda v0, -1(v0)
and t0, v0, v0
bis v0, t2, v0
bne v0, retarg
//
// return_atan_of_inf
//
retinf: ldt f13, __atan_t_table + ATAN_INF
cpys f16, f13, f0
br zero, done
//
// poly range
//
poly: lda v0, 0x5e0(v0) // MAX_SMALL_INDEX
blt v0, retarg
mult f16, f16, f12
lda t0, __atan_t_table
ldt f1, POLY_COEF_2(t0)
ldt f14, POLY_COEF_4(t0)
ldt f10, POLY_COEF_5(t0)
mult f12, f12, f11
ldt f15, POLY_COEF_1(t0)
mult f1, f12, f1
ldt f17, POLY_COEF_3(t0)
mult f14, f12, f14
ldt f13, POLY_COEF_6(t0)
ldt f0, POLY_COEF_7(t0)
mult f13, f12, f13
mult f10, f11, f10
mult f0, f11, f0
addt f1, f15, f1
mult f17, f11, f17
mult f11, f11, f15
mult f16, f12, f12
addt f14, f10, f10
addt f13, f0, f0
addt f1, f17, f1
mult f10, f11, f10
mult f0, f15, f0
addt f1, f10, f1
addt f0, f1, f0
mult f12, f0, f0
addt f16, f0, f0
br zero, done
//
// Return original argument as result.
//
retarg: cpys f16, f16, f0
//
// Return with result in f0.
//
done:
lda sp, FrameLength(sp) // deallocate stack frame
ret zero, (ra) // return
.end atan
.rdata
.align 3
//
// Define floating point constants.
//
One: .double 1.0
//
// This table is exported since it is also used by atan2.
//
.align 3
.globl __atan_t_table
__atan_t_table:
//
// Indices
//
.long 0x03020100
.long 0x07060504
.long 0x0b0a0908
.long 0x0f0e0d0c
.long 0x13121110
.long 0x17161514
.long 0x1b1a1918
.long 0x1f1e1d1c
.long 0x23222120
.long 0x27262524
.long 0x2b2a2928
.long 0x2e2d2d2c
.long 0x31302f2e
.long 0x35343332
.long 0x39383736
.long 0x3d3c3b3a
.long 0x41403f3e
.long 0x45444342
.long 0x49484746
.long 0x4d4c4b4a
.long 0x51504f4e
.long 0x55545352
.long 0x59585756
.long 0x5d5c5b5a
.long 0x61605f5e
.long 0x63626261
.long 0x65646463
.long 0x67666665
.long 0x6a696867
.long 0x6e6d6c6b
.long 0x7271706f
.long 0x76757473
.long 0x7a797877
.long 0x7e7d7c7b
.long 0x8281807f
.long 0x86858483
.long 0x89888887
.long 0x8b8a8a89
.long 0x8d8c8c8b
.long 0x8f8e8e8d
.long 0x9190908f
.long 0x93929291
.long 0x95949493
.long 0x96969695
.long 0x99989797
.long 0x9d9c9b9a
.long 0xa1a09f9e
.long 0xa3a2a2a1
.long 0xa5a4a4a3
.long 0xa7a6a6a5
.long 0xa9a8a8a7
.long 0xabaaaaa9
.long 0xacacabab
.long 0xadadadac
.long 0xafaeaeae
.long 0xb0b0afaf
.long 0xb1b1b0b0
.long 0xb2b2b1b1
.long 0xb3b3b2b2
.long 0xb4b3b3b3
.long 0xb5b4b4b4
.long 0xb6b6b6b5
.long 0xb8b7b7b7
.long 0xb9b9b8b8
.long 0xbabab9b9
.long 0xbbbbbaba
.long 0xbcbbbbbb
.long 0xbcbcbcbc
.long 0xbdbdbdbd
.long 0xbebebdbd
.long 0xbebebebe
.long 0xbfbfbfbe
.long 0xbfbfbfbf
.long 0xc0c0c0bf
.long 0xc0c0c0c0
.long 0xc1c1c0c0
.long 0xc1c1c1c1
.long 0xc2c2c2c1
.long 0xc3c2c2c2
.long 0xc3c3c3c3
.long 0xc4c3c3c3
.long 0xc4c4c4c4
.long 0xc4c4c4c4
.long 0xc5c5c5c4
.long 0xc5c5c5c5
.long 0xc5c5c5c5
.long 0xc6c6c5c5
.long 0xc6c6c6c6
.long 0xc6c6c6c6
.long 0xc6c6c6c6
.long 0xc6c6c6c6
.long 0xc7c7c7c7
.long 0xc7c7c7c7
.long 0xc7c7c7c7
.long 0xc8c7c7c7
.long 0xc8c8c8c8
.long 0xc8c8c8c8
.long 0xc8c8c8c8
.long 0xc8c8c8c8
.long 0xc9c9c8c8
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xc9c9c9c9
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcacacaca
.long 0xcbcbcaca
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcbcbcbcb
.long 0xcccccccc
.long 0xcccccccc
.long 0xcccccccc
.long 0xcccccccc
.long 0xcccccccc
.long 0x00000000
//
// table of m, atan(m)
//
.double 1.5355248400422339e-001
.double 1.5236243595325524e-001
.double 1.5552158817919209e-001
.double 1.5428561088659756e-001
.double 1.5749071068375525e-001
.double 1.5620765397022107e-001
.double 1.5945985174286212e-001
.double 1.5812855223376682e-001
.double 1.6142901158120504e-001
.double 1.6004829275559573e-001
.double 1.6339819042320866e-001
.double 1.6196686266324070e-001
.double 1.6536738849303570e-001
.double 1.6388424913386970e-001
.double 1.6733660601457914e-001
.double 1.6580043939473066e-001
.double 1.6930584321147152e-001
.double 1.6771542072360776e-001
.double 1.7127510030705803e-001
.double 1.6962918044923750e-001
.double 1.7324437752441801e-001
.double 1.7154170595176652e-001
.double 1.7521367508635091e-001
.double 1.7345298466316975e-001
.double 1.7718299321537423e-001
.double 1.7536300406767497e-001
.double 1.7915233213372153e-001
.double 1.7727175170218212e-001
.double 1.8112169206334361e-001
.double 1.7917921515668045e-001
.double 1.8309107322589921e-001
.double 1.8108538207465014e-001
.double 1.8506047584275731e-001
.double 1.8299024015346987e-001
.double 1.8702990013499132e-001
.double 1.8489377714481120e-001
.double 1.8899934632336557e-001
.double 1.8679598085502003e-001
.double 1.9096881462840698e-001
.double 1.8869683914557503e-001
.double 1.9293830527024586e-001
.double 1.9059633993331765e-001
.double 1.9490781846877406e-001
.double 1.9249447119098312e-001
.double 1.9687735444355606e-001
.double 1.9439122094748745e-001
.double 1.9884691341385727e-001
.double 1.9628657728832211e-001
.double 2.0081649559861969e-001
.double 1.9818052835589239e-001
.double 2.0278610121648225e-001
.double 2.0007306234989339e-001
.double 2.0475573048576073e-001
.double 2.0196416752764149e-001
.double 2.0672538362445764e-001
.double 2.0385383220442907e-001
.double 2.0869506085024936e-001
.double 2.0574204475385199e-001
.double 2.1066476238049245e-001
.double 2.0762879360814970e-001
.double 2.1263448843221744e-001
.double 2.0951406725852789e-001
.double 2.1460423922213120e-001
.double 2.1139785425548374e-001
.double 2.1657401496660342e-001
.double 2.1328014320911035e-001
.double 2.1854381588167510e-001
.double 2.1516092278941668e-001
.double 2.2051364218304903e-001
.double 2.1704018172662459e-001
.double 2.2248349408610146e-001
.double 2.1891790881148054e-001
.double 2.2445337180585717e-001
.double 2.2079409289552671e-001
.double 2.2642327555699829e-001
.double 2.2266872289139872e-001
.double 2.2839320555389561e-001
.double 2.2454178777313910e-001
.double 2.3036316201052537e-001
.double 2.2641327657639609e-001
.double 2.3233314514054382e-001
.double 2.2828317839876702e-001
.double 2.3430315515726335e-001
.double 2.3015148240004227e-001
.double 2.3627319227362892e-001
.double 2.3201817780244399e-001
.double 2.3824325670223515e-001
.double 2.3388325389089790e-001
.double 2.4021334865532848e-001
.double 2.3574670001328502e-001
.double 2.4218346834479032e-001
.double 2.3760850558066995e-001
.double 2.4612379177854776e-001
.double 2.4132715301206165e-001
.double 2.5006422869130918e-001
.double 2.4503911274623447e-001
.double 2.5203449022822305e-001
.double 2.4689255893254244e-001
.double 2.5597510051142724e-001
.double 2.5059433291856392e-001
.double 2.5991582846749378e-001
.double 2.5428921511209990e-001
.double 2.6385667576350508e-001
.double 2.5797712569279457e-001
.double 2.6779764406045437e-001
.double 2.6165798588799988e-001
.double 2.7173873501326334e-001
.double 2.6533171797836824e-001
.double 2.7567995027061964e-001
.double 2.6899824530292393e-001
.double 2.7962129147501918e-001
.double 2.7265749226397429e-001
.double 2.8356276026265581e-001
.double 2.7630938433152924e-001
.double 2.8750435826340059e-001
.double 2.7995384804745721e-001
.double 2.9144608710072656e-001
.double 2.8359081102924566e-001
.double 2.9538794839168914e-001
.double 2.8722020197347103e-001
.double 2.9932994374684735e-001
.double 2.9084195065887453e-001
.double 3.0327207477022777e-001
.double 2.9445598794914085e-001
.double 3.0721434305929912e-001
.double 2.9806224579535306e-001
.double 3.1115675020490474e-001
.double 3.0166065723807844e-001
.double 3.1509929779121809e-001
.double 3.0525115640914857e-001
.double 3.1904198739572476e-001
.double 3.0883367853313998e-001
.double 3.2298482058916428e-001
.double 3.1240815992849819e-001
.double 3.2692779893548751e-001
.double 3.1597453800835984e-001
.double 3.3087092399184592e-001
.double 3.1953275128109132e-001
.double 3.3481419730851864e-001
.double 3.2308273935046272e-001
.double 3.3875762042890090e-001
.double 3.2662444291557313e-001
.double 3.4270119488946582e-001
.double 3.3015780377045167e-001
.double 3.4664492221974780e-001
.double 3.3368276480338221e-001
.double 3.5058880394226560e-001
.double 3.3719926999588284e-001
.double 3.5453284157253667e-001
.double 3.4070726442148014e-001
.double 3.5847703661905733e-001
.double 3.4420669424417044e-001
.double 3.6242139058320622e-001
.double 3.4769750671653560e-001
.double 3.6636590495929278e-001
.double 3.5117965017771474e-001
.double 3.7031058123450267e-001
.double 3.5465307405101643e-001
.double 3.7425542088887304e-001
.double 3.5811772884129434e-001
.double 3.7820042539523707e-001
.double 3.6157356613203800e-001
.double 3.8214559621934541e-001
.double 3.6502053858236522e-001
.double 3.8609093481959766e-001
.double 3.6845859992342517e-001
.double 3.9003644264724363e-001
.double 3.7188770495496976e-001
.double 3.9398212114627240e-001
.double 3.7530780954141402e-001
.double 3.9792797175340849e-001
.double 3.7871887060775766e-001
.double 4.0187399589809220e-001
.double 3.8212084613526559e-001
.double 4.0582019500246991e-001
.double 3.8551369515693501e-001
.double 4.0976657048137899e-001
.double 3.8889737775274108e-001
.double 4.1371312374235236e-001
.double 3.9227185504468803e-001
.double 4.1765985618556611e-001
.double 3.9563708919160545e-001
.double 4.2160676920387552e-001
.double 3.9899304338381947e-001
.double 4.2555386418276547e-001
.double 4.0233968183755547e-001
.double 4.2950114250038729e-001
.double 4.0567696978922430e-001
.double 4.3344860552750974e-001
.double 4.0900487348945086e-001
.double 4.3739625462752746e-001
.double 4.1232336019697230e-001
.double 4.4134409115647377e-001
.double 4.1563239817236564e-001
.double 4.4529211646299088e-001
.double 4.1893195667157090e-001
.double 4.5318873876639293e-001
.double 4.2550251720217980e-001
.double 4.6108613217920819e-001
.double 4.3203481548843342e-001
.double 4.6898430722472922e-001
.double 4.3852864071650399e-001
.double 4.7688327430812050e-001
.double 4.4498379732613808e-001
.double 4.8478304371653724e-001
.double 4.5140010476930359e-001
.double 4.9268362561922469e-001
.double 4.5777739726103206e-001
.double 5.0058503006778432e-001
.double 4.6411552352325064e-001
.double 5.0453604385581541e-001
.double 4.6726985594612491e-001
.double 5.1243870071325748e-001
.double 4.7354898030362186e-001
.double 5.2034220473268367e-001
.double 4.7978862196590671e-001
.double 5.2824656555629101e-001
.double 4.8598867832338383e-001
.double 5.3615179271017821e-001
.double 4.9214906004903236e-001
.double 5.4405789560483941e-001
.double 4.9826969081401601e-001
.double 5.5196488353568340e-001
.double 5.0435050700000683e-001
.double 5.5987276568356159e-001
.double 5.1039145740874092e-001
.double 5.6778155111542927e-001
.double 5.1639250296941264e-001
.double 5.7569124878490574e-001
.double 5.2235361644422107e-001
.double 5.8360186753303733e-001
.double 5.2827478213277490e-001
.double 5.9151341608890706e-001
.double 5.3415599557554083e-001
.double 5.9942590307042987e-001
.double 5.3999726325702790e-001
.double 6.0733933698512588e-001
.double 5.4579860230896726e-001
.double 6.1525372623089158e-001
.double 5.5156004021390115e-001
.double 6.2316907909682573e-001
.double 5.5728161450960134e-001
.double 6.3108540376411404e-001
.double 5.6296337249467798e-001
.double 6.3900270830686567e-001
.double 5.6860537093564145e-001
.double 6.4692100069300273e-001
.double 5.7420767577581244e-001
.double 6.5484028878522904e-001
.double 5.7977036184639996e-001
.double 6.6276058034191265e-001
.double 5.8529351257991435e-001
.double 6.7068188301809273e-001
.double 5.9077721972633057e-001
.double 6.7860420436639635e-001
.double 5.9622158307209971e-001
.double 6.8652755183808556e-001
.double 6.0162671016239366e-001
.double 6.9445193278400708e-001
.double 6.0699271602663973e-001
.double 7.0237735445565164e-001
.double 6.1231972290768610e-001
.double 7.1030382400613368e-001
.double 6.1760785999465095e-001
.double 7.1823134849130543e-001
.double 6.2285726315976664e-001
.double 7.2615993487071206e-001
.double 6.2806807469917436e-001
.double 7.3408959000871321e-001
.double 6.3324044307802407e-001
.double 7.4202032067552715e-001
.double 6.3837452267984052e-001
.double 7.4995213354821244e-001
.double 6.4347047356027798e-001
.double 7.6581903216136837e-001
.double 6.5354865629575443e-001
.double 7.8169033744456895e-001
.double 6.6347637610648558e-001
.double 7.9756609957470270e-001
.double 6.7325509358925351e-001
.double 8.1344636734328057e-001
.double 6.8288633806304899e-001
.double 8.2933118819147211e-001
.double 6.9237170082828436e-001
.double 8.4522060824488088e-001
.double 7.0171282873931906e-001
.double 8.6111467234814298e-001
.double 7.1091141809055203e-001
.double 8.7701342409900629e-001
.double 7.1996920881421278e-001
.double 8.9291690588282036e-001
.double 7.2888797898706914e-001
.double 9.0882515890560212e-001
.double 7.3766953964025872e-001
.double 9.2473822322778765e-001
.double 7.4631572986747752e-001
.double 9.4065613779674118e-001
.double 7.5482841222342667e-001
.double 9.5657894047909242e-001
.double 7.6320946840524795e-001
.double 9.7250666809235886e-001
.double 7.7146079520806365e-001
.double 9.9640757179857808e-001
.double 7.8359871904813783e-001
.double 1.0123477662106497e+000
.double 7.9153408654898494e-001
.double 1.0282930065975109e+000
.double 7.9934643006362416e-001
.double 1.0442433254321561e+000
.double 8.0703767115598279e-001
.double 1.0601987543019136e+000
.double 8.1460972871741655e-001
.double 1.0761593239359200e+000
.double 8.2206451646712742e-001
.double 1.0921250642322042e+000
.double 8.2940394065219647e-001
.double 1.1080960042837751e+000
.double 8.3662989793684506e-001
.double 1.1240721724040819e+000
.double 8.4374427347116965e-001
.double 1.1400535961519611e+000
.double 8.5074893912966976e-001
.double 1.1560403023557917e+000
.double 8.5764575190995740e-001
.double 1.1880296659320808e+000
.double 8.7112316388210831e-001
.double 1.2200404640247038e+000
.double 8.8419101620372653e-001
.double 1.2520728872705937e+000
.double 8.9686349887653072e-001
.double 1.2841271167089126e+000
.double 9.0915445688978058e-001
.double 1.3162033243984250e+000
.double 9.2107736858648426e-001
.double 1.3483016739966118e+000
.double 9.3264532972485459e-001
.double 1.3804223213026274e+000
.double 9.4387104245016884e-001
.double 1.4125654147650204e+000
.double 9.5476680847240347e-001
.double 1.4447310959575739e+000
.double 9.6534452582212138e-001
.double 1.4769195000229485e+000
.double 9.7561568862694747e-001
.double 1.5252449924236093e+000
.double 9.9047179921019246e-001
.double 1.5736223129440838e+000
.double 1.0046987952523838e+000
.double 1.6220518482036179e+000
.double 1.0183304846548173e+000
.double 1.6705339614358272e+000
.double 1.0313987782295579e+000
.double 1.7190689946814175e+000
.double 1.0439337627979282e+000
.double 1.7838652477841976e+000
.double 1.0598662298339001e+000
.double 1.8487568705321733e+000
.double 1.0749634150447689e+000
.double 1.9137445321043374e+000
.double 1.0892830552328896e+000
.double 1.9951151143237842e+000
.double 1.1061698282655272e+000
.double 2.0766378750592405e+000
.double 1.1220193029527641e+000
.double 2.1419663687581529e+000
.double 1.1340098135689110e+000
.double 2.2401441155497896e+000
.double 1.1509403173125212e+000
.double 2.3385453087436905e+000
.double 1.1667117718174038e+000
.double 2.4371714724301077e+000
.double 1.1814322708247920e+000
.double 2.5690254496685805e+000
.double 1.1995890899144255e+000
.double 2.7012851246360814e+000
.double 1.2162456309906018e+000
.double 2.8671848136736733e+000
.double 1.2352139791159169e+000
.double 3.0337286825933503e+000
.double 1.2523848414028640e+000
.double 3.2344390781066932e+000
.double 1.2709456743012855e+000
.double 3.4697948808564751e+000
.double 1.2901987053917314e+000
.double 3.7403633162267851e+000
.double 1.3095526166650662e+000
.double 4.0468035358478183e+000
.double 1.3285408170404023e+000
.double 4.3898707100328336e+000
.double 1.3468211249075761e+000
.double 4.8051827486338796e+000
.double 1.3656163032815085e+000
.double 5.3651964370400229e+000
.double 1.3865243098539592e+000
.double 6.0754885617421879e+000
.double 1.4076632048189699e+000
.double 7.0163874932087893e+000
.double 1.4292262718246274e+000
.double 8.3530110964301372e+000
.double 1.4516460893659640e+000
.double 1.0199215339979428e+001
.double 1.4730619487601273e+000
.double 1.3282700889621619e+001
.double 1.4956521911510898e+000
.double 1.9351193695758720e+001
.double 1.5191658543189086e+000
.double 3.5680505204950208e+001
.double 1.5427771524815408e+000
.double 7.1244387842511500e+001
.double 1.5567610551550020e+000
//
// hi and lo pieces of pi/2
//
.double 1.5707963267948966e+000
.double 6.1232339957367660e-017
//
// pi
//
.double 3.1415926535897931e+000
//
// reduce range coefs
//
.double -3.3333333333333259e-001
.double 1.9999999999930743e-001
.double -1.4285714261780827e-001
.double 1.1111107045818812e-001
.double -9.0905335038737295e-002
.double 7.6730212431403905e-002
.double -6.1467058390548932e-002
//
// reduce range coefs
//
.double -3.3333333333324405e-001
.double 1.9999999697587109e-001
.double -1.4282435376697181e-001
//
// large range coefs
//
.double -3.3333333333324200e-001
.double 1.9999999692877043e-001
.double -1.4282409942371077e-001
//
// End of table.
//