SPARC V8 Appendix N - IEEE 754 Implementation Recommendations

David G. Hough dgh
Sat Jun 30 09:56:09 PDT 1990


If not interested in SPARC implementation details or no postscript printer
is available, delete now!

Version 8 of the SPARC manual is almost done.  A late addition is an Appendix N
which contains a bunch of recommendations about how to close loopholes
where IEEE 754 allows multiple implementations; V8 only REQUIRES IEEE conformity.
These loopholes don't matter much to users but make life difficult for
systems and especially chip implementers who don't like ambiguities in
their test vectors.  In SunOS at least the kernel patches up a lot of hardware
shortcomings to present a more definite interface to user mode; that's
no help to people testing chips on chip testers or on slow logic simulators.

These recommendations might become requirements in SPARC V9.  There probably
aren't any existing implementations that completely conform to these recommendations;
they aren't expected to.   The SunOS 4.1 kernel doesn't implement them 
completely, but that should be fixed with Sun's SVR4.

%!PS-Adobe-1.0
%%Creator: earth:dweaver (David Weaver, ofc B5-160)
%%Title: stdin (ditroff)
%%CreationDate: Fri Jun 29 17:09:42 1990
%%EndComments
% lib/psdit.pro -- prolog for psdit (ditroff) files
% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
% last edit: shore Sat Nov 23 20:28:03 1985
% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $

/$DITroff 140 dict def $DITroff begin
/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
  /pagesave save def}def
/xiL {72 8.25 mul 72 11 mul translate -90 rotate
  72 resolution div dup neg scale 0 0 moveto
  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
  /pagesave save def}def
/PB{save /psv exch def currentpoint translate 
  resolution 72 div dup neg scale 0 0 moveto}def
/PE{psv restore}def
/arctoobig 90 def /arctoosmall .05 def
/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
/tan{dup sin exch cos div}def
/point{resolution 72 div mul}def
/dround	{transform round exch round exch itransform}def
/xT{/devname exch def}def
/xr{/mh exch def /my exch def /resolution exch def}def
/xp{}def
/xs{docsave restore end}def
/xt{}def
/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
/xH{/fontheight exch def F}def
/xS{/fontslant exch def F}def
/s{/fontsize exch def /fontheight fontsize def F}def
/f{/fontnum exch def F}def
/F{fontheight 0 le {/fontheight fontsize def}if
   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
/X{exch currentpoint exch pop moveto show}def
/N{3 1 roll moveto show}def
/Y{exch currentpoint pop exch moveto show}def
/S{show}def
/ditpush{}def/ditpop{}def
/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
/AN{4 2 roll moveto 0 exch ashow}def
/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
/AS{0 exch ashow}def
/MX{currentpoint exch pop moveto}def
/MY{currentpoint pop exch moveto}def
/MXY{moveto}def
/cb{pop}def	% action on unknown char -- nothing for now
/n{}def/w{}def
/p{pop showpage pagesave restore /pagesave save def}def
% sun logo
/u{newpath
  -28 7.5 moveto
  15 7.5 lineto
  15.5 15 7.5 270 90 arc
  -28 22.5 lineto
  stroke} def
/un{
  gsave 30 30 translate
  u 180 rotate u
  grestore
  90 rotate} def
/logo{
  gsave
  un un un un
  grestore} def
% Manual Feed Definitions
/SetStTime{statusdict /manualfeedtimeout 120 put} def
/SetStatus{statusdict /manualfeed true put
   statusdict /product get (LaserWriter) eq 
   {version (23.0) eq  % Don't redefine showpage if printer is not "Classic LW"
     {/p {
	 {statusdict /printerstatus get exec 16#22000000 and 0 eq{exit}if}loop
	 pop showpage pagesave restore /pagesave save def}def}if }if}def
/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
/distance{dup mul exch dup mul add sqrt}def
/dstroke{currentpoint stroke moveto}def
/Dl{2 copy gsave rlineto stroke grestore rmoveto}def
/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
 currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
/Dc{dup arcellipse dstroke}def
/De{arcellipse dstroke}def
/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
 /cradius centerv centerv mul centerh centerh mul add sqrt def
 /eradius endv endv mul endh endh mul add sqrt def
 /endang endv endh atan def
 /startang centerv neg centerh neg atan def
 /sweep startang endang sub dup 0 lt{360 add}if def
 sweep arctoobig gt
 {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
  /midh midang cos midrad mul def /midv midang sin midrad mul def
  midh neg midv neg endh endv centerh centerv midh midv Da
  currentpoint moveto Da}
 {sweep arctoosmall ge
  {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
  centerv neg controldelt mul centerh controldelt mul
  endv neg controldelt mul centerh add endh add
  endh controldelt mul centerv add endv add
  centerh endh add centerv endv add rcurveto dstroke}
 {centerh endh add centerv endv add rlineto dstroke}ifelse}ifelse}def

/Barray 200 array def % 200 values in a wiggle
/D~{mark}def
/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
 /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
 {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
  Bcontrol Blen 2 sub 2 copy get 2 mul put
  Bcontrol Blen 1 sub 2 copy get 2 mul put
  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
  {/i exch def
   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
   /Xbi Xcont Bcontrol i 2 add get 2 div add def
   /Ybi Ycont Bcontrol i 3 add get 2 div add def
   /Xcont Xcont Bcontrol i 2 add get add def
   /Ycont Ycont Bcontrol i 3 add get add def
   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
  }for dstroke}if}def
end
/ditstart{$DITroff begin
 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
 /fonts[nfonts{0}repeat]def
 /fontnames[nfonts{()}repeat]def
/docsave save def
}def

% character outcalls
/oc {/pswid exch def /cc exch def /name exch def
   /ditwid pswid fontsize mul resolution mul 72000 div def
   /ditsiz fontsize resolution mul 72 div def
   ocprocs name known{ocprocs name get exec}{name cb}
   ifelse}def
/fractm [.65 0 0 .6 0 0] def
/fraction
 {/fden exch def /fnum exch def gsave /cf currentfont def
  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 
  grestore ditwid 0 rmoveto} def
/oce {grestore ditwid 0 rmoveto}def
/dm {ditsiz mul}def

/ocprocs 50 dict def ocprocs begin
(14){(1)(4)fraction}def
(12){(1)(2)fraction}def
(34){(3)(4)fraction}def
(13){(1)(3)fraction}def
(23){(2)(3)fraction}def
(18){(1)(8)fraction}def
(38){(3)(8)fraction}def
(58){(5)(8)fraction}def
(78){(7)(8)fraction}def
(sr){gsave 0 .06 dm rmoveto(\326)show oce}def
(is){gsave 0 .15 dm rmoveto(\362)show oce}def
(->){gsave 0 .02 dm rmoveto(\256)show oce}def
(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
(==){gsave 0 .05 dm rmoveto(\272)show oce}def
end

% an attempt at a PostScript FONT to implement ditroff special chars
% this will enable us to 
%	cache the little buggers
%	generate faster, more compact PS out of psdit
%	confuse everyone (including myself)!
50 dict dup begin
/FontType 3 def
/FontName /DIThacks def
/FontMatrix [.001 0 0 .001 0 0] def
/FontBBox [-260 -260 1000 1000] def% a lie but ...
/Encoding 256 array def
0 1 255{Encoding exch /.notdef put}for
Encoding
 dup 8#040/space put %space
 dup 8#224/rc put %right ceil
 dup 8#213/lt put %left  top curl
 dup 8#210/bv put %bold vert
 dup 8#217/lk put %left  mid curl
 dup 8#214/lb put %left  bot curl
 dup 8#215/rt put %right top curl
 dup 8#220/rk put %right mid curl
 dup 8#216/rb put %right bot curl
 dup 8#222/rf put %right floor
 dup 8#221/lf put %left  floor
 dup 8#223/lc put %left  ceil
 dup 8#204/sq put %square
 dup 8#205/bx put %box
 dup 8#206/ci put %circle
 dup 8#207/br put %box rule
 dup 8#140/rn put %root extender
 dup 8#145/vr put %vertical rule
 dup 8#146/ob put %outline bullet
 dup 8#267/bu put %bullet
 dup 8#211/ru put %rule
 dup 8#137/ul put %underline
 dup 8#212/su put %sun logo
 pop
/DITfd 100 dict def
/BuildChar{0 begin
 /cc exch def /fd exch def
 /charname fd /Encoding get cc get def
 /charwid fd /Metrics get charname get def
 /charproc fd /CharProcs get charname get def
 charwid 0 fd /FontBBox get aload pop setcachedevice
 2 setlinejoin 40 setlinewidth
 newpath 0 0 moveto gsave charproc grestore
 end}def
/BuildChar load 0 DITfd put
%/UniqueID 5 def
/CharProcs 50 dict def
CharProcs begin
/space{}def
/.notdef{}def
/ru{500 0 rls}def
/rn{0 800 moveto 500 0 rls}def
/vr{0 800 moveto 0 -800 rls}def
/bv{0 800 moveto 0 -1000 rls}def
/br{0 800 moveto 0 -1000 rls}def
/ul{0 -200 moveto 500 0 rls}def
/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
/sq{80 0 rmoveto currentpoint dround newpath moveto
    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
/bx{80 0 rmoveto currentpoint dround newpath moveto
    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
/ci{360 280 rmoveto currentpoint newpath 333 0 360 arc
    50 setlinewidth stroke}def

/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
    0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
    0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
/su{10 setlinewidth
    480 240 translate
    45 rotate
    -7 7 scale
    logo} def
end

/Metrics 50 dict def Metrics begin
/.notdef 0 def
/space 500 def
/ru 500 def
/br 0 def
/lt 416 def
/lb 416 def
/rt 416 def
/rb 416 def
/lk 416 def
/rk 416 def
/rc 416 def
/lc 416 def
/rf 416 def
/lf 416 def
/bv 416 def
/ob 350 def
/bu 350 def
/ci 750 def
/bx 750 def
/sq 750 def
/rn 500 def
/ul 500 def
/vr 0 def
/su 900 def
end

DITfd begin
/s2 500 def /s4 250 def /s3 333 def
/a4p{arcto pop pop pop pop}def
/2cx{2 copy exch}def
/rls{rlineto stroke}def
/currx{currentpoint pop}def
/dround{transform round exch round exch itransform} def
end
end
/DIThacks exch definefont pop
ditstart
(psc)xT
576 1 1 xr
1(Times-Roman)xf 1 f
2(Times-Italic)xf 2 f
3(Times-Bold)xf 3 f
4(Times-BoldItalic)xf 4 f
5(Helvetica)xf 5 f
6(Helvetica-Bold)xf 6 f
7(Courier)xf 7 f
8(Courier-Bold)xf 8 f
9(Symbol)xf 9 f
10(DIThacks)xf 10 f
10 s
1 f
xi
%%EndProlog

%%Page: 1 1
10 s 0 xH 0 xS 1 f
11 s

3 p
%%Page: 3 2
11 s 0 xH 0 xS 1 f
48 s
4332 1080(N)N
 gsave
 432 2     576 mul moveto
 4608 2     576 mul lineto
 4608 2.125 576 mul lineto
 432 2.125 576 mul lineto
 432 2     576 mul lineto
 0.7 setgray fill grestore
36 s
10 f
432 1152(\211)N
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
(\211)S
22 s
1 f
806 1572(SPA)N
1129(R)X
1246(C)X
1407(IE)X
1573(E)X
1680(E)X
1831(754)X
2139(Im)X
2335(plem)X
(entation)S
3298(R)X
3415(ecom)X
3796(m)X
3933(endations)X
11 s
1728 2064(A)N
1813(number)X
2104(of)X
2199(details)X
2452(in)X
2543(IEEE)X
2756(754)X
2910(are)X
3039(left)X
3179(to)X
3270(be)X
3375(de\256ned)X
3656(by)X
3766 0.2333(implementations,)AX
4400(and)X
1728 2168(so)N
1828(are)X
1957(unde\256ned)X
2326(in)X
2417(this)X
2567(document.)X
2981(In)X
3076(order)X
3283(to)X
3374(promote)X
3690(better)X
3913(portability)X
4304(among)X
1728 2272(new)N
1896(SPARC)X
2197 0.2500(implementations)AX
2809(of)X
2904(programs)X
3258(such)X
3441(as)X
3536(instruction)X
3936(set)X
4056(test)X
4201(vectors,)X
4499(the)X
1728 2376(following)N
2093(recommendations)X
2742(eliminate)X
3094(many)X
3312(uncertainties,)X
3807(especially)X
4182(with)X
4361(regard)X
1728 2480(to)N
1819(exceptional)X
2248(situations.)X
2653(These)X
2885(recommendations,)X
3556(perhaps)X
3851(modi\256ed)X
4187(slightly)X
4475(in)X
1728 2584(the)N
1858(light)X
2043(of)X
2138(subsequent)X
2551(experience,)X
2976(are)X
3105(intended)X
3431(to)X
3522(be)X
3627(incorporated)X
4094(as)X
4189(require-)X
1728 2688(ments)N
1961(in)X
2052(the)X
2182(next)X
2356(SPARC)X
2657(revision)X
2963(\(Version)X
3292(9\).)X
3 f
12 s
432 2904(N.1.)N
645(Unaligned)X
1090(\257oating-)X
645 3008(point)N
882(data)X
1087(registers)X
1 f
11 s
1728 2904(The)N
1887(effect)X
2109(of)X
2204(executing)X
2569(an)X
2674(instruction)X
3074(that)X
3229(refers)X
3450(to)X
3541(an)X
3646(unaligned)X
4016(\257oating-point)X
1728 3008(register)N
2014(operand)X
2319(\(double-precision)X
2962(operand)X
3267(in)X
3358(a)X
3419(register)X
3705(not)X
3840(0)X
3906(mod)X
4085(2,)X
4173(or)X
1728 3112(quadruple-precision)N
2454(operand)X
2759(in)X
2850(a)X
2911(register)X
3197(not)X
3332(0)X
3398(mod)X
3577(4\))X
3672(is)X
3753(unde\256ned)X
4122(in)X
4213(Section)X
1728 3216(4.3.)N
1904(An)X
2033 0.2083(illegal_instruction)AX
2699(trap)X
2858(occurs)X
3109(in)X
3200(this)X
3350(case.)X
3 f
12 s
432 3432(N.2.)N
645(Traps)X
914(inhibit)X
1210(results)X
1 f
11 s
1728(To)X
1848(summarize)X
2257(what)X
2450(what)X
2643(happens)X
2953(when)X
3165(a)X
3226(\257oating-point)X
3729(trap)X
3888(occurs,)X
4161(as)X
4256(described)X
1728 3536(in)N
1819(section)X
2091(4.4)X
2223(and)X
2372(elsewhere:)X
10 f
1728 3692(\267)N
1 f
1860(the)X
1990(destination)X
2 f
2400(f)X
1 f
2447(register)X
2733(is)X
2814(unchanged)X
10 f
1728 3848(\267)N
1 f
1860(the)X
1990(FSR)X
2 f
2169(fcc)X
1 f
2294(\(\257oating-point)X
2826(condition)X
3182(codes\))X
3433(\256eld)X
3612(is)X
3693(unchanged)X
10 f
1728 4004(\267)N
1 f
1860(the)X
1990(FSR)X
2 f
2169(aexc)X
1 f
2352(\(accrued)X
2676(exceptions\))X
3104(\256eld)X
3283(is)X
3364(unchanged)X
10 f
1728 4160(\267)N
1 f
1860(the)X
1990(FSR)X
2 f
2169(cexc)X
1 f
2347(\(current)X
2647(exceptions\))X
3075(\256eld)X
3254(is)X
3335(unchanged)X
3738(except)X
3990(for)X
1860 4264(IEEE_754_exception;)N
2661(for)X
2785(these,)X
2 f
3010(cexc)X
1 f
3188(contains)X
3504(exactly)X
3781(one)X
3930(bit)X
4046(which)X
4283(is)X
4364(1,)X
1860 4368(corresponding)N
2385(to)X
2476(the)X
2606(exception)X
2971(that)X
3126(caused)X
3387(the)X
3517(trap)X
1728 4524(These)N
1960(restrictions)X
2374(are)X
2503(designed)X
2838(to)X
2929(ensure)X
3180(a)X
3241(consistent)X
3616(state)X
3800(for)X
3924(user)X
4092(software.)X
1728 4628(Instructions)N
2166(causing)X
2457(an)X
2562(fp_exception)X
3044(trap)X
3203(due)X
3352(to)X
3443(un\256nished)X
3832(or)X
3927(unimplemented)X
1728 4732(FPops)N
1970(execute)X
2261(as)X
2356(if)X
2432(by)X
2542(hardware;)X
2915(that)X
3070(a)X
3131(hardware)X
3479(trap)X
3638(was)X
3796(taken)X
4009(to)X
4100(supervisor)X
1728 4836(software)N
2052(is)X
2133(undetectable)X
2601(by)X
2711(user)X
2879(code)X
3067(except)X
3319(possibly)X
3635(by)X
3745(timing)X
3999(considerations.)X
1728 4940(A)N
1813(user-mode)X
2206(trap)X
2365(handler)X
2651(invoked)X
2957(for)X
3081(an)X
3186(IEEE)X
3399(754)X
3553(exception,)X
3940(whether)X
4245(as)X
4340(a)X
4401(direct)X
1728 5044(result)N
1946(of)X
2041(a)X
2102(hardware)X
2450(IEEE_754_exception)X
3226(or)X
3321(as)X
3416(indirect)X
3708(result)X
3926(of)X
4021(supervisor)X
4409(han-)X
1728 5148(dling)N
1932(of)X
2027(an)X
2132(un\256nished_FPop)X
2751(or)X
2846(unimplemented_FPop,)X
3670(may)X
3844(rely)X
4003(on)X
4113(the)X
4243(follow-)X
1728 5252(ing:)N
10 f
1728 5408(\267)N
1 f
1860(supervisor)X
2248(software)X
2572(will)X
2732(pass)X
2905(it)X
2977(the)X
3107(address)X
3392(of)X
3487(the)X
3617(instruction)X
4017(which)X
4254(caused)X
1860 5512(the)N
1990(exception,)X
2377(extracted)X
2722(from)X
2915(a)X
2976(deferred)X
3290(trap)X
3449(queue)X
3681(or)X
3776(elsewhere;)X
10 f
1728 5668(\267)N
1 f
1860(the)X
1990(destination)X
2 f
2400(f)X
1 f
2447(register)X
2733(is)X
2814(unchanged)X
3217(from)X
3410(its)X
3516(state)X
3700(prior)X
3893(to)X
3984(that)X
4139(instruction's)X
1860 5772(execution)N
22 s
10 f
1526 6080(\212)N
3 f
1728(s)X
1811(u)X
1923(n)X
5 f
6 s
1728 6130(microsystems)N
1 f
9 s
3766 6080(3)N

4 p
%%Page: 4 3
9 s 0 xH 0 xS 1 f
11 s
288 464(4)N
6 s
288 500 MXY
4176 0 Dl
11 s
10 f
1584 820(\267)N
1 f
1716(the)X
1846(FSR)X
2 f
2025(fcc)X
1 f
2150(is)X
2231(unchanged)X
10 f
1584 976(\267)N
1 f
1716(the)X
1846(FSR)X
2 f
2025(aexc)X
1 f
2208(is)X
2289(unchanged)X
10 f
1584 1132(\267)N
1 f
1716(the)X
1846(FSR)X
2 f
2025(cexc)X
1 f
2203(contains)X
2519(one)X
2668(bit)X
2784(on)X
2894(for)X
3018(the)X
3148(exception)X
3513(that)X
3668(caused)X
3929(the)X
4059(trap)X
10 f
1584 1288(\267)N
1 f
1716(the)X
1846(FSR)X
2 f
2025(ftt)X
1 f
2122(and)X
2 f
2271(qne)X
1 f
2420(are)X
2549(zero)X
1584 1444(Supervisor)N
1987(software)X
2311(is)X
2392(responsible)X
2815(for)X
2939(enforcing)X
3298(these)X
3501(requirements)X
3983(if)X
4059(the)X
1584 1548(hardware)N
1932(trap)X
2091(mechanism)X
2515(does)X
2698(not.)X
3 f
12 s
288 1764(N.3.)N
501(NaN)X
711(operand)X
1076(and)X
501 1868(result)N
760(de\256nitions)X
1 f
11 s
1584 1764(An)N
1713(untrapped)X
2087(\257oating-point)X
2590(result)X
2808(can)X
2952(result)X
3170(in)X
3261(a)X
3322(format)X
3579(which)X
3816(is)X
3897(either)X
4120(the)X
4250(same)X
1584 1868(as,)N
1701(or)X
1796(different)X
2121(from,)X
2336(the)X
2466(format)X
2723(of)X
2818(the)X
2948(source)X
3199(operands.)X
3582(These)X
3814(two)X
3968(cases)X
4175(are)X
1584 1972(described)N
1943(separately,)X
2344(below.)X
3 f
288 2188(Untrapped)N
720(\257oating-point)X
288 2292(result)N
525(in)X
621(different)X
970(format)X
1250(from)X
288 2396(operands)N
7 f
1584 2188(f)N
1 f
1637([)X
7 f
1666(sdq)X
1 f
1825(])X
7 f
1854(to)X
1 f
1960([)X
7 f
1989(sdq)X
1 f
2148(],)X
2221(with)X
2400(quiet)X
2599(NaN)X
2786(operand:)X
3116(no)X
3226(exception)X
3591(caused;)X
3877(result)X
4095(is)X
4176(the)X
1584 2292(quiet)N
1783(NaN.)X
2014(The)X
2173(operand)X
2478(is)X
2559(transformed)X
3006(as)X
3101(follows:)X
3 f
1744 2448(NaN)N
1 f
1936(transformation:)X
2502(The)X
2661(most)X
2855(signi\256cant)X
3245(bits)X
3395(of)X
3490(the)X
3620(operand)X
3925(fraction)X
4221(are)X
1744 2552(copied)N
2001(to)X
2092(the)X
2222(most)X
2416(signi\256cant)X
2806(bits)X
2956(of)X
3051(the)X
3181(result)X
3399(fraction.)X
3739(When)X
3971(converting)X
4370(to)X
1744 2656(a)N
1805(narrower)X
2143(format,)X
2422(excess)X
2673(lower)X
2895(order)X
3102(bits)X
3252(of)X
3347(the)X
3477(operand)X
3782(fraction)X
4078(are)X
4207(dis-)X
1744 2760(carded.)N
2044(When)X
2276(converting)X
2675(to)X
2766(a)X
2827(wider)X
3049(format,)X
3328(excess)X
3579(lower)X
3801(order)X
4008(bits)X
4158(of)X
4253(the)X
1744 2864(result)N
1962(fraction)X
2258(are)X
2387(set)X
2507(to)X
2598(0.)X
2708(The)X
2867(quiet)X
3066(bit)X
3182(\(most)X
3405(signi\256cant)X
3795(bit)X
3911(of)X
4006(the)X
4136(result)X
1744 2968(fraction\))N
2069(is)X
2150(always)X
2416(set)X
2536(to)X
2627(1.)X
7 f
1584 3124(f)N
1 f
1637([)X
7 f
1666(sdq)X
1 f
1825(])X
7 f
1854(to)X
1 f
1960([)X
7 f
1989(sdq)X
1 f
2148(],)X
2221(signaling)X
2567(NaN)X
2754(operand:)X
3084(invalid)X
3352(exception;)X
3742(result)X
3960(is)X
4041(the)X
4171(signal-)X
1584 3228(ing)N
1719(NaN)X
1906(operand)X
2211(processed)X
2579(by)X
2689(the)X
3 f
2819(NaN)X
1 f
3011(transformation)X
3552(above.)X
7 f
1584 3384(fcmpe)N
1 f
1849([)X
7 f
1878(sdq)X
1 f
2037(])X
2088(with)X
2267(any)X
2416(NaN)X
2603(operand:)X
2933(invalid)X
3201(exception;)X
3591(unordered)X
2 f
3969(fcc)X
1 f
4072(.)X
7 f
1584 3540(fcmp)N
1 f
1796([)X
7 f
1825(sdq)X
1 f
1984(])X
2035(with)X
2214(any)X
2363(signaling)X
2709(NaN)X
2896(operand:)X
3226(invalid)X
3494(exception;)X
3884(unordered)X
2 f
4262(fcc)X
1 f
4365(.)X
7 f
1584 3696(fcmp)N
1 f
1796([)X
7 f
1825(sdq)X
1 f
1984(])X
2035(with)X
2214(any)X
2363(quiet)X
2562(NaN)X
2749(operand)X
3054(but)X
3189(no)X
3299(signaling)X
3645(NaN)X
3832(operand:)X
4162(no)X
1584 3800(exception;)N
1974(unordered)X
2 f
2352(fcc)X
1 f
2455(.)X
3 f
288 4016(Untrapped)N
720(\257oating-point)X
288 4120(result)N
525(in)X
621(same)X
833(format)X
1113(as)X
288 4224(operands)N
1 f
1584 4016(No)N
1713(NaN)X
1900(operand:)X
2230(for)X
2354(an)X
2459(invalid)X
2727(exception)X
3092(such)X
3275(as)X
3370(sqrt\()X
9 f
3531(-)X
1 f
3579(1.0\))X
3762(or)X
3879(0.0)X
9 f
4003(\270)X
1 f
4065(0.0,)X
4219(the)X
1584 4120(result)N
1802(is)X
1883(the)X
2013(quiet)X
2212(NaN)X
2399(with)X
2578(sign)X
2747(=)X
2819(0,)X
2907(exponent)X
3252(=)X
3324(all)X
3435(1's,)X
3586(and)X
3735(fraction)X
4031(=)X
4103(all)X
4214(1's.)X
1584 4224(The)N
1743(sign)X
1912(is)X
1993(0)X
2059(to)X
2150(distinguish)X
2560(such)X
2743(results)X
2995(from)X
3188(storage)X
3464 0.3187(initialized)AX
3841(to)X
3932(1-bits.)X
1584 4380(One)N
1752(operand,)X
2079(quiet)X
2278(NaN:)X
2490(no)X
2600(exception,)X
2987(result)X
3205(is)X
3286(the)X
3416(quiet)X
3615(NaN)X
3802(operand.)X
1584 4536(One)N
1752(operand,)X
2079(signaling)X
2425(NaN:)X
2637(invalid)X
2905(exception,)X
3292(result)X
3510(is)X
3591(that)X
3746(signaling)X
4092(NaN)X
4279(with)X
1584 4640(the)N
1714(quiet)X
1913(bit)X
2029(\(most)X
2252(signi\256cant)X
2642(bit)X
2758(of)X
2853(fraction)X
3149(\256eld\))X
3357(set)X
3477(to)X
3568(1.)X
1584 4796(Two)N
1767(operands,)X
2128(both)X
2307(quiet:)X
2531(no)X
2641(exception,)X
3028(result)X
3246(is)X
3327(the)X
3457(rs1)X
3586(\(\256rst)X
3774(source\))X
4054(operand.)X
1584 4952(Two)N
1767(operands,)X
2128(both)X
2307(signaling:)X
2678(invalid)X
2946(exception,)X
3333(result)X
3551(is)X
3632(the)X
3762(rs1)X
3891(operand)X
4196(with)X
1584 5056(the)N
1714(quiet)X
1913(bit)X
2029(set)X
2149(to)X
2240(1.)X
1584 5212(Two)N
1767(operands,)X
2128(just)X
2278(one)X
2427(signaling)X
2773(NaN:)X
2985(invalid)X
3253(exception,)X
3640(result)X
3858(is)X
3939(the)X
4069(signaling)X
1584 5316(NaN)N
1771(operand)X
2076(with)X
2255(the)X
2385(quiet)X
2584(bit)X
2700(set)X
2820(to)X
2911(1.)X
1584 5472(Two)N
1767(operands,)X
2128(neither)X
2395(signaling)X
2741(NaN,)X
2950(just)X
3100(one)X
3249(quiet)X
3448(NaN:)X
3660(no)X
3770(exception,)X
4157(result)X
4375(is)X
1584 5576(the)N
1714(quiet)X
1913(NaN)X
2100(operand.)X
22 s
10 f
1382 6080(\212)N
3 f
1584(s)X
1667(u)X
1779(n)X
5 f
6 s
1584 6130(microsystems)N

5 p
%%Page: 5 4
6 s 0 xH 0 xS 5 f
11 s
1 f
9 s
2402 464(Appendix)N
2704(N)X
2774(\320)X
2864(SPARC)X
3110(IEEE)X
3284(754)X
3410(Implementation)X
3884(Recommendations)X
11 s
4564(5)X
6 s
432 500 MXY
4176 0 Dl
3 f
12 s
432 820(N.4.)N
645(Trapped)X
1026(Under\257ow)X
645 924(de\256nition)N
1058(\(UFM=1\))X
1 f
11 s
1728 820(Under\257ow)N
2125(occurs)X
2376(if)X
2452(the)X
2582(correct)X
2848(unrounded)X
3246(result)X
3464(has)X
3603(magnitude)X
3998(between)X
4313(zero)X
1728 924(and)N
1877(the)X
2007(smallest)X
2319(normalized)X
2738(number)X
3029(in)X
3120(the)X
3250(destination)X
3660(format.)X
3961(In)X
4056(terms)X
4274(of)X
4369(IEEE)X
1728 1028(754,)N
1904(this)X
2054(means)X
2301(\252tininess)X
2632(detected)X
2948(before)X
3194(rounding\272.)X
1728 1184(Note)N
1921(that)X
2076(the)X
2206(wrapped)X
2530(exponent)X
2875(results)X
3127(intended)X
3453(to)X
3544(be)X
3649(delivered)X
3999(on)X
4109(trapped)X
1728 1288(under\257ows)N
2140(and)X
2289(over\257ows)X
2657(in)X
2748(IEEE)X
2961(754)X
3115(aren't)X
3342(relevant)X
3648(to)X
3739(SPARC)X
4040(at)X
4126(the)X
1728 1392(hardware/supervisor)N
2467(levels;)X
2720(if)X
2796(they)X
2970(are)X
3099(created)X
3375(at)X
3461(all)X
3572(then)X
3746(it)X
3818(would)X
4060(be)X
4165(by)X
4275(a)X
4336(user)X
1728 1496(code)N
1916(in)X
2007(a)X
2068(user-mode)X
2461(trap)X
2620(handler.)X
3 f
12 s
432 1712(N.5.)N
645(Untrapped)X
1116(under\257ow)X
645 1816(de\256nition)N
1058(\(UFM=0\))X
1 f
11 s
1728 1712(Under\257ow)N
2125(occurs)X
2376(if)X
2452(the)X
2582(correct)X
2848(unrounded)X
3246(result)X
3464(has)X
3603(magnitude)X
3998(between)X
4313(zero)X
1728 1816(and)N
1877(the)X
2007(smallest)X
2319(normalized)X
2738(number)X
3029(in)X
3120(the)X
3250(destination)X
3660(format,)X
3 f
3939(and)X
1 f
4103(the)X
4233(correctly)X
1728 1920(rounded)N
2038(result)X
2256(in)X
2347(the)X
2477(destination)X
2887(format)X
3144(is)X
3225(inexact;)X
3527(that)X
3682(result)X
3900(may)X
4074(be)X
4179(zero,)X
4374(sub-)X
1728 2024(normal,)N
2022(or)X
2117(the)X
2247(smallest)X
2559(normalized)X
2978(number.)X
3313(In)X
3408(terms)X
3626(of)X
3721(IEEE)X
3934(754,)X
4110(this)X
4260(means)X
1728 2128(\252tininess)N
2059(detected)X
2375(before)X
2621(rounding\272)X
3000(and)X
3149(\252loss)X
3347(of)X
3442(accuracy)X
3776(detected)X
4092(as)X
4187(inexact\272.)X
1728 2232(An)N
1857(IEEE)X
2070(trap)X
2229(may)X
2403(still)X
2559(occur)X
2776(if)X
2852(NXM=1.)X
1728 2388(Note)N
1921(that)X
2076(\257oating-point)X
2579(over\257ow)X
2913(is)X
2994(de\256ned)X
3275(to)X
3366(be)X
3471(detected)X
3 f
3787(after)X
1 f
3989(rounding;)X
4354(the)X
1728 2492(foregoing)N
2092(under\257ow)X
2470(de\256nition)X
2831(simpli\256es)X
3197(hardware)X
3545 0.2885(implementation)AX
4123(and)X
4272(test.)X
3 f
12 s
432 2708(N.6.)N
645(Integer)X
968(over\257ow)X
645 2812(de\256nition)N
7 f
11 s
1728 2708(f)N
1 f
1781([)X
7 f
1810(sdq)X
1 f
1969(])X
7 f
1998(toi)X
1 f
2157(:)X
2204(when)X
2416(a)X
2477(NaN,)X
2686(in\256nity,)X
2986(large)X
3184(positive)X
3486(argument)X
9 f
3841(\263)X
1 f
3911(2147483648.0,)X
4461(or)X
1728 2812(large)N
1926(negative)X
2247(argument)X
9 f
2602(\243)X
1 f
2672(-2147483649.0)X
3229(is)X
3310(converted)X
3679(to)X
3770(integer,)X
4059(the)X
4189(exception)X
1728 2916(is)N
1809(invalid.)X
2121(If)X
2201(no)X
2311(trap)X
2470(occurs)X
2721(and)X
2870(the)X
3000(sign)X
3169(bit)X
3285(of)X
3380(the)X
3510(operand)X
3815(is)X
3896(positive)X
4198(\(is)X
4308(0\),)X
4425(the)X
1728 3020(numerical)N
2103(result)X
2321(is)X
2402(2147483647.)X
2908(If)X
2988(no)X
3098(trap)X
3257(occurs)X
3508(and)X
3657(the)X
3787(sign)X
3956(bit)X
4072(of)X
4167(the)X
4297(operand)X
1728 3124(is)N
1809(negative)X
2130(\(is)X
2240(1\),)X
2357(the)X
2487(numerical)X
2862(result)X
3080(is)X
3161(-2147483648.)X
22 s
10 f
1526 6080(\212)N
3 f
1728(s)X
1811(u)X
1923(n)X
5 f
6 s
1728 6130(microsystems)N

4 p
%%Trailer
xt

xs




More information about the Numeric-interest mailing list