DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ P T ┃
Length: 132675 (0x20643) Types: TextFile Names: »PRIMITIVE_FUNCTIONS_RATIONALE_PS«
└─⟦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⟧ └─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦a5bbbb819⟧ └─⟦this⟧ └─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦eec0a994f⟧ └─⟦this⟧
%!PS-Adobe-2.0 %%Title: PubTeX output 1990.12.14:1428 %%Creator: Pubps, ArborText, Inc. %%BoundingBox: (atend) %%Pages: (atend) %%DocumentFonts: (atend) %%EndComments %! % Dvips.pro - included prolog for DviLaser-generated PostScript files. % % Copyright (c) 1986-89, ArborText, Inc. % Permission to copy is granted so long as the PostScript code % is not resold or used in a commercial product. % % $Header: pubps.pro,v 1.14 90/04/10 12:27:08 jsg Exp $ systemdict /setpacking known % use array packing mode if its available {/savepackingmode currentpacking def true setpacking} if /$DviLaser 400 dict def % Begin document /BeginDviLaserDoc { vmstatus pop pop 0 eq { $DviLaser begin InitializeState } { /DviLaserJob save def $DviLaser begin InitializeState /DviLaserFonts save def } ifelse } bind def % End document /EndDviLaserDoc { vmstatus pop pop 0 eq { end } { DviLaserFonts restore end DviLaserJob restore } ifelse } bind def $DviLaser begin /tempstr 64 string def /tempint 0 def /tempmatrix matrix def % % Debugging routines % /DebugMode false def /PrintInt { tempstr cvs print } bind def /PrintLn { (\n) print flush } bind def /PrintVMStats { print PrintLn (VM status - ) print vmstatus 3 copy PrintInt (\(total\), ) print PrintInt (\(used\), ) print pop exch sub PrintInt (\(remaining\), ) print PrintInt (\(level\)) print PrintLn } bind def /VMS /PrintVMStats load def /VMSDebug { DebugMode {PrintVMStats} {pop} ifelse } bind def (beginning of common prolog) VMSDebug % Make it easy to bind definitions. /bdef { bind def } bind def /xdef { exch def } bdef % Begin page /BP { /Magnification xdef /DviLaserPage save def (beginning of page) VMSDebug } bdef % End page /EP { DviLaserPage restore } bdef % Exit page (temporarily) to add fonts/characters. /XP { % Save current point information so it can be reset later. /Xpos where {pop Xpos} {0} ifelse /Ypos where {pop Ypos} {0} ifelse /currentpoint cvx stopped {0 0 moveto currentpoint} if /DviLaserPage where {pop DviLaserPage restore} if moveto /Ypos xdef /Xpos xdef } bdef % Resume page /RP { /DviLaserPage save def } bdef % Purge all fonts to reclaim memory space. /PF { GlobalMode LocalMode } bdef % Switch to base save/restore level, saving state information. /GlobalMode { /UserSave where {pop UserSave} if % invoke "UserSave" if available PortraitMode PaperWidth PaperHeight PxlResolution Resolution Magnification Ymax RasterScaleFactor % Save current point information so it can be reset later. /currentpoint cvx stopped {0 0 moveto currentpoint} if /DviLaserPage where {pop DviLaserPage restore} if DviLaserFonts restore RecoverState } bdef % Preserve state at the base level. /RecoverState { 10 copy /Ypos xdef /Xpos xdef /RasterScaleFactor xdef /Ymax xdef /Magnification xdef /Resolution xdef /PxlResolution xdef /PaperHeight xdef /PaperWidth xdef /PortraitMode xdef DoInitialScaling PortraitMode not {PaperWidth 0 SetupLandscape} if Xpos Ypos moveto } bdef % Initialize state variables to default values. /InitializeState { /Resolution 3600.0 def /PxlResolution 300.0 def /RasterScaleFactor PxlResolution Resolution div def /PortraitMode true def 11.0 Resolution mul /PaperHeight xdef 8.5 Resolution mul /PaperWidth xdef /Ymax PaperHeight def /Magnification 1000.0 def /Xpos 0.0 def /Ypos 0.0 def /InitialMatrix matrix currentmatrix def } bdef % Switch from base save/restore level, restoring state information. /LocalMode { /Ypos xdef /Xpos xdef /RasterScaleFactor xdef /Ymax xdef /Magnification xdef /Resolution xdef /PxlResolution xdef /PaperHeight xdef /PaperWidth xdef /PortraitMode xdef DoInitialScaling PortraitMode not {PaperWidth 0 SetupLandscape} if Xpos Ypos moveto /UserRestore where {pop UserRestore} if % invoke "UserRestore" if available /DviLaserFonts save def /DviLaserPage save def } bdef % Abbreviations /S /show load def /SV /save load def /RST /restore load def /Yadjust {Ymax exch sub} bdef % (x,y) position absolute, just set Xpos & Ypos, don't move. /SXY { Yadjust /Ypos xdef /Xpos xdef } bdef % (x,y) position absolute /XY { Yadjust 2 copy /Ypos xdef /Xpos xdef moveto } bdef % (x,0) position absolute /X { currentpoint exch pop 2 copy /Ypos xdef /Xpos xdef moveto } bdef % (0,y) position absolute /Y { currentpoint pop exch Yadjust 2 copy /Ypos xdef /Xpos xdef moveto } bdef % (x,y) position relative /xy { neg rmoveto currentpoint /Ypos xdef /Xpos xdef } bdef % (x,0) position relative /x { 0.0 rmoveto currentpoint /Ypos xdef /Xpos xdef } bdef % (0,y) position relative /y { 0.0 exch neg rmoveto currentpoint /Ypos xdef /Xpos xdef } bdef % Print a rule. In order to get correct pixel size and positioning, % we usually create a temporary font in which the rule is the only character. % When the rule is large, however, we fill a rectangle instead. /R { /ht xdef /wd xdef ht 1950 le wd 1950 le and {save /tfd 6 dict def tfd begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 wd ht] def /Encoding 256 array dup 97 /a put def /BuildChar { pop % ignore character code pop % ignore font dict, too wd 0 0 0 wd ht setcachedevice wd ht true [1 0 0 -1 0 ht] {<FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF>} imagemask } def end % tfd /tf tfd definefont setfont (a) show restore } {gsave 0 setgray currentpoint newpath moveto 0.0 ht rlineto wd 0.0 rlineto 0.0 ht neg rlineto wd neg 0.0 rlineto closepath fill grestore } ifelse wd 0.0 rmoveto currentpoint /Ypos xdef /Xpos xdef } bdef % % <PXL-file resolution(pix/inch)> <resolution(pix/inch)> RES % /RES { /Resolution xdef /PxlResolution xdef /RasterScaleFactor PxlResolution Resolution div def DoInitialScaling } bdef % % Do initial scaling. % /DoInitialScaling { InitialMatrix setmatrix 72.0 Resolution div dup scale } bdef % % <paper-height(pix)> <paper-width(pix)> PM % /PM { XP /PaperWidth xdef /PaperHeight xdef /Ymax PaperHeight def /PortraitMode true def DoInitialScaling RP } bdef % % <paper-height(pix)> <paper-width(pix)> LM % /LM { XP /PaperWidth xdef /PaperHeight xdef /Ymax PaperWidth def /PortraitMode false def DoInitialScaling PaperWidth 0 SetupLandscape RP } bdef % Change magnification setting /MAG { XP /Magnification xdef RP } bdef % % Switch to landscape mode % /SetupLandscape { translate 90.0 rotate } bdef % % <mode> SPB - begin "\special" mode % % This is the PostScript procedure used to transfer from the internal % environment used for the DVI translation code emitted by DVIPS to % a standard PostScript environment. % % Parameters: 0 - Local % 1 - Global % 2 - Inline % /SPB { /spc_mode xdef spc_mode 0 eq spc_mode 2 eq or {XP} {spc_mode 1 eq {GlobalMode} if} ifelse Resolution 72.0 div dup scale % Restore default scaling... Magnification 1000.0 div dup scale % Adjust for any magnification... /Xpos Xpos 72.0 Resolution div mul 1000.0 Magnification div mul def /Ypos Ypos 72.0 Resolution div mul 1000.0 Magnification div mul def } bdef % % <mode> SPE - end "\special" mode % % This is the PostScript procedure used to reenter the internal % environment used for the DVI translation code emitted by DVIPS from % the standard PostScript environment provided for processing user-supplied % PostScript code. % % Parameters: 0 - Local % 1 - Global % 2 - Inline % /SPE { /spc_mode xdef 1000.0 Magnification div dup scale % Un-adjust for any magnification... 72.0 Resolution div dup scale % Restore default internal scaling... spc_mode 0 eq spc_mode 2 eq or {RP} {spc_mode 1 eq {LocalMode} if} ifelse } bdef % % <num-copies> PP % /PP { /#copies xdef showpage /#copies 1 def } bdef % % /font-name <point-size(pix)> DMF % /DMF { /psz xdef /nam xdef nam findfont psz scalefont setfont } bdef % % /abcd (xxx) str-concat ==> /abcdxxx % /str-concatstr 64 string def /str-concat { /xxx xdef /nam xdef /namstr nam str-concatstr cvs def /newnam namstr length xxx length add string def newnam 0 namstr putinterval newnam namstr length xxx putinterval newnam cvn } bdef % % /abcdef 2 str-strip ==> /cdef % /str-strip { /num xdef /nam xdef /namstr nam tempstr cvs def /newlen namstr length num sub def namstr num newlen getinterval cvn } bdef % % <old-dict> copydict ==> new-dict on stack % /copydict { dup length 1 add dict /newdict xdef {1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse } forall newdict } bdef % % <font-type> DefineCMEncoding % /DefineCMEncoding { /EncodeType xdef /CMEncoding 256 array def /Times-Roman findfont /Encoding get aload pop CMEncoding astore pop EncodeType 11 eq {Do-CM-rm-encoding} if EncodeType 12 eq {Do-CM-it-encoding} if EncodeType 13 eq {Do-CM-tt-encoding} if } bdef % % Do special mappings for the various CM-font types. Characters that % get "covered up" are repositioned in the range (128,128+32). % /Do-standard-CM-encodings { CMEncoding dup 0 /.notdef put dup 1 /.notdef put dup 2 /.notdef put dup 3 /.notdef put dup 4 /.notdef put dup 5 /.notdef put dup 6 /.notdef put dup 7 /.notdef put dup 8 /.notdef put dup 9 /.notdef put dup 10 /.notdef put dup 11 /.notdef put dup 12 /fi put dup 13 /fl put dup 14 /.notdef put dup 15 /.notdef put dup 16 /dotlessi put dup 17 /.notdef put dup 18 /grave put dup 19 /acute put dup 20 /caron put dup 21 /breve put dup 22 /macron put dup 23 /ring put dup 24 /cedilla put dup 25 /germandbls put dup 26 /ae put dup 27 /oe put dup 28 /oslash put dup 29 /AE put dup 30 /OE put dup 31 /Oslash put dup 127 /dieresis put dup 128 /space put dup 129 /quotedbl put dup 130 /sterling put dup 131 /dollar put dup 132 /less put dup 133 /greater put dup 134 /backslash put dup 135 /asciicircum put dup 136 /underscore put dup 137 /braceleft put dup 138 /bar put dup 139 /braceright put dup 140 /asciitilde put pop } bdef /Do-CM-rm-encoding { Do-standard-CM-encodings CMEncoding dup 32 /.notdef put dup 34 /quotedblright put dup 60 /exclamdown put dup 62 /questiondown put dup 92 /quotedblleft put dup 94 /circumflex put dup 95 /dotaccent put dup 123 /endash put dup 124 /emdash put dup 125 /hungarumlaut put dup 126 /tilde put pop } bdef /Do-CM-it-encoding { Do-standard-CM-encodings CMEncoding dup 32 /.notdef put dup 34 /quotedblright put dup 36 /sterling put dup 60 /exclamdown put dup 62 /questiondown put dup 92 /quotedblleft put dup 94 /circumflex put dup 95 /dotaccent put dup 123 /endash put dup 124 /emdash put dup 125 /hungarumlaut put dup 126 /tilde put pop } bdef /Do-CM-tt-encoding { Do-standard-CM-encodings CMEncoding dup 12 /.notdef put dup 13 /quotesingle put dup 14 /exclamdown put dup 15 /questiondown put dup 94 /circumflex put dup 126 /tilde put pop } bdef % % Routines to handle packing/unpacking numbers. % % <target> <pos> <num> PackHW --> <new target> % /PackHW { /num xdef /pos xdef /target xdef num 16#0000FFFF and 1 pos sub 16 mul bitshift target or } bdef % % <target> <pos> <num> PackByte --> <new target> % /PackByte { /num xdef /pos xdef /target xdef num 16#000000FF and 3 pos sub 8 mul bitshift target or } bdef % % <pos> <num> UnpkHW --> <unpacked value> % /UnpkHW { /num xdef /pos xdef num 1 pos sub -16 mul bitshift 16#0000FFFF and dup 16#00007FFF gt {16#00010000 sub} if } bdef % % <pos> <num> UnpkByte --> <unpacked value> % /UnpkByte { /num xdef /pos xdef num 3 pos sub -8 mul bitshift 16#000000FF and dup 16#0000007F gt {16#00000100 sub} if } bdef % % <int-font-name> <ext-font-name> <pt-sz(pix)> <type> <loaded-fg> DefineCMFont % % type 10: "as-is" PostScript font % type 11: CM-mapped PostScript font - roman % type 12: CM-mapped PostScript font - text italic % type 13: CM-mapped PostScript font - typewriter type % /int-dict-name {int (-dict) str-concat} bdef /int-dict {int (-dict) str-concat cvx load} bdef /DF { true % signal that the font is already loaded DefineCMFont } bdef /DNF { false % signal that the font is not already loaded DefineCMFont } bdef /DefineCMFont { /loaded xdef /typ xdef /psz xdef /ext xdef /int xdef typ 10 ne { % font_type = 11, 12, 13 loaded not { /fnam ext 3 str-strip def fnam findfont copydict /newdict xdef typ DefineCMEncoding newdict /Encoding CMEncoding put ext newdict definefont pop } if int-dict-name ext findfont psz scalefont def currentdict int [int-dict /setfont cvx] cvx put } { % font_type = 10 /fnam ext def int-dict-name fnam findfont psz scalefont def currentdict int [int-dict /setfont cvx] cvx put } ifelse } bdef % % <int-font-name> <ext-font-name> <pt-sz(pix)> <PXL mag> <num-chars> % [llx lly urx ury] <newfont-fg> DefinePXLFont % /PXLF { true % signal that the font is already loaded DefinePXLFont } bdef /PXLNF { false % signal that the font is not already loaded DefinePXLFont } bdef /PXLBuildCharDict 17 dict def /CMEncodingArray 256 array def 0 1 255 {CMEncodingArray exch dup tempstr cvs cvn put} for /RasterConvert {RasterScaleFactor div} bdef /TransformBBox { aload pop /BB-ury xdef /BB-urx xdef /BB-lly xdef /BB-llx xdef [BB-llx RasterConvert BB-lly RasterConvert BB-urx RasterConvert BB-ury RasterConvert] } bdef /DefinePXLFont { /newfont xdef /bb xdef /num xdef /psz xdef /dsz xdef /pxlmag xdef /ext xdef /int xdef /fnam ext (-) str-concat pxlmag tempstr cvs str-concat def newfont not { int-dict-name 13 dict def int-dict begin /FontType 3 def /FontMatrix [1 dsz div 0 0 1 dsz div 0 0] def /FontBBox bb TransformBBox def /Encoding CMEncodingArray def /CharDict 1 dict def CharDict begin /Char-Info num array def end /BuildChar { PXLBuildCharDict begin /char xdef /fontdict xdef fontdict /CharDict get /Char-Info get char get aload pop /rasters xdef /PackedWord1 xdef 0 PackedWord1 UnpkHW 16#7FFF ne { /PackedWord2 xdef /wx 0 PackedWord1 UnpkHW def /rows 2 PackedWord1 UnpkByte def /cols 3 PackedWord1 UnpkByte def /llx 0 PackedWord2 UnpkByte def /lly 1 PackedWord2 UnpkByte def /urx 2 PackedWord2 UnpkByte def /ury 3 PackedWord2 UnpkByte def } { /PackedWord2 xdef /PackedWord3 xdef /PackedWord4 xdef /wx 1 PackedWord1 UnpkHW def /rows 0 PackedWord2 UnpkHW def /cols 1 PackedWord2 UnpkHW def /llx 0 PackedWord3 UnpkHW def /lly 1 PackedWord3 UnpkHW def /urx 0 PackedWord4 UnpkHW def /ury 1 PackedWord4 UnpkHW def } ifelse rows 0 lt { /rows rows neg def /runlength 1 def } { /runlength 0 def } ifelse wx 0 llx RasterConvert lly RasterConvert urx RasterConvert ury RasterConvert setcachedevice rows 0 ne { gsave cols rows true RasterScaleFactor 0 0 RasterScaleFactor neg llx neg ury tempmatrix astore {GenerateRasters} imagemask grestore } if end } def end fnam int-dict definefont pop } if int-dict-name fnam findfont psz scalefont def currentdict int [int-dict /setfont cvx] cvx put } bdef % % <int-font-name> <code> <wx> <llx> <lly> <urx> <ury> <rows> <cols> <runlength> <rasters> PXLC % /PXLC { /rasters xdef /runlength xdef /cols xdef /rows xdef /ury xdef /urx xdef /lly xdef /llx xdef /wx xdef /code xdef /int xdef % See if the long or short format is required true cols CKSZ rows CKSZ ury CKSZ urx CKSZ lly CKSZ llx CKSZ TackRunLengthToRows { int-dict /CharDict get /Char-Info get code [0 0 llx PackByte 1 lly PackByte 2 urx PackByte 3 ury PackByte 0 0 wx PackHW 2 rows PackByte 3 cols PackByte rasters] put} { int-dict /CharDict get /Char-Info get code [0 0 urx PackHW 1 ury PackHW 0 0 llx PackHW 1 lly PackHW 0 0 rows PackHW 1 cols PackHW 0 0 16#7FFF PackHW 1 wx PackHW rasters] put} ifelse } bdef /CKSZ {abs 127 le and} bdef /TackRunLengthToRows {runlength 0 ne {/rows rows neg def} if} bdef % % <wx> <dsz> <psz> <llx> <lly> <urx> <ury> <rows> <cols> <runlength> <rasters> PLOTC % /PLOTC { /rasters xdef /runlength xdef /cols xdef /rows xdef /ury xdef /urx xdef /lly xdef /llx xdef /psz xdef /dsz xdef /wx xdef % "Plot" a character's raster pattern. rows 0 ne { gsave currentpoint translate psz dsz div dup scale cols rows true RasterScaleFactor 0 0 RasterScaleFactor neg llx neg ury tempmatrix astore {GenerateRasters} imagemask grestore } if wx x } bdef % Routine to generate rasters for "imagemask". /GenerateRasters { rasters runlength 1 eq {RunLengthToRasters} if } bdef % Routine to convert from runlength encoding back to rasters. /RunLengthToRasters { % ...not done yet... } bdef % % These procedures handle bitmap processing. % % <bitmap columns> <bitmap rows> <bitmap pix/inch> <magnification> BMbeg % /BMbeg { /BMmagnification xdef /BMresolution xdef /BMrows xdef /BMcols xdef /BMcurrentrow 0 def gsave 0.0 setgray Resolution BMresolution div dup scale currentpoint translate BMmagnification 1000.0 div dup scale 0.0 BMrows moveto BMrows dup scale currentpoint translate /BMCheckpoint save def } bdef /BMend { BMCheckpoint restore grestore } bdef % % <hex raster bitmap> <rows> BMswath % /BMswath { /rows xdef /rasters xdef BMcols rows true [BMrows 0 0 BMrows neg 0 BMcurrentrow neg] {rasters} imagemask /BMcurrentrow BMcurrentrow rows add def BMcurrentrow % save this on the stack around a restore... BMCheckpoint restore /BMcurrentrow xdef /BMCheckpoint save def } bdef % % Procedures for implementing the "rotate <theta>" special: % <theta> ROTB - % - ROTE - /ROTB { XP gsave Xpos Ypos translate rotate % using <theta> from the stack Xpos neg Ypos neg translate RP } bdef /ROTE {XP grestore RP} bdef % % Procedures for implementing the "epsfile <filename> [<mag>]" special: % <llx> <lly> <mag> EPSB - % - EPSE - /EPSB { 0 SPB save 4 1 roll % push the savelevel below the parameters /showpage {} def Xpos Ypos translate 1000 div dup scale % using <mag> from the stack neg exch neg exch translate % using <llx> <lly> from the stack } bdef /EPSE {restore 0 SPE} bdef % % Procedure for implementing revision bars: % <bary1> <bary2> <barx> <barw> REVB - % The bar is a line of width barw drawn from (barx,bary1) to (barx,bary2). /REVB { /barw xdef /barx xdef /bary2 xdef /bary1 xdef gsave barw setlinewidth barx bary1 Yadjust moveto barx bary2 Yadjust lineto stroke grestore } bdef % % A small dictionary to facilitate The Publisher's implementation % of gray table cells. /grpm 40 dict def % % Procedures for implementing the "paper <source>" option: % <name> <eop> SPS - % <eop> paper-manual - % etc. The boolean <eop> is passed so that a paper source procedure % knows if it is being called at the beginning (false) or end % (true) of a page. /SPS { /eop xdef /name xdef name where {pop eop name cvx exec} if } bdef /paper-manual { {statusdict /manualfeed known {statusdict /manualfeed true put} if} if } bdef /paper-automatic { {statusdict /manualfeed known {statusdict /manualfeed false put} if} if } bdef /paper-top-tray { {} {statusdict /setpapertray known {statusdict begin 0 setpapertray end} if} ifelse } bdef /paper-bottom-tray { {} {statusdict /setpapertray known {statusdict begin 1 setpapertray end} if} ifelse } bdef /paper-both-trays { {} {statusdict /setpapertray known {statusdict begin 2 setpapertray end} if} ifelse } bdef (end of common prolog) VMSDebug end systemdict /setpacking known {savepackingmode setpacking} if % % End of included prolog section. % %%EndProlog %%BeginSetup BeginDviLaserDoc 300 300 RES %%EndSetup %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 1009 0 XY %%EndPageSetup XP /F45 /CM-Times-Bold 74.720 11 DNF RP 1009 351 XY F45(Rationale)S 42 x(for)S 43 x(the)S 438 Y 555 X(Pr)S -1 x(oposed)S 30 x(Standard)S 31 x(for)S 31 x(a)S 31 x(Generic)S 31 x(Package)S 31 x(of)S 525 Y 824 X(Primitive)S 38 x(Functions)S 38 x(for)S 38 x(Ada)S XP /F2 /CM-Times-Bold 49.813 11 DF RP 1095 639 XY F2(Kenneth)S 30 x(W.)S 30 x(Dritz)S XP /F0 /CM-Times-Roman 49.813 11 DNF RP 1135 753 XY F0(December)S 31 x(1990)S XP /F50 /CM-Times-BoldItalic 49.813 12 DNF RP 1216 892 XY F50(Abstract)S XP /F51 /CM-Times-Roman 37.360 11 DF RP 552 973 XY F51(This)S 18 x(paper)S 17 x(supplements)S 18 x(the)S 18 x(\252Proposed)S 18 x(Standard)S 18 x(for)S 18 x(a)S 17 x (Generic)S 18 x(Package)S 18 x(of)S 17 x(Primitive)S 18 x(Functions)S 46 y 552 X(for)S 16 x(Ada,\272)S 16 x(written)S 16 x(by)S 16 x(the)S 17 x(ISO-IEC/JTC1/SC22/WG9)S 16 x(\(Ada\))S 16 x(Numerics)S 17 x (Rapporteur)S 16 x(Group.)S 28 x(Based)S 46 y 552 X(on)S 14 x (recommendations)S 14 x(made)S 14 x(jointly)S 14 x(by)S 14 x(the)S 14 x(ACM)S 14 x(SIGAda)S 14 x(Numerics)S 14 x(W)S -3 x(orking)S 14 x (Group)S 15 x(and)S 15 x(the)S 14 x(Ada-)S 45 y 552 X(Europe)S 18 x (Numerics)S 19 x(W)S -3 x(orking)S 18 x(Group,)S 20 x(the)S 19 x (proposed)S 18 x(primitive)S 18 x(functions)S 19 x(standard)S 19 x (is)S 19 x(the)S 19 x(second)S 18 x(of)S 46 y 552 X(several)S 12 x (anticipated)S 13 x(secondary)S 12 x(standards)S 13 x(to)S 13 x (address)S 12 x(the)S 13 x(interrelated)S 13 x(issues)S 12 x(of)S 12 x(portability,)S 13 x(ef)S -1 x(\014ciency,)S 46 y 552 X(and)S 16 x(robustness)S 16 x(of)S 16 x(numerical)S 17 x(software)S 16 x (written)S 16 x(in)S 16 x(Ada.)S 27 x(Its)S 16 x(purpose,)S 17 x (features,)S 17 x(and)S 16 x(developmental)S 45 y 552 X(history)S 15 x(are)S 15 x(outlined)S 16 x(in)S 15 x(this)S 15 x(commentary.)S XP /F6 /CM-Times-Roman 41.511 11 DF RP 410 1372 XY F6(At)S 9 x(about)S 9 x(the)S 10 x(time)S 9 x(that)S 10 x(work)S 9 x(on)S 10 x(a)S 10 x(proposed)S 10 x(Ada)S 9 x (standard)S 10 x(for)S 10 x(the)S 9 x(elementary)S 10 x(functions)S 10 x(began)S 10 x(in)S 10 x(1986,)S 11 x(early)S 9 x(ef)S -1 x (forts)S 50 y 327 X(to)S 13 x(implement)S 13 x(the)S 13 x (elementary)S 13 x(functions\320square)S 13 x(root,)S 13 x (logarithm,)S 13 x(trigonometric)S 13 x(functions,)S 13 x(and)S 13 x (the)S 13 x(like\320underscored)S 50 y 327 X(the)S 10 x(need)S 10 x (to)S 10 x(be)S 10 x(able)S 10 x(to)S 10 x(perform)S 10 x(certain)S 10 x(steps)S 10 x(in)S 10 x(their)S 10 x(computation)S 10 x(with)S 10 x(extreme)S 10 x(accuracy.)S 17 x(These)S 10 x(functions)S 10 x (are)S 10 x(typically)S 49 y 327 X(implemented)S 15 x(by)S 15 x (transforming)S 16 x(the)S 16 x(ar)S -1 x(gument)S 15 x(so)S 15 x (that)S 15 x(it)S 15 x(lies)S 15 x(within)S 16 x(a)S 15 x(reduced)S 15 x(range,)S 15 x(computing)S 15 x(the)S 15 x(desired)S 16 x (function)S 50 y 327 X(on)S 14 x(the)S 14 x(transformed)S 14 x(ar)S -1 x(gument)S 15 x(by)S 15 x(a)S 15 x(polynomial)S 14 x(or)S 15 x (rational)S 15 x(approximation)S 15 x(\(designed)S 14 x(to)S 14 x (be)S 15 x(suf)S -1 x(\014ciently)S 14 x(accurate)S 14 x(over)S 50 y 327 X(the)S 12 x(relatively)S 12 x(narrow)S 12 x(reduced)S 12 x(ar)S -1 x(gument)S 12 x(range\))S 12 x(to)S 12 x(obtain)S 12 x(an)S 12 x (intermediate)S 12 x(result,)S 12 x(and)S 12 x(then)S 12 x (constructing)S 12 x(the)S 12 x(\014nal)S 12 x(result)S 50 y 327 X (by)S 15 x(appropriately)S 16 x(transforming)S 16 x(the)S 15 x (intermediate)S 15 x(result.)S 23 x(Accuracy)S 16 x(is)S 15 x (controlled)S 16 x(in)S 16 x(the)S 16 x(middle)S 16 x(step)S 15 x (by)S 15 x(the)S 16 x(choice)S 15 x(of)S 50 y 327 X(approximation)S 13 x(method,)S 13 x(which)S 12 x(bounds)S 12 x(the)S 13 x (approximation)S 12 x(error.)S 18 x(However,)S 12 x(the)S 13 x (\014nal)S 13 x(result)S 13 x(can)S 13 x(be)S 12 x(extremely)S 13 x (sensitive)S 49 y 327 X(to)S 16 x(errors)S 16 x(\(such)S 16 x(as)S 16 x(roundof)S -1 x(f)S 16 x(errors\))S 16 x(made)S 16 x(in)S 16 x (the)S 16 x(ar)S -1 x(gument)S 16 x(reduction)S 15 x(step.)S 24 x (Unnecessary)S 16 x(error)S 16 x(can)S 15 x(also)S 16 x(enter)S 16 x (in)S 16 x(the)S 50 y 327 X(\014nal)S 16 x(step)S 16 x(if)S 16 x (the)S 16 x(transformation)S 16 x(it)S 16 x(represents)S 16 x(is)S 16 x(not)S 17 x(carried)S 16 x(out)S 17 x(carefully.)S 58 y 410 X (Details)S 11 x(of)S 11 x(the)S 11 x(transformations)S 11 x(needed)S 11 x(in)S 11 x(the)S 11 x(ar)S -1 x(gument)S 11 x(reduction)S 11 x (and)S 11 x(result)S 11 x(construction)S 11 x(steps)S 11 x(depend,)S 12 x(of)S 11 x(course,)S 50 y 327 X(on)S 11 x(the)S 12 x(function)S 12 x(being)S 11 x(implemented.)S 17 x(In)S 12 x(the)S 12 x(case)S 12 x(of)S 12 x(the)S 12 x(periodic)S 12 x(functions,)S 12 x(the)S 12 x(essential)S 12 x(requirement)S 12 x(is)S 12 x(to)S 12 x (compute)S 12 x(an)S 50 y 327 X(accurate)S 14 x(remainder)S 14 x (when)S 14 x(the)S 13 x(ar)S -1 x(gument)S 14 x(is)S 14 x(divided)S 14 x(by)S 14 x(the)S 14 x(period,)S 14 x(if)S 14 x(speci\014ed;)S 14 x(when)S 14 x(the)S 14 x(period)S 14 x(is)S 13 x(allowed)S 14 x (to)S 14 x(default)S 50 y 327 X(to)S 16 x(the)S 16 x(irrational)S 16 x(2)S XP /F21 /cmmi10 300 41.5 41.5 128 [-1 -10 43 31] PXLNF RP XP /F21 25 24 2 0 23 18 18 24 0 <0FFFF8 1FFFF8 3FFFF0 608400 408400 808C00 010C00 010C00 030C00 030C00 020C00 061C00 061C00 0E1C00 0C1C00 1C0E00 1C0E00 180C00> PXLC RP 631 2028 XY F21(\031)S 1 x F6(,)S 16 x(a)S 16 x(technique)S 16 x (other)S 16 x(than)S 16 x(a)S 16 x(simple)S 16 x(division)S 17 x(is)S 16 x(required)S 16 x(to)S 16 x(obtain)S 16 x(a)S 16 x(suitably)S 16 x(accurate)S 16 x(remainder.)S 50 y 327 X(In)S 14 x(other)S 14 x (cases,)S 14 x(especially)S XP /F53 /cmtt10 300 41.5 41.5 128 [0 -10 22 29] PXLNF RP XP /F53 83 22 2 0 19 25 25 24 0 <07E300 1FFF00 7FFF00 781F00 F00F00 E00700 E00700 E00000 F00000 780000 7F8000 1FF000 07FC00 00FE00 000F00 000780 000380 000380 E00380 E00380 F00780 F80F00 FFFE00 FFFC00 C7F000> PXLC RP 767 2078 XY F53(S)S XP /F53 81 22 2 -6 19 25 31 24 0 <1FFC00 3FFE00 7FFF00 780F00 F00780 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E0E380 E1E380 F0F780 787F00 7FFF00 3FFE00 1FFC00 001C00 001E00 000E00 000F00 000700 000700> PXLC RP 789 2078 XY F53(Q)S XP /F53 82 22 1 0 21 25 25 24 0 <7FE000 FFF800 7FFC00 1C1E00 1C0F00 1C0700 1C0700 1C0700 1C0700 1C0F00 1C1E00 1FFC00 1FF800 1FFC00 1C1C00 1C0E00 1C0E00 1C0E00 1C0E00 1C0E20 1C0E70 1C0E70 7F07E0 FF87E0 7F03C0> PXLC RP 811 2078 XY F53(R)S XP /F53 84 22 1 0 20 25 25 24 0 <7FFFE0 FFFFE0 FFFFE0 E0E0E0 E0E0E0 E0E0E0 E0E0E0 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 07FC00 0FFE00 07FC00> PXLC RP 833 2078 XY F53(T)S 13 x F6(and)S XP /F53 76 22 1 0 20 25 25 24 0 <FFC000 FFC000 FFC000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0040 1C00E0 1C00E0 1C00E0 1C00E0 FFFFE0 FFFFE0 FFFFE0> PXLC RP 942 2078 XY F53(L)S XP /F53 79 22 2 0 19 25 25 24 0 <1FFC00 3FFE00 7FFF00 780F00 F00780 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 F00780 F00780 780F00 7FFF00 3FFE00 1FFC00> PXLC RP 964 2078 XY F53(O)S XP /F53 71 22 2 0 20 25 25 24 0 <03E300 07FF00 1FFF00 3E1F00 3C0F00 780F00 780700 700700 F00000 E00000 E00000 E00000 E00000 E03F80 E07FC0 E03F80 F00700 700700 780F00 780F00 3C0F00 3E1F00 1FFF00 07FF00 03E700> PXLC RP 986 2078 XY F53(G)S F6(,)S 14 x(decomposition)S 14 x(of)S 14 x(the)S 14 x(ar)S -1 x(gument)S 14 x(into)S 14 x(its)S 14 x(exponent)S 15 x (and)S 14 x(fraction)S 14 x(parts)S 15 x(is)S 14 x(the)S 49 y 327 X (starting)S 17 x(point,)S 18 x(with)S 17 x(the)S 17 x(fraction)S 18 x(part)S 18 x(\(or)S 18 x(a)S 17 x(simple)S 18 x(function)S 17 x (of)S 17 x(it\))S 18 x(becoming)S 18 x(the)S 18 x(transformed)S 18 x (ar)S -1 x(gument;)S 20 x(the)S 18 x(result)S 50 y 327 X (construction)S 16 x(step)S 15 x(in)S 16 x(these)S 15 x(cases)S 15 x (usually)S 16 x(involves)S 16 x(a)S 16 x(simple)S 16 x (modi\014cation)S (\320often)S 15 x(just)S 15 x(a)S 15 x(scaling\320of)S 15 x(the)S 15 x(intermediate)S 50 y 327 X(result)S 18 x(by)S 18 x(a)S 17 x (simple)S 18 x(function)S 18 x(of)S 18 x(the)S 18 x(exponent)S 17 x (part.)S 58 y 410 X(If)S 16 x(one)S 16 x(is)S 16 x(interested)S 17 x (in)S 16 x(implementing)S 16 x(the)S 16 x(elementary)S 16 x (functions)S 17 x(in)S 16 x(a)S 16 x(portable)S 16 x(fashion,)S 17 x (how)S 16 x(does)S 16 x(one)S 16 x(go)S 17 x(about)S 50 y 327 X (computing)S 15 x(accurate)S 16 x(\015oating-point)S 15 x (remainders)S 15 x(and)S 15 x(decomposing)S 15 x(\015oating-point)S 16 x(numbers)S 15 x(into)S 15 x(their)S 16 x(constituent)S 15 x (parts)S 50 y 327 X(portably?)S 31 x(T)S -3 x(wo)S 18 x(problems)S 18 x(arise)S 18 x(if)S 18 x(one)S 18 x(tries)S 18 x(to)S 18 x(do)S 18 x(these)S 18 x(things)S 18 x(entirely)S 18 x(in)S 18 x(portable)S 18 x(Ada:)S 26 x(the)S 18 x(result)S 18 x(is)S 18 x(inef)S -1 x (\014cient,)S 50 y 327 X(often)S 18 x(involving)S 17 x(loops)S 17 x (that)S 17 x(require)S 17 x(many)S 18 x(traversals;)S 19 x(and)S 18 x(it)S 17 x(cannot)S 17 x(be)S 18 x(proven)S 17 x(fully)S 17 x (accurate)S 18 x(with)S 18 x(Ada's)S 17 x(model)S 17 x(of)S 49 y 327 X(\015oating-point)S 16 x(arithmetic,)S 16 x(since)S 15 x(the)S 16 x(model)S 16 x(caters)S 16 x(to)S 16 x(the)S 16 x(weaknesses)S 16 x(of)S 16 x(the)S 16 x(weakest)S 16 x(conforming)S 16 x (implementation)S 16 x(of)S 50 y 327 X(Ada.)S 17 x(\(On)S 10 x (machines)S 11 x(manifesting)S 11 x(them,)S 12 x(such)S 11 x (weaknesses)S (\320for)S 11 x(example,)S 12 x(lack)S 11 x(of)S 10 x(a)S 11 x (guard)S 11 x(digit\320can)S 11 x(introduce)S 11 x(errors)S 11 x(in)S 50 y 327 X(the)S 11 x(ar)S -1 x(gument)S 10 x(reduction)S 11 x(step)S 11 x(that)S 11 x(become)S 11 x(ampli\014ed)S 10 x(as)S 11 x(the)S 11 x(loops)S 11 x(are)S 11 x(traversed.\))S 17 x(The)S 11 x(ef)S -1 x(\014ciency)S 10 x(and)S 11 x(accuracy)S 10 x(problems)S 50 y 327 X(can)S 11 x(be)S 11 x(solved,)S 12 x(of)S 11 x(course,)S 12 x (by)S 12 x(judicious)S 12 x(use)S 12 x(of)S 12 x(representation)S 12 x(clauses)S 11 x(or)S 12 x(interface)S 12 x(programming)S 11 x (in)S 11 x(assembler)S 12 x(language)S 50 y 327 X(or)S 12 x(even)S 13 x(machine)S 13 x(language)S 13 x(insertions,)S 13 x(given)S 13 x (knowledge)S 13 x(of)S 13 x(the)S 13 x(host)S 12 x(machine,)S 14 x (but)S 13 x(that)S 13 x(obviously)S 13 x(destroys)S 13 x (portability.)S 58 y 410 X(Exact)S 13 x(\015oating-point)S 13 x (remainder)S 13 x(and)S 14 x(decomposition)S 13 x(of)S 14 x(a)S 13 x (\015oating-point)S 14 x(number)S 13 x(into)S 13 x(its)S 14 x (constituent)S 13 x(parts)S 14 x(are)S 14 x(two)S 50 y 327 X (examples)S 15 x(of)S XP /F7 /CM-Times-Italic 41.511 12 DNF RP 548 2792 XY F7(primitive)S 13 x(functions)S F6(\320low-level)S 14 x (\015oating-point)S 15 x(functions)S 14 x(having)S 15 x(the)S 15 x (property)S 15 x(that)S 15 x(they)S 14 x(cannot)S 15 x(be)S 15 x (coded)S 49 y 327 X(in)S 14 x(Ada)S 14 x(so)S 14 x(as)S 14 x(to)S 14 x(be)S 14 x(simultaneously)S 14 x(accurate,)S 15 x(ef)S -1 x (\014cient,)S 14 x(and)S 14 x(portable.)S 19 x(Since)S 14 x(we)S 14 x(know)S 14 x(how)S 14 x(to)S 14 x(solve)S 14 x(the)S 14 x (accuracy)S 14 x(and)S 50 y 327 X(ef)S -1 x(\014ciency)S 15 x (problems)S 14 x(when)S 14 x(details)S 15 x(of)S 14 x(the)S 14 x (underlying)S 14 x(machine)S 14 x(are)S 14 x(available)S 14 x (\(indeed,)S 14 x(some)S 14 x(of)S 14 x(the)S 14 x(primitive)S 14 x (functions)S 50 y 327 X(are)S 19 x(directly)S 19 x(available)S 19 x (as)S 19 x(hardware)S 19 x(operations)S 19 x(on)S 19 x(speci\014c)S 20 x(machines\),)S 20 x(all)S 19 x(that)S 19 x(is)S 19 x(really)S 20 x(lacking)S 19 x(is)S 19 x(a)S 19 x(standardized)S 50 y 327 X (interface)S 15 x(to)S 15 x(the)S 15 x(functions.)S 20 x(That)S 15 x (is)S 15 x(what)S 14 x(the)S 14 x(proposed)S 15 x(generic)S 15 x (primitive)S 14 x(functions)S 14 x(standard)S 15 x([1])S 14 x (provides.)S 3128 Y 1292 X(1)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 715 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 410 0 XY %%EndPageSetup 410 342 XY F6(Portable)S 11 x(implementations)S 11 x(of)S 10 x(the)S 10 x(generic)S 10 x(elementary)S 11 x(functions)S 10 x(standard)S 10 x(will)S 10 x(be)S 11 x(the)S 10 x(\014rst)S 10 x(bene\014ciary)S 10 x(of)S 10 x(the)S 10 x(generic)S 49 y 327 X(primitive)S 11 x (functions)S 11 x(standard;)S 13 x(others)S 11 x(will)S 11 x (follow.)S 17 x(However,)S 12 x(the)S 12 x(generic)S 11 x(primitive)S 12 x(functions)S 11 x(standard)S 11 x(will)S 11 x(always)S 12 x (have)S 50 y 327 X(a)S 11 x(specialized)S 11 x(clientele:)S 17 x (experts,)S 11 x(probably)S 10 x(highly)S 11 x(trained)S 10 x (numerical)S 11 x(analysts,)S 11 x(concerned)S 10 x(with)S 10 x(the)S 10 x(development)S 10 x(of)S 10 x(high-)S 50 y 327 X(quality,)S 15 x (portable)S 16 x(mathematical)S 16 x(software.)S 23 x(It)S 15 x(is)S 15 x(not)S 15 x(for)S 15 x(the)S 15 x(average)S 15 x(application)S 15 x(programmer.)S 62 y 410 X(The)S 9 x(proposed)S 10 x(standard)S 10 x(has)S 10 x(been)S 10 x(developed)S 10 x(by)S 10 x(the)S 10 x (ACM)S 10 x(SIGAda)S 10 x(Numerics)S 10 x(W)S -3 x(orking)S 10 x (Group)S 9 x(in)S 9 x(collaboration)S 10 x(with)S 50 y 327 X(the)S 10 x(Ada-Europe)S 11 x(Numerics)S 11 x(W)S -3 x(orking)S 11 x (Group.)S 17 x(The)S 10 x(proposal)S 11 x(has)S 11 x(been)S 11 x (adopted)S 11 x(by)S 11 x(the)S 10 x(WG9)S 11 x(Numerics)S 11 x (Rapporteur)S 11 x(Group)S 50 y 327 X(and)S 15 x(is)S 15 x(to)S 15 x (be)S 16 x(submitted)S 15 x(to)S 16 x(WG9)S 15 x(and)S 15 x(its)S 15 x(parents,)S 16 x(leading)S 16 x(ultimately)S 16 x(to)S 15 x(an)S 15 x(ISO)S 15 x(standard.)S 24 x(The)S 15 x(standardization)S 16 x (ef)S -1 x(fort)S 50 y 327 X(has)S 15 x(been)S 15 x(supported)S 14 x (and)S 15 x(encouraged)S 15 x(in)S 15 x(the)S 15 x(United)S 15 x (States)S 14 x(by)S 14 x(the)S 15 x(Ada)S 15 x(Joint)S 15 x(Program)S 14 x(Of)S -1 x(\014ce)S 16 x(of)S 14 x(the)S 15 x(U.S.)S 15 x (Department)S 50 y 327 X(of)S 16 x(Defense,)S 16 x(and)S 16 x(in)S 16 x(Europe)S 16 x(by)S 16 x(the)S 16 x(Commission)S 15 x(of)S 16 x (the)S 16 x(European)S 16 x(Communities.)S 62 y 410 X(Although)S 17 x(work)S 17 x(on)S 17 x(the)S 18 x(primitive)S 17 x(and)S 18 x (the)S 17 x(elementary)S 17 x(functions)S 17 x(standards)S 17 x (began)S 17 x(at)S 18 x(about)S 17 x(the)S 18 x(same)S 18 x(time,)S 18 x(the)S 50 y 327 X(elementary)S 14 x(functions)S 13 x(standard)S 13 x(was)S 13 x(completed,)S 13 x(except)S 13 x(for)S 14 x(some)S 13 x(late)S 14 x(re\014nements,)S 13 x(about)S 13 x(a)S 13 x(year)S 14 x(and)S 14 x(a)S 13 x(half)S 13 x(earlier)S 13 x([9].)S 50 y 327 X(Earliest)S 14 x(drafts)S 14 x(of)S 13 x(the)S 14 x(primitive)S 14 x(functions)S 14 x(standard)S 14 x(drew)S 13 x(heavily)S 13 x (from)S 14 x(recommendations)S 14 x(made)S 13 x(many)S 14 x(years)S 14 x(earlier)S 14 x(in)S 50 y 327 X([3];)S 17 x(other)S 16 x(works)S 16 x(in\015uencing)S 16 x(the)S 16 x(Ada)S 16 x(primitive)S 16 x (functions)S 16 x(at)S 16 x(an)S 16 x(early)S 16 x(date)S 16 x(were)S 16 x([6,)S 17 x(11,)S 16 x(15,)S 16 x(14].)S 25 x(Later)S 16 x (versions)S 15 x(of)S 50 y 327 X(the)S 14 x(primitive)S 14 x (functions)S 14 x(were)S 14 x(in\015uenced)S 14 x(by)S 14 x(the)S 14 x(IEEE)S 14 x(\015oating-point)S 15 x(standards)S 14 x([7,)S 15 x (8])S 14 x(and)S 14 x(by)S 14 x(the)S 14 x(proposed)S 14 x(Language)S 49 y 327 X(Compatible)S 14 x(Arithmetic)S 14 x(Standard)S 14 x (\(LCAS\))S 14 x([12,)S 14 x(13].)S 14 x(One)S 14 x(reason)S 14 x (for)S 14 x(the)S 14 x(delay)S 14 x(in)S 14 x(completing)S 14 x(the)S 14 x(primitive)S 14 x(functions,)S 50 y 327 X(relative)S 15 x(to)S 14 x(the)S 15 x(elementary)S 15 x(functions,)S 15 x(was)S 14 x(a)S 15 x(series)S 15 x(of)S 14 x(late)S 15 x(additions)S 15 x(to)S 15 x (the)S 15 x(proposed)S 15 x(primitive)S 15 x(functions)S 15 x (standard)S 14 x(as)S 50 y 327 X(the)S 14 x(result)S 14 x(of)S 14 x (evolving)S 14 x(implementation)S 14 x(experience)S 15 x(with)S 14 x (the)S 14 x(elementary)S 14 x(functions.)S 21 x(Another)S 15 x(was)S 15 x(the)S 15 x(recognition)S 15 x(that)S 50 y 327 X(software)S 16 x (intending)S 15 x(to)S 15 x(exploit)S 15 x(IEEE)S 16 x(arithmetic)S 16 x(had)S 16 x(to)S 16 x(pay)S 16 x(particular)S 15 x(attention)S 15 x(to)S 16 x(some)S 16 x(of)S 15 x(its)S 16 x(more)S 15 x(subtle)S 16 x(features,)S 50 y 327 X(such)S 18 x(as)S 18 x(denormalized)S 17 x(numbers)S 18 x(and)S 17 x(signed)S 17 x(zeros.)S 30 x(It)S 18 x (took)S 17 x(considerable)S 18 x(ef)S -1 x(fort)S 18 x(to)S 18 x (describe)S 17 x(the)S 18 x(primitive)S 17 x(functions)S 49 y 327 X (so)S 17 x(that)S 17 x(they)S 17 x(could)S 17 x(be)S 16 x (implemented)S 17 x(in)S 17 x(either)S 17 x(IEEE)S 17 x(or)S 17 x (non-IEEE)S 17 x(environments.)S 27 x(This)S 16 x(issue)S 17 x(also)S 17 x(had)S 16 x(rami\014cations)S 50 y 327 X(for)S 16 x(the)S 15 x (elementary)S 15 x(functions)S 15 x(standard,)S 16 x(resulting)S 16 x(in)S 16 x(a)S 16 x(recent)S 16 x(revision)S 15 x(of)S 15 x(it)S 16 x([10])S 15 x(and)S 16 x(in)S 16 x(the)S 15 x(updating)S 16 x(of)S 16 x(its)S 16 x(rationale)S 50 y 327 X(document)S 20 x([5].)S 63 y 410 X(The)S 22 x(proposed)S 23 x(standard)S 23 x(for)S 23 x(the)S 22 x(primitive)S 23 x(functions)S 23 x(de\014nes)S 23 x(the)S 22 x (speci)S (\014cation)S 23 x(of)S 23 x(a)S 23 x(generic)S 22 x(package)S 23 x (called)S 49 y 327 X F53(G)S XP /F53 69 22 1 0 20 25 25 24 0 <7FFFC0 FFFFC0 7FFFC0 1C01C0 1C01C0 1C01C0 1C01C0 1C0000 1C0000 1C1C00 1C1C00 1FFC00 1FFC00 1FFC00 1C1C00 1C1C00 1C0000 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 7FFFE0 FFFFE0 7FFFE0> PXLC RP 349 1525 XY F53(E)S XP /F53 78 22 1 0 20 25 25 24 0 <7E1FC0 FF3FE0 7F1FC0 1D0700 1D8700 1D8700 1D8700 1DC700 1DC700 1CC700 1CC700 1CE700 1CE700 1CE700 1C6700 1C6700 1C7700 1C7700 1C3700 1C3700 1C3700 1C1700 7F1F00 FF9F00 7F0F00> PXLC RP 371 1525 XY F53(NER)S XP /F53 73 22 3 0 18 25 25 16 0 <FFFE FFFE FFFE 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 FFFE FFFE FFFE> PXLC RP 436 1525 XY F53(I)S XP /F53 67 22 2 0 19 25 25 24 0 <01F180 07FF80 0FFF80 1F0F80 3C0780 780780 780380 700380 F00000 E00000 E00000 E00000 E00000 E00000 E00000 E00000 F00000 700380 780380 780380 3C0780 1F0F00 0FFE00 07FC00 01F000> PXLC RP 458 1525 XY F53(C)S XP /F53 95 22 2 -4 19 -1 3 24 0 <FFFF80 FFFF80 FFFF80> PXLC RP 480 1525 XY F53(_)S XP /F53 80 22 1 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F80 1C0380 1C03C0 1C01C0 1C01C0 1C01C0 1C03C0 1C0380 1C0F80 1FFF00 1FFE00 1FF800 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 7F0000 FF8000 7F0000> PXLC RP 501 1525 XY F53(PRI)S XP /F53 77 22 1 0 20 25 25 24 0 <FC07E0 FE0FE0 FE0FE0 3A0B80 3B1B80 3B1B80 3B1B80 3B1B80 3B1B80 3BBB80 39B380 39B380 39B380 39B380 39F380 38E380 38E380 380380 380380 380380 380380 380380 FE0FE0 FE0FE0 FE0FE0> PXLC RP 567 1525 XY F53(MITI)S XP /F53 86 22 1 0 20 25 25 24 0 <FE0FE0 FF1FE0 FE0FE0 380380 1C0700 1C0700 1C0700 1C0700 0E0E00 0E0E00 0E0E00 0E0E00 060C00 071C00 071C00 071C00 071C00 031800 03B800 03B800 03B800 01B000 01F000 01F000 00E000> PXLC RP 654 1525 XY F53(VE_)S XP /F53 70 22 1 0 20 25 25 24 0 <FFFFE0 FFFFE0 FFFFE0 1C00E0 1C00E0 1C00E0 1C00E0 1C0000 1C0000 1C1C00 1C1C00 1FFC00 1FFC00 1FFC00 1C1C00 1C1C00 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 FF8000 FFC000 FF8000> PXLC RP 719 1525 XY F53(F)S XP /F53 85 22 0 0 21 25 25 24 0 <7F07F0 FF8FF8 7F07F0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 0E0380 0E0380 070700 07FF00 03FE00 00F800> PXLC RP 741 1525 XY F53(UNCTIONS)S F6(.)S 16 x(It)S 18 x(is)S 19 x(a)S 19 x (package)S 18 x(because)S 18 x(that)S 18 x(is)S 19 x(the)S 19 x (accepted)S 19 x(way)S 19 x(to)S 18 x(collect)S 19 x(together)S 18 x (several)S 50 y 327 X(related)S 16 x(subprograms;)S 18 x(it)S 17 x (is)S 16 x(generic,)S 17 x(with)S 16 x(generic)S 17 x(formal)S 17 x (parameters)S 17 x(for)S 16 x(the)S 17 x(two)S 16 x(types)S 17 x (used)S 16 x(for)S 16 x(the)S 16 x(ar)S -1 x(guments)S 16 x(and)S 50 y 327 X(results)S 15 x(of)S 14 x(the)S 14 x(subprograms,)S 15 x (in)S 14 x(view)S 14 x(of)S 14 x(the)S 14 x(rules)S 14 x(for)S 14 x (parameter)S 15 x(associations)S 14 x(and)S 15 x(the)S 15 x (inability)S 14 x(to)S 14 x(anticipate)S 14 x(the)S 14 x(types)S 50 y 327 X(used)S 16 x(in)S 17 x(applications.)S 25 x(The)S 16 x (generic)S 16 x(formal)S 17 x(parameter)S 17 x F53(FLO)S XP /F53 65 22 1 0 20 25 25 24 0 <00E000 01F000 01F000 01B000 01B000 03B800 03B800 03B800 031800 071C00 071C00 071C00 071C00 071C00 0E0E00 0E0E00 0FFE00 0FFE00 1FFF00 1C0700 1C0700 1C0700 7F1FC0 FF1FE0 7F1FC0> PXLC RP 1297 1675 XY F53(AT_T)S XP /F53 89 22 1 0 20 25 25 24 0 <FE0FE0 FF1FE0 FE0FE0 1C0700 1C0700 0E0E00 0E0E00 071C00 071C00 071C00 03B800 03B800 01F000 01F000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 03F800 07FC00 03F800> PXLC RP 1384 1675 XY F53(YPE)S 16 x F6(gives)S 16 x(the)S 16 x(type)S 16 x (to)S 16 x(be)S 16 x(used)S 16 x(for)S 16 x(the)S 16 x (\015oating-point)S 50 y 327 X(ar)S -1 x(guments)S 18 x(and)S 17 x (results)S 17 x(of)S 17 x(subprograms)S 17 x(in)S 17 x F53 (GENERIC_PRIMITIVE_FUNCTIONS)S F6(,)S 12 x(while)S 17 x(the)S 17 x (generic)S 17 x(formal)S 17 x(parameter)S 49 y 327 X F53(E)S XP /F53 88 22 1 0 20 25 25 24 0 <7F1F80 7F3F80 7F1F80 0E1E00 0E1C00 073C00 073800 03B800 03F000 01F000 01E000 00E000 01E000 01F000 03F000 03B800 07B800 071C00 071C00 0E0E00 0E0E00 1C0700 7F1FC0 FF1FE0 7F1FC0> PXLC RP 349 1774 XY F53(XPONENT_TYPE)S 10 x F6(gives)S 12 x(the)S 13 x(type)S 13 x(to)S 12 x(be)S 13 x(used)S 13 x(for)S 12 x(the)S 13 x(few)S 13 x(integer)S 13 x(ar)S -1 x(guments)S 13 x(and)S 12 x(results)S 13 x(that,)S 13 x(with)S 13 x(one)S 13 x(exception,)S XP /F77 /CM-Times-Roman 29.058 11 DF RP 2180 1759 XY F77(1)S 15 y 13 x F6(deal)S 50 y 327 X(with)S 9 x (exponents)S 9 x(of)S 10 x(the)S 9 x(canonical)S 9 x(machine)S 9 x (representation.)S 17 x(When)S 9 x(an)S 9 x(instantiation)S 10 x(of)S 10 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 50 y 327 X F6(is)S 12 x(used)S 12 x(in)S 13 x(an)S 12 x(implementation)S 12 x(of)S 12 x(the)S 12 x (elementary)S 12 x(functions)S 13 x(\(e.g.,)S 12 x(in)S 12 x(the)S 13 x(body)S 12 x(of)S 13 x F53(GENERIC_ELEMENTARY_FUNCTIONS)S F6 (\),)S 50 y 327 X(the)S 15 x F53(FLOAT_TYPE)S 13 x F6(of)S 16 x(the)S 15 x(latter)S 15 x(should)S 16 x(be)S 15 x(passed)S 15 x(through)S 15 x(to)S 15 x(the)S 15 x(former,)S 16 x(and)S 15 x(a)S 15 x(suf)S -1 x(\014ciently)S 16 x(wide)S 15 x(integer)S 15 x(type)S 15 x (should)S 50 y 327 X(be)S 17 x(associated)S 17 x(with)S 17 x F53 (EXPONENT_TYPE)S F6(.)S 14 x(The)S 17 x(prede\014ned)S 17 x(type)S 17 x F53(INTEGER)S 16 x F6(probably)S 18 x(suf)S -1 x(\014ces)S 18 x (for)S 17 x(the)S 17 x(latter,)S 18 x(but)S 17 x(if)S 17 x(one)S 17 x(is)S 49 y 327 X(worried)S 16 x(about)S 15 x(suf)S -1 x (\014cient)S 16 x(range,)S 16 x(then)S 15 x(an)S 16 x(integer)S 16 x (type)S 16 x(whose)S 15 x(range)S 16 x(covers)S 16 x F53(SYSTEM)S XP /F53 46 22 8 0 13 5 5 8 0 <70 F8 F8 F8 70> PXLC RP 1710 2023 XY F53(.MIN_INT)S 21 x(..)S 21 x(SYSTEM.MAX_INT)S 50 y 327 X F6(can)S 18 x(be)S 18 x(de\014ned)S 19 x(and)S 19 x(used)S 19 x(instead.)S 63 y 410 X(Like)S 17 x(the)S 17 x(elementary)S 17 x (functions)S 17 x(standard,)S 17 x(the)S 16 x(primitive)S 17 x (functions)S 17 x(standard)S 16 x(permits)S 16 x(implementations)S 16 x(to)S 16 x(impose)S 50 y 327 X(a)S 15 x(restriction)S 14 x(that)S 14 x(the)S 15 x(generic)S 15 x(actual)S 15 x(type)S 15 x(associated)S 15 x(with)S 15 x F53(FLOAT_TYPE)S 13 x F6(in)S 15 x(an)S 15 x (instantiation)S 15 x(must)S 15 x(not)S 15 x(contain)S 15 x(a)S 15 x (range)S 49 y 327 X(constraint)S 19 x(that)S 20 x(reduces)S 19 x (the)S 19 x(range)S 19 x(of)S 19 x(allowable)S 19 x(values.)S 36 x (Implementations)S 19 x(choosing)S 20 x(not)S 19 x(to)S 19 x(impose)S 19 x(the)S 20 x(restriction)S 50 y 327 X(must)S 20 x(be)S 20 x (designed)S 20 x(to)S 20 x(be)S 20 x(immune)S 20 x(from)S 20 x(the)S 21 x(avoidable)S 20 x(ef)S -1 x(fects)S 21 x(of)S 20 x(such)S 20 x (range)S 20 x(constraints;)S 23 x(in)S 21 x(general,)S 22 x(this)S 20 x(means)S 50 y 327 X(that)S 19 x(variables)S 19 x(of)S 19 x(type)S 19 x F53(FLOAT_TYPE)S 17 x F6(cannot)S 19 x(safely)S 18 x(be)S 19 x (used)S 19 x(for)S 19 x(intermediate)S 19 x(results)S 19 x(within)S 19 x(an)S 19 x(implementation)S 19 x(of)S 50 y 327 X F53 (GENERIC_PRIMITIVE_FUNCTIONS)S F6(.)S 13 x(Those)S 19 x(imposing)S 19 x(the)S 20 x(restriction)S 20 x(must)S 20 x(document)S 19 x(it;)S 22 x(they)S 19 x(can)S 19 x(safely)S 20 x(use)S 20 x(such)S 50 y 327 X(variables,)S 14 x(but)S 13 x(they)S 13 x(must)S 13 x(behave)S 13 x(in)S 14 x(one)S 14 x(of)S 14 x(several)S 14 x(stated)S 13 x (ways)S 14 x(\(i.e.,)S 14 x(predictably\))S 14 x(if)S 14 x(the)S 14 x(restriction)S 13 x(is)S 13 x(violated.)S 19 x(\(For)S 14 x(a)S 50 y 327 X(detailed)S 14 x(discussion)S 13 x(of)S 13 x(the)S 13 x (genesis)S 13 x(of)S 13 x(this)S 13 x(optional)S 13 x(restriction)S 13 x(and)S 13 x(its)S 13 x(implications,)S 13 x(see)S 13 x(the)S 13 x(latest)S 13 x(revision)S 13 x(of)S 13 x([5].)S 18 x(The)S 49 y 327 X(freedom)S 11 x(of)S 11 x(an)S 12 x(implementation)S 11 x(to)S 11 x(impose)S 11 x(the)S 11 x(restriction)S 11 x(will)S 11 x(be)S 11 x(revoked)S 11 x(in)S 11 x(the)S 11 x(future)S 11 x(if)S 12 x (and)S 12 x(when)S 11 x(Ada\320for)S 11 x(example,)S 50 y 327 X(as)S 16 x(part)S 16 x(of)S 16 x(the)S 16 x(Ada)S 16 x(9X)S 16 x(revision)S 16 x(process\320acquires)S 16 x(additional)S 16 x(functionality)S 16 x(that)S 16 x(allows)S 16 x(the)S 16 x(declaration)S 16 x(of)S 16 x(variables)S 50 y 327 X(having)S 14 x(the)S 14 x(precision,)S 14 x(but)S 15 x(not)S 14 x(the)S 14 x(range,)S 14 x(of)S 14 x(a)S 15 x(generic)S 14 x(formal)S 14 x(\015oating-point)S 15 x(type.\))S 20 x(Incidentally,)S 14 x(implementations)S 14 x(are)S 50 y 327 X (not)S 13 x(allowed)S 13 x(to)S 13 x(impose)S 13 x(a)S 13 x(similar)S 13 x(restriction)S 13 x(on)S 13 x(the)S 13 x(generic)S 14 x(actual)S 13 x(types)S 14 x(that)S 13 x(can)S 13 x(be)S 13 x(associated)S 13 x (with)S 13 x F53(EXPONENT_TYPE)S 50 y 327 X F6(during)S 13 x (instantiation;)S 12 x(it)S 12 x(is)S 12 x(not)S 12 x(dif)S -1 x (\014cult)S 13 x(to)S 12 x(implement)S 12 x F53 (GENERIC_PRIMITIVE_FUNCTIONS)S 7 x F6(to)S 13 x(be)S 12 x(ef)S -1 x (\014cient)S 14 x(while)S 12 x(limiting)S 49 y 327 X(the)S 12 x (consequences)S 12 x(of)S 12 x(insuf)S -1 x(\014cient)S 14 x(range)S 13 x(in)S 13 x(that)S 12 x(generic)S 12 x(actual)S 13 x(type)S 13 x (to)S 13 x(the)S 12 x(unavoidable)S 13 x(raising)S 12 x(of)S 12 x F53(CONSTRAINT_ERROR)S 50 y 327 X F6(during)S 19 x(a)S 19 x (subprogram)S 19 x(call)S 18 x(or)S 18 x(return.)S 327 2915 XY 600 2 R XP /F80 /CM-Times-Roman 24.907 11 DF RP 398 2951 XY F80(1)S XP /F78 /CM-Times-Roman 33.209 11 DF RP 410 2963 XY F78(One)S 11 x(of)S 11 x(the)S 11 x(subprograms)S 11 x (takes)S 11 x(an)S 11 x(ar)S -1 x(gument)S 11 x(that)S 11 x(is)S 11 x(a)S 11 x(nonzero)S 11 x(count)S 10 x(of)S 11 x(the)S 10 x (number)S 11 x(of)S 11 x(digits)S 11 x(to)S 11 x(be)S 11 x(retained)S 11 x(in)S 10 x(a)S 11 x(particular)S 11 x(computation;)S 11 x(the)S 37 y 327 X(prede\014ned)S 11 x(integer)S 12 x(subtype)S XP /F81 /cmtt10 300 41.5 33.2 128 [0 -10 22 29] PXLF RP XP /F81 80 21 1 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F80 1C0380 1C03C0 1C01C0 1C01C0 1C01C0 1C03C0 1C0380 1C0F80 1FFF00 1FFE00 1FF800 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 7F0000 FF8000 7F0000> PXLC RP 696 3000 XY F81(P)S XP /F81 79 21 2 0 19 25 25 24 0 <1FFC00 3FFE00 7FFF00 780F00 F00780 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 F00780 F00780 780F00 7FFF00 3FFE00 1FFC00> PXLC RP 713 3000 XY F81(O)S XP /F81 83 21 2 0 19 25 25 24 0 <07E300 1FFF00 7FFF00 781F00 F00F00 E00700 E00700 E00000 F00000 780000 7F8000 1FF000 07FC00 00FE00 000F00 000780 000380 000380 E00380 E00380 F00780 F80F00 FFFE00 FFFC00 C7F000> PXLC RP 731 3000 XY F81(S)S XP /F81 73 21 3 0 18 25 25 16 0 <FFFE FFFE FFFE 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 FFFE FFFE FFFE> PXLC RP 748 3000 XY F81(I)S XP /F81 84 21 1 0 20 25 25 24 0 <7FFFE0 FFFFE0 FFFFE0 E0E0E0 E0E0E0 E0E0E0 E0E0E0 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 07FC00 0FFE00 07FC00> PXLC RP 766 3000 XY F81(TI)S XP /F81 86 21 1 0 20 25 25 24 0 <FE0FE0 FF1FE0 FE0FE0 380380 1C0700 1C0700 1C0700 1C0700 0E0E00 0E0E00 0E0E00 0E0E00 060C00 071C00 071C00 071C00 071C00 031800 03B800 03B800 03B800 01B000 01F000 01F000 00E000> PXLC RP 801 3000 XY F81(V)S XP /F81 69 21 1 0 20 25 25 24 0 <7FFFC0 FFFFC0 7FFFC0 1C01C0 1C01C0 1C01C0 1C01C0 1C0000 1C0000 1C1C00 1C1C00 1FFC00 1FFC00 1FFC00 1C1C00 1C1C00 1C0000 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 7FFFE0 FFFFE0 7FFFE0> PXLC RP 818 3000 XY F81(E)S 11 x F78(is)S 11 x(used)S 11 x(for)S 11 x(the)S 11 x(corresponding)S 11 x(parameter.)S 3128 Y 1292 X F6(2)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 410 0 XY %%EndPageSetup 410 342 XY F6(Perhaps)S 15 x(the)S 14 x(most)S 15 x(signi\014cant)S 14 x(dif)S -1 x(ference)S 15 x(between)S 14 x(the)S 15 x(two)S 14 x (standards,)S 14 x(other)S 14 x(than)S 14 x(subject)S 14 x(area,)S 15 x(is)S 15 x(their)S 15 x(respective)S 49 y 327 X(handling)S 13 x (of)S 12 x(accuracy)S 12 x(requirements.)S 18 x(The)S 12 x (elementary)S 13 x(functions)S 12 x(standard)S 12 x(allowed)S 12 x (implementations)S 12 x(to)S 13 x(approximate)S 12 x(the)S 50 y 327 X(exact)S 10 x(mathematical)S 10 x(result)S 10 x(but)S 10 x (constrained)S 10 x(the)S 10 x(approximation)S 10 x(error)S 10 x(by)S 10 x(requiring)S 10 x(implementations)S 10 x(to)S 10 x(satisfy)S 10 x(\252maximum)S 50 y 327 X(relative)S 16 x(error\272)S 16 x (bounds.)S 23 x(In)S 15 x(contrast,)S 16 x(the)S 15 x(primitive)S 15 x(functions)S 15 x(standard)S 15 x(requires)S 15 x (implementations)S 16 x(to)S 15 x(deliver)S 15 x(the)S 15 x(exact)S 50 y 327 X(mathematical)S 15 x(result)S 15 x(de\014ned)S 15 x(for)S 15 x(each)S 15 x(function,)S 15 x(whenever)S 15 x(that)S 15 x (result)S 15 x(is)S 15 x(representable;)S 15 x(approximations)S 15 x (are)S 15 x(permitted)S 50 y 327 X(only)S 16 x(when)S 16 x(the)S 16 x(mathematical)S 16 x(result)S 16 x(is)S 16 x(not)S 16 x (representable)S 16 x(and)S 16 x(is)S 16 x(smaller)S 16 x(in)S 16 x (magnitude)S 16 x(than)S 16 x(the)S 16 x(smallest)S 16 x(normalized)S 49 y 327 X(positive)S 19 x(\015oating-point)S 18 x(number;)S 21 x (and)S 18 x(even)S 19 x(then,)S 19 x(the)S 18 x(result)S 18 x(is)S 18 x(constrained)S 18 x(to)S 19 x(be)S 18 x(one)S 18 x(of)S 18 x (the)S 18 x(adjacent)S 19 x(representable)S 50 y 327 X(numbers.)S 22 x(This)S 15 x(level)S 15 x(of)S 15 x(accuracy)S 14 x(is)S 15 x (an)S 15 x(essential)S 15 x(aspect)S 15 x(of)S 14 x(the)S 15 x(de)S (\014nition)S 15 x(of)S 15 x(the)S 15 x(functions)S 15 x(as)S 14 x (operations)S 15 x(on)S 14 x(machine)S 50 y 327 X(numbers)S 21 x (yielding)S 20 x(related)S 21 x(machine)S 21 x(numbers,)S 22 x (without)S 21 x(which)S 21 x(their)S 20 x(utility)S 20 x(in)S 20 x (ar)S -1 x(gument)S 22 x(reduction,)S 22 x(etc.,)S 22 x(would)S 21 x (be)S 50 y 327 X(compromised.)S 31 x(Achieving)S 18 x(the)S 18 x (required)S 18 x(accuracy)S 18 x(is)S 18 x F7(not)S 18 x F6 (something)S 18 x(that)S 18 x(can)S 18 x(be)S 18 x(accomplished)S 18 x(portably)S 18 x(in)S 18 x(Ada,)S 19 x(at)S 50 y 327 X(least)S 13 x(not)S 13 x(without)S 13 x(making)S 13 x(assumptions)S 12 x (about)S 13 x(the)S 13 x(performance)S 13 x(of)S 12 x(the)S 13 x (hardware)S 12 x(that)S 13 x(go)S 13 x(well)S 12 x(beyond)S 13 x (the)S 13 x(requirements)S 49 y 327 X(imposed)S 16 x(by)S 17 x(the)S 16 x(Ada)S 17 x(model)S 17 x(of)S 17 x(\015oating-point)S 17 x (arithmetic.)S 27 x(On)S 17 x(the)S 17 x(other)S 17 x(hand,)S 18 x (the)S 16 x(required)S 16 x(accuracy)S 17 x(can)S 17 x(be)S 17 x (easily)S 50 y 327 X(and)S 14 x(ef)S -1 x(\014ciently)S 14 x (achieved)S 14 x(by)S 14 x(tar)S -1 x(geting)S 14 x(implementations)S 14 x(for)S 14 x(speci\014c)S 14 x(environments)S 15 x(and)S 14 x(by)S 14 x(utilizing)S 15 x(knowledge)S 14 x(of)S 14 x(the)S 50 y 327 X (machine)S 18 x(representations)S 18 x(in)S 18 x(conjunction)S 18 x (with)S 17 x(appropriate)S 18 x(operations)S 18 x(\(often)S 18 x (integer)S 18 x(or)S 18 x(bit)S 18 x(operations\),)S 19 x(accessed)S 18 x(if)S 50 y 327 X(necessary)S 17 x(through)S 17 x(low-level)S 17 x(interfaces.)S 28 x(A)S 17 x(precedent)S 17 x(for)S 17 x(the)S 17 x(accuracy)S 17 x(required)S 17 x(of)S 17 x(the)S 17 x(primitive)S 17 x(functions)S 17 x(can)S 17 x(be)S 50 y 327 X(found)S 18 x(in)S 18 x(the)S 18 x(Ada)S 19 x(attribute)S 19 x F53(T)S XP /F53 13 22 8 14 13 26 12 8 0 <20 70 F8 70 70 70 70 70 70 70 70 70> PXLC RP 829 1089 XY F53(\015)S XP /F53 66 22 1 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F00 1C0780 1C0380 1C0380 1C0380 1C0780 1C0700 1FFF00 1FFE00 1FFE00 1C1F00 1C0380 1C03C0 1C01C0 1C01C0 1C01C0 1C01C0 1C03C0 1C0780 7FFF80 FFFF00 7FFC00> PXLC RP 850 1089 XY F53(BASE\015LAST)S 17 x F6(for)S 19 x(a)S 19 x (\015oating-point)S 18 x(type)S 18 x F53(T)S F6(:)S 18 x(by)S 18 x (de)S (\014nition,)S 19 x(it)S 19 x(has)S 19 x(full)S 19 x(machine-number)S 50 y 327 X(accuracy,)S 16 x(which,)S 17 x(in)S 16 x(general,)S 17 x (exceeds)S 16 x(model-number)S 16 x(and)S 16 x(safe-number)S 16 x (accuracy.)S 63 y 410 X(Because)S 19 x(the)S 18 x(primitive)S 19 x (functions)S 18 x(transform)S 19 x(machine)S 18 x(numbers)S 19 x (into)S 19 x(other)S 19 x(well-de\014ned)S 19 x(machine)S 18 x (numbers,)S 19 x(the)S 50 y 327 X(standard)S 17 x(includes)S 17 x(a)S 17 x(discussion)S 18 x(of)S 18 x(exactly)S 18 x(what)S 18 x(is)S 17 x(meant)S 17 x(by)S 17 x(\252\015oating-point)S 18 x(machine)S 18 x(number\272)S 18 x(within)S 17 x(the)S 18 x(context)S 50 y 327 X (of)S 18 x(the)S 19 x(subprograms')S 18 x(de\014nitions.)S 31 x (What)S 18 x(numbers)S 18 x(are)S 18 x(in)S 18 x(the)S 18 x(set)S 19 x(of)S 18 x(machine)S 18 x(numbers?)S 32 x(Does)S 18 x(that)S 18 x(set)S 18 x(include)S 18 x(the)S 50 y 327 X(extra-precise)S 17 x (numbers)S 16 x(that)S 16 x(some)S 16 x(Ada)S 17 x(implementations)S 17 x(generate)S 17 x(as)S 16 x(a)S 16 x(consequence)S 16 x(of)S 16 x (using)S 17 x(extended)S 17 x(registers)S 17 x(for)S 49 y 327 X (intermediate)S 12 x(results?)S 18 x(The)S 13 x(answer)S 12 x(to)S 12 x(the)S 12 x(latter)S 13 x(question)S 13 x(must)S 12 x(be)S 12 x (no,)S 13 x(for)S 13 x(otherwise)S 12 x(the)S 13 x(precise)S 12 x (mathematical)S 12 x(formulas)S 50 y 327 X(used)S 16 x(to)S 16 x (specify)S 16 x(the)S 16 x(results)S 16 x(of)S 16 x(some)S 16 x(of)S 17 x(the)S 16 x(functions)S 17 x(would)S 17 x(imply)S 16 x(that)S 17 x(the)S 17 x(output)S 16 x(from)S 16 x(a)S 16 x(function)S 17 x (must)S 17 x(be)S 16 x(extra-)S 50 y 327 X(precise)S 13 x(if)S 14 x (its)S 14 x(input)S 14 x(is,)S 13 x(and)S 14 x(yet)S 13 x(the)S 13 x (programmer)S 13 x(has)S 14 x(no)S 14 x(means)S 14 x(to)S 13 x (ensure)S 13 x(that)S 13 x(that)S 14 x(will)S 13 x(be)S 14 x(the)S 14 x(case.)S 18 x(Thus,)S 13 x(it)S 14 x(is)S 13 x(clearly)S 50 y 327 X(stated)S 19 x(that)S 20 x(the)S 20 x(\252machine)S 19 x (numbers)S (\272)S 19 x(referred)S 19 x(to)S 20 x(throughout)S 19 x(the)S 19 x (standard)S 19 x(are)S 20 x(the)S 20 x F7(storable)S 19 x F6 (machine)S 19 x(numbers\320the)S 50 y 327 X(ones)S 18 x(that)S 18 x (can)S 18 x(be)S 18 x(\(a\))S 18 x(stored;)S 20 x(\(b\))S 18 x (propagated)S 18 x(by)S 18 x(assignment,)S 19 x(parameter)S 18 x (association,)S 19 x(and)S 18 x(function)S 18 x(returns;)S 20 x(and)S 18 x(\(c\))S 49 y 327 X(characterized)S 17 x(by)S 17 x(the)S 17 x (representation)S 17 x(attributes)S 17 x F53(FLOAT_TYPE\015MAC)S XP /F53 72 22 1 0 20 25 25 24 0 <7F1FC0 FFBFE0 7F1FC0 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1FFF00 1FFF00 1FFF00 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 7F1FC0 FFBFE0 7F1FC0> PXLC RP 1421 1650 XY F53(HINE_MANTISSA)S F6(,)S 14 x F53(FLOAT_TYPE\015BASE)S (\015FIRST)S F6(,)S 13 x(and)S 50 y 327 X F53(FLOAT_TYPE\015BASE)S (\015LAST)S F6(.)S 16 x(Implementations)S 20 x(of)S 20 x(the)S 20 x (primitive)S 20 x(functions)S 20 x(are)S 19 x(entitled)S 20 x(to)S 19 x(assume)S 19 x(that)S 19 x(only)S 20 x(storable)S 50 y 327 X (machine)S 13 x(numbers)S 13 x(will)S 13 x(be)S 13 x(seen)S 13 x(as)S 13 x(ar)S -1 x(guments,)S 14 x(and)S 13 x(implementations)S 13 x(of)S 13 x(Ada)S 13 x(must)S 13 x(uphold)S 13 x(that)S 13 x(assumption)S 13 x(\(by)S 13 x(forcing)S 50 y 327 X(storage,)S 17 x(if)S 17 x (necessary,)S 17 x(before)S 16 x(calling)S 16 x(a)S 16 x(primitive)S 16 x(function\))S 16 x(in)S 16 x(order)S 16 x(for)S 17 x (implementations)S 16 x(of)S 16 x(the)S 16 x(primitive)S 16 x (functions)S 50 y 327 X(to)S 18 x(have)S 18 x(any)S 18 x(hope)S 18 x (of)S 17 x(conforming)S 18 x(to)S 18 x(the)S 17 x(standard.)S 63 y 410 X(Furthermore,)S 18 x(because)S 17 x(some)S 17 x(hardware)S 17 x (\(e.g.,)S 18 x(that)S 17 x(implementing)S 17 x(IEEE)S 17 x (arithmetic\))S 17 x(has)S 17 x(the)S 18 x(capability)S 17 x(of)S 17 x(repre-)S 50 y 327 X(senting)S 16 x(denormalized)S 16 x(numbers)S (\320those)S 16 x(with)S 16 x(the)S 16 x(minimum)S 16 x(exponent)S 16 x(and)S 16 x(an)S 16 x(unnormalized)S 15 x(fraction)S 16 x(part)S (\320one)S 16 x(must)S 50 y 327 X(also)S 17 x(be)S 18 x(precise)S 17 x(about)S 17 x(whether)S 17 x(the)S 17 x(set)S 17 x(of)S 17 x (machine)S 17 x(numbers)S 17 x(includes)S 17 x(them.)S 29 x(The)S 17 x(standard)S 18 x(says)S 17 x(that)S 17 x(it)S 17 x(does)S 18 x (if)S 17 x(the)S 50 y 327 X(hardware)S 11 x(has)S 10 x(the)S 11 x (capability)S 10 x(of)S 11 x(representing)S 11 x(them)S 10 x(and)S 11 x(the)S 11 x(Ada)S 11 x(implementation)S 11 x(uses)S 11 x(the)S 11 x(hardware)S 11 x(in)S 11 x(such)S 11 x(a)S 11 x(way)S 11 x(that)S 11 x(it)S 50 y 327 X(actually)S 13 x(generates)S 13 x(them;)S 13 x (otherwise,)S 13 x(it)S 13 x(does)S 13 x(not.)S 18 x(This)S 13 x(is)S 12 x(especially)S 13 x(signi\014cant)S 13 x(when)S 13 x(talking)S 13 x(about)S 13 x(\252adjacent)S 12 x(machine)S 49 y 327 X(numbers,)S (\272)S 14 x(since)S 15 x(the)S 14 x(machine)S 14 x(number)S 14 x (adjacent)S 14 x(to)S 15 x(the)S 15 x(smallest)S 14 x(positive)S 14 x(normalized)S 14 x(number,)S 15 x(in)S 15 x(the)S 15 x (direction)S 15 x(toward)S 50 y 327 X(zero,)S 17 x(will)S 16 x(be)S 17 x(a)S 17 x(denormalized)S 16 x(number)S 17 x(if)S 17 x(the)S 17 x (hardware)S 17 x(and)S 16 x(Ada)S 16 x(implementation)S 16 x (recognize)S 16 x(denormalized)S 17 x(numbers,)S 50 y 327 X(and)S 15 x(zero)S 16 x(otherwise.)S 22 x(It)S 15 x(is)S 15 x(also)S 16 x (germane)S 16 x(to)S 15 x(the)S 15 x(approximations)S 15 x(that)S 15 x(are)S 15 x(permitted)S 15 x(when)S 15 x(a)S 15 x(de\014ned)S 15 x(result)S 15 x(falls)S 15 x(in)S 15 x(the)S 50 y 327 X (denormalized)S 17 x(range)S 17 x(and)S 18 x(is)S 18 x(not)S 17 x (exactly)S 18 x(representable.)S 63 y 410 X(Some)S 15 x(hardware)S 15 x(\(again,)S 16 x(typically)S 15 x(hardware)S 15 x(conforming)S 15 x(to)S 15 x(IEEE)S 15 x(arithmetic\))S 15 x(has)S 15 x(the)S 15 x (capability)S 15 x(of)S 15 x(representing)S 50 y 327 X(both)S 13 x (positive)S 13 x(and)S 13 x(negative)S 13 x(zeros)S 13 x(\(i.e.,)S 14 x(the)S 13 x(sign)S 14 x(of)S 13 x(zero)S 13 x(is)S 13 x (relevant)S 14 x(in)S 13 x(some)S 13 x(contexts\).)S 18 x(Like)S 14 x(the)S 14 x(elementary)S 13 x(functions)S 50 y 327 X(standard,)S 15 x(the)S 15 x(primitive)S 15 x(functions)S 15 x(standard)S 15 x (allows)S 15 x(signed)S 15 x(zeros)S 15 x(to)S 15 x(be)S 15 x (exploited)S 15 x(if)S 15 x(they)S 15 x(are)S 15 x(present)S 15 x (in)S 15 x(the)S 15 x(hardware,)S 50 y 327 X(but)S 18 x(does)S 18 x (not)S 18 x(require)S 18 x(them)S 18 x(to)S 18 x(be)S 18 x (exploited.)S 30 x(And)S 18 x(like)S 18 x(the)S 17 x(elementary)S 18 x(functions)S 18 x(standard,)S 19 x(the)S 17 x(primitive)S 17 x (functions)S 50 y 327 X(standard)S 16 x(does)S 17 x(not)S 16 x(give)S 16 x(the)S 17 x(required)S 16 x(sign)S 16 x(of)S 16 x(each)S 17 x (zero)S 17 x(result)S 17 x(\(when)S 17 x(signed)S 17 x(zeros)S 17 x (are)S 16 x(being)S 17 x(exploited\),)S 18 x(but)S 16 x(leaves)S 49 y 327 X(that)S 13 x(to)S 12 x(other)S 12 x(standards)S 12 x(or)S 12 x(interpretations.)S -15 y F77(2)S 15 y 18 x F6(The)S 12 x (behavior)S 13 x(of)S 13 x(one)S 12 x(of)S 12 x(the)S 12 x (primitive)S 12 x(functions,)S 13 x F53(COPY_SIGN)S F6(,)S 11 x (does)S 12 x(depend)S 50 y 327 X(on)S 14 x(the)S 14 x(sign)S 15 x (of)S 14 x(a)S 15 x(zero)S 15 x(ar)S -1 x(gument)S 14 x(\(when)S 15 x(signed)S 15 x(zeros)S 15 x(are)S 15 x(being)S 15 x (exploited\),)S 15 x(as)S 14 x(is)S 14 x(also)S 15 x(true)S 15 x(of)S 15 x F53(ARCTAN)S 13 x F6(and)S 14 x F53(ARCCOT)S 14 x F6(in)S 50 y 327 X(the)S 14 x(elementary)S 14 x(functions.)S 20 x(The)S 14 x (standard)S 14 x(also)S 15 x(clari\014es)S 15 x(that)S 14 x(plus)S 14 x(and)S 15 x(minus)S 15 x(zero)S 14 x(are)S 15 x F7(not)S 14 x F6(to)S 15 x(be)S 15 x(considered)S 15 x(\252adjacent\272)S 50 y 327 X(\(and)S 17 x(therefore)S 17 x(dif)S -1 x(ferent\))S 18 x (machine)S 17 x(numbers,)S 18 x(in)S 17 x(any)S 17 x(context)S 17 x (where)S 17 x(adjacency)S 17 x(is)S 16 x(relevant;)S 18 x(thus,)S 17 x(the)S 17 x(\252neighbors\272)S 16 x(of)S 50 y 327 X(zero)S 19 x (do)S 18 x(not)S 19 x(depend)S 18 x(on)S 19 x(the)S 19 x(sign)S 18 x (of)S 18 x(zero.)S 327 2913 XY 600 2 R 38 y 398 X F80(2)S 12 y F78 (There)S 12 x(are)S 11 x(four)S 11 x(exceptions,)S 11 x(however.)S 15 x(The)S 12 x(required)S 11 x(signs)S 11 x(of)S 12 x(zero)S 11 x (results)S 11 x(from)S XP /F81 65 21 1 0 20 25 25 24 0 <00E000 01F000 01F000 01B000 01B000 03B800 03B800 03B800 031800 071C00 071C00 071C00 071C00 071C00 0E0E00 0E0E00 0FFE00 0FFE00 1FFF00 1C0700 1C0700 1C0700 7F1FC0 FF1FE0 7F1FC0> PXLC RP 1460 2963 XY F81(A)S XP /F81 68 21 0 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F00 1C0780 1C03C0 1C01C0 1C01C0 1C01E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C01C0 1C01C0 1C03C0 1C0780 1C0F80 7FFF00 FFFE00 7FF800> PXLC RP 1478 2963 XY F81(D)S XP /F81 74 21 3 0 19 25 25 16 0 <07FE 07FF 07FE 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 6038 F038 F070 7FF0 7FE0 1F80> PXLC RP 1495 2963 XY F81(JA)S XP /F81 67 21 2 0 19 25 25 24 0 <01F180 07FF80 0FFF80 1F0F80 3C0780 780780 780380 700380 F00000 E00000 E00000 E00000 E00000 E00000 E00000 E00000 F00000 700380 780380 780380 3C0780 1F0F00 0FFE00 07FC00 01F000> PXLC RP 1530 2963 XY F81(CE)S XP /F81 78 21 1 0 20 25 25 24 0 <7E1FC0 FF3FE0 7F1FC0 1D0700 1D8700 1D8700 1D8700 1DC700 1DC700 1CC700 1CC700 1CE700 1CE700 1CE700 1C6700 1C6700 1C7700 1C7700 1C3700 1C3700 1C3700 1C1700 7F1F00 FF9F00 7F0F00> PXLC RP 1565 2963 XY F81(NT)S F78(,)S 12 x F81(S)S XP /F81 85 21 0 0 21 25 25 24 0 <7F07F0 FF8FF8 7F07F0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 0E0380 0E0380 070700 07FF00 03FE00 00F800> PXLC RP 1637 2963 XY F81(UCCESSO)S XP /F81 82 21 1 0 21 25 25 24 0 <7FE000 FFF800 7FFC00 1C1E00 1C0F00 1C0700 1C0700 1C0700 1C0700 1C0F00 1C1E00 1FFC00 1FF800 1FFC00 1C1C00 1C0E00 1C0E00 1C0E00 1C0E00 1C0E20 1C0E70 1C0E70 7F07E0 FF87E0 7F03C0> PXLC RP 1759 2963 XY F81(R)S F78(,)S 12 x F81(PREDECESSOR)S F78(,)S 15 x (and)S 11 x F81(COP)S XP /F81 89 21 1 0 20 25 25 24 0 <FE0FE0 FF1FE0 FE0FE0 1C0700 1C0700 0E0E00 0E0E00 071C00 071C00 071C00 03B800 03B800 01F000 01F000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 03F800 07FC00 03F800> PXLC RP 2118 2963 XY F81(Y)S XP /F81 95 21 2 -4 19 -1 3 24 0 <FFFF80 FFFF80 FFFF80> PXLC RP 2136 2963 XY F81(_SI)S XP /F81 71 21 2 0 20 25 25 24 0 <03E300 07FF00 1FFF00 3E1F00 3C0F00 780F00 780700 700700 F00000 E00000 E00000 E00000 E00000 E03F80 E07FC0 E03F80 F00700 700700 780F00 780F00 3C0F00 3E1F00 1FFF00 07FF00 03E700> PXLC RP 2188 2963 XY F81(GN)S XP /F82 /CM-Times-Italic 33.209 12 DF RP 2234 2963 XY F82(ar)S -1 x(e)S 37 y 327 X F78(spelled)S 11 x(out)S 11 x(in)S 12 x(the)S 11 x(standard)S 11 x(because)S 11 x(those)S 11 x(functions)S 11 x(are)S 11 x(intimately)S 11 x(concerned)S 11 x (with)S 11 x(representations.)S 3128 Y 1292 X F6(3)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 410 0 XY %%EndPageSetup 410 342 XY F6(Early)S 12 x(versions)S 12 x(of)S 12 x(the)S 11 x (proposed)S 11 x(primitive)S 11 x(functions)S 11 x(standard)S 12 x (did)S 12 x(not)S 11 x(permit)S 11 x F7(any)S 12 x F6 (approximations:)S 17 x(when)S 12 x(the)S 11 x(exact)S 49 y 327 X (mathematical)S 11 x(result)S 11 x(was)S 12 x(not)S 11 x (representable,)S 12 x(they)S 11 x(called)S 12 x(for)S 12 x(the)S 12 x(raising)S 11 x(of)S 11 x(an)S 11 x(exception)S 11 x(to)S 11 x (signal)S 11 x(that)S 11 x(fact.)S 18 x(Indeed,)S 12 x(this)S 50 y 327 X(applied)S 11 x(not)S 11 x(just)S 11 x(to)S 11 x(under\015ow)S 11 x(situations,)S -15 y F77(3)S 15 y 11 x F6(but)S 11 x(to)S 11 x (over)S (\015ow)S 11 x(as)S 11 x(well.)S 17 x(An)S 11 x(exception)S 11 x (called)S 11 x F53(REPRESENTATION_ERROR)S 6 x F6(was)S 50 y 327 X (reserved)S 14 x(for)S 15 x(that)S 15 x(purpose.)S 21 x(Commenting)S 15 x(on)S 15 x(an)S 14 x(early)S 15 x(version)S 14 x(of)S 14 x(the)S 15 x(proposal,)S 15 x(an)S 14 x(observer)S 15 x(convinced)S 15 x (the)S 15 x(committee)S 50 y 327 X(that)S 16 x(it)S 16 x(would)S 16 x(be)S 16 x(better)S 16 x(to)S 15 x(signal)S 16 x(over\015ow)S 16 x(in)S 16 x(the)S 16 x(usual)S 16 x(way)S 16 x(\(i.e.,)S 17 x(by)S 16 x(raising)S 16 x(the)S 16 x(prede\014ned)S 16 x(exception)S 16 x (provided)S 15 x(by)S 50 y 327 X(Ada)S 16 x(for)S 16 x(that)S 16 x (contingency\))S 16 x(and)S 15 x(that)S 15 x(it)S 16 x(would)S 16 x (also)S 15 x(be)S 15 x(better)S 16 x(to)S 16 x(provide)S 16 x(a)S 15 x(result)S 15 x(conforming)S 16 x(to)S 16 x(the)S 15 x(Ada)S 15 x (standard)S 16 x(in)S 49 y 327 X(cases)S 13 x(of)S 13 x(under\015ow)S 13 x(\(including)S 13 x(\015ushing)S 14 x(to)S 13 x(zero,)S 13 x(if)S 14 x(nothing)S 13 x(better)S 13 x(could)S 13 x(be)S 13 x(done\))S 13 x(instead)S 13 x(of)S 13 x(raising)S 13 x(an)S 13 x(exception.)S 18 x(An)S 50 y 327 X(over\015ow)S 15 x(or)S 15 x(under\015ow)S 16 x (in)S 16 x(the)S 16 x(result)S 16 x(of)S 16 x(a)S 16 x(primitive)S 15 x(function)S 15 x(is)S 15 x(most)S 16 x(likely)S 16 x(to)S 15 x (occur)S 15 x(when)S 16 x(the)S 16 x(primitive)S 15 x(function)S 15 x(is)S 50 y 327 X(used)S 15 x(for)S 15 x(scaling)S 15 x(purposes)S 16 x(in)S 15 x(the)S 15 x(\014nal)S 15 x(step)S 15 x(of)S 15 x(some)S 16 x(other)S 15 x(computation,)S 16 x(such)S 15 x(as)S 15 x(that)S 15 x(of)S 15 x(an)S 15 x(elementary)S 15 x(function.)S 22 x(In)S 50 y 327 X(such)S 13 x(a)S 13 x(case,)S 13 x(the)S 13 x(elementary)S 13 x(function)S 13 x(would)S 13 x(over\015ow)S 13 x(or)S 13 x(under)S (\015ow)S 12 x(as)S 13 x(well,)S 13 x(and)S 12 x(it)S 12 x(would)S 13 x(be)S 13 x(undesirable)S 13 x(to)S 13 x(force)S 13 x(the)S 50 y 327 X(latter)S 15 x(to)S 15 x(intercept)S 15 x(a)S 15 x F53 (REPRESENTATION_ERROR)S 11 x F6(exception)S 15 x(arising)S 15 x(in)S 15 x(the)S 15 x(former)S 15 x(just)S 15 x(so)S 15 x(that)S 15 x(it)S 15 x(could)S 15 x(substitute)S 15 x(some)S 49 y 327 X(other)S 13 x (behavior.)S 18 x(As)S 12 x(the)S 12 x(primitive)S 12 x(functions)S 12 x(standard)S 12 x(is)S 12 x(now)S 12 x(written,)S 12 x(an)S 12 x (over)S (\015ow)S 13 x(or)S 12 x(under\015ow)S 12 x(occurring)S 12 x(in)S 12 x(the)S 12 x(result)S 50 y 327 X(of)S 13 x(a)S 14 x(primitive)S 13 x(function)S 13 x(called)S 13 x(to)S 13 x(perform)S 13 x(scaling)S 13 x(in)S 13 x(the)S 13 x(\014nal)S 14 x(step)S 14 x(of)S 14 x(the)S 14 x(computation)S 14 x(of)S 13 x(an)S 13 x(elementary)S 14 x (function)S 13 x(can)S 50 y 327 X(simply)S 14 x(be)S 14 x (propagated)S 14 x(from)S 14 x(the)S 13 x(primitive)S 13 x(function)S 14 x(through)S 14 x(the)S 14 x(elementary)S 14 x(function)S 14 x(to)S 14 x(the)S 14 x(latter's)S 14 x(caller,)S 14 x(which)S 13 x(will)S 50 y 327 X(thus)S 15 x(satisfy)S 15 x(the)S 15 x(requirements)S 15 x (of)S 15 x(the)S 15 x(elementary)S 15 x(functions)S 15 x(standard)S 15 x(in)S 16 x(a)S 15 x(most)S 15 x(ef)S -1 x(\014cient)S 15 x(way.)S 58 y 410 X(W)S -2 x(ith)S 16 x(under\015ows)S 15 x(reported)S 14 x (by)S 14 x(approximations)S 14 x(and)S 14 x(over\015ows)S 14 x (signaled)S 14 x(by)S 14 x(the)S 14 x(appropriate)S 15 x (prede\014ned)S 14 x(exception,)S 50 y 327 X(there)S 20 x(was)S 20 x (no)S 20 x(longer)S 20 x(any)S 20 x(need)S 20 x(for)S 20 x(the)S 20 x F53(REPRESENTATION_ERROR)S 16 x F6(exception,)S 21 x(which)S 20 x(was)S 20 x(accordingly)S 20 x(eliminated.)S 50 y 327 X(No)S 17 x(exceptions)S 17 x(are)S 17 x(declared)S 17 x(by)S 17 x F53 (GENERIC_PRIMITIVE_FUNCTIONS)S F6(.)S 11 x(Only)S 17 x(prede\014ned)S 16 x(exceptions)S 17 x(may)S 17 x(be)S 16 x(raised)S 16 x(by)S 49 y 327 X(implementations)S 13 x(of)S 13 x(the)S 14 x(primitive)S 14 x (functions,)S 14 x(and)S 14 x(even)S 14 x(those)S 14 x(are)S 14 x (restricted)S 14 x(\(as)S 14 x(they)S 13 x(were)S 13 x(in)S 13 x (the)S 13 x(elementary)S 13 x(functions)S 50 y 327 X(standard\))S 18 x(to)S 17 x(speci\014c)S 18 x(cases)S 18 x(where)S 17 x(they)S 17 x(are)S 17 x(unavoidable.)S 58 y 410 X(The)S 16 x(subprograms)S 16 x(\(fourteen)S 17 x(functions)S 16 x(and)S 16 x(one)S 16 x (procedure\))S 16 x(in)S 17 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 10 x F6(can)S 16 x(be)S 16 x(or)S -1 x(ga-)S 50 y 327 X(nized)S 15 x (into)S 16 x(four)S 15 x(groups)S 16 x(for)S 16 x(presentation)S 15 x(purposes.)S 23 x(In)S 16 x(the)S 16 x(discussions)S 15 x(that)S 15 x(follow,)S 16 x(ar)S -1 x(guments)S 16 x(and)S 15 x(results)S 16 x(are)S 15 x(of)S 15 x(the)S 50 y 327 X(\015oating-point)S 14 x (type)S 14 x F53(FLOAT_TYPE)S 11 x F6(except)S 14 x(where)S 14 x (noted,)S 14 x(and)S XP /F21 12 23 1 -8 24 29 37 24 0 <0001F0 000618 00080C 00100C 00200E 00400E 00800E 00801C 01001C 010018 010038 020FF0 0210C0 020FE0 020030 040030 040030 040038 040038 080070 080070 080070 0800E0 1800E0 1800C0 140180 140300 230E00 20F800 200000 200000 400000 400000 400000 400000 800000 800000> PXLC RP 1309 1454 XY F21(\014)S 17 x F6(stands)S 14 x(for)S 14 x(the)S 13 x (value)S 13 x(of)S 14 x F53(FLOAT_TYPE\015MACHINE_RA)S XP /F53 68 22 0 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F00 1C0780 1C03C0 1C01C0 1C01C0 1C01E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C01C0 1C01C0 1C03C0 1C0780 1C0F80 7FFF00 FFFE00 7FF800> PXLC RP 2201 1454 XY F53(DIX)S F6(.)S 58 y 410 X(The)S 22 x(\014rst)S 22 x (group)S 22 x(comprises)S 23 x(basic)S 23 x(decomposition,)S 25 x (composition,)S 24 x(and)S 22 x(scaling)S 22 x(subprograms)S 22 x (for)S 22 x(\015oating-point)S 50 y 327 X(numbers.)S 20 x(These)S 14 x(are)S 14 x(the)S 14 x F53(EXPONENT)S F6(,)S 13 x F53(FRACTION)S F6(,)S 12 x F53(COMPOSE)S F6(,)S 12 x(and)S 14 x F53(SCALE)S 13 x F6(functions)S 15 x(and)S 14 x(the)S 14 x F53(DECOMPOSE)S 13 x F6 (procedure.)S 58 y 410 X F53(EXPONENT)S 11 x F6(is)S 13 x(primarily)S 13 x(useful)S 13 x(in)S 13 x(ar)S -1 x(gument)S 14 x(reduction)S 13 x(steps,)S 13 x(where)S 13 x(it)S 13 x(gives)S 13 x(a)S 13 x (coarse)S 13 x(indication)S 13 x(of)S 13 x(the)S 13 x(magnitude)S 50 y 327 X(of)S 19 x(its)S 19 x(ar)S -1 x(gument.)S 36 x(Except)S 20 x(when)S 20 x F53(X)S XP /F20 /cmr10 300 41.5 41.5 128 [-3 -11 41 31] PXLNF RP XP /F20 61 32 2 4 29 16 12 32 0 <7FFFFFC0 FFFFFFE0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FFFFFFE0 7FFFFFC0> PXLC RP 931 1670 XY F20(=)S XP /F53 48 22 2 0 19 25 25 24 0 <03E000 0FF800 1FFC00 1E3C00 380E00 780F00 700700 700700 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 F00780 700700 700700 780F00 3C1E00 1E3C00 1FFC00 0FF800 03E000> PXLC RP 985 1670 XY F53(0.0)S -1 x F6(,)S 21 x(the)S 20 x(function)S 20 x F53(EXPONENT)S XP /F53 40 22 6 -4 17 29 33 16 0 <00E0 01E0 07C0 0700 0F00 1E00 3C00 3800 7800 7000 7000 7000 F000 E000 E000 E000 E000 E000 E000 E000 F000 7000 7000 7000 7800 3800 3C00 1E00 0F00 0700 07C0 01E0 00E0> PXLC RP 1485 1670 XY F53(\(X)S XP /F53 41 22 4 -4 15 29 33 16 0 <E000 F000 7C00 1C00 1E00 0F00 0780 0380 03C0 01C0 01C0 01C0 01E0 00E0 00E0 00E0 00E0 00E0 00E0 00E0 01E0 01C0 01C0 01C0 03C0 0380 0780 0F00 1E00 1C00 7C00 F000 E000> PXLC RP 1529 1670 XY F53(\))S 19 x F6(delivers\320as)S 20 x(a)S 20 x(value)S 20 x(of)S 20 x(the)S 19 x(integer)S 20 x(type)S 50 y 327 X F53 (EXPONENT_TYPE)S F6(\320the)S 9 x(unique)S 12 x(integer)S XP /F21 107 22 2 0 20 29 29 24 0 <0FC000 01C000 01C000 038000 038000 038000 038000 070000 070000 070000 070000 0E0700 0E1880 0E21C0 0E23C0 1C4780 1C8300 1D0000 1E0000 3F8000 39C000 38E000 38E000 70E100 70E100 70E100 70E200 E06200 603C00> PXLC RP 967 1720 XY F21(k)S 13 x F6(such)S 12 x(that)S 12 x F21(\014)S XP /F58 /cmmi7 300 29.1 29.1 128 [-1 -7 32 22] PXLNF RP XP /F58 107 18 2 0 15 20 20 16 0 <3E00 0600 0C00 0C00 0C00 0C00 1800 1870 18B8 1938 3230 3400 3800 3E00 6300 6310 6310 6310 C320 C1C0> PXLC RP 1190 1705 XY F58(k)S XP /F59 /cmsy7 300 29.1 29.1 128 [-1 -28 35 23] PXLNF RP XP /F59 0 26 3 6 21 8 2 24 0 <FFFFC0 FFFFC0> PXLC RP 1208 1705 XY F59(\000)S PF XP /F32 /cmr10 300 41.5 29.1 128 [-3 -11 41 31] PXLNF RP XP /F32 49 21 4 0 17 28 28 16 0 <0300 0700 3F00 C700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0700 0F80 FFF8> PXLC RP 1234 1705 XY F32(1)S XP /F22 /cmsy10 300 41.5 41.5 128 [-1 -40 45 32] PXLNF RP XP /F22 20 32 3 -8 28 26 34 32 0 <00000180 00000780 00001E00 00007800 0001E000 00078000 001E0000 00780000 01E00000 07800000 1E000000 78000000 E0000000 78000000 1E000000 07800000 01E00000 00780000 001E0000 00078000 0001E000 00007800 00001E00 00000780 00000180 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FFFFFF80 FFFFFF80> PXLC RP 1262 1720 XY F22(\024)S XP /F22 106 12 5 -10 7 31 41 8 0 <C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0> PXLC RP 1306 1720 XY F22(j)S XP /F53 /cmtt10 300 41.5 41.5 128 [0 -10 22 29] PXLNF RP XP /F53 88 22 1 0 20 25 25 24 0 <7F1F80 7F3F80 7F1F80 0E1E00 0E1C00 073C00 073800 03B800 03F000 01F000 01E000 00E000 01E000 01F000 03F000 03B800 07B800 071C00 071C00 0E0E00 0E0E00 1C0700 7F1FC0 FF1FE0 7F1FC0> PXLC RP 1318 1720 XY F53(X)S F22(j)S XP /F21 /cmmi10 300 41.5 41.5 128 [-1 -10 43 31] PXLNF RP XP /F21 60 32 3 -2 28 22 24 32 0 <00000380 00000F00 00003C00 0000F000 0003C000 000F0000 003C0000 00F00000 03C00000 0F000000 3C000000 F0000000 F0000000 3C000000 0F000000 03C00000 00F00000 003C0000 000F0000 0003C000 0000F000 00003C00 00000F00 00000380> PXLC RP 1363 1720 XY F21(<)S XP /F21 12 23 1 -8 24 29 37 24 0 <0001F0 000618 00080C 00100C 00200E 00400E 00800E 00801C 01001C 010018 010038 020FF0 0210C0 020FE0 020030 040030 040030 040038 040038 080070 080070 080070 0800E0 1800E0 1800C0 140180 140300 230E00 20F800 200000 200000 400000 400000 400000 400000 800000 800000> PXLC RP 1406 1720 XY F21(\014)S XP /F58 /cmmi7 300 29.1 29.1 128 [-1 -7 32 22] PXLNF RP XP /F58 107 18 2 0 15 20 20 16 0 <3E00 0600 0C00 0C00 0C00 0C00 1800 1870 18B8 1938 3230 3400 3800 3E00 6300 6310 6310 6310 C320 C1C0> PXLC RP 1432 1705 XY F58(k)S XP /F6 /CM-Times-Roman 41.511 11 DNF RP 1452 1720 XY F6(.)S 18 x(This)S 12 x(de\014nition)S 12 x(is)S 12 x (entirely)S 12 x(mathematical)S 12 x(and)S 12 x(not)S 49 y 327 X (related)S 12 x(to)S 12 x(the)S 12 x(representation)S 13 x(of)S 13 x F53(X)S 12 x F6(on)S 12 x(the)S 12 x(machine.)S 18 x(Thus,)S 13 x (as)S 12 x(a)S 12 x(positive)S 13 x F53(X)S 12 x F6(decreases)S 13 x (through)S 12 x(the)S 12 x(normalized)S 12 x(range)S 12 x(and)S 50 y 327 X(into)S 15 x(the)S 15 x(denormalized)S 16 x(range,)S XP /F53 69 22 1 0 20 25 25 24 0 <7FFFC0 FFFFC0 7FFFC0 1C01C0 1C01C0 1C01C0 1C01C0 1C0000 1C0000 1C1C00 1C1C00 1FFC00 1FFC00 1FFC00 1C1C00 1C1C00 1C0000 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 7FFFE0 FFFFE0 7FFFE0> PXLC RP 834 1819 XY F53(EX)S XP /F53 80 22 1 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F80 1C0380 1C03C0 1C01C0 1C01C0 1C01C0 1C03C0 1C0380 1C0F80 1FFF00 1FFE00 1FF800 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 7F0000 FF8000 7F0000> PXLC RP 877 1819 XY F53(P)S XP /F53 79 22 2 0 19 25 25 24 0 <1FFC00 3FFE00 7FFF00 780F00 F00780 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 F00780 F00780 780F00 7FFF00 3FFE00 1FFC00> PXLC RP 899 1819 XY F53(O)S XP /F53 78 22 1 0 20 25 25 24 0 <7E1FC0 FF3FE0 7F1FC0 1D0700 1D8700 1D8700 1D8700 1DC700 1DC700 1CC700 1CC700 1CE700 1CE700 1CE700 1C6700 1C6700 1C7700 1C7700 1C3700 1C3700 1C3700 1C1700 7F1F00 FF9F00 7F0F00> PXLC RP 921 1819 XY F53(NEN)S XP /F53 84 22 1 0 20 25 25 24 0 <7FFFE0 FFFFE0 FFFFE0 E0E0E0 E0E0E0 E0E0E0 E0E0E0 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 07FC00 0FFE00 07FC00> PXLC RP 986 1819 XY F53(T)S XP /F53 40 22 6 -4 17 29 33 16 0 <00E0 01E0 07C0 0700 0F00 1E00 3C00 3800 7800 7000 7000 7000 F000 E000 E000 E000 E000 E000 E000 E000 F000 7000 7000 7000 7800 3800 3C00 1E00 0F00 0700 07C0 01E0 00E0> PXLC RP 1008 1819 XY F53(\(X)S XP /F53 41 22 4 -4 15 29 33 16 0 <E000 F000 7C00 1C00 1E00 0F00 0780 0380 03C0 01C0 01C0 01C0 01E0 00E0 00E0 00E0 00E0 00E0 00E0 00E0 01E0 01C0 01C0 01C0 03C0 0380 0780 0F00 1E00 1C00 7C00 F000 E000> PXLC RP 1052 1819 XY F53(\))S 15 x F6(continues)S 16 x(to)S 16 x(decrease,)S 16 x(even)S 16 x(though)S 16 x(the)S 16 x(exponent)S 16 x(part)S 16 x(of)S 16 x(the)S 15 x(machine)S 50 y 327 X(representation)S 15 x (of)S 15 x F53(X)S 15 x F6(stops)S 15 x(decreasing)S 15 x(when)S 15 x(the)S 15 x(smallest)S 15 x(normalized)S 15 x(number)S 15 x(is)S 15 x(reached.)S 23 x(In)S 15 x(fact,)S 15 x(on)S 15 x(the)S 15 x (assumption)S 50 y 327 X(that)S XP /F53 70 22 1 0 20 25 25 24 0 <FFFFE0 FFFFE0 FFFFE0 1C00E0 1C00E0 1C00E0 1C00E0 1C0000 1C0000 1C1C00 1C1C00 1FFC00 1FFC00 1FFC00 1C1C00 1C1C00 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 FF8000 FFC000 FF8000> PXLC RP 405 1919 XY F53(F)S XP /F53 76 22 1 0 20 25 25 24 0 <FFC000 FFC000 FFC000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0040 1C00E0 1C00E0 1C00E0 1C00E0 FFFFE0 FFFFE0 FFFFE0> PXLC RP 426 1919 XY F53(LO)S XP /F53 65 22 1 0 20 25 25 24 0 <00E000 01F000 01F000 01B000 01B000 03B800 03B800 03B800 031800 071C00 071C00 071C00 071C00 071C00 0E0E00 0E0E00 0FFE00 0FFE00 1FFF00 1C0700 1C0700 1C0700 7F1FC0 FF1FE0 7F1FC0> PXLC RP 470 1919 XY F53(AT)S XP /F53 95 22 2 -4 19 -1 3 24 0 <FFFF80 FFFF80 FFFF80> PXLC RP 514 1919 XY F53(_T)S XP /F53 89 22 1 0 20 25 25 24 0 <FE0FE0 FF1FE0 FE0FE0 1C0700 1C0700 0E0E00 0E0E00 071C00 071C00 071C00 03B800 03B800 01F000 01F000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 03F800 07FC00 03F800> PXLC RP 557 1919 XY F53(YPE)S XP /F53 13 22 8 14 13 26 12 8 0 <20 70 F8 70 70 70 70 70 70 70 70 70> PXLC RP 623 1919 XY F53(\015)S XP /F53 77 22 1 0 20 25 25 24 0 <FC07E0 FE0FE0 FE0FE0 3A0B80 3B1B80 3B1B80 3B1B80 3B1B80 3B1B80 3BBB80 39B380 39B380 39B380 39B380 39F380 38E380 38E380 380380 380380 380380 380380 380380 FE0FE0 FE0FE0 FE0FE0> PXLC RP 644 1919 XY F53(MA)S XP /F53 67 22 2 0 19 25 25 24 0 <01F180 07FF80 0FFF80 1F0F80 3C0780 780780 780380 700380 F00000 E00000 E00000 E00000 E00000 E00000 E00000 E00000 F00000 700380 780380 780380 3C0780 1F0F00 0FFE00 07FC00 01F000> PXLC RP 688 1919 XY F53(C)S XP /F53 72 22 1 0 20 25 25 24 0 <7F1FC0 FFBFE0 7F1FC0 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1FFF00 1FFF00 1FFF00 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 1C0700 7F1FC0 FFBFE0 7F1FC0> PXLC RP 710 1919 XY F53(H)S XP /F53 73 22 3 0 18 25 25 16 0 <FFFE FFFE FFFE 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 0380 FFFE FFFE FFFE> PXLC RP 732 1919 XY F53(INE_EMIN)S 13 x F6(is)S 15 x(the)S 15 x(value)S 16 x (of)S 16 x(that)S 15 x(minimum)S 15 x(exponent,)S XP /F77 /CM-Times-Roman 29.058 11 DF RP 1603 1904 XY F77(4)S 15 y 16 x F53(EXPONENT\(X\))S 13 x F6(can)S 15 x(return)S 16 x(a)S 15 x(value)S 16 x(that)S 50 y 327 X(is)S 16 x (less)S 16 x(than)S 16 x F53(FLOAT_TYPE\015MACHINE_EMIN)S 11 x F6 (\(e.g.,)S 17 x(when)S 16 x F53(X)S 16 x F6(is)S 16 x (denormalized\).)S 25 x(Finally,)S 17 x F53(EXPONENT\()S XP /F53 48 22 2 0 19 25 25 24 0 <03E000 0FF800 1FFC00 1E3C00 380E00 780F00 700700 700700 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 F00780 700700 700700 780F00 3C1E00 1E3C00 1FFC00 0FF800 03E000> PXLC RP 1959 1969 XY F53(0)S XP /F53 46 22 8 0 13 5 5 8 0 <70 F8 F8 F8 70> PXLC RP 1981 1969 XY F53(.0\))S 16 x F6(is)S 16 x(de\014ned)S 16 x(in)S 50 y 327 X(this)S 19 x(standard)S 19 x(to)S 19 x(deliver)S 19 x F53(0)S F6(.)S 58 y 410 X(The)S 14 x F53(EXPONENT)S 13 x F6(function)S 14 x (can)S 14 x(be)S 15 x(computed)S 15 x(on)S 14 x(typical)S 15 x (hardware)S 15 x(by)S 14 x(extracting)S 15 x(and)S 14 x(unbiasing)S 15 x(the)S 15 x(exponent)S 14 x(\014eld)S 49 y 327 X(of)S 14 x(the)S 15 x(representation,)S 15 x(with)S 15 x(a)S 15 x(special)S 15 x (case)S 15 x(for)S 15 x F53(X)S XP /F20 /cmr10 300 41.5 41.5 128 [-3 -11 41 31] PXLF RP XP /F20 61 32 2 4 29 16 12 32 0 <7FFFFFC0 FFFFFFE0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FFFFFFE0 7FFFFFC0> PXLC RP 1138 2126 XY F20(=)S 13 x F53(0.0)S 14 x F6(and)S 14 x(with)S 15 x (additional)S 15 x(steps)S 14 x(required)S 14 x(when)S 15 x F53(X)S 14 x F6(is)S 15 x(denormalized.)S 50 y 327 X F53(EXPONENT)S 14 x F6 (corresponds)S 16 x(closely)S 15 x(to)S 16 x(the)S 15 x(IEEE)S 15 x (recommended)S 15 x(function)S XP /F53 108 22 2 0 19 25 25 24 0 <FFC000 FFC000 FFC000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 FFFF80 FFFF80 FFFF80> PXLC RP 1490 2176 XY F53(l)S XP /F53 111 22 2 0 19 18 18 24 0 <03E000 0FF800 1FFC00 3C1E00 780F00 700700 E00380 E00380 E00380 E00380 E00380 F00780 700700 780F00 3C1E00 1FFC00 0FF800 03E000> PXLC RP 1512 2176 XY F53(o)S XP /F53 103 22 1 -10 20 18 28 24 0 <03E3C0 0FFFE0 1FFFE0 1E3CC0 3C1E00 380E00 380E00 380E00 3C1E00 1E3C00 1FFC00 1FF800 3BE000 380000 380000 1FFC00 1FFF00 3FFFC0 7803C0 F001E0 E000E0 E000E0 E000E0 F001E0 7C07C0 3FFF80 0FFE00 03F800> PXLC RP 1534 2176 XY F53(g)S XP /F53 98 22 0 0 20 25 25 24 0 <7E0000 FE0000 7E0000 0E0000 0E0000 0E0000 0E0000 0E3E00 0EFF80 0FFFC0 0F83E0 0F01E0 0E00F0 0E00F0 0E0070 0E0070 0E0070 0E0070 0E00F0 0F00E0 0F01E0 0F83C0 0FFFC0 0EFF00 063C00> PXLC RP 1555 2176 XY F53(b)S F6(,)S 15 x(which)S 15 x(is)S 16 x(usually)S 15 x(available)S 15 x(in)S 15 x(hardware,)S 50 y 327 X(except)S 17 x (that)S 16 x(its)S 16 x(result)S 16 x(is)S 16 x(of)S 17 x(an)S 16 x (integer)S 17 x(type)S 16 x(instead)S 16 x(of)S 16 x(a)S 16 x (\015oating-point)S 17 x(type.)S 58 y 410 X(Some)S 11 x(observers)S 12 x(contended)S 12 x(that)S 12 x F53(EXPONENT\(0.0\))S 9 x F6 (should)S 11 x(not)S 12 x(be)S 12 x F53(0)S F6(;)S 12 x(the)S 12 x (most)S 12 x(mathematically)S 12 x(sensible)S 11 x(alternative,)S XP /F22 0 32 3 9 28 11 2 32 0 <FFFFFF80 FFFFFF80> PXLC RP 327 2334 XY F22(\000)S XP /F22 49 42 2 0 39 18 18 40 0 <07E0003F00 0FF800F180 183E018040 200F030020 4007840010 4003CC0010 8001D80008 8000F00008 8000F00008 8000780008 8000780008 8000DC0008 40019E0010 40010F0010 2006078020 100C03E0C0 0C7800FF80 07E0003F00> PXLC RP 359 2334 XY F22(1)S F6(,)S 13 x(which)S 13 x(can)S 12 x(be)S 13 x (represented)S 13 x(on)S 13 x(IEEE)S 12 x(hardware)S 12 x(at)S 13 x (least,)S 13 x(is)S 12 x(ruled)S 12 x(out)S 13 x(by)S 13 x(the)S 12 x(integer-type)S 12 x(result)S 13 x(of)S 12 x F53(EXPONENT)S F6 (.)S 11 x(The)S 50 y 327 X(committee)S 16 x(staunchly)S 17 x (preferred)S 16 x(to)S 16 x(stick)S 16 x(with)S 16 x(an)S 16 x (integer)S 16 x(type)S 16 x(for)S 16 x(the)S 16 x(representation)S 16 x(of)S 16 x(the)S 16 x(integer)S 16 x(values)S 17 x(delivered)S 50 y 327 X(by)S 17 x(this)S 18 x(function,)S 19 x(especially)S 17 x (when)S 18 x(it)S 17 x(concluded)S 18 x(that)S 17 x(a)S 17 x(result)S 17 x(of)S 17 x(zero)S 17 x(for)S 17 x(a)S 17 x(zero)S 17 x(ar)S -1 x (gument)S 19 x(is)S 18 x(often)S 18 x(a)S 18 x(\252don't)S 17 x (care)S (\272)S 49 y 327 X(case)S 14 x(anyway)S 14 x(\(in)S 14 x(the)S 13 x (sense)S 14 x(that)S 14 x(the)S 13 x(potential)S 13 x(caller)S 14 x (of)S 14 x F53(EXPONENT)S 12 x F6(will)S 14 x(avoid)S 14 x(the)S 13 x(call)S 14 x(and)S 14 x(take)S 13 x(a)S 14 x(dif)S -1 x(ferent)S 13 x(path,)S 14 x(when)S 50 y 327 X F53(X)S 11 x F20(=)S 12 x F53 (0.0)S F6(\),)S 11 x(and)S 11 x(is)S 11 x(probably)S 11 x(harmless)S 10 x(when)S 11 x(not.)S 17 x(Another)S 11 x(alternative,)S 11 x (raising)S 11 x(an)S 11 x(exception)S 11 x(to)S 11 x(signal)S 11 x (an)S 11 x(illegal)S 11 x(ar)S -1 x(gument)S 50 y 327 X(when)S 15 x F53(X)S 13 x F20(=)S 14 x F53(0.0)S -1 x F6(,)S 15 x(was)S 15 x (ruled)S 15 x(out)S 15 x(because)S 15 x(it)S 15 x(is)S 15 x (unnecessarily)S 15 x(harsh)S 15 x(when)S 15 x(a)S 15 x(zero)S 15 x (result)S 15 x(is)S 15 x(harmless.)S 58 y 410 X(The)S 11 x (companion)S 11 x(function)S 11 x F53(F)S XP /F53 82 22 1 0 21 25 25 24 0 <7FE000 FFF800 7FFC00 1C1E00 1C0F00 1C0700 1C0700 1C0700 1C0700 1C0F00 1C1E00 1FFC00 1FF800 1FFC00 1C1C00 1C0E00 1C0E00 1C0E00 1C0E00 1C0E20 1C0E70 1C0E70 7F07E0 FF87E0 7F03C0> PXLC RP 854 2641 XY F53(RACTION)S 10 x F6(is)S 11 x(also)S 12 x(useful)S 12 x(in)S 12 x(ar)S -1 x(gument)S 11 x(reduction)S 12 x(steps.)S 18 x(For)S 12 x(nonzero)S 11 x F53(X)S F6(,)S 12 x F53 (FRACTION\(X\))S 9 x F6(is)S 50 y 327 X(de\014ned)S 11 x(to)S 11 x (yield)S 11 x F53(X)S XP /F22 1 12 4 8 8 12 4 8 0 <60 F0 F0 60> PXLC RP 624 2691 XY F22(\001)S 4 x F21(\014)S XP /F59 /cmsy7 300 29.1 29.1 128 [-1 -28 35 23] PXLNF RP XP /F59 0 26 3 6 21 8 2 24 0 <FFFFC0 FFFFC0> PXLC RP 665 2676 XY F59(\000)S F58(k)S 15 y 3 x F6(,)S 12 x(where)S XP /F21 107 22 2 0 20 29 29 24 0 <0FC000 01C000 01C000 038000 038000 038000 038000 070000 070000 070000 070000 0E0700 0E1880 0E21C0 0E23C0 1C4780 1C8300 1D0000 1E0000 3F8000 39C000 38E000 38E000 70E100 70E100 70E100 70E200 E06200 603C00> PXLC RP 847 2691 XY F21(k)S 12 x F6(is)S 11 x(as)S 12 x(de\014ned)S 11 x (above)S 11 x(for)S 11 x F53(EXPONENT)S F6(;)S 9 x F53 (FRACTION\(0.0\))S 9 x F6(is)S 11 x F53(0.0)S F6(.)S 16 x(Thus,)S 11 x F53(FRACTION\(X\))S 9 x F6(is)S 50 y 327 X(the)S 9 x(fraction)S 9 x(part)S 10 x(of)S 10 x(the)S 9 x(canonical)S 10 x(form)S 9 x(of)S 10 x(the)S 10 x(\015oating-point)S 10 x(number)S 9 x F53(X)S 10 x F6(\(normalized,)S 10 x(however,)S 10 x(when)S 10 x F53(X)S 9 x F6 (is)S 10 x(denormalized\).)S 50 y 327 X(This)S 16 x(function)S 17 x (can)S 17 x(be)S 17 x(computed)S 17 x(on)S 16 x(typical)S 17 x (hardware)S 17 x(by)S 16 x(extracting)S 17 x(the)S 16 x(fraction)S 17 x(\014eld)S 17 x(of)S 17 x(the)S 17 x(representation,)S 17 x (with)S 17 x(a)S 49 y 327 X(special)S 16 x(case)S 16 x(for)S 16 x F53(X)S 14 x F20(=)S 15 x F53(0.0)S 15 x F6(and)S 16 x(with)S 15 x (additional)S 16 x(steps)S 16 x(required)S 15 x(when)S 16 x F53(X)S 15 x F6(is)S 15 x(denormalized.)S 327 2884 XY 600 2 R XP /F80 /CM-Times-Roman 24.907 11 DF RP 398 2908 XY F80(3)S XP /F78 /CM-Times-Roman 33.209 11 DF RP 410 2920 XY F78(For)S 10 x(simplicity,)S 10 x(this)S 10 x(is)S 9 x (understood)S 10 x(to)S 10 x(mean)S 10 x(either)S 10 x(actual)S 10 x (under)S (\015ow)S 10 x(or)S 9 x(merely)S 9 x(denormalization,)S 10 x(which)S 10 x(is)S 10 x(also)S 10 x(known)S 10 x(as)S 9 x(\252gradual)S 9 x (under)S (\015ow.\272)S 31 y 398 X F80(4)S 12 y F78(This)S 11 x(is)S 12 x(a)S 12 x(reasonable)S 11 x(assumption,)S 12 x(without)S 11 x(which)S 12 x(some)S 11 x(numbers)S 12 x(expressible)S 11 x(in)S 11 x(the)S 11 x(canonical)S 12 x(form)S 11 x(would)S 12 x(not)S 11 x(be)S 11 x (representable.)S 15 x(It)S 11 x(requires,)S 37 y 327 X(however,)S 11 x(that)S 11 x(the)S 11 x(de\014nition)S 11 x(of)S 11 x(canonical)S 11 x(form)S 11 x(be)S 11 x(relaxed)S 12 x(to)S 11 x(allow)S 11 x (unnormalized)S 11 x(fraction)S 11 x(parts.)S 3128 Y 1292 X F6(4)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 410 0 XY %%EndPageSetup 410 342 XY F6(Often,)S 11 x(both)S 11 x(the)S 11 x(exponent)S 11 x (part)S 11 x(and)S 10 x(the)S 11 x(fraction)S 11 x(part)S 11 x(of)S 11 x(a)S 11 x(\015oating-point)S 11 x(number)S 11 x(are)S 11 x (needed)S 11 x(in)S 11 x(ar)S -1 x(gument)S 11 x(reduction.)S 49 y 327 X(For)S 16 x(such)S 17 x(occasions,)S 17 x(the)S 17 x(procedure)S XP /F53 68 22 0 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F00 1C0780 1C03C0 1C01C0 1C01C0 1C01E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 1C01C0 1C01C0 1C03C0 1C0780 1C0F80 7FFF00 FFFE00 7FF800> PXLC RP 933 391 XY F53(DECOMPO)S XP /F53 83 22 2 0 19 25 25 24 0 <07E300 1FFF00 7FFF00 781F00 F00F00 E00700 E00700 E00000 F00000 780000 7F8000 1FF000 07FC00 00FE00 000F00 000780 000380 000380 E00380 E00380 F00780 F80F00 FFFE00 FFFC00 C7F000> PXLC RP 1085 391 XY F53(SE)S F6(,)S 17 x(which)S 17 x(computes)S 16 x(and)S 17 x(delivers)S 17 x(both)S 17 x(simultaneously)S 17 x(through)S 16 x(a)S 16 x(pair)S 50 y 327 X(of)S 18 x(ar)S -1 x(guments)S 18 x (of)S 18 x(mode)S 18 x(\252)S F53(o)S XP /F53 117 22 0 0 21 18 18 24 0 <7E1F80 FE3F80 7E1F80 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0780 0F0F80 0FFFF0 07FFF8 03E3F0> PXLC RP 773 441 XY F53(u)S XP /F53 116 22 1 0 18 23 23 24 0 <030000 070000 070000 070000 070000 7FFF00 FFFF00 FFFF00 070000 070000 070000 070000 070000 070000 070000 070100 070380 070380 070780 078780 03FF00 03FE00 00F800> PXLC RP 795 441 XY F53(t)S F6(,\272)S 18 x(is)S 18 x(provided.)S 58 y 410 X (The)S 11 x(function)S 11 x F53(COMPOSE)S 10 x F6(is)S 11 x (essentially)S 11 x(the)S 11 x(inverse)S 11 x(of)S 11 x F53 (DECOMPOSE)S F6(;)S 9 x(it)S 11 x(constructs)S 11 x(a)S 11 x (\015oating-point)S 11 x(value)S 11 x(from)S 11 x(a)S 11 x(given)S 50 y 327 X(fraction)S 18 x(and)S 17 x(exponent)S 18 x(part.)S 30 x (Except)S 18 x(when)S 17 x F53(FRACTION)S 16 x F20(=)S 19 x F53(0.0)S -1 x F6(,)S 19 x F53(COMPOSE\(FRACTION)S XP /F53 44 22 7 -6 14 5 11 8 0 <38 7C 7E 7E 3E 0E 1E 3C 7C F8 60> PXLC RP 1752 549 XY F53(,)S 27 x(EXPONENT\))S F6(\320for)S 16 x(ar)S -1 x (guments)S 50 y 327 X(of)S 20 x(the)S 20 x(\015oating-point)S 20 x (type)S 20 x F53(FLOAT_TYPE)S 18 x F6(and)S 21 x(the)S 21 x(integer)S 20 x(type)S 20 x F53(EXPONENT_TYPE)S F6(,)S 17 x (respectively\320delivers)S 20 x(the)S 20 x(value)S 50 y 327 X F53 (FRACTION)S 8 x F22(\001)S 9 x F21(\014)S XP /F68 /cmtt10 300 41.5 29.1 128 [0 -10 22 29] PXLF RP XP /F68 69 21 1 0 20 25 25 24 0 <7FFFC0 FFFFC0 7FFFC0 1C01C0 1C01C0 1C01C0 1C01C0 1C0000 1C0000 1C1C00 1C1C00 1FFC00 1FFC00 1FFC00 1C1C00 1C1C00 1C0000 1C00E0 1C00E0 1C00E0 1C00E0 1C00E0 7FFFE0 FFFFE0 7FFFE0> PXLC RP 558 634 XY F68(E)S XP /F68 88 21 1 0 20 25 25 24 0 <7F1F80 7F3F80 7F1F80 0E1E00 0E1C00 073C00 073800 03B800 03F000 01F000 01E000 00E000 01E000 01F000 03F000 03B800 07B800 071C00 071C00 0E0E00 0E0E00 1C0700 7F1FC0 FF1FE0 7F1FC0> PXLC RP 573 634 XY F68(X)S XP /F68 80 21 1 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F80 1C0380 1C03C0 1C01C0 1C01C0 1C01C0 1C03C0 1C0380 1C0F80 1FFF00 1FFE00 1FF800 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 1C0000 7F0000 FF8000 7F0000> PXLC RP 588 634 XY F68(P)S XP /F68 79 21 2 0 19 25 25 24 0 <1FFC00 3FFE00 7FFF00 780F00 F00780 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 E00380 F00780 F00780 780F00 7FFF00 3FFE00 1FFC00> PXLC RP 604 634 XY F68(O)S XP /F68 78 21 1 0 20 25 25 24 0 <7E1FC0 FF3FE0 7F1FC0 1D0700 1D8700 1D8700 1D8700 1DC700 1DC700 1CC700 1CC700 1CE700 1CE700 1CE700 1C6700 1C6700 1C7700 1C7700 1C3700 1C3700 1C3700 1C1700 7F1F00 FF9F00 7F0F00> PXLC RP 619 634 XY F68(NEN)S XP /F68 84 21 1 0 20 25 25 24 0 <7FFFE0 FFFFE0 FFFFE0 E0E0E0 E0E0E0 E0E0E0 E0E0E0 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 00E000 07FC00 0FFE00 07FC00> PXLC RP 665 634 XY F68(T)S F59(\000)S F58(k)S 15 y 17 x F6(\(if)S 15 x(it)S 14 x(is)S 14 x(representable\),)S 15 x(where)S 14 x F21(k)S 16 x F6 (is)S 14 x(the)S 14 x(unique)S 15 x(integer)S 15 x(such)S 14 x(that)S 14 x F21(\014)S -15 y 2 x F58(k)S 1 x F59(\000)S F32(1)S 15 y 14 x F22(\024)S 13 x(j)S F53(FRACTION)S -2 x F22(j)S 12 x F21(<)S 13 x (\014)S -15 y 2 x F58(k)S 15 y 3 x F6(;)S 50 y 327 X F53 (COMPOSE\(0.0,)S 27 x(EXPONENT\))S 15 x F6(delivers)S 17 x F53(0.0)S 17 x F6(for)S 18 x(any)S 17 x F53(EXPONENT)S F6(.)S 17 x(If)S 18 x (the)S 18 x(de\014ned)S 18 x(result)S 17 x(is)S 18 x(not)S 17 x (representable,)S 18 x(then)S 17 x(the)S 49 y 327 X(appropriate)S 14 x(prede\014ned)S 15 x(exception)S 14 x(is)S 14 x(raised)S 14 x (in)S 14 x(over\015ow)S 15 x(situations,)S 14 x(and)S 14 x(one)S 15 x(of)S 14 x(the)S 14 x(adjacent)S 14 x(representable)S 14 x (numbers)S 14 x(is)S 50 y 327 X(delivered)S 16 x(in)S 16 x(under)S (\015ow)S 16 x(situations.)S 23 x(Note)S 16 x(that)S 15 x(the)S 16 x F53(FRACTION)S 13 x F6(ar)S -1 x(gument)S 16 x(is)S 15 x(not)S 16 x (required)S 15 x(to)S 15 x(be)S 16 x(a)S 16 x(pure)S 16 x(fraction,)S 16 x(with)S 16 x(a)S 50 y 327 X(zero)S 14 x(exponent)S 14 x(part)S 14 x(\(as)S 14 x(if)S 14 x(it)S 14 x(had)S 14 x(been)S 14 x (obtained)S 14 x(from)S 14 x(the)S 14 x F53(FRACTION)S 13 x F6 (function)S 14 x(previously\);)S 14 x(rather,)S 14 x(the)S 14 x (fraction)S 14 x(part)S 14 x(of)S 50 y 327 X F53(FRACTION)S 11 x F6 (is)S 13 x(extracted)S 12 x(and)S 13 x(used)S 12 x(to)S 12 x (construct)S 13 x(the)S 12 x(result.)S 18 x(It)S 12 x(should)S 13 x (be)S 12 x(obvious)S 12 x(that)S 13 x(this)S 12 x(function)S 12 x (can)S 12 x(be)S 13 x(computed,)S 12 x(on)S 50 y 327 X(typical)S 12 x(hardware,)S 13 x(by)S 12 x(appropriate)S 13 x(manipulations)S 12 x(of)S 12 x(the)S 13 x(fraction)S 12 x(and)S 12 x(exponent)S 13 x (parts)S 12 x(of)S 12 x(\015oating-point)S 12 x(quantities,)S 13 x (as)S 13 x(for)S 50 y 327 X(the)S 12 x(previous)S 13 x(functions.)S 18 x F53(COMPOSE)S 11 x F6(\014nds)S 13 x(representative)S 12 x (uses)S 13 x(in)S 13 x(the)S 13 x(result)S 13 x(construction)S 13 x (step)S 12 x(of)S 13 x(mathematical)S 13 x(functions.)S 58 y 410 X (The)S 12 x(remaining)S 13 x(function)S 13 x(of)S 12 x(the)S 12 x (\014rst)S 13 x(group,)S 13 x F53(SCALE)S F6(,)S 11 x(is)S 13 x (similar)S 13 x(to)S 12 x F53(COMPOSE)S F6(;)S 11 x(it)S 13 x(has)S 13 x(uses)S 13 x(both)S 12 x(in)S 13 x(result)S 13 x(construction)S 50 y 327 X(steps)S 15 x(and)S 14 x(in)S 14 x(ar)S -1 x(gument)S 15 x (conditioning)S 15 x(\(for)S 15 x(Euclidean)S 14 x(norms,)S 15 x (complex)S 15 x(arithmetic,)S 15 x(and)S 14 x(some)S 15 x(matrix)S 15 x(computations,)S 15 x(for)S 49 y 327 X(example\).)S 19 x(It)S 14 x(takes)S 14 x(ar)S -1 x(guments)S 14 x F53(X)S 14 x F6(and)S 14 x F53(EXPONENT)S 12 x F6(and)S 14 x(returns)S 13 x F53(X)S 10 x F22(\001)S 8 x F21(\014)S -15 y 2 x F68(EXPONENT)S 15 y 19 x F6 (\(with)S 14 x(the)S 14 x(same)S 14 x(provisions)S 14 x(for)S 14 x (dealing)S 14 x(with)S 50 y 327 X(over\015ow)S 13 x(and)S 13 x (under)S (\015ow)S 13 x(as)S 13 x(exhibited)S 13 x(by)S 13 x F53(COMPOSE)S F6(\).)S 11 x F53(SCALE)S 12 x F6(is)S 13 x(analogous)S 13 x(to)S 13 x(the)S 13 x(IEEE)S 13 x(recommended)S 13 x(function)S XP /F53 115 22 3 0 18 18 18 16 0 <0FEC 3FFC 7FFC F03C E01C E01C F000 7F80 1FF0 07FC 003E E00E E00E F00E F81E FFFC FFF8 C7E0> PXLC RP 2158 1205 XY F53(s)S XP /F53 99 22 3 0 19 18 18 16 0 <03F8 0FFE 1FFE 3C1E 780C 7000 F000 E000 E000 E000 E000 F000 7007 7807 3E0F 1FFE 0FFC 03F0> PXLC RP 2179 1205 XY F53(c)S XP /F53 97 22 2 0 21 18 18 24 0 <1FE000 7FF800 7FFC00 783C00 301E00 000E00 000E00 03FE00 1FFE00 7E0E00 F00E00 E00E00 E00E00 F01E00 F83E00 7FFFE0 3FE7E0 0F83E0> PXLC RP 2201 1205 XY F53(alb)S F6(.)S 50 y 327 X(When)S 17 x(implemented)S 17 x(by)S 16 x(directly)S 17 x(manipulating)S 16 x(the)S 17 x (exponent)S 16 x(part)S 16 x(of)S 17 x(a)S 17 x(\015oating-point)S 16 x(number,)S 18 x(it)S 16 x(is)S 17 x(potentially)S 17 x(more)S 50 y 327 X(ef)S -1 x(\014cient)S 17 x(than)S 16 x(multiplying)S 16 x (or)S 16 x(dividing)S 16 x(by)S 16 x(a)S 15 x(power)S 16 x(of)S 16 x (the)S 16 x(hardware)S 16 x(radix,)S 16 x(and)S 15 x(by)S 15 x(de)S (\014nition)S 16 x(it)S 15 x(retains)S 15 x(full)S 16 x(accuracy)S 50 y 327 X(\(multiplication)S 15 x(and)S 15 x(division,)S 16 x(even)S 16 x(by)S 15 x(a)S 15 x(power)S 15 x(of)S 15 x(the)S 15 x(hardware)S 16 x(radix,)S 16 x(can)S 16 x(lose)S 15 x(accuracy)S 16 x(on)S 15 x (systems)S 15 x(lacking)S 15 x(guard)S 49 y 327 X(digits)S 16 x(for)S 15 x(these)S 15 x(operations\).)S 23 x(The)S 15 x(function)S 15 x (is)S 15 x(sometimes)S 15 x(available)S 15 x(as)S 15 x(a)S 16 x (hardware)S 15 x(operation.)S 59 y 410 X(The)S 14 x(functions)S 14 x (of)S 14 x(the)S 14 x(\014rst)S 15 x(group)S 15 x(are)S 14 x(not)S 15 x(all)S 15 x(independent.)S 21 x(In)S 15 x(theory,)S 15 x(it)S 14 x(is)S 15 x(suf)S -1 x(\014cient)S 16 x(to)S 15 x(have)S 15 x (just)S 14 x F53(EXPONENT)S 13 x F6(and)S 50 y 327 X F53(SCALE)S F6 (,)S 17 x(or)S 18 x(alternatively)S 18 x F53(EXPONENT)S 16 x F6(and)S 18 x F53(COMPOSE)S F6(;)S 15 x(the)S 18 x(others)S 18 x(can)S 18 x (be)S 17 x(obtained)S 18 x(in)S 17 x(terms)S 17 x(of)S 17 x(these)S 18 x(two.)S 30 x(For)S 18 x(greater)S 49 y 327 X(ef)S -1 x (\014ciency,)S 17 x(however,)S 15 x(implementations)S 15 x(should)S 15 x(code)S 15 x(each)S 15 x(independently)S 15 x(using)S 15 x(the)S 15 x(most)S 15 x(direct)S 15 x(interface)S 15 x(to)S 15 x(low-level)S 50 y 327 X(representations)S 19 x(and)S 18 x(operations)S 18 x (available.)S 58 y 410 X(The)S 19 x(second)S 19 x(group)S 20 x(of)S 19 x(subprograms)S 20 x(comprises)S 20 x(directed)S 19 x(rounding)S 20 x(functions)S 19 x(\()S F53(RO)S XP /F53 85 22 0 0 21 25 25 24 0 <7F07F0 FF8FF8 7F07F0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 1C01C0 0E0380 0E0380 070700 07FF00 03FE00 00F800> PXLC RP 1778 1670 XY F53(UND)S F6(,)S 18 x F53(TRUNCATE)S F6(,)S 19 x F53 (FLOOR)S F6(,)S 19 x(and)S 50 y 327 X F53(CEILIN)S XP /F53 71 22 2 0 20 25 25 24 0 <03E300 07FF00 1FFF00 3E1F00 3C0F00 780F00 780700 700700 F00000 E00000 E00000 E00000 E00000 E03F80 E07FC0 E03F80 F00700 700700 780F00 780F00 3C0F00 3E1F00 1FFF00 07FF00 03E700> PXLC RP 458 1720 XY F53(G)S F6(,)S 20 x(all)S 20 x(of)S 20 x(which)S 19 x (yield)S 20 x(an)S 20 x(integer)S 20 x(value)S 19 x(in)S 19 x(the)S 20 x(\015oating-point)S 19 x(type)S 20 x F53(FLOAT_TYPE)S F6(\))S 17 x(and)S 20 x(an)S 19 x(exact)S 20 x(remainder)S 50 y 327 X (function)S 20 x(\()S F53(REMAINDER)S F6(\).)S 58 y 410 X F53(ROUND)S F6(,)S 13 x(of)S 13 x(course,)S 14 x(delivers)S 13 x(the)S 13 x (value)S 13 x(of)S 13 x(its)S 13 x(ar)S -1 x(gument,)S 14 x(rounded)S 13 x(to)S 14 x(the)S 14 x(nearest)S 13 x(integer,)S 13 x(with)S 13 x (ties)S 13 x(being)S 13 x(broken)S 13 x(by)S 50 y 327 X(choosing)S 16 x(the)S 16 x(even)S 16 x(integer;)S 18 x(this)S 16 x(corresponds)S 16 x(to)S 17 x(IEEE)S 16 x(unbiased)S 17 x(rounding.)S 26 x(Ada)S 17 x(already)S 16 x(has)S 16 x(something)S 16 x(comparable)S 50 y 327 X(in)S 19 x(its)S 19 x(prede\014ned)S 19 x(conversion)S 19 x (between)S 19 x(\015oating-point)S 19 x(and)S 19 x(integer)S 19 x (types.)S 34 x(The)S 19 x F53(ROUND)S 18 x F6(function)S 19 x(dif)S -1 x(fers)S 19 x(in)S 19 x(having)S 19 x(a)S 50 y 327 X (\015oating-point)S 16 x(result)S 16 x(type)S 16 x(and)S 15 x(in)S 15 x(specifying)S 16 x(that)S 16 x(ties)S 15 x(will)S 15 x(be)S 15 x (broken)S 15 x(by)S 15 x(choosing)S 16 x(the)S 15 x(even)S 15 x (integer.)S 24 x F53(ROUND)S 15 x F6(and)S 15 x(the)S 50 y 327 X (other)S 19 x(directed)S 18 x(rounding)S 19 x(functions)S 18 x(are)S 18 x(supposed)S 18 x(to)S 18 x(produce)S 18 x(their)S 19 x (\015oating-point)S 18 x(results)S 19 x(without)S 19 x(going)S 18 x (through)S 18 x(an)S 49 y 327 X(intermediate)S 12 x(conversion)S 12 x(to)S 13 x(an)S 12 x(integer)S 12 x(type,)S 13 x(which)S 12 x (could)S 12 x(raise)S 12 x(an)S 12 x(exception)S 12 x(\(often)S 12 x (the)S 12 x(higher-precision)S 12 x(\015oating-point)S 50 y 327 X (types)S 12 x(can)S 13 x(accommodate)S 13 x(lar)S -1 x(ger)S 13 x (integer)S 13 x(values)S 13 x(than)S 13 x(can)S 13 x(be)S 13 x (represented)S 13 x(in)S 13 x(the)S 13 x(available)S 13 x(integer)S 13 x(type)S 13 x(of)S 12 x(widest)S 13 x(range\).)S 50 y 327 X F53 (TRUNCATE)S 11 x F6(simply)S 12 x(discards)S 12 x(the)S 12 x (fractional)S 13 x(part,)S 13 x(thereby)S 12 x(rounding)S 12 x(in)S 12 x(the)S 12 x(direction)S 12 x(of)S 12 x(zero.)S 18 x F53(FLOOR)S 11 x F6(and)S 12 x F53(CEILING)S 11 x F6(round)S 50 y 327 X(in)S 14 x(the)S 13 x(negative)S 13 x(and)S 14 x(positive)S 14 x (directions,)S 14 x(respectively.)S 18 x(All)S 13 x(of)S 14 x(these)S 13 x(functions)S 14 x(can)S 14 x(be)S 13 x(programmed)S 13 x(ef)S -1 x(\014ciently)S 14 x(at)S 14 x(a)S 14 x(low)S 50 y 327 X(level)S 17 x(and)S 18 x(might)S 17 x(even)S 17 x(exist)S 17 x(as)S 17 x (hardware)S 17 x(operations.)S 58 y 410 X(The)S 17 x F53(REMAINDER)S 15 x F6(function)S 17 x(delivers)S 18 x(the)S 18 x(exact)S 17 x (remainder)S 17 x(upon)S 17 x(dividing)S 17 x(its)S 17 x(\014rst)S 17 x(\015oating-point)S 18 x(ar)S -1 x(gument)S 17 x(by)S 18 x(its)S 50 y 327 X(second)S 15 x(\015oating-point)S 14 x(ar)S -1 x(gument.)S 21 x(More)S 14 x(precisely,)S 14 x F53(REMAINDER\(X,)S 18 x(Y\))S 14 x F6(\014nds)S 15 x(an)S 14 x(integer)S 14 x(quotient)S XP /F21 113 19 2 -8 17 18 26 16 0 <01C2 0626 0C1E 181E 381C 301C 701C 701C E038 E038 E038 E038 E070 E070 E070 60F0 23E0 1CE0 00E0 00E0 01C0 01C0 01C0 01C0 03C0 1FF8> PXLC RP 1933 2385 XY F21(q)S 15 x F6(and)S 14 x(a)S 14 x(remainder)S XP /F21 114 19 2 0 18 18 18 16 0 <383C 4E42 4687 470F 8E1E 8E0C 0E00 0E00 1C00 1C00 1C00 1C00 3800 3800 3800 3800 7000 3000> PXLC RP 2257 2385 XY F21(r)S 49 y 327 X F6(such)S 14 x(that)S 14 x F21(r)S 12 x F20(=)S 12 x F53(X)S 9 x F22(\000)S 10 x F53(Y)S 8 x F22(\001)S 9 x F21(q)S 1 x F6(;)S 14 x(it)S 13 x(delivers)S 14 x F21(r)S 1 x F6(.)S 18 x(Algorithms)S 14 x(exist)S 13 x(for)S 14 x(computing)S 14 x(the)S 14 x(result)S 14 x(exactly,)S 14 x(and)S 13 x(reasonably)S 14 x(ef)S -1 x(\014ciently,)S 50 y 327 X(regardless)S 12 x(of)S 11 x (the)S 12 x(relative)S 11 x(magnitudes)S 11 x(of)S 11 x(the)S 11 x (dividend)S 12 x(and)S 12 x(divisor;)S 12 x(the)S 11 x(operation)S 11 x(is)S 11 x(available)S 11 x(as)S 11 x(a)S 12 x(hardware)S 11 x (instruction)S 50 y 327 X(on)S 19 x(some)S 19 x(machines.)S 58 y 410 X(There)S 16 x(are)S 16 x(two)S 16 x(customary)S 16 x(ways)S 16 x(of)S 16 x(de\014ning)S 16 x(the)S 16 x(quotient)S 16 x F21(q)S 1 x F6(,)S 17 x(which)S 16 x(determines)S 16 x(the)S 16 x (corresponding)S 16 x(remainder)S 16 x F21(r)S 1 x F6(.)S 50 y 327 X (One)S 14 x(way)S 14 x(de\014nes)S 14 x F21(q)S 15 x F6(as)S 14 x (the)S 14 x(integer)S 14 x(obtained)S 14 x(by)S 14 x(rounding)S 14 x (the)S 14 x(exact)S 13 x(value)S 14 x(of)S 14 x F53(X)S XP /F21 61 21 2 -10 18 31 41 16 0 <0003 0003 0007 0006 0006 000E 000C 001C 0018 0018 0038 0030 0030 0070 0060 0060 00E0 00C0 00C0 01C0 0180 0380 0300 0300 0700 0600 0600 0E00 0C00 0C00 1C00 1800 1800 3800 3000 7000 6000 6000 E000 C000 C000> PXLC RP 1618 2642 XY F21(=)S F53(Y)S 13 x F6(towards)S 13 x(zero.)S 19 x (This)S 14 x(gives)S 14 x F21(r)S 15 x F6(the)S 14 x(sign)S 50 y 327 X(of)S 16 x(the)S 16 x(dividend)S 16 x(and)S 16 x(a)S 16 x (magnitude)S 16 x(less)S 17 x(than)S 17 x(that)S 17 x(of)S 17 x(the)S 17 x(divisor;)S 17 x(it)S 16 x(is)S 16 x(the)S 16 x(de\014nition)S 16 x(used)S 17 x(by)S 17 x(Ada)S 16 x(for)S 16 x(its)S 17 x(prede)S (\014ned)S XP /F53 34 22 4 14 17 25 11 16 0 <E038 F078 F078 F078 F078 F078 F078 F078 E038 E038 6030> PXLC RP 327 2742 XY F53(")S XP /F53 114 22 1 0 20 18 18 24 0 <FF0FC0 FF3FE0 FF7FE0 07F040 07E000 07C000 078000 078000 070000 070000 070000 070000 070000 070000 070000 FFFC00 FFFC00 FFFC00> PXLC RP 349 2742 XY F53(r)S XP /F53 101 22 3 0 19 18 18 16 0 <03E0 0FF8 1FFC 3C1E 780E 7007 E007 FFFF FFFF FFFF E000 E000 7007 7807 3C0F 1FFE 0FFC 03F0> PXLC RP 371 2742 XY F53(e)S XP /F53 109 22 0 0 21 18 18 24 0 <F9C380 FFEFC0 FFFFE0 3E7CE0 3C78E0 3870E0 3870E0 3870E0 3870E0 3870E0 3870E0 3870E0 3870E0 3870E0 3870E0 FE7CF8 FE7CF8 FE3C78> PXLC RP 392 2742 XY F53(m")S 16 x F6(operator)S 16 x(on)S 16 x(integer-type)S 16 x(operands,)S 17 x(yielding)S 16 x(an)S 16 x(integer-type)S 16 x (result.)S 25 x(The)S 16 x(other)S 16 x(way)S 16 x(de\014nes)S 16 x F21(q)S 17 x F6(as)S 16 x(the)S 16 x(integer)S XP /F7 /CM-Times-Italic 41.511 12 DNF RP 327 2792 XY F7(near)S -2 x(est)S 16 x F6(the)S 15 x(exact)S 14 x (value)S 15 x(of)S 15 x F53(X)S F21(=)S F53(Y)S F6(,)S 14 x(with)S 15 x(ties)S 15 x(broken)S 15 x(by)S 15 x(choosing)S 15 x(the)S 15 x (even)S 14 x(integer.)S 22 x(This,)S 15 x(in)S 15 x(turn,)S 15 x (gives)S 15 x F21(r)S 15 x F6(a)S 15 x(magnitude)S 49 y 327 X(not)S 18 x(greater)S 19 x(than)S 18 x F7(half)S 18 x F6(that)S 18 x(of)S 18 x(the)S 18 x(divisor)S 18 x(and)S 19 x(a)S 18 x(sign)S 19 x(that)S 18 x(may)S 19 x(be)S 18 x(either)S 19 x(positive)S 18 x(or)S 18 x (negative.)S 31 x(Because)S 18 x(the)S 18 x(latter)S 50 y 327 X(de)S (\014nition,)S 14 x(corresponding)S 14 x(to)S 14 x(the)S 15 x(IEEE)S 14 x F53(rem)S 14 x F6(operation,)S 15 x(is)S 15 x(slightly)S 15 x (preferred)S 15 x(by)S 15 x(numerical)S 14 x(analysts)S 15 x(for)S 15 x(such)S 14 x(purposes)S 50 y 327 X(as)S 12 x(ar)S -1 x(gument)S 13 x(reduction)S 12 x(in)S 12 x(the)S 13 x(arbitrary-cycle)S 13 x (versions)S 13 x(of)S 13 x(the)S 12 x(trigonometric)S 13 x (functions,)S 13 x(it)S 13 x(is)S 13 x(what)S 12 x(has)S 12 x(been)S 12 x(adopted)S 13 x(for)S 50 y 327 X(the)S 12 x(primitive)S 12 x (functions)S 12 x(standard.)S 18 x(It)S 12 x(is)S 12 x(tempting)S 12 x(to)S 12 x(of)S -1 x(fer)S 12 x(this)S 12 x(function)S 12 x(in)S 12 x(the)S 12 x(form)S 12 x(of)S 12 x(an)S 12 x(overloading)S 12 x (of)S 12 x(the)S 12 x(prede\014ned)S 3128 Y 1292 X(5)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 327 0 XY %%EndPageSetup 327 342 XY F53("rem")S 11 x F6(operator,)S 13 x(and)S 11 x(indeed)S 12 x(an)S 12 x(earlier)S 12 x(version)S 12 x(of)S 12 x(the)S 11 x (proposed)S 11 x(standard)S 12 x(did)S 12 x(so.)S 18 x(However,)S 12 x(the)S 12 x(two)S 12 x(overloaded)S 12 x F53("rem")S 49 y 327 X F6(operators)S 17 x(would)S 16 x(have)S 16 x(distinctly)S 17 x(dif)S -1 x(ferent)S 16 x(numerical)S 17 x(behavior)S 17 x(\(e.g.,)S XP /F53 52 22 1 0 20 25 25 24 0 <007C00 00FC00 00DC00 01DC00 039C00 039C00 071C00 0F1C00 0E1C00 1E1C00 3C1C00 381C00 781C00 F01C00 FFFFE0 FFFFE0 FFFFE0 001C00 001C00 001C00 001C00 001C00 01FFC0 01FFC0 01FFC0> PXLC RP 1489 391 XY F53(4)S XP /F53 51 22 2 0 19 25 25 24 0 <07E000 1FFC00 7FFE00 781F00 780F00 780700 000700 000F00 000F00 003E00 07FC00 07F800 07FC00 001E00 000700 000780 000380 000380 F00380 F00780 F00700 F81F00 7FFE00 3FFC00 07E000> PXLC RP 1511 391 XY F53(3)S 26 x(rem)S XP /F53 53 22 2 0 19 25 25 24 0 <3FFE00 3FFE00 3FFE00 380000 380000 380000 380000 380000 380000 380000 3BF000 3FFC00 3FFE00 3C0F00 300700 000780 000380 600380 F00380 F00780 F00F00 F81F00 7FFE00 1FF800 07E000> PXLC RP 1651 391 XY F53(5)S 16 x F6(yields)S 17 x F53(3)S F6(,)S 16 x (whereas)S 17 x F53(43.0)S 25 x(rem)S 26 x(5.0)S 50 y 327 X F6 (would)S 10 x(yield)S XP /F53 45 22 2 11 19 14 3 24 0 <FFFF80 FFFF80 FFFF80> PXLC RP 535 441 XY F53(-)S XP /F53 50 22 2 0 19 25 25 24 0 <07E000 1FF800 7FFE00 783F00 F00F00 F00780 F00380 F00380 000380 000380 000780 000700 000F00 001E00 003C00 007800 00F000 03E000 078000 0F0000 1E0380 3C0380 7FFF80 FFFF80 7FFF80> PXLC RP 557 441 XY F53(2.0)S F6(\),)S 11 x(so)S 11 x(to)S 11 x(avoid)S 11 x (confusion)S 11 x(the)S 10 x(functional)S 10 x(form)S 10 x F53 (REMAINDER\(X,)S 19 x(Y\))S 10 x F6(was)S 11 x(preferred)S 11 x(for)S 11 x(the)S 11 x(\015oating-point)S 50 y 327 X(remainder)S 17 x (operation)S 17 x(in)S 17 x F53(GENERIC_PRIMITI)S XP /F53 86 22 1 0 20 25 25 24 0 <FE0FE0 FF1FE0 FE0FE0 380380 1C0700 1C0700 1C0700 1C0700 0E0E00 0E0E00 0E0E00 0E0E00 060C00 071C00 071C00 071C00 071C00 031800 03B800 03B800 03B800 01B000 01F000 01F000 00E000> PXLC RP 1063 491 XY F53(VE_FUNCTIONS)S F6(.)S -15 y F77(5)S 75 y 410 X F6 (The)S 10 x(third)S 10 x(group)S 11 x(of)S 11 x(subprograms)S 10 x (contains)S 10 x(the)S 11 x F53(PREDECESSOR)S F6(,)S 8 x F53 (SUCCESSOR)S F6(,)S 9 x(and)S 10 x F53(AD)S XP /F53 74 22 3 0 19 25 25 16 0 <07FE 07FF 07FE 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 0038 6038 F038 F070 7FF0 7FE0 1F80> PXLC RP 1755 551 XY F53(JACENT)S 9 x F6(functions,)S 12 x(which)S 11 x (allow)S 50 y 327 X(a)S 12 x(\015oating-point)S 12 x(machine)S 12 x (number)S 12 x(to)S 12 x(be)S 12 x(perturbed)S 11 x(by)S 11 x(the)S 11 x(smallest)S 11 x(possible)S 12 x(amount)S 12 x(to)S 12 x(obtain)S 12 x(the)S 11 x(next)S 11 x(lar)S -1 x(ger)S 12 x(or)S 12 x(smaller)S 50 y 327 X(machine)S 13 x(number.)S 18 x(The)S 13 x(principal)S 13 x (use)S 13 x(for)S 13 x(these)S 13 x(functions)S 13 x(is)S 13 x(in)S 13 x(testing)S 13 x(mathematical)S 13 x(software,)S 13 x(where)S 13 x(very)S 13 x(\014ne)S 13 x(control)S 50 y 327 X(over)S 17 x (test)S 17 x(ar)S -1 x(guments)S 17 x(is)S 17 x(sometimes)S 18 x (needed.)S 29 x(As)S 17 x(de\014ned,)S 18 x(they)S 17 x(are)S 17 x (also)S 17 x(useful)S 18 x(for)S 17 x(generating)S 17 x(the)S 17 x (machine)S 17 x(numbers)S 49 y 327 X(\(denormalized,)S 17 x(if)S 16 x(the)S 17 x(hardware)S 17 x(has)S 17 x(that)S 16 x(capability\))S 17 x(adjacent)S 16 x(to)S 16 x(zero.)S 60 y 410 X F53(PREDECESSOR)S 13 x F6(and)S 14 x F53(SUCCESSOR)S 14 x F6(are)S 15 x(one-ar)S -1 x (gument)S 15 x(functions)S 15 x(that)S 14 x(deliver)S 15 x(the)S 15 x(machine)S 15 x(number)S 14 x(adjacent)S 15 x(to)S 15 x(their)S 50 y 327 X(ar)S -1 x(gument)S 16 x(in)S 15 x(the)S 15 x(direction)S 15 x(inferred)S 15 x(from)S 15 x(the)S 15 x(name,)S 15 x(whereas)S 16 x F53(ADJACENT)S 13 x F6(is)S 15 x(a)S 15 x(two-ar)S -1 x(gument)S 16 x(function)S 15 x(that)S 16 x(returns)S 15 x(the)S 50 y 327 X (machine)S 19 x(number)S 20 x(adjacent)S 19 x(to)S 19 x(its)S 19 x (\014rst)S 19 x(ar)S -1 x(gument)S 20 x(in)S 19 x(the)S 19 x (direction)S 19 x(of)S 19 x(the)S 19 x(second)S 19 x(ar)S -1 x (gument.)S 34 x(The)S 19 x(latter)S 19 x(function)S 19 x(is)S 50 y 327 X(provided)S 16 x(for)S 17 x(applications)S 17 x(in)S 16 x (which)S 16 x(the)S 16 x(direction)S 16 x(of)S 16 x(motion)S 16 x (is)S 16 x(not)S 17 x(known)S 16 x(in)S 17 x(advance)S 16 x(and)S 16 x(needs)S 16 x(to)S 17 x(be)S 16 x(determined)S 50 y 327 X (dynamically;)S 17 x(it)S 16 x(is)S 16 x(identical)S 16 x(to)S 16 x (the)S 16 x(IEEE)S 15 x(recommended)S 15 x(function)S XP /F53 110 22 0 0 21 18 18 24 0 <7E3C00 FEFF00 7FFF80 0F8780 0F0380 0F0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 0E0380 7FC7F0 FFE7F8 7FC7F0> PXLC RP 1428 1010 XY F53(ne)S XP /F53 120 22 1 0 20 18 18 24 0 <7F1FC0 7F3FC0 7F1FC0 0F1C00 073C00 03B800 03F000 01F000 00E000 01E000 01F000 03B800 073C00 071C00 0E0E00 7F1FC0 FF3FE0 7F1FC0> PXLC RP 1471 1010 XY F53(xta)S XP /F53 102 22 1 0 18 25 25 24 0 <001F00 007F80 00FF80 01E780 01C300 01C000 01C000 7FFF00 FFFF00 FFFF00 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 01C000 3FFE00 7FFF00 3FFE00> PXLC RP 1537 1010 XY F53(fter)S F6(.)S 24 x(There)S 15 x(is)S 16 x(another)S 16 x(dif)S -1 x(ference)S 17 x(between)S 50 y 327 X F53(ADJACENT)S 16 x F6(and)S 18 x(the)S 18 x(other)S 18 x(two)S 18 x(functions:)S 26 x F53(PREDECESSOR)S 15 x F6(and)S 18 x F53(SUCCESSOR)S 16 x F6 (raise)S 18 x(the)S 18 x(prede\014ned)S 18 x(exception)S 18 x (signaling)S 49 y 327 X(over\015ow)S 14 x(upon)S 15 x(an)S 14 x (attempt)S 15 x(to)S 15 x(move)S 15 x(beyond)S 15 x(the)S 15 x (\014rst)S 15 x(or)S 15 x(last)S 15 x(\015oating-point)S 14 x (machine)S 15 x(number,)S 15 x(while)S 15 x F53(ADJACENT)S 13 x F6 (never)S 50 y 327 X(raises)S 17 x(an)S 18 x(exception)S 17 x(\(it)S 18 x(is)S 18 x(not)S 17 x(possible)S 18 x(to)S 17 x(move)S 17 x (beyond)S 17 x(the)S 18 x(range)S 18 x(of)S 18 x(machine)S 18 x (numbers)S 17 x(with)S 18 x(it\).)S 30 x(The)S 18 x(committee)S 50 y 327 X(debated)S 12 x(whether)S 12 x(it)S 13 x(was)S 12 x (extravagant)S 12 x(to)S 12 x(have)S 13 x(both)S 13 x(sets)S 12 x (and)S 12 x(found)S 13 x(itself)S 12 x(split)S 13 x(into)S 12 x(two)S 12 x(camps,)S 13 x(neither)S 13 x(of)S 12 x(which)S 12 x(wanted)S 50 y 327 X(to)S 15 x(give)S 15 x(up)S 14 x(its)S 15 x(preferred)S 15 x(choice.)S 21 x(It)S 15 x(was)S 15 x(ar)S -1 x(gued)S 15 x(that)S 15 x(one)S 15 x(could)S 15 x(not)S 15 x(be)S 15 x(assured)S 15 x(of)S 15 x(obtaining)S 14 x(the)S 15 x(other)S 15 x(set)S 15 x(if)S 15 x (only)S 15 x(one)S 50 y 327 X(set)S 13 x(were)S 13 x(provided,)S 13 x(because)S 13 x(of)S 13 x(a)S 13 x(well-known)S 13 x(weakness)S 13 x(in)S 13 x(the)S 13 x(Ada)S 13 x(model)S 12 x(of)S 13 x (\015oating-point)S 13 x(arithmetic)S 13 x(that)S 13 x(makes)S 13 x (the)S 49 y 327 X(comparison)S 17 x(of)S 17 x(nearby)S 17 x (\015oating-point)S 17 x(numbers)S 17 x(indeterminate.)S 61 y 410 X (The)S 13 x(\014nal)S 14 x(group)S 14 x(of)S 14 x(subprograms)S 14 x (contains)S 14 x(miscellaneous)S 14 x(functions\320namely,)S 13 x F53(COPY_SIGN)S 13 x F6(and)S 14 x F53(LEADING_PART)S F6(.)S 60 y 410 X(The)S 14 x F53(COPY_SIGN)S 12 x F6(function,)S 14 x(often)S 14 x(found)S 14 x(in)S 14 x(other)S 14 x(languages)S 14 x(and)S 15 x (represented)S 14 x(in)S 14 x(LCAS)S 14 x(by)S 14 x F53(s)S XP /F53 105 22 3 0 19 26 26 16 0 <0180 03C0 03C0 0180 0000 0000 0000 0000 7FC0 7FC0 7FC0 01C0 01C0 01C0 01C0 01C0 01C0 01C0 01C0 01C0 01C0 01C0 01C0 7FFF FFFF 7FFF> PXLC RP 1922 1479 XY F53(ign)S 14 x F6(and)S 14 x(in)S 14 x(the)S 14 x(IEEE)S 50 y 327 X(recommended)S 12 x(functions)S 12 x(by)S 12 x F53(co)S XP /F53 112 22 0 -9 20 18 27 24 0 <7E3E00 FEFF80 7FFFC0 0F83E0 0F01E0 0E00F0 0E00F0 0E0070 0E0070 0E0070 0E0070 0E00F0 0F00E0 0F01E0 0F83C0 0FFFC0 0EFF00 0E3C00 0E0000 0E0000 0E0000 0E0000 0E0000 0E0000 7FC000 FFE000 7FC000> PXLC RP 837 1529 XY F53(p)S XP /F53 121 22 1 -9 20 18 27 24 0 <7F1FC0 FF9FE0 7F1FC0 1C0700 0E0700 0E0E00 0E0E00 070E00 071C00 071C00 039C00 039C00 039800 01B800 01B800 00F000 00F000 00F000 00E000 00E000 00E000 01C000 79C000 7BC000 7F8000 3F0000 3C0000> PXLC RP 858 1529 XY F53(ysign)S F6(,)S 11 x(delivers)S 12 x(the)S 11 x (value)S 12 x(obtained)S 11 x(by)S 12 x(transferring)S 12 x(the)S 11 x(sign)S 12 x(of)S 11 x(its)S 12 x(second)S 12 x(ar)S -1 x (gument)S 13 x(to)S 49 y 327 X(the)S 14 x(\014rst)S 14 x(\(but)S 14 x(otherwise)S 14 x(retaining)S 14 x(all)S 14 x(the)S 14 x (precision)S 14 x(of)S 14 x(the)S 14 x(\014rst)S 14 x(ar)S -1 x (gument\).)S 20 x(This)S 14 x(function)S 14 x(is)S 14 x(often)S 14 x (useful)S 14 x(in)S 14 x(giving)S 14 x(the)S 50 y 327 X(\014nal)S 12 x(result)S 12 x(of)S 13 x(some)S 13 x(computation)S 13 x(the)S 12 x(appropriate)S 13 x(sign)S 13 x(\(without)S 12 x(resorting)S 12 x(to)S 12 x(an)S 12 x(if-then-else)S 13 x(test\))S 13 x(after)S 13 x(having)S 12 x(stripped)S 50 y 327 X(the)S 17 x(sign)S 18 x (away)S 17 x(in)S 18 x(the)S 17 x(ar)S -1 x(gument)S 18 x(reduction)S 17 x(step,)S 19 x(perhaps)S 18 x(by)S 18 x(using)S 17 x(the)S 17 x (very)S 18 x(same)S 18 x(function)S 17 x(to)S 17 x(set)S 18 x(it)S 18 x(positive)S 18 x(there.)S 50 y 327 X(In)S 16 x(highly)S 17 x (accurate)S 17 x(and)S 16 x(portable)S 17 x(code,)S 17 x(this)S 17 x (function)S 17 x(is)S 17 x(preferable)S 17 x(to)S 17 x(negation)S 16 x(and)S 17 x(the)S 16 x F53(abs)S 16 x F6(operator)S 16 x (because)S 16 x(those)S 50 y 327 X(can)S 15 x(lose)S 16 x(low-order)S 16 x(digits)S 16 x(on)S 15 x(hardware)S 15 x(lacking)S 15 x(a)S 15 x (guard)S 15 x(digit)S 15 x(for)S 15 x(subtraction.)S 24 x(On)S 15 x (hardware)S 15 x(distinguishing)S 15 x(the)S 16 x(sign)S 49 y 327 X (of)S 14 x(zero)S 14 x(\(such)S 15 x(as)S 14 x(IEEE)S 15 x (hardware\),)S 15 x(and)S 14 x(where)S 14 x(the)S 15 x (implementation)S 15 x(of)S 14 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 10 x F6(chooses)S 15 x(to)S 50 y 327 X(exploit)S 15 x(the)S 15 x (capability)S 15 x(of)S 14 x(signed)S 14 x(zeros,)S 14 x F53 (COPY_SIGN)S 13 x F6(is)S 15 x(required)S 14 x(to)S 14 x (distinguish)S 14 x(between)S 14 x(plus)S 14 x(zero)S 14 x(and)S 14 x(minus)S 14 x(zero)S 15 x(for)S 50 y 327 X(its)S 14 x(second)S 14 x(ar)S -1 x(gument;)S 15 x(thus,)S 14 x(it)S 14 x(confers)S 14 x (the)S 14 x(sign)S 14 x(of)S 14 x(its)S 14 x(second)S 14 x(ar)S -1 x (gument)S 14 x(on)S 14 x(the)S 14 x(result)S 14 x(even)S 13 x(when)S 14 x(the)S 14 x(second)S 14 x(ar)S -1 x(gument)S 50 y 327 X(is)S 16 x(zero.)S 25 x F53(COPY_SIGN)S 14 x F6(was)S 16 x(a)S 16 x(late)S 16 x(addition)S 16 x(to)S 16 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S F6 (.)S 60 y 410 X F53(LEADING_PART)S F6(,)S 13 x(another)S 15 x(late)S 14 x(addition,)S 15 x(was)S 15 x(motivated)S 15 x(by)S 15 x(the)S 14 x(LCAS)S 14 x F53(trunc)S 14 x F6(operation.)S 21 x(It)S 14 x (delivers)S 14 x(the)S 15 x(value)S 14 x(of)S 50 y 327 X(its)S 16 x (\014rst)S 16 x(ar)S -1 x(gument)S 16 x(with)S 16 x(only)S 16 x (some)S 16 x(of)S 16 x(the)S 16 x(leading)S 16 x(radix-digits)S 16 x (retained)S 16 x(\(the)S 16 x(number)S 16 x(of)S 16 x(them)S 16 x (given)S 16 x(by)S 16 x(the)S 16 x(value)S 16 x(of)S 50 y 327 X(the)S 16 x(second)S 17 x(ar)S -1 x(gument,)S 17 x(which)S 17 x(is)S 17 x (of)S 17 x(the)S 17 x(prede\014ned)S 16 x(type)S 16 x F53(POSITIVE)S F6(\),)S 14 x(and)S 16 x(with)S 16 x(the)S 16 x(remaining)S 16 x (radix-digits)S (\320the)S 16 x(low-)S 49 y 327 X(order)S 13 x(digits\320replaced)S 13 x(by)S 13 x(zeros.)S 18 x(This)S 14 x(function)S 14 x(plays)S 14 x(a)S 14 x(leading)S 14 x(role)S 14 x(in)S 14 x(sophisticated)S 14 x(strategies)S 13 x(for)S 13 x(simulating)S 14 x(higher)S 50 y 327 X(precision,)S 14 x(where)S 14 x(a)S 14 x(\015oating-point)S 14 x(number)S 14 x(needs)S 14 x(to)S 14 x(be)S 14 x(decomposed)S 14 x(into)S 14 x(a)S 14 x(major)S 14 x(portion)S 13 x(of)S 14 x (limited)S 14 x(precision)S 14 x(and)S 14 x(an)S 50 y 327 X (additive)S 17 x(residue.)S 28 x(The)S 17 x(leading)S 17 x(part)S 17 x(is)S 17 x(usually)S 17 x(used)S 17 x(as)S 17 x(a)S 17 x(factor)S 17 x(in)S 17 x(a)S 17 x(subsequent)S 17 x(multiplication)S 17 x(by)S 17 x(a)S 17 x(small)S 17 x(integer,)S 50 y 327 X(such)S 16 x(that)S 17 x(the)S 17 x(result)S 16 x(has)S 16 x(a)S 16 x(suf)S -1 x (\014ciently)S 16 x(small)S 16 x(number)S 16 x(of)S 16 x (radix-digits)S 16 x(to)S 16 x(be)S 16 x(represented)S 16 x F7 (exactly)S 16 x F6(within)S 17 x(the)S 17 x(model)S 16 x(of)S 50 y 327 X(\015oating-point)S 16 x(arithmetic.)S 25 x(The)S 16 x(residue)S 16 x(can)S 16 x(be)S 17 x(accurately)S 16 x(obtained)S 16 x(by)S 16 x(subtraction,)S 17 x(assuming)S 16 x(the)S 16 x(starting)S 17 x (value)S 17 x(has)S 50 y 327 X(no)S 17 x(more)S 18 x(precision)S 18 x(than)S 18 x(that)S 17 x(of)S 18 x(safe)S 18 x(numbers.)S 60 y 410 X(T)S -3 x(wo)S 15 x(functions)S 15 x(in)S 14 x(the)S 15 x (earliest)S 14 x(versions)S 15 x(of)S 15 x(the)S 14 x(proposed)S 15 x(standard,)S 15 x(both)S 15 x(taken)S 14 x(from)S 14 x([3],)S 15 x(were)S 14 x(dropped)S 15 x(along)S 14 x(the)S 49 y 327 X(way.)S 17 x(These)S 12 x(were)S 12 x F53(RECIPROCAL_REL_SPACING\(X\))S 6 x F6(and)S 11 x F53(A)S XP /F53 66 22 1 0 19 25 25 24 0 <7FF800 FFFE00 7FFF00 1C0F00 1C0780 1C0380 1C0380 1C0380 1C0780 1C0700 1FFF00 1FFE00 1FFE00 1C1F00 1C0380 1C03C0 1C01C0 1C01C0 1C01C0 1C01C0 1C03C0 1C0780 7FFF80 FFFF00 7FFC00> PXLC RP 1276 2545 XY F53(BS_SPACING\(X\))S F6(,)S 8 x(which)S 11 x(give)S 11 x(information)S 11 x(about)S 11 x(the)S 11 x(spacing)S 50 y 327 X (of)S 13 x(machine)S 13 x(numbers)S 13 x(in)S 14 x(the)S 14 x (neighborhood)S 14 x(of)S 14 x F53(X)S F6(.)S 12 x(Although)S 13 x (they)S 13 x(are)S 13 x(useful)S 13 x(for)S 14 x(\014ne)S 13 x (control)S 13 x(over)S 13 x(the)S 13 x(termination)S 13 x(of)S 14 x (an)S 50 y 327 X(iterative)S 15 x(algorithm,)S 15 x(or)S 14 x(for)S 14 x(measuring)S 15 x(and)S 14 x(reporting)S 15 x(error,)S 14 x (committee)S 14 x(members)S 15 x(did)S 15 x(not)S 14 x(\014nd)S 14 x (them)S 15 x(important)S 15 x(enough)S 50 y 327 X(to)S 13 x(retain;)S 13 x(when)S 13 x(the)S 13 x(committee)S 13 x(was)S 13 x(unable)S 13 x(to)S 14 x(justify)S 13 x(their)S 13 x(inclusion)S 14 x(to)S 13 x(the)S 13 x(satisfaction)S 13 x(of)S 13 x(some)S 13 x (observers,)S 14 x(it)S 13 x(decided)S 50 y 327 X(to)S 20 x(omit)S 20 x(them.)S 60 y 410 X(The)S 17 x(relationship)S 17 x(between)S 17 x(functions)S 17 x(in)S 18 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 12 x F6(and)S 17 x(certain)S 17 x(required)S 17 x(operations)S 17 x (or)S 50 y 327 X(recommended)S 14 x(functions)S 14 x(of)S 14 x(the)S 14 x(IEEE)S 14 x(\015oating-point)S 15 x(standards)S 15 x(has)S 14 x (been)S 14 x(mentioned)S 14 x(repeatedly)S 14 x(in)S 14 x(this)S 14 x(rationale.)S 20 x(It)S 14 x(is)S 327 2920 XY 600 2 R 31 y 398 X F80(5)S 12 y F78(The)S 11 x(preceding)S 11 x(discussion)S 11 x(only)S 11 x(scratches)S 11 x(the)S 11 x(surface)S 11 x(of)S 11 x(the)S 11 x (long)S 12 x(and)S 11 x(involved)S 12 x(history)S 11 x(of)S 11 x (this)S 11 x(operation.)S 16 x(Many)S 12 x(other)S 11 x (alternatives,)S 11 x(some)S 11 x(of)S 37 y 327 X(which)S 11 x(made)S 11 x(their)S 11 x(way)S 12 x(into)S 11 x(earlier)S 11 x(drafts)S 11 x(of)S 11 x(the)S 11 x(standard,)S 11 x(were)S 11 x(considered)S 11 x(at)S 11 x(one)S 11 x(time)S 11 x(or)S 11 x(another.)S 3128 Y 1292 X F6(6)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 327 0 XY %%EndPageSetup 327 342 XY F6(anticipated)S 13 x(that)S 13 x(relevant)S 13 x (functions)S 13 x(in)S 13 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 7 x F6(will)S 12 x(serve)S 12 x(as)S 13 x(the)S 13 x(realization)S 13 x (of)S 13 x(some)S 13 x(of)S 12 x(the)S 49 y 327 X(functionality)S 17 x(of)S 17 x(the)S 17 x(proposed)S 18 x(IEEE)S 17 x(binding)S 17 x (for)S 18 x(Ada)S 17 x([4].)S 58 y 410 X(The)S 15 x(relationship)S 16 x(between)S 16 x(functions)S 16 x(in)S 16 x F53 (GENERIC_PRIMITIVE_FUNCTIONS)S 10 x F6(and)S 16 x(some)S 16 x(of)S 15 x(the)S 16 x(features)S 16 x(of)S 16 x(LCAS)S 50 y 327 X(has)S 19 x(also)S 18 x(been)S 19 x(discussed.)S 32 x(The)S 18 x(fair)S 18 x(degree)S 18 x(of)S 18 x(overlap)S 19 x(between)S 18 x(the)S 19 x(two)S 18 x(has)S 18 x(prompted)S 18 x(the)S 18 x(suggestion)S 18 x(that)S 18 x(every-)S 50 y 327 X(thing)S 18 x(in)S 18 x(LCAS)S 17 x(that)S 17 x(is)S 17 x(not)S 18 x(already)S 17 x(built)S 17 x (into)S 17 x(Ada)S 18 x(should)S 17 x(be)S 18 x(available)S 17 x(in)S 18 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 12 x F6(in)S 18 x(a)S 50 y 327 X(compatibly)S 18 x(de\014ned)S 17 x(way.)S 30 x(The)S 17 x (obvious)S 18 x(bene\014t)S 17 x(of)S 18 x(following)S 18 x(that)S 18 x(suggestion)S 18 x(to)S 18 x(the)S 18 x(letter)S 18 x(would)S 18 x(be)S 18 x(the)S 18 x(ability)S 17 x(of)S 50 y 327 X(an)S 19 x (LCAS)S 18 x(binding)S 18 x(for)S 18 x(Ada)S 19 x(to)S 18 x(point)S 18 x(to)S 19 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 12 x F6(as)S 18 x (the)S 18 x(embodiment)S 18 x(of)S 18 x(that)S 18 x(part)S 19 x(of)S 19 x(its)S 50 y 327 X(functionality)S 15 x(not)S 15 x(built)S 15 x (into)S 15 x(Ada.)S 23 x(Unfortunately,)S 15 x(this)S 16 x(goal)S 16 x(was)S 15 x(not)S 16 x(expounded)S 15 x(early)S 16 x(enough)S 15 x(in)S 16 x(the)S 16 x(development)S 15 x(of)S 49 y 327 X F53 (GENERIC_PRIMITIVE_FUNCTIONS)S F6(,)S 11 x(and)S 17 x(a)S 16 x(few)S 16 x(dif)S -1 x(ferences)S 18 x(remain.)S 58 y 410 X(Several)S 18 x (partial)S 18 x(implementations)S 18 x(of)S 18 x F53 (GENERIC_PRIMITIVE_FUNCTIONS)S F6(,)S 12 x(varying)S 18 x(in)S 18 x (the)S 18 x(degree)S 18 x(to)S 18 x(which)S 19 x(they)S 50 y 327 X (exploit)S 18 x(knowledge)S 18 x(of)S 18 x(the)S 18 x(underlying)S 18 x(machine,)S 19 x(exist.)S 31 x(Some)S 18 x(of)S 18 x(them)S 18 x (have)S 18 x(tried)S 18 x(to)S 18 x(be)S 18 x(relatively)S 18 x (general,)S 19 x(that)S 18 x(is,)S 50 y 327 X(adaptable)S 20 x(to)S 19 x(dif)S -1 x(ferent)S 19 x(architectures)S 20 x(by)S 20 x (suitable)S 20 x(choice)S 20 x(of)S 20 x(parameters;)S 23 x(none)S 20 x(have)S 20 x(yet)S 19 x(tried)S 20 x(to)S 20 x(be)S 19 x(as)S 20 x(ef)S -1 x(\014cient)S 19 x(as)S 50 y 327 X(possible.)S 58 y -63 x(Through)S 18 x(a)S 18 x(report)S 18 x([16])S 17 x(to)S 18 x (the)S 18 x(Ada)S 17 x(9X)S 18 x(Requirements)S 18 x(T)S -3 x(eam,)S 19 x(the)S 18 x(SIGAda)S 18 x(Numerics)S 18 x(W)S -3 x(orking)S 17 x (Group)S 18 x(has)S 18 x(had)S 50 y 327 X(an)S 21 x(in\015uence)S 20 x(on)S 20 x(Ada)S 21 x(9X)S 20 x(as)S 20 x(a)S 20 x(result)S 21 x (of)S 21 x(the)S 20 x(work)S 21 x(it)S 20 x(did)S 21 x(in)S 21 x (developing)S 21 x(the)S 21 x(proposed)S 20 x(primitive)S 20 x(and)S 21 x(elementary)S 50 y 327 X(functions)S 11 x(standards.)S 18 x(The)S 12 x(report)S 11 x(contains)S 11 x(a)S 11 x(discussion)S 12 x(of)S 12 x(the)S 11 x(problems)S 11 x(of)S 11 x(writing)S 12 x (high-quality,)S 12 x(portable)S 11 x(mathematical)S 49 y 327 X (software;)S 15 x(it)S 15 x(included)S 14 x(a)S 15 x(number)S 14 x (of)S 14 x(Ada)S 15 x(9X)S 15 x(revision)S 15 x(requests)S 14 x (aimed)S 14 x(at)S 14 x(solving)S 14 x(some)S 14 x(of)S 14 x(these)S 15 x(problems.)S 20 x(One)S 14 x(of)S 14 x(the)S 50 y 327 X (recommendations)S 17 x(was)S 17 x(to)S 17 x(include)S 17 x(the)S 17 x(functionality)S 17 x(of)S 17 x F53(GENERIC_PRIMITIVE_FUNCTIONS)S 11 x F6(in)S 17 x(the)S 17 x(Ada)S 17 x(language,)S 18 x(in)S 50 y 327 X(the)S 15 x(form)S 15 x(of)S 15 x(attributes)S 15 x(\(of)S 15 x (the)S 15 x(function)S 16 x(kind\).)S 23 x(Several)S 16 x(of)S 16 x (the)S 15 x(issues)S 15 x(discussed)S 15 x(in)S 16 x(the)S 16 x (report)S 15 x(have)S 15 x(been)S 16 x(accepted)S 15 x(by)S 50 y 327 X(the)S 16 x(Ada)S 16 x(9X)S 16 x(Requirements)S 16 x(T)S -3 x (eam)S 15 x(as)S 16 x(requirements)S 16 x(for)S 16 x(Ada)S 16 x(9X)S 16 x([2],)S 16 x(including)S 16 x(the)S 16 x(incorporation)S 16 x (of)S 16 x(both)S 16 x(elementary)S 50 y 327 X(functions)S 16 x(and)S 17 x(primitive)S 17 x(functions)S 17 x(in)S 17 x(optional)S 17 x (annexes)S 16 x(in)S 16 x(Ada)S 17 x(9X.)S 3127 Y 1292 X(7)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%PageBoundingBox: (atend) %%BeginPageSetup 1000 BP 3300 2550 PM /paper-automatic false SPS 327 0 XY %%EndPageSetup XP /F49 /CM-Times-Bold 58.115 11 DNF RP 327 342 XY F49(Refer)S -1 x(ences)S 449 Y 327 X F6([1])S 52 x(ACM)S 16 x(SIGAda)S 15 x(Numerics)S 16 x(W)S -3 x(orking)S 15 x(Group.)S 15 x(Proposed)S 16 x(Standard)S 17 x(for)S 16 x(a)S 16 x(Generic)S 16 x(Package)S 16 x(of)S 17 x(Primitive)S 16 x(Functions)S 50 y 427 X(for)S 20 x(Ada,)S 18 x(December)S 18 x(1990.)S 18 x(Draft)S 18 x(1.0.)S 67 y 327 X([2])S 52 x(Ada)S 11 x(9X)S 11 x(Project.)S 11 x(Ada)S 11 x(9X)S 10 x(Requirements.)S 11 x(Of)S -1 x(\014ce)S 11 x(of)S 10 x(the)S 11 x(Under)S 10 x(Secretary)S 11 x(of)S 10 x (Defense)S 11 x(for)S 10 x(Acquisition,)S 10 x(W)S -3 x(ashington,)S 49 y 427 X(December)S 20 x(1990.)S 67 y 327 X([3])S 52 x(W.)S 11 x (S.)S 11 x(Brown)S 10 x(and)S 11 x(S.)S 11 x(I.)S 11 x(Feldman.)S 10 x(Environment)S 11 x(Parameters)S 11 x(and)S 11 x(Basic)S 11 x (Functions)S 10 x(for)S 10 x(Floating-Point)S 11 x(Computation.)S 50 y 427 X F7(T)S -1 x(OMS)S F6(,)S 18 x(6\(4\):510{523,)S 18 x (December)S 18 x(1980.)S 66 y 327 X([4])S 52 x(R.)S 13 x(B.)S 13 x (K.)S 13 x(Dewar.)S 13 x(Proposed)S 13 x(Ada)S 13 x(Interface)S 13 x (for)S 13 x(the)S 13 x(IEEE)S 12 x(Standard)S 13 x(for)S 13 x (Binary)S 13 x(Floating-Point)S 13 x(Arithmetic,)S 13 x(August)S 50 y 427 X(1989.)S 19 x(V)S -5 x(ersion)S 21 x(4.)S 66 y 327 X([5])S 52 x(K.)S 10 x(W.)S 10 x(Dritz.)S 9 x(Rationale)S 10 x(for)S 9 x (the)S 10 x(Proposed)S 10 x(Standard)S 10 x(for)S 9 x(a)S 9 x (Generic)S 10 x(Package)S 10 x(of)S 10 x(Elementary)S 10 x (Functions)S 9 x(for)S 9 x(Ada.)S 10 x(ANL)S 50 y 427 X(Report)S 13 x(ANL-89/2)S 14 x(Rev.)S 13 x(1,)S 14 x(Ar)S -1 x(gonne)S 14 x (National)S 13 x(Laboratory,)S 14 x(Ar)S -1 x(gonne,)S 13 x (Illinois,)S 14 x(October)S 14 x(1989.)S 14 x(A)S 13 x(later)S 14 x (\(December)S 50 y 427 X(1990\))S 18 x(revision)S 18 x(is)S 18 x (available)S 18 x(from)S 18 x(the)S 17 x(author.)S 66 y 327 X([6])S 52 x(B.)S 17 x(Ford.)S 17 x(Parameterization)S 18 x(of)S 18 x(the)S 17 x(Environment)S 17 x(for)S 18 x(Transportable)S 18 x (Mathematical)S 17 x(Software.)S 17 x F7(T)S -1 x(OMS)S F6(,)S 17 x (4\(2\):100{)S 50 y 427 X(103,)S 20 x(June)S 19 x(1978.)S 67 y 327 X ([7])S 52 x(IEEE.)S 18 x(IEEE)S 18 x(Standard)S 18 x(for)S 18 x (Binary)S 18 x(Floating-Point)S 18 x(Arithmetic.)S 18 x(ANSI/IEEE)S 18 x(Std.)S 18 x(754-1985,)S 19 x(IEEE,)S 18 x(New)S 18 x(Y)S -4 x (ork,)S 49 y 427 X(1985.)S 67 y 327 X([8])S 52 x(IEEE.)S 18 x(IEEE)S 18 x(Standard)S 18 x(for)S 19 x(Radix-Independent)S 18 x (Floating-Point)S 18 x(Arithmetic.)S 19 x(ANSI/IEEE)S 18 x(Std.)S 18 x(854-1987,)S 18 x(IEEE,)S 50 y 427 X(New)S 19 x(Y)S -4 x(ork,)S 19 x(1987.)S 66 y 327 X([9])S 52 x(ISO-IEC/JTC1/SC22/WG9)S 14 x (\(Ada\))S 15 x(Numerics)S 15 x(Rapporteur)S 15 x(Group.)S 15 x (Proposed)S 15 x(Standard)S 15 x(for)S 15 x(a)S 15 x(Generic)S 15 x (Package)S 14 x(of)S 50 y 427 X(Elementary)S 19 x(Functions)S 19 x (for)S 19 x(Ada,)S 17 x(March)S 17 x(1989.)S 17 x(Draft)S 17 x(1.0.)S 66 y 327 X([10])S 31 x(ISO-IEC/JTC1/SC22/WG9)S 14 x(\(Ada\))S 15 x (Numerics)S 15 x(Rapporteur)S 15 x(Group.)S 15 x(Proposed)S 15 x (Standard)S 15 x(for)S 15 x(a)S 15 x(Generic)S 15 x(Package)S 14 x (of)S 50 y 427 X(Elementary)S 18 x(Functions)S 18 x(for)S 18 x(Ada,)S 17 x(December)S 17 x(1990.)S 17 x(Draft)S 17 x(1.2.)S 67 y 327 X ([11])S 31 x(P.)S 15 x(Naur.)S 15 x(Machine)S 15 x(Dependent)S 15 x (Programming)S 15 x(in)S 15 x(Common)S 15 x(Languages.)S 15 x F7 (BIT)S F6(,)S 15 x(7:123{131,)S 15 x(1967.)S 66 y 327 X([12])S 31 x (M.)S 9 x(Payne,)S 9 x(C.)S 9 x(Schaf)S -1 x(fert,)S 9 x(and)S 10 x (B.)S 9 x(W)S -2 x(ichmann.)S 9 x(Proposal)S 10 x(for)S 9 x(a)S 9 x (Language)S 9 x(Compatible)S 10 x(Arithmetic)S 9 x(Standard.)S 9 x F7(SIGPLAN)S 50 y 427 X(Notices)S F6(,)S 18 x(25\(1\):59{86,)S 18 x (January)S 18 x(1990.)S 66 y 327 X([13])S 31 x(M.)S 10 x(Payne,)S 10 x(C.)S 9 x(Schaf)S -1 x(fert,)S 10 x(and)S 10 x(B.)S 10 x(W)S -2 x(ichmann.)S 10 x(Proposal)S 10 x(for)S 10 x(a)S 9 x(Language)S 10 x(Compatible)S 10 x(Arithmetic)S 10 x(Standard.)S 10 x F7(SIGNUM)S 50 y 427 X(Newsletter)S F6(,)S 18 x(25\(1\):2{43,)S 18 x(January)S 18 x(1990.)S 66 y 327 X([14])S 31 x(K.)S 13 x(A.)S 13 x(Redish)S 14 x(and)S 13 x(W.)S 13 x(W)S -3 x(ard.)S 14 x(Environmental)S 13 x (Enquiries)S 13 x(for)S 13 x(Numerical)S 14 x(Analysis.)S 13 x F7 (SIGNUM)S 12 x(Newsletter)S F6(,)S 13 x(6\(1\):10{)S 50 y 427 X(15,)S 19 x(1971.)S 67 y 327 X([15])S 31 x(J.)S 17 x(Reid.)S 16 x (Functions)S 17 x(for)S 17 x(Manipulating)S 17 x(Floating-Point)S 17 x(Numbers.)S 17 x F7(SIGNUM)S 16 x(Newsletter)S F6(,)S 16 x (14\(4\):11{13,)S 16 x(December)S 49 y 427 X(1979.)S 67 y 327 X ([16])S 31 x(J.)S 15 x(Squire.)S 14 x(Special)S 15 x(Study)S 14 x (Report)S 15 x(on)S 15 x(Ada)S 15 x(Numerical)S 15 x(Issues.)S 15 x (Unpublished)S 15 x(material,)S 15 x(October)S 14 x(1989.)S 3128 Y 1292 X(8)S %%PageTrailer /paper-automatic true SPS 1 PP EP %%PageBoundingBox: 78 39 546 718 %%Trailer EndDviLaserDoc %%BoundingBox: 78 39 546 718 %%Pages: 8 %%DocumentFonts: Times-Bold Times-Roman Times-BoldItalic %%+ Times-Italic