DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦0a59fe884⟧ TextFile

    Length: 22625 (0x5861)
    Types: TextFile
    Names: »B«

Derivation

└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS 
    └─ ⟦91c658230⟧ »DATA« 
        └─⟦458657fb6⟧ 
            └─⟦1472c4407⟧ 
                └─⟦this⟧ 
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
    └─ ⟦fc9b38f02⟧ »DATA« 
        └─⟦9b46a407a⟧ 
            └─⟦2e03b931c⟧ 
                └─⟦this⟧ 

TextFile

separate (Generic_Elementary_Functions)

procedure Kp_Atn (Y, X : in Common_Float; Z1, Z2 : out Common_Float) is

-- On input, Y and X are floating-point values in Common_Float such that
-- 0 < Y < X.
-- On output, the values Z1, and Z2 are returned such that
--      atan(Y/X) =  Z1 + Z2 , where
-- atan is the inverse tangent. Whenever Z1 is non-zero, |Z| >= 1/32 and
-- has at most 4 hex digits.

-- Two methods are used to calculate atan(Y/X). If Y/X <= 1/16, then
-- simple polynomial approximations are used. These calculations are
-- performed in the kernel function  KF_AtnSm  which returns atan(Y)-Y
-- for an input argument |Y| <= 1/16.
--
-- For Y/X > 1/16, a table driven technique is used. First, a break point
-- C = j/256, j = 16, 17, ..., 256 is found such that
-- | Y/X  -  C | < 1/512. This C can be obtained by Round( 256*Y/X ).
-- Second, atan( (Y-CX)/(X+CY) ) is calculated via polynomial approximations.
-- Because the argument's magnitude in question is small, the polynomials
-- required are short. Finally, the value  atan(Y/X) is reconstructed as
--    atan(Y/X) = atan(C)  +  atan( (Y-CX)/(X+CY) ).
--

   V, U, V_By_U, C, U_Lead, U_Trail, Q, R : Common_Float;
   Index : Common_Int;

   Zero      : constant := 0.0;
   One       : constant := 1.0;
   One_16    : constant := 16#1.0#E-1;
   Two_Neg80 : constant := 2#1.0#E-80;
   Two_80    : constant := 2#1.0#E80;

   Atan_Jby256 : constant array (Common_Int range 16 .. 256, Position) of
                             Common_Float :=
      ((16#0.0FFA#, 16#0.0000ADDB967EF4E36CB2792DC0E2E0D51319C12CF#),
       (16#0.10F9#, 16#0.00009EA71D52A6F6FCB0089E4ED8919D8CFB4CED4#),
       (16#0.11F8#, 16#0.00006DBF082D58DED447119A20FDB0FE529D558C1#),
       (16#0.12F7#, 16#0.000019318A4A9A027FA2EF373003E5CAA22519EC5#),
       (16#0.13F5#, 16#0.00009F0E7C559D6B1338A177E11CD9BEC9EB30FB4#),
       (16#0.14F3#, 16#0.0000FD677292FB2011A6C4C92F3B2F1BE4D45EA9E#),
       (16#0.15F2#, 16#0.0000324FD2D7B262A3691004C637EACE735FA0C51#),
       (16#0.16F0#, 16#0.00003BDCEA4B0CEC0FF1AED05E835FD94922F357B#),
       (16#0.17EE#, 16#0.0000182602F10E8C126ACFCF099F06CECFC1508F3#),
       (16#0.18EB#, 16#0.0000C54478FB282E6510195A499750DEC78B76238#),
       (16#0.19E9#, 16#0.00004153CFDCF168CCB875A711F8151E9FA90CA27#),
       (16#0.1AE6#, 16#0.00008A71C722B838029CD22173B6E5BFBBFE48A9D#),
       (16#0.1BE3#, 16#0.00009EBE6F07C37DEE3CA681661CBB3DD21AFCA1D#),
       (16#0.1CE0#, 16#0.00007C5C3CCA322271CC84B2314D28C1967B9DD82#),
       (16#0.1DDD#, 16#0.000021701EBA6E653BFF35DBF95FAB59910B169AF#),
       (16#0.1ED9#, 16#0.00008C2190043AF62D33D369C276A948E9E36D846#),
       (16#0.1FD5#, 16#0.0000BA9AAC2F6DC65912F313E7D111DEF1672AFB2#),
       (16#0.20D1#, 16#0.0000AB0842567B30E96BE7F320176B74FCB8FBED6#),
       (16#0.21CD#, 16#0.00005B99E811031472E72233979639684D87AF78F#),
       (16#0.22C8#, 16#0.0000CA820C10A0B5E774573F548D5E3062929DB77#),
       (16#0.23C3#, 16#0.0000F5F6086E4DC96F4DD64A60E82BE678A856B0A#),
       (16#0.24BE#, 16#0.0000DC2E34A6B8BE36BDEF0D1883CE1CAD71A1221#),
       (16#0.25B9#, 16#0.00007B65F743FE63CA1C155854D14FCAB40FD271A#),
       (16#0.26B3#, 16#0.0000D1DBD733472D01458DCFD9CE2BD30B5BD245B#),
       (16#0.27AD#, 16#0.0000DDD18CC4D8B0D1D8674940D83FA15DD4BD3E2#),
       (16#0.28A7#, 16#0.00009D8C12553C8FB29D9D2D3C5B858FD95008299#),
       (16#0.29A1#, 16#0.00000F53B49E2E8F991F8D6F8ABCC1F785F820A0A#),
       (16#0.2A9A#, 16#0.0000317422AE148C14179442039BACA952F68C3D1#),
       (16#0.2B93#, 16#0.0000023C7D84D3BEAD534FFBC30B7A650B4F9B754#),
       (16#0.2C8B#, 16#0.00007FFF6754E7E0AC949883D34C6F1118FDDF54C#),
       (16#0.2D83#, 16#0.0000A9131267B1B5AAD627F0EF6549A0B4FFB8C87#),
       (16#0.2E7B#, 16#0.00007BD14FA403A94BC24AD6668D5F078B6224297#),
       (16#0.2F72#, 16#0.0000F6979CB6044D1EC2D3E207271D21E4EB4035A#),
       (16#0.306A#, 16#0.000017C731D78FA95BB33518DBCC20FB83AA95920#),
       (16#0.3160#, 16#0.0000DDC50F38517739967E7B9D85F2C5A797D90C3#),
       (16#0.3257#, 16#0.000046FA0A04E37961097805C4E1EC71BFD3E8E91#),
       (16#0.334D#, 16#0.000051D2D90C4C39EC03CF68691BBACEAAFC49930#),
       (16#0.3442#, 16#0.0000FCC021034B79083ACFA86463CF3B8D8A7AD78#),
       (16#0.3538#, 16#0.000046368064F28745DF44E6542A87586909C1451#),
       (16#0.362D#, 16#0.00002CAE9AF0179E951C0FA96633F48AC9F4E6AC1#),
       (16#0.3721#, 16#0.0000AEA524C14408BD88697072D54BC0A19144A34#),
       (16#0.3815#, 16#0.0000CA9AED08CD7D99205506C9213BED92F30BC53#),
       (16#0.3909#, 16#0.00007F14E85CDB9A908BE5F45766D521969F79C2C#),
       (16#0.39FC#, 16#0.0000CA9C3AA72AA3DCD1FB8F57DAC766CC23F3B11#),
       (16#0.3AEF#, 16#0.0000ABBE40AE6CE32468A9A2CBEF5E39EC4B3B0A8#),
       (16#0.3BE2#, 16#0.0000210C993B3BEA7E74AC40B87F65091C68ABE98#),
       (16#0.3CD4#, 16#0.0000291D2DD89AC33591014FBB281A0733BF6DAF4#),
       (16#0.3DC5#, 16#0.0000C28A3B301999623DCEE515BD423C91D7DACDB#),
       (16#0.3EB6#, 16#0.0000EBF25901BAC55B71E7BD7DE885F96A9FEA40E#),
       (16#0.3FA7#, 16#0.0000A3F881B7C826E28DE7438BD4F2B7344F7EA1B#),
       (16#0.4097#, 16#0.0000E9441996D698D2097CD05B85A52F129D011DA#),
       (16#0.4187#, 16#0.0000BA80F58A43D4113E49D579FE16A0FF1FDDAF1#),
       (16#0.4277#, 16#0.0000165F618D8962E47390CB8655E9D1571285505#),
       (16#0.4365#, 16#0.0000FB9426B2CD47C317BD5A3EAE0BB79AF3FD40A#),
       (16#0.4454#, 16#0.000068D890C726B237236F884613C81A979D9A18B#),
       (16#0.4542#, 16#0.00005CEA73951A8694580635CD86108B4BF1726D0#),
       (16#0.462F#, 16#0.0000D68C2FC5E0986523A458DFC414C687E9714DE#),
       (16#0.471C#, 16#0.0000D484B7620F41329C39A686926C0D1131740EF#),
       (16#0.4809#, 16#0.0000559F91F25773E6E6B85EB78CCC11F2ADF0AEA#),
       (16#0.48F5#, 16#0.000058ACE041078EB3A3A77FFDDEBE99A0D090CF4#),
       (16#0.49E0#, 16#0.0000DC815FBD16F88322C92037F0A23D223E10CF9#),
       (16#0.4ACB#, 16#0.0000DFF66D7F880A11E7E0E16A2148AAF4CF1A52A#),
       (16#0.4BB6#, 16#0.000061EA08F3F8DC892C7500964D0DE34F9E3EF24#),
       (16#0.4CA0#, 16#0.0000613ED6254656A0F566C60D0DD218A1F7C145D#),
       (16#0.4D89#, 16#0.0000DCDC1FAF2F34E2D5DA4C693D7994045247C28#),
       (16#0.4E72#, 16#0.0000D3ADD855EED0B25A5DEB8EC8B08A1AA6B1C0E#),
       (16#0.4F5B#, 16#0.000044A49C44D1137CA41CC9589E8CE198E65EDF2#),
       (16#0.5043#, 16#0.00002EB5B1F4CA4F37451EC4AEDBD671CD697057E#),
       (16#0.512A#, 16#0.000090DB0ABC26A2A1BC3AA4C45C6CF1A7413C521#),
       (16#0.5211#, 16#0.00006A1343086D1E28A7563C6A594645CB14D6EA6#),
       (16#0.52F7#, 16#0.0000B961A2439B0D91C41EEAC549D5FA0148A6DA0#),
       (16#0.53DD#, 16#0.00007DCE1A65E39A978C2003BBDE5D5D587C4CF43#),
       (16#0.54C2#, 16#0.0000B6654735276D4CDBFBBDFBECF46090961CE98#),
       (16#0.55A7#, 16#0.000062386D335F009CF0C76180EC7A655DBB882D3#),
       (16#0.568B#, 16#0.0000805D783D3913B7A8F82E45741DEB4EDA313C6#),
       (16#0.576F#, 16#0.00000FEEF9DA34F50760DBB7BECE25FB2CB9C490E#),
       (16#0.5852#, 16#0.0000100C273F8658DA8EA8EE100507E15A042E6F4#),
       (16#0.5934#, 16#0.00007FD8D7071605BFC183F0242309F5848AF9637#),
       (16#0.5A16#, 16#0.00005E7D7E9BF7DB50FD65CA4AC7B49AB58574B2D#),
       (16#0.5AF7#, 16#0.0000AB272F5DB3968EA706485F6062FA576944ACA#),
       (16#0.5BD8#, 16#0.00006507937BC239C55190916E7F22419EC21CBBD#),
       (16#0.5CB8#, 16#0.00008B54EA8AA62636CB1860D84315183DF5116DB#),
       (16#0.5D98#, 16#0.00001D4A05D407C45DD0DC6713FFFA13E3D8A9869#),
       (16#0.5E77#, 16#0.00001A264463440DBA09D077B0366780E2AD83C47#),
       (16#0.5F55#, 16#0.0000812D8ECFDD69C885C2B249A0881312E09E0EA#),
       (16#0.6033#, 16#0.000051A852C74218606697B05E6CC5EC618C28F83#),
       (16#0.6110#, 16#0.00008AE37E575DD76A0299B41B5C3A3B8175A01C8#),
       (16#0.61ED#, 16#0.00002C307AFB6E923055D05B8F0B9465D580574F7#),
       (16#0.62C9#, 16#0.000034E5286C95B6D0BA3748FA85146EE25BE4F28#),
       (16#0.63A4#, 16#0.0000A45BD737A14C0A7E12BFAFAF4343EE0DD669E#),
       (16#0.647F#, 16#0.000079F34319891074188054B536BEC637D321248#),
       (16#0.6559#, 16#0.0000B50E8D241CCD80A9BF05795AF8A9973E149E6#),
       (16#0.6633#, 16#0.0000551535AC619E6C988FD0A76CDBE1C93D002A4#),
       (16#0.670C#, 16#0.0000597316041C36CD2C044A19F5325F29C10727E#),
       (16#0.67E4#, 16#0.0000C1985A000637D8FB836BC6581A7B995F498A0#),
       (16#0.68BC#, 16#0.00008CF9794C2C605357DE5C21AC153C672881904#),
       (16#0.6993#, 16#0.0000BB0F308FF2DB213E4AF4800F389B3700206E9#),
       (16#0.6A6A#, 16#0.00004B567A633C25C85BFEEBB02D4A70C3F91D5AC#),
       (16#0.6B40#, 16#0.00003D5088162DFC4C33891D2E7EEF7E0A43580C0#),
       (16#0.6C15#, 16#0.00009082BA4D0E6CEC6B9C9CBAAA6BAEFF35AAF24#),
       (16#0.6CEA#, 16#0.000044769971B1AE187B1CA504031A2EAAA4088C5#),
       (16#0.6DBE#, 16#0.000058B9CDFBEF8D6B2E6D9F863D50C8CD7949F86#),
       (16#0.6E91#, 16#0.0000CCDE189295519A1B46E4AFE929CEC1897CA0D#),
       (16#0.6F64#, 16#0.0000A0794A0646B4EABC6509499B66209B4BDED17#),
       (16#0.7036#, 16#0.0000D3253B27BE33E318F6CB3CC65C01DB0A5F97A#),
       (16#0.7108#, 16#0.0000647FC47ADA4E820BCB4C1123A70868DB9C1EF#),
       (16#0.71D9#, 16#0.0000542AB5C7E28B474008FBC1B87EA7BF8B16E66#),
       (16#0.72A9#, 16#0.0000A1CBCD8C6C0CA833C0B1B7A3F6A7561939859#),
       (16#0.7379#, 16#0.00004D0CB04D425D305BBE70E536E164325927439#),
       (16#0.7448#, 16#0.0000559ADFCAB5BE67835886C302BBADCEBB3F7CE#),
       (16#0.7516#, 16#0.0000BB27B218ACC4A108B1F7C969A4A369AE94166#),
       (16#0.75E4#, 16#0.00007D68489BD35FF40AD24DAC4FDE79CB45B4D2D#),
       (16#0.76B1#, 16#0.00009C1586ED3DA2B7F222F65E1D4681B70A0AC39#),
       (16#0.777E#, 16#0.000016EC09A5D0A1DDD86050912E14CB66EFB5308#),
       (16#0.7849#, 16#0.0000EDAC1D12BFB53D9E719CAD55185BC787457EF#),
       (16#0.7915#, 16#0.00002019B3D468274754259D31E3BA15B11E90DA1#),
       (16#0.79DF#, 16#0.0000ADFC5D68D10E53DC1BF34356F9FD1790505C4#),
       (16#0.7AA9#, 16#0.0000971F3CA31097D967651DF82B549A759EDD0F0#),
       (16#0.7B72#, 16#0.0000DB50FE10D380DA2733DDEC71326E2C085D461#),
       (16#0.7C3B#, 16#0.00007A63CE4F3ED0BF57834E76BBE5183EFAC40FF#),
       (16#0.7D03#, 16#0.0000742D50505F2E33691E3EAEE476610806496FC#),
       (16#0.7DCA#, 16#0.0000C8869392545227083DFADD004A57B9B4C8A2F#),
       (16#0.7E91#, 16#0.0000774C0A496235A9C23D7274B5310EE6B4F66CB#),
       (16#0.7F57#, 16#0.0000805D7F7E0C9D43D8F624D8A9D6729F93B5A82#),
       (16#0.801C#, 16#0.0000E39E0D205C99A6D6C6C54D938596692486326#),
       (16#0.80E1#, 16#0.0000A0F412116A7B689F99521DBB92B1AD73C7082#),
       (16#0.81A5#, 16#0.0000B8492824418F9B38D85540FF5431C9474F206#),
       (16#0.8269#, 16#0.0000298A1A172DC6F39377A7131D6A27BBFF43FF8#),
       (16#0.832B#, 16#0.0000F4A6D9867E2A4B6A09CB61A515C0F1155CD87#),
       (16#0.83EE#, 16#0.0000199274D9C1B70C9E04450AC73920C96BA6DC7#),
       (16#0.84AF#, 16#0.000098430D2C7EEDE4DF5EA560D2AAEAAEA472105#),
       (16#0.8570#, 16#0.000070B1CC3361075ABF2DE445A53E2C75D49076C#),
       (16#0.8630#, 16#0.0000A2DADA1ED065D3E84ED5013CA37D92A950DA9#),
       (16#0.86F0#, 16#0.00002EBD537BE67C97B4E3AD655622BA7C75090D3#),
       (16#0.87AF#, 16#0.0000145B3F14A800988D8BF64C8681429BDD6BF9F#),
       (16#0.886D#, 16#0.000053B983D06AD3867A898F60AF9F5DBCE1325F9#),
       (16#0.892A#, 16#0.0000ECDFDE9547B5094478FC472B4AFB8FBE7B9FB#),
       (16#0.89E7#, 16#0.0000DFD8D82B726221CDF87DA6F989C0B2E59EEFA#),
       (16#0.8AA4#, 16#0.00002CB1BB234D68B0756E81879E8439FE76F7ECC#),
       (16#0.8B5F#, 16#0.0000D37A89BF099606FE141BD348634D99492CF6B#),
       (16#0.8C1A#, 16#0.0000D445F3E09B8C439D801860205920F8E244490#),
       (16#0.8CD5#, 16#0.00002F294CFCCCB3F27A74E0F9602B3B8709D0F21#),
       (16#0.8D8E#, 16#0.0000E43C8214276F0B9BA88386B8A2CCDFC2B8615#),
       (16#0.8E47#, 16#0.0000F39A0FB27928BBC9D5E7929F8ECDEF9CEC1A8#),
       (16#0.8F00#, 16#0.00005D5EF7F59F9B5C835E1665C43747918A67E06#),
       (16#0.8FB8#, 16#0.000021AAB89C516C659F6D7DD47136A9B668D8770#),
       (16#0.906F#, 16#0.0000409F411D8D0DC515828917850AB599F0A4844#),
       (16#0.9125#, 16#0.0000BA60E8C953ADA7BF114C1880F6A2B0B51D132#),
       (16#0.91DB#, 16#0.00008F1664F350E210E4F9C1126E021FD995E8D1F#),
       (16#0.9290#, 16#0.0000BEE8BF280AAD5511836CF3797D76EA50B3E72#),
       (16#0.9345#, 16#0.00004A034B6D30744D228131CF31C981C4DB4F92C#),
       (16#0.93F9#, 16#0.000030939E8D9A877E6C2A3BB3E2ECDA573DC02FF#),
       (16#0.94AC#, 16#0.000072C9847186F618C4F393F78A32F8F38AE0F47#),
       (16#0.955F#, 16#0.000010D6F6839B85180035A045C3B111748DBE470#),
       (16#0.9611#, 16#0.00000AF012232FD68FDE4B8B683E268649AF3B919#),
       (16#0.96C2#, 16#0.0000614B0F245E0DABDF5C91AFA42AA81FD293F46#),
       (16#0.9773#, 16#0.00001420365E538BABD3FE19F1AEB6B29798DB274#),
       (16#0.9823#, 16#0.000023A9D84856C18ED9E25E70CDBA0ED14FC5826#),
       (16#0.98D2#, 16#0.0000902443A5F2819570F4F584892A42FDCC108F9#),
       (16#0.9981#, 16#0.000059CDBC42B2BBA5DB0F7505678AD6593E8D1B4#),
       (16#0.9A2F#, 16#0.000080E671BDDA204226F8E2204FF3BCDAE46F061#),
       (16#0.9ADD#, 16#0.000005B0766673C77433726D172B70996C03D1D89#),
       (16#0.9B89#, 16#0.0000E86FB6281FAC21D87F3A7E4B6DD3C5DAAC0ED#),
       (16#0.9C36#, 16#0.00002969ED88F490E3C682832BFBDA16E92930016#),
       (16#0.9CE1#, 16#0.0000C8E6A0B8CDB9F799C4E8174CF11C5A2AC6A3B#),
       (16#0.9D8C#, 16#0.0000C72F12B256D06DDE0F8AD5420D93FEEBFB012#),
       (16#0.9E37#, 16#0.0000248E3C6E243D75ED605E8B128B9C394F7AC85#),
       (16#0.9EE0#, 16#0.0000E150C4282259CC6E1E9D2E1DFDF5925A09FFF#),
       (16#0.9F89#, 16#0.0000FDC4F4B7A1ECF8B492644F0701DF9D743D1BC#),
       (16#0.A032#, 16#0.00007A3AB4FA44AA4EE0DC81A9BE5A70912C563A9#),
       (16#0.A0DA#, 16#0.000057037F52089EB052993BB28EC56839662ECBF#),
       (16#0.A181#, 16#0.000094725936ADD9D4DDF1E8CC2EF763F0F535930#),
       (16#0.A228#, 16#0.000032DBCADAAE0892FE9C08637AF0E5D084146D4#),
       (16#0.A2CE#, 16#0.00003295D6E3FA332D31D1C26B7A893D3F56D575E#),
       (16#0.A373#, 16#0.000093F7F238AF63232723DD99B9EFD38377A1EC5#),
       (16#0.A418#, 16#0.0000575AFBDFEF9766A66626D63334D8D43B4E063#),
       (16#0.A4BC#, 16#0.00007D1934F7092419A87F2A457DAC9EE3F08689E#),
       (16#0.A560#, 16#0.0000058E38BB13641CE470572003EB4629EF1ECA0#),
       (16#0.A602#, 16#0.0000F116F4A7247EA7C1EC1A242451D4464264C5C#),
       (16#0.A6A5#, 16#0.00004011A0A740F1D448ED544580EE24A1872A95C#),
       (16#0.A746#, 16#0.0000F2DDB760229467B7D66F2D74E01921B81774D#),
       (16#0.A7E8#, 16#0.000009DBEE8BF1D513F3E7C24B4D1412B0D212CAE#),
       (16#0.A888#, 16#0.0000856E2F6C0923DCD6832A63DE1EE8E17AB4A5A#),
       (16#0.A928#, 16#0.000065F78F4FD7AB19217375DE41B9DF73CA99A35#),
       (16#0.A9C7#, 16#0.0000ABDC4830F5C8916A84B5BE7933F5F9971655E#),
       (16#0.AA66#, 16#0.00005781B1647B14648FF1E8782ACC5172CDE5487#),
       (16#0.AB04#, 16#0.0000694E3861A332739E1BD011000FD4FA1DB9E78#),
       (16#0.ABA1#, 16#0.0000E1A9599DCC2BFE5966F02B469FB603728B70E#),
       (16#0.AC3E#, 16#0.0000C0FB997DD6A1A36273A56AFA8EF4183DB5406#),
       (16#0.ACDB#, 16#0.000007AE7D5CEDC9F677DFB28769F24D1951BB831#),
       (16#0.AD76#, 16#0.0000B62C84A8BAE625EE295286CDB591529F4F435#),
       (16#0.AE11#, 16#0.0000CCE12213059C8562C352995154ABC1476866C#),
       (16#0.AEAC#, 16#0.00004C38B4D8C08014725E2F3E52070A03742B464#),
       (16#0.AF46#, 16#0.000034A0821E7EF408A41BAE1904F9164736FC44B#),
       (16#0.AFDF#, 16#0.00008686AE624F92CC0BFFD23AA0AE627E411319F#),
       (16#0.B078#, 16#0.0000425A3702F4488F2CCD75CD9CDAF2A5B0F42A1#),
       (16#0.B110#, 16#0.0000688AEBDC6F6A43D65788B9F6A7B509E2828D4#),
       (16#0.B1A7#, 16#0.0000F98968F9DB3A5E62BE56B2F9E94A3AE3C1F67#),
       (16#0.B23E#, 16#0.0000F5C7105C7F84D7EFF716B8C33242B2A3BDCA5#),
       (16#0.B2D5#, 16#0.00005DB603D8174363262866C6B9DC4BA2D0847E9#),
       (16#0.B36B#, 16#0.000031C91F043691590141744462F939E469FF280#),
       (16#0.B400#, 16#0.00007273F142BF9C56579305BC3F157669A530952#),
       (16#0.B495#, 16#0.0000202AB7DB53B2972B51D45971CA787426F3BB8#),
       (16#0.B529#, 16#0.00003B62582BAC12934C772B2C3F989BC0998AF1F#),
       (16#0.B5BC#, 16#0.0000C49059ECC4AFF8F3CEE75E3907D575216F47B#),
       (16#0.B64F#, 16#0.0000BC2AE18CC1C09DE29BD280C8A0B6EE7E3ADE5#),
       (16#0.B6E2#, 16#0.000022A8AA9D77901DE72A31F5C864980AD7A1EC7#),
       (16#0.B773#, 16#0.0000F88102577AD25DD460CC4E3EF828F91A49550#),
       (16#0.B805#, 16#0.00003E2BC2319E73CB2DA55210A4443D3D7AECC11#),
       (16#0.B895#, 16#0.0000F4214A8CC2B9B2066FB1102F77175A4D5A41A#),
       (16#0.B926#, 16#0.00001ADA7D73D86522CCB6CD266BC46005FDE833F#),
       (16#0.B9B5#, 16#0.0000B2D0B96FF9775FD06A892D100E70F01F06D4D#),
       (16#0.BA44#, 16#0.0000BC7DD470782F654C2CB10942E38623228454D#),
       (16#0.BAD3#, 16#0.0000385C16C6C3DC95898E5210DA150B48CCA7310#),
       (16#0.BB61#, 16#0.000026E636360232A4AA35B907915AE61342DEFF6#),
       (16#0.BBEE#, 16#0.0000889751163AE64C11F821A7AE3E62740E9AAFA#),
       (16#0.BC7B#, 16#0.00005DEAE98AF280D4113006E80FB29013FAB81F5#),
       (16#0.BD07#, 16#0.0000A75CE0CD1089E33E6C0AFABB5D7415D7D6A58#),
       (16#0.BD93#, 16#0.000065697287EC62FE419F7DC09B179189FB1E26C#),
       (16#0.BE1E#, 16#0.0000988D30495B767965A6065109B7436BBB76D27#),
       (16#0.BEA9#, 16#0.00004144FD049AAC1043C5E755282E7D01438341F#),
       (16#0.BF33#, 16#0.0000600E08A7EC6FA8EE913E8E50ADA66F6BFD26A#),
       (16#0.BFBC#, 16#0.0000F565CBC4C3FAB9501D5A441A24B5CE2085DF5#),
       (16#0.C046#, 16#0.000001CA034A55FE19B11D412B630D4D59538BABA#),
       (16#0.C0CE#, 16#0.000085B8AC52664089DD62C46E92FA24D58EE867A#),
       (16#0.C156#, 16#0.000081B00000294592FCE924D2425EA8695BF27C7#),
       (16#0.C1DD#, 16#0.0000F62E6F711098838827FE361448E71812B904E#),
       (16#0.C264#, 16#0.0000E3B29FBF57E7C9EE01F5C1713E2F8039A8EC1#),
       (16#0.C2EB#, 16#0.00004ABB661628B5B373FE45C61BB9FAE970EC0E0#),
       (16#0.C371#, 16#0.00002BC7C3D72A045626EB9FC678FDE093A72F30D#),
       (16#0.C3F6#, 16#0.00008756E2D1510AF5AD957F4BC61565CE4AA623C#),
       (16#0.C47B#, 16#0.00005DE81188C7B34B8B6951667E250297192BB86#),
       (16#0.C4FF#, 16#0.0000AFFABF8FBD548CB43D10BC9E02214DA621B60#),
       (16#0.C583#, 16#0.00007E0E79EFF5E099DB35249263D1D46837D6DA1#),
       (16#0.C606#, 16#0.0000C8A2E7A4EB7D480EDB88665164556F74B5DA8#),
       (16#0.C689#, 16#0.00009037C626564FE7345576574CA266DD13C472E#),
       (16#0.C70B#, 16#0.0000D54CE602EE13E7D54FBD09F2BE380E9C986EA#),
       (16#0.C78D#, 16#0.00009862278B38EE8E55C9C99FE946B23C9C7639E#),
       (16#0.C80E#, 16#0.0000D9F7778C3AD0CCBCAC0791EF71D43B7D29BEC#),
       (16#0.C88F#, 16#0.00009A8CCC19D89D745076DFA90D530C167B4C95E#),
       (16#0.C90F#, 16#0.0000DAA22168C234C4C6628B80DC1CD129024E088#));


begin

   U := X;
   V := Y;
   if U = One then
      V_By_U := V;
   else
      V_By_U := V / U;
   end if;

   if V_By_U <= One_16 then
      Z1 := Zero;
      Z2 := V_By_U + Kf_Atnsm (V_By_U);
      return;
   end if;


   Index := Common_Int (16#1.0#E2 * V_By_U);
   C     := Common_Float (Index) * 16#1.0#E-2;

   if V < Two_Neg80 then
      V := Two_80 * V;
      U := Two_80 * U;
   end if;

   if U = One then
      R := (V - C) / (U + C * V);
   else
      U_Lead  := Leading_Part (U, Common_Float'Machine_Mantissa / 2);
      U_Trail := U - U_Lead;
      R       := ((V - C * U_Lead) - C * U_Trail) / (U + C * V);
   end if;


   --Polynomial approximation of  atan(R)

   case Float_Type'Base'Digits is

      when 1 .. 6 =>

         declare
            type Working_Float is digits 6;
            S, P : Working_Float;
         begin
            S := Working_Float (R);
            S := S * S;
            P := S * 0.33333_26634;
            Q := R - R * Common_Float (P);
         end;

      when 7 .. 15 =>

         declare
            type Working_Float is
               digits (15 + System.Max_Digits - abs (15 - System.Max_Digits)) /
                      2;
            -- this is min( 15, System.Max_Digits )
            S, P : Working_Float;
         begin
            S := Working_Float (R);
            S := S * S;
            P := S * (0.33333_33333_32240_95522 -
                      S * (0.19999_91803_89891_43496));
            Q := R - R * Common_Float (P);
         end;

      when 16 =>

         declare
            type Working_Float is
               digits (16 + System.Max_Digits - abs (16 - System.Max_Digits)) /
                      2;
            S, P : Working_Float;
         begin
            S := Working_Float (R);
            S := S * S;
            P := S * (0.33333_33333_32240_95522 -
                      S * (0.19999_91803_89891_43496));
            Q := R - R * Common_Float (P);
         end;

      when 17 .. 18 =>

         declare
            type Working_Float is
               digits (18 + System.Max_Digits - abs (18 - System.Max_Digits)) /
                      2;
            S, P : Working_Float;
         begin
            S := Working_Float (R);
            S := S * S;
            P := S * (0.33333_33333_33333_33174_03042 -
                      S * (0.19999_99999_97844_27116_94195 -
                           S * (0.14285_62650_27453_42297_36256)));
            Q := R - R * Common_Float (P);
         end;

      when 19 .. 27 =>

         declare
            type Working_Float is
               digits (27 + System.Max_Digits - abs (27 - System.Max_Digits)) /
                      2;
            S, P : Working_Float;
         begin
            S := Working_Float (R);
            S := S * S;
            P :=
               S * (0.33333_33333_33333_33333_33311_72058_56 -
                    S * (0.19999_99999_99999_99544_27301_91257_38 -
                         S * (0.14285_71428_53959_54585_25767_15009_50 -
                              S * (0.11111_02043_07258_54991_41929_62303_48))));
            Q := R - R * Common_Float (P);
         end;

      when 28 .. 33 =>

         declare
            type Working_Float is
               digits (33 + System.Max_Digits - abs (33 - System.Max_Digits)) /
                      2;
            S, P : Working_Float;
         begin
            S := Working_Float (R);
            S := S * S;
            P :=
               S *
                  (0.33333_33333_33333_33333_33333_33330_5509 -
                   S *
                      (0.19999_99999_99999_99999_99916_05331_9450 -
                       S *
                          (0.14285_71428_57142_84833_81100_15518_0603 -
                           S *
                              (0.11111_11111_06928_08149_95978_85354_6911 -
                               S *
                                  (0.09090_81679_15943_49047_00774_95327_5560)))));
            Q := R - R * Common_Float (P);
         end;

      when others =>

         raise Program_Error;  -- assumption (1) is violated.

   end case;
-- This completes the core approximation.

   Z1 := Atan_Jby256 (Index, Lead);
   Z2 := Atan_Jby256 (Index, Trail) + Q;

   return;

end Kp_Atn;