# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by (C) Jim Thomas <jimthomas@hpcll218> on Tue Nov  5 16:13:26 1996
#
# This archive contains:
#	math_complex_enhancements.ps	
#

LANG=""; export LANG
PATH=/bin:/usr/bin:$PATH; export PATH

echo x - math_complex_enhancements.ps
sed 's/^@//' >math_complex_enhancements.ps <<'@EOF'
%!PS-Adobe-3.0
%%Title: (Microsoft Word - math-complex\311)
%%Creator: (Microsoft Word: PSPrinter 8.1.1)
%%CreationDate: (4:04 PM Tuesday, November 5, 1996)
%%For: ()
%%Pages: 8
%%DocumentFonts: Times-Roman Times-Bold Times-Italic Courier-Bold Symbol Courier-BoldOblique
%%DocumentNeededFonts: Times-Roman Times-Bold Times-Italic Courier-Bold Symbol Courier-BoldOblique
%%DocumentSuppliedFonts:
%%DocumentData: Clean7Bit
%%PageOrder: Ascend
%%Orientation: Portrait
%ADO_PaperArea: -31 -30 761 582
%ADO_ImageableArea: 0 0 730 552
%%EndComments
/md 183 dict def md begin
/currentpacking where {pop /sc_oldpacking currentpacking def true setpacking}if
%%BeginFile: adobe_psp_basic
%%Copyright: Copyright 1990-1993 Adobe Systems Incorporated. All Rights Reserved.
/bd{bind def}bind def
/xdf{exch def}bd
/xs{exch store}bd
/ld{load def}bd
/Z{0 def}bd
/T/true
/F/false
/:L/lineto
/lw/setlinewidth
/:M/moveto
/rl/rlineto
/rm/rmoveto
/:C/curveto
/:T/translate
/:K/closepath
/:mf/makefont
/gS/gsave
/gR/grestore
/np/newpath
14{ld}repeat
/$m matrix def
/av 81 def
/por true def
/normland false def
/psb-nosave{}bd
/pse-nosave{}bd
/us Z
/psb{/us save store}bd
/pse{us restore}bd
/level2
/languagelevel where
{
pop languagelevel 2 ge
}{
false
}ifelse
def
/featurecleanup
{
stopped
cleartomark
countdictstack exch sub dup 0 gt
{
{end}repeat
}{
pop
}ifelse
}bd
/noload Z
/startnoload
{
{/noload save store}if
}bd
/endnoload
{
{noload restore}if
}bd
level2 startnoload
/setjob
{
statusdict/jobname 3 -1 roll put
}bd
/setcopies
{
userdict/#copies 3 -1 roll put
}bd
level2 endnoload level2 not startnoload
/setjob
{
1 dict begin/JobName xdf currentdict end setuserparams
}bd
/setcopies
{
1 dict begin/NumCopies xdf currentdict end setpagedevice
}bd
level2 not endnoload
/pm Z
/mT Z
/sD Z
/realshowpage Z
/initializepage
{
/pm save store mT concat
}bd
/endp
{
pm restore showpage
}def
/$c/DeviceRGB def
/rectclip where
{
pop/rC/rectclip ld
}{
/rC
{
np 4 2 roll
:M
1 index 0 rl
0 exch rl
neg 0 rl
:K
clip np
}bd
}ifelse
/rectfill where
{
pop/rF/rectfill ld
}{
/rF
{
gS
np
4 2 roll
:M
1 index 0 rl
0 exch rl
neg 0 rl
fill
gR
}bd
}ifelse
/rectstroke where
{
pop/rS/rectstroke ld
}{
/rS
{
gS
np
4 2 roll
:M
1 index 0 rl
0 exch rl
neg 0 rl
:K
stroke
gR
}bd
}ifelse
%%EndFile
%%BeginFile: adobe_psp_colorspace_level1
%%Copyright: Copyright 1991-1993 Adobe Systems Incorporated. All Rights Reserved.
/G/setgray ld
/:F/setrgbcolor ld
%%EndFile
%%BeginFile: adobe_psp_uniform_graphics
%%Copyright: Copyright 1990-1993 Adobe Systems Incorporated. All Rights Reserved.
/@a
{
np :M 0 rl :L 0 exch rl 0 rl :L fill
}bd
/@b
{
np :M 0 rl 0 exch rl :L 0 rl 0 exch rl fill
}bd
/arct where
{
pop
}{
/arct
{
arcto pop pop pop pop
}bd
}ifelse
/x1 Z
/x2 Z
/y1 Z
/y2 Z
/rad Z
/@q
{
/rad xs
/y2 xs
/x2 xs
/y1 xs
/x1 xs
np
x2 x1 add 2 div y1 :M
x2 y1 x2 y2 rad arct
x2 y2 x1 y2 rad arct
x1 y2 x1 y1 rad arct
x1 y1 x2 y1 rad arct
fill
}bd
/@s
{
/rad xs
/y2 xs
/x2 xs
/y1 xs
/x1 xs
np
x2 x1 add 2 div y1 :M
x2 y1 x2 y2 rad arct
x2 y2 x1 y2 rad arct
x1 y2 x1 y1 rad arct
x1 y1 x2 y1 rad arct
:K
stroke
}bd
/@i
{
np 0 360 arc fill
}bd
/@j
{
gS
np
:T
scale
0 0 .5 0 360 arc
fill
gR
}bd
/@e
{
np
0 360 arc
:K
stroke
}bd
/@f
{
np
$m currentmatrix
pop
:T
scale
0 0 .5 0 360 arc
:K
$m setmatrix
stroke
}bd
/@k
{
gS
np
:T
0 0 :M
0 0 5 2 roll
arc fill
gR
}bd
/@l
{
gS
np
:T
0 0 :M
scale
0 0 .5 5 -2 roll arc
fill
gR
}bd
/@m
{
np
arc
stroke
}bd
/@n
{
np
$m currentmatrix
pop
:T
scale
0 0 .5 5 -2 roll arc
$m setmatrix
stroke
}bd
%%EndFile
%%BeginFile: adobe_psp_basic_text
%%Copyright: Copyright 1990-1993 Adobe Systems Incorporated. All Rights Reserved.
/S/show ld
/A{
0.0 exch ashow
}bd
/R{
0.0 exch 32 exch widthshow
}bd
/W{
0.0 3 1 roll widthshow
}bd
/J{
0.0 32 4 2 roll 0.0 exch awidthshow
}bd
/V{
0.0 4 1 roll 0.0 exch awidthshow
}bd
/fcflg true def
/fc{
fcflg{
vmstatus exch sub 50000 lt{
(%%[ Warning: Running out of memory ]%%\r)print flush/fcflg false store
}if pop
}if
}bd
/$f[1 0 0 -1 0 0]def
/:ff{$f :mf}bd
/MacEncoding StandardEncoding 256 array copy def
MacEncoding 39/quotesingle put
MacEncoding 96/grave put
/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
/infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
/product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
/questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft
/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave
/Oacute/Ocircumflex/apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde
/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
MacEncoding 128 128 getinterval astore pop
level2 startnoload
/copyfontdict
{
findfont dup length dict
begin
{
1 index/FID ne{def}{pop pop}ifelse
}forall
}bd
level2 endnoload level2 not startnoload
/copyfontdict
{
findfont dup length dict
copy
begin
}bd
level2 not endnoload
md/fontname known not{
/fontname/customfont def
}if
/Encoding Z
/:mre
{
copyfontdict
/Encoding MacEncoding def
fontname currentdict
end
definefont :ff def
}bd
/:bsr
{
copyfontdict
/Encoding Encoding 256 array copy def
Encoding dup
}bd
/pd{put dup}bd
/:esr
{
pop pop
fontname currentdict
end
definefont :ff def
}bd
/scf
{
scalefont def
}bd
/scf-non
{
$m scale :mf setfont
}bd
/ps Z
/fz{/ps xs}bd
/sf/setfont ld
/cF/currentfont ld
/mbf
{
/makeblendedfont where
{
pop
makeblendedfont
/ABlend exch definefont
}{
pop
}ifelse
def
}def
%%EndFile
%%BeginFile: adobe_psp_derived_styles
%%Copyright: Copyright 1990-1993 Adobe Systems Incorporated. All Rights Reserved.
/wi
version(23.0)eq
{
{
gS 0 0 0 0 rC stringwidth gR
}bind
}{
/stringwidth load
}ifelse
def
/$o 1. def
/gl{$o G}bd
/ms{:M S}bd
/condensedmtx[.82 0 0 1 0 0]def
/:mc
{
condensedmtx :mf def
}bd
/extendedmtx[1.18 0 0 1 0 0]def
/:me
{
extendedmtx :mf def
}bd
/basefont Z
/basefonto Z
/dxa Z
/dxb Z
/dxc Z
/dxd Z
/dsdx2 Z
/bfproc Z
/:fbase
{
dup/FontType get 0 eq{
dup length dict begin
dup{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall
/FDepVector exch/FDepVector get[exch/:fbase load forall]def
}/bfproc load ifelse
/customfont currentdict end definefont
}bd
/:mo
{
/bfproc{
dup dup length 2 add dict
begin
{
1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse
}forall
/PaintType 2 def
/StrokeWidth .012 0 FontMatrix idtransform pop def
/customfont currentdict
end
definefont
8 dict begin
/basefonto xdf
/basefont xdf
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding StandardEncoding def
/BuildChar
{
exch begin
basefont setfont
( )dup 0 4 -1 roll put
dup wi
setcharwidth
0 0 :M
gS
gl
dup show
gR
basefonto setfont
show
end
}def
}store :fbase
}bd
/:mso
{
/bfproc{
7 dict begin
/basefont xdf
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding StandardEncoding def
/BuildChar
{
exch begin
sD begin
/dxa 1 ps div def
basefont setfont
( )dup 0 4 -1 roll put
dup wi
1 index 0 ne
{
exch dxa add exch
}if
setcharwidth
dup 0 0 ms
dup dxa 0 ms
dup dxa dxa ms
dup 0 dxa ms
gl
dxa 2. div dup ms
end
end
}def
}store :fbase
}bd
/:ms
{
/bfproc{
dup dup length 2 add dict
begin
{
1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse
}forall
/PaintType 2 def
/StrokeWidth .012 0 FontMatrix idtransform pop def
/customfont currentdict
end
definefont
8 dict begin
/basefonto xdf
/basefont xdf
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding StandardEncoding def
/BuildChar
{
exch begin
sD begin
/dxb .05 def
basefont setfont
( )dup 0 4 -1 roll put
dup wi
exch dup 0 ne
{
dxb add
}if
exch setcharwidth
dup dxb .01 add 0 ms
0 dxb :T
gS
gl
dup 0 0 ms
gR
basefonto setfont
0 0 ms
end
end
}def
}store :fbase
}bd
/:mss
{
/bfproc{
7 dict begin
/basefont xdf
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding StandardEncoding def
/BuildChar
{
exch begin
sD begin
/dxc 1 ps div def
/dsdx2 .05 dxc 2 div add def
basefont setfont
( )dup 0 4 -1 roll put
dup wi
exch dup 0 ne
{
dsdx2 add
}if
exch setcharwidth
dup dsdx2 .01 add 0 ms
0 .05 dxc 2 div sub :T
dup 0 0 ms
dup dxc 0 ms
dup dxc dxc ms
dup 0 dxc ms
gl
dxc 2 div dup ms
end
end
}def
}store :fbase
}bd
/:msb
{
/bfproc{
7 dict begin
/basefont xdf
/FontType 3 def
/FontMatrix[1 0 0 1 0 0]def
/FontBBox[0 0 1 1]def
/Encoding StandardEncoding def
/BuildChar
{
exch begin
sD begin
/dxd .03 def
basefont setfont
( )dup 0 4 -1 roll put
dup wi
1 index 0 ne
{
exch dxd add exch
}if
setcharwidth
dup 0 0 ms
dup dxd 0 ms
dup dxd dxd ms
0 dxd ms
end
end
}def
}store :fbase
}bd
/italicmtx[1 0 -.212557 1 0 0]def
/:mi
{
italicmtx :mf def
}bd
/:v
{
[exch dup/FontMatrix get exch
dup/FontInfo known
{
/FontInfo get
dup/UnderlinePosition known
{
dup/UnderlinePosition get
2 index 0
3 1 roll
transform
exch pop
}{
@.1
}ifelse
3 1 roll
dup/UnderlineThickness known
{
/UnderlineThickness get
exch 0 3 1 roll
transform
exch pop
abs
}{
pop pop .067
}ifelse
}{
pop pop .1 .067
}ifelse
]
}bd
/$t Z
/$p Z
/$s Z
/:p
{
aload pop
2 index mul/$t xs
1 index mul/$p xs
@.012 mul/$s xs
}bd
/:m
{gS
0 $p rm
$t lw
0 rl stroke
gR
}bd
/:n
{
gS
0 $p rm
$t lw
0 rl
gS
gl
stroke
gR
strokepath
$s lw
/setstrokeadjust where{pop
currentstrokeadjust true setstrokeadjust stroke setstrokeadjust
}{
stroke
}ifelse
gR
}bd
/:o
{gS
0 $p rm
$t 2 div dup rm
$t lw
dup 0 rl
stroke
gR
:n
}bd
%%EndFile
/currentpacking where {pop sc_oldpacking setpacking}if
end		% md
%%EndProlog
%%BeginSetup
md begin
countdictstack
[
{%stopped
%%BeginFeature: *ManualFeed False
1 dict dup /ManualFeed false put setpagedevice
%%EndFeature
}featurecleanup
countdictstack
[
{%stopped
%%BeginFeature: *PageSize LetterSmall

    1 dict
    dup /Policies 2 dict dup /PageSize 2 put dup /MediaType 0 put put
	setpagedevice
	2 dict
    dup /PageSize [612 792] put
    dup /ImagingBBox null put
    setpagedevice
%%EndFeature
}featurecleanup
()setjob
/pT[1 0 0 -1 30 761]def/mT[1 0 0 -1 30 761]def
/sD 16 dict def
300 level2{1 dict dup/WaitTimeout 4 -1 roll put setuserparams}{statusdict/waittimeout 3 -1 roll put}ifelse
%%IncludeFont: Times-Roman
%%IncludeFont: Times-Bold
%%IncludeFont: Times-Italic
%%IncludeFont: Courier-Bold
%%IncludeFont: Symbol
%%IncludeFont: Courier-BoldOblique
/f0_1/Times-Roman :mre
/f0_12 f0_1 12 scf
/f0_10 f0_1 10 scf
/f0_9 f0_1 9 scf
/f1_1/Times-Bold :mre
/f1_18 f1_1 18 scf
/f1_14 f1_1 14 scf
/f1_12 f1_1 12 scf
/f2_1/Times-Italic :mre
/f2_12 f2_1 12 scf
/f3_1/Courier-Bold :mre
/f3_10 f3_1 10 scf
/f3_9 f3_1 9 scf
/f4_1/Symbol :bsr
240/apple pd
:esr /f5_1 f4_1 def
/f5_10 f5_1 10 scf
/f9_1/Courier-BoldOblique :mre
/f9_10 f9_1 10 scf
/Courier findfont[10 0 0 -10 0 0]:mf setfont
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
initializepage
(; page: 1 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
504 710 :M
f0_12 sf
(1)S
82 55 :M
f1_18 sf
-.018(Floating-Point and Complex Arithmetic Enhancements)A
186 80 :M
f1_12 sf
-.026(WG14/N619 X3J11/96-83 \(Draft 10/15/96\))A
264 104 :M
f0_12 sf
-.11(Jim Thomas)A
54 104 :M
(5)S
246 116 :M
f3_10 sf
(jthomas@best.com)S
96 163 :M
f0_12 sf
@.34 .034(This documents describes potential enhancements for the floating-point and complex)J
78 175 :M
4.368 .437(arithmetic specifications.  Each enhancement could be accepted or rejected)J
48 175 :M
(1)S
54 175 :M
(0)S
78 187 :M
-.075(independently.)A
endp
%%Page: 2 2
%%BeginPageSetup
initializepage
(; page: 2 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
endp
%%Page: 3 3
%%BeginPageSetup
initializepage
(; page: 3 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
78 14 :M
f0_12 sf
-.075(Draft 10/15/96)A
382 14 :M
-.032(WG14/N619 X3J11/96-83)A
78 710 :M
-.088(Enhancements)A
504 710 :M
(3)S
78 62 :M
f1_12 sf
1.53 .153(1.  Enhancement:)J
174 62 :M
f0_12 sf
1.297 .13(  Allow as an implementation-defined option the )J
f3_10 sf
@.457(feraiseexcept)A
78 74 :M
f0_12 sf
1.568 .157(function in )J
f3_10 sf
@.544(<fenv.h>)A
f0_12 sf
1.644 .164( to raise the inexact exception whenever it raises overflow or)J
78 86 :M
-.034(underflow.)A
54 98 :M
(5)S
78 110 :M
f1_12 sf
@.396(Rationale:)A
f0_12 sf
1.214 .121(  On some architectures the only practical way to raise an exception is to)J
78 122 :M
@.049 .005(execute an instruction that has the exception as a side-effect.  Any IEC 559 operation that)J
78 134 :M
@.619 .062(raises either overflow or underflow raises inexact too.  This should have little effect on)J
78 146 :M
-.028(use \(except for tests\).)A
48 158 :M
(1)S
54 158 :M
(0)S
78 170 :M
f1_12 sf
-.132(Edits:)A
109 170 :M
f0_12 sf
@.026 .003(  )J
f2_12 sf
@.177 .018(Add to the Description in 7.x.2.3 of the <fenv.h> section the sentence:)J
457 170 :M
f0_12 sf
-.022(  "Whether)A
78 182 :M
@.261 .026(the )J
97 182 :M
f3_10 sf
@.101(feraiseexcept)A
f0_12 sf
@.347 .035( function additionally raises the inexact exception whenever it raises)J
78 194 :M
-.002(the overflow or underflow exception is implementation-defined.")A
48 218 :M
(1)S
54 218 :M
(5)S
78 230 :M
f1_12 sf
-.043(2.  Enhancement:)A
168 230 :M
f0_12 sf
-.017(  Provide an inquiry macro, )A
f3_10 sf
-.021(isinf\(x\))A
f0_12 sf
-.016(, to test whether )A
430 230 :M
f3_10 sf
-.054(x)A
f0_12 sf
-.04( is an infinity.)A
78 254 :M
f1_12 sf
@.342(Rationale:)A
f0_12 sf
1.112 .111(  It's frequently needed \(e.g. in the sample code for complex multiply and)J
78 266 :M
-.006(divide\).  For some uses, performance will be important and obvious implementations, e.g.)A
78 278 :M
f3_10 sf
@.004(fabsl\(x\)==INFINITY)A
f0_12 sf
@.011 .001(, may be far from optimal.  It's possible for the user to get it wrong,)J
48 278 :M
(2)S
54 278 :M
(0)S
78 290 :M
@.481 .048(e.g. )J
98 290 :M
f3_10 sf
@.124(!isfinite\(x\))A
f0_12 sf
@.341 .034( would be wrong.  There are already inquiries, )J
402 290 :M
f3_10 sf
@.039(isnan)A
f0_12 sf
(, )S
f3_10 sf
@.039(isfinite)A
f0_12 sf
@.107 .011(, and)J
78 302 :M
f3_10 sf
@.038(isnormal)A
f0_12 sf
@.096 .01( to model after.  There's shipping prior art \()J
336 302 :M
f3_10 sf
@.014(isinfinite)A
f0_12 sf
@.041 .004( might have been better)J
78 314 :M
-.109(style\).)A
78 338 :M
f1_12 sf
-.132(Edits:)A
109 338 :M
f0_12 sf
(  )S
f2_12 sf
-.008(Add the following subclause in 7.x.2 of the <math.h> section:)A
48 338 :M
f0_12 sf
(2)S
54 338 :M
(5)S
81 350 :M
(  )S
78 362 :M
f1_12 sf
-.024(7.x.2.y  The )A
f3_10 sf
-.03(isinf)A
f1_12 sf
-.036( macro)A
78 386 :M
-.097(Synopsis)A
48 398 :M
f0_12 sf
(3)S
54 398 :M
(0)S
114 410 :M
f3_10 sf
(#include <math.h>)S
114 421 :M
-.012(int isinf\()A
f2_12 sf
-.01(floating-type)A
f3_10 sf
( x\);)S
78 445 :M
f1_12 sf
-.031(Description)A
48 457 :M
f0_12 sf
(3)S
54 457 :M
(5)S
96 469 :M
1.033 .103(The )J
120 469 :M
f3_10 sf
@.248(isinf)A
f0_12 sf
@.786 .079( macro determines whether its argument value is an infinity \(positive or)J
78 481 :M
1.207 .121(negative\).  First, an argument represented in a format wider than its semantic type is)J
78 493 :M
-.002(converted to its semantic type.  Then determination is based on the type of the argument.)A
78 517 :M
f1_12 sf
-.13(Return)A
48 517 :M
f0_12 sf
(4)S
54 517 :M
(0)S
96 541 :M
1.033 .103(The )J
121 541 :M
f3_10 sf
@.474(isinf)A
f0_12 sf
1.249 .125( macro returns a nonzero value if and only if its argument value is an)J
78 553 :M
-.041(infinity.)A
48 577 :M
(4)S
54 577 :M
(5)S
78 589 :M
f1_12 sf
@.673 .067(3.  Enhancement:)J
171 589 :M
f0_12 sf
1.116 .112(  Provide a function for )J
296 589 :M
f2_12 sf
@.777 .078(fused multiply-add)J
f0_12 sf
@.098 .01(:  )J
f3_10 sf
@.146(fma\(x,y,z\))A
f0_12 sf
@.661 .066( computes)J
78 601 :M
f3_10 sf
@.164(x\312*\312y\312+\312z)A
f0_12 sf
@.463 .046(  \(as if\) as one ternary operation.  IEC 559 implementations must deliver the)J
78 613 :M
-.022(result with just one IEC 559-style rounding.)A
78 637 :M
f1_12 sf
@.312(Rationale:)A
f0_12 sf
1.03 .103(  In many cases, clever use of fused multiply-add leads to much improved)J
48 637 :M
(5)S
54 637 :M
(0)S
78 649 :M
@.871 .087(code.  However, unexpected use of fused multiply-add by the compiler can undermine)J
78 661 :M
@.138 .014(carefully written code.  The )J
216 661 :M
f3_10 sf
@.044(FP_CONTRACT)A
f0_12 sf
@.139 .014( directive in the current floating-point spec can)J
78 673 :M
@.389 .039(be used to disallow use of fused multiply-add.  What's still needed is a way to guarantee)J
endp
%%Page: 4 4
%%BeginPageSetup
initializepage
(; page: 4 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
42 14 :M
f0_12 sf
-.032(WG14/N619 X3J11/96-83)A
431 14 :M
-.095(10/15/96)A
42 722 :M
(4)S
404 722 :M
-.088(Enhancements)A
42 50 :M
1.551 .155(its use just in particular situations.  Many current machines provide hardware fused)J
42 62 :M
-.003(multiply-add instructions;  software implementation can be used for others.)A
42 86 :M
f1_12 sf
-.132(Edits:)A
73 86 :M
f0_12 sf
(  )S
f2_12 sf
-.002( Insert the following subclause in 7.x in the <math.h> section:)A
18 98 :M
f0_12 sf
(5)S
42 113 :M
f1_14 sf
-.002(7.x.y  Fused multiply-add)A
42 140 :M
f1_12 sf
-.025(7.x.y.1  The )A
f3_10 sf
-.031(fma)A
f1_12 sf
-.03( function)A
42 164 :M
-.097(Synopsis)A
12 164 :M
f0_12 sf
(1)S
18 164 :M
(0)S
78 188 :M
f3_10 sf
(#include <math.h>)S
78 199 :M
(double fma\(double x, double y, double z\);)S
42 222 :M
f1_12 sf
-.031(Description)A
12 222 :M
f0_12 sf
(1)S
18 222 :M
(5)S
60 246 :M
-.219(The )A
82 246 :M
f3_10 sf
-.052(fma)A
f0_12 sf
-.045( function computes )A
195 246 :M
f3_10 sf
-.025(x\312*\312y\312+\312z)A
f0_12 sf
-.02(, rounded as one ternary operation.)A
42 270 :M
f1_12 sf
-.053(Returns)A
12 282 :M
f0_12 sf
(2)S
18 282 :M
(0)S
60 294 :M
-.219(The )A
82 294 :M
f3_10 sf
-.035(fma)A
f0_12 sf
-.028( function returns the value of )A
242 294 :M
f3_10 sf
-.025(x\312*\312y\312+\312z)A
f0_12 sf
-.02(, rounded as one ternary operation.)A
42 321 :M
f2_12 sf
-.016(Insert the following subclause in X.9 of the IEC 559 annex:)A
42 351 :M
f1_14 sf
-.007(X.9.y  Fused multiply-add)A
12 351 :M
f0_12 sf
(2)S
18 351 :M
(5)S
42 378 :M
f1_12 sf
-.055(X.9.y.1  The )A
107 378 :M
f3_10 sf
-.062(fma)A
f1_12 sf
-.059( function)A
60 402 :M
f3_10 sf
@.415(fma\(x,y,z\))A
f0_12 sf
1.2 .12( computes )J
f3_10 sf
@.415(x\312*\312y\312+\312z)A
f0_12 sf
1.225 .123(, correctly rounded \(IEC 559 style\) once.  The)J
42 414 :M
@.087 .009(function treats infinities, NaNs, signed zeros, and subnormals in a manner consistent with)J
12 414 :M
(3)S
18 414 :M
(0)S
42 426 :M
-.005(the basic arithmetic operations covered by IEC 559.)A
45 438 :M
(    )S
42 450 :M
f2_12 sf
@.88 .088(Include fma in the list of <math.h> \(but not <complex.h>\) functions that have a type-)J
42 462 :M
-.049(generic macro.)A
12 474 :M
f0_12 sf
(3)S
18 474 :M
(5)S
42 498 :M
f1_12 sf
@.588 .059(4.  Enhancement:  )J
142 498 :M
f0_12 sf
@.513 .051(Change the corresponding real type for the imaginary unit from the)J
42 510 :M
-.01(narrowest floating type for expression evaluation to the )A
311 510 :M
f3_10 sf
-.069(float)A
f0_12 sf
-.061( type.)A
42 534 :M
f1_12 sf
@.287 .029(Rationale:  )J
f0_12 sf
@.322 .032(This change facilitates portable use of expressions involving )J
401 534 :M
f3_10 sf
@.086(I)A
f0_12 sf
@.294 .029( as arguments)J
12 534 :M
(4)S
18 534 :M
(0)S
42 546 :M
(to )S
f3_10 sf
-.02(printf)A
f0_12 sf
-.016(, without regard to the expression evaluation method.  For example,)A
78 570 :M
f3_10 sf
(double y;)S
78 581 :M
(...)S
78 592 :M
(printf\("%e", I*y\);)S
12 592 :M
f0_12 sf
(4)S
18 592 :M
(5)S
42 615 :M
2.178 .218(would be erroneous with the current spec if the implementation uses long double)J
42 627 :M
-.014(expression evaluation.)A
endp
%%Page: 5 5
%%BeginPageSetup
initializepage
(; page: 5 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
78 14 :M
f0_12 sf
-.075(Draft 10/15/96)A
382 14 :M
-.032(WG14/N619 X3J11/96-83)A
78 722 :M
-.088(Enhancements)A
504 722 :M
(5)S
78 50 :M
f1_12 sf
-.132(Edits:)A
109 50 :M
f0_12 sf
@.062 .006(  )J
f2_12 sf
@.431 .043(In 7.x in the complex arithmetic spec, replace)J
340 50 :M
f0_12 sf
@.258 .026( "... whose corresponding real type)J
78 64 :M
1.794 .179(is the narrowest real floating type used for expression evaluation)J
417 61 :M
f0_9 sf
(1)S
421 64 :M
f0_12 sf
@.56 .056(" )J
f2_12 sf
@.587(with)A
453 64 :M
f0_12 sf
1.816 .182( "... whose)J
78 76 :M
-.034(corresponding real type is )A
f3_10 sf
-.043(float)A
f0_12 sf
(")S
240 76 :M
f2_12 sf
-.013(, removing the footnote.)A
54 100 :M
f0_12 sf
(5)S
78 112 :M
f1_12 sf
@.294 .029(5.   Enhancement:)J
173 112 :M
f0_12 sf
@.194 .019(  Change )J
f3_10 sf
@.099(imaginary)A
f0_12 sf
@.243 .024( from a keyword to a macro and reserve it in the)J
78 124 :M
-.008(manner of other library macros.)A
78 148 :M
f1_12 sf
@.459(Rationale:)A
f0_12 sf
1.87 .187(  This allows implementing the complex arithmetic \(informative\) annex)J
78 160 :M
-.009(without breaking C conformance.)A
48 160 :M
(1)S
54 160 :M
(0)S
78 184 :M
f1_12 sf
-.132(Edits:)A
109 184 :M
f0_12 sf
(  )S
f2_12 sf
-.033(Remove section Y.2.)A
78 208 :M
-.013(At the beginning of \(old\) Y.3 add the paragraph:)A
48 220 :M
f0_12 sf
(1)S
54 220 :M
(5)S
96 232 :M
@.312 .031(Inclusion of the header )J
f3_10 sf
@.106(<complex.h>)A
f0_12 sf
@.344 .034( enables designations for imaginary types.  The)J
78 244 :M
-.011(header defines the macro)A
114 268 :M
f3_10 sf
(imaginary)S
48 279 :M
f0_12 sf
(2)S
54 279 :M
(0)S
78 291 :M
f2_12 sf
-.019(At the beginning of \(old\) Y.6 add:)A
96 315 :M
f0_12 sf
-.063(The header )A
153 315 :M
f3_10 sf
-.011(<complex.h>)A
f0_12 sf
-.009( defines the macro)A
114 339 :M
f3_10 sf
(imaginary)S
48 339 :M
f0_12 sf
(2)S
54 339 :M
(5)S
114 361 :M
f0_10 sf
@.978 .098([The implementation might define )J
262 361 :M
f3_9 sf
@.251(imaginary)A
f0_10 sf
@.694 .069( to be a keyword in the implementation's)J
114 372 :M
-.069(namespace.])A
48 395 :M
f0_12 sf
(3)S
54 395 :M
(0)S
78 407 :M
f1_12 sf
@.238 .024(6.  Enhancement:  )J
176 407 :M
f0_12 sf
@.069 .007(Replace the current )J
f3_10 sf
@.146 .015(scalb\(double, long\))J
388 407 :M
f0_12 sf
@.183 .018( function with the pair of)J
78 419 :M
@.338 .034(functions )J
f3_10 sf
@.586 .059(scalbn\(double, long\))J
249 419 :M
f0_12 sf
@.363 .036( and )J
f3_10 sf
1.581 .158(scalb\(double, double\))J
f0_12 sf
@.571 .057(, and provide the )J
492 419 :M
f3_10 sf
(int)S
78 431 :M
f0_12 sf
-.123(function )A
121 431 :M
f3_10 sf
-.024(ilogb)A
f0_12 sf
-.018( in addition to the current )A
276 431 :M
f3_10 sf
-.072(double)A
f0_12 sf
-.061( function )A
358 431 :M
f3_10 sf
(logb)S
f0_12 sf
(.)S
78 455 :M
f1_12 sf
2.157 .216(Rationale:  )J
143 455 :M
f3_10 sf
1.01 .101(scalb\(double, double\))J
273 455 :M
f0_12 sf
1.322 .132( and )J
f3_10 sf
@.85(ilogb)A
f0_12 sf
2.208 .221( are in XPG4 V2 and are widely)J
48 455 :M
(3)S
54 455 :M
(5)S
78 467 :M
1.401 .14(implemented.  Some applications are better served by a floating second argument to)J
78 479 :M
@.972 .097(scalb[n], others by an integral one, and similarly regarding the return type for [i]logb.)J
78 491 :M
@.832 .083(The transition problems for early C9X implementors and users is mitigated by the fact)J
78 503 :M
1.641 .164(that calls to scalb\(double, long\) would still work when silently replaced by calls to)J
78 515 :M
-.046(scalb\(double, double\).)A
48 515 :M
(4)S
54 515 :M
(0)S
78 539 :M
f1_12 sf
-.132(Edits:)A
109 539 :M
f0_12 sf
@.476 .048(  )J
117 539 :M
f2_12 sf
@.256 .026(Change the name of the current scalb function to:  )J
f3_10 sf
@.095(scalbn)A
f2_12 sf
@.412 .041(. Throughout, replace)J
78 551 :M
-.01(references to the old )A
f9_10 sf
-.013(scalb)A
f2_12 sf
-.01( function with ones to )A
f9_10 sf
-.013(scalbn)A
f2_12 sf
(.)S
78 575 :M
-.002(Insert the following subclause in 7.x.6 of the <math.h> section:)A
48 575 :M
f0_12 sf
(4)S
54 575 :M
(5)S
78 662 :M
(                                                )S
78 659.48 -.48 .48 222.48 659 .48 78 659 @a
78 673 :M
f0_9 sf
(1)S
82 676 :M
f0_10 sf
-.089(  If )A
f3_9 sf
-.169(FLT_EVAL_METHOD)A
f0_10 sf
-.114( equals 0, 1, or 2, then )A
f3_9 sf
-.169(_Imaginary_I)A
f0_10 sf
-.127( has the corresponding real type )A
452 676 :M
f3_9 sf
-.456(float)A
f0_10 sf
(,)S
78 687 :M
f3_9 sf
-.256(double)A
f0_10 sf
-.158(, or)A
f3_9 sf
-.256( )A
f3_10 sf
-.284(l)A
f3_9 sf
-.256(ong\312double)A
f0_10 sf
-.189(, respectively.)A
endp
%%Page: 6 6
%%BeginPageSetup
initializepage
(; page: 6 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
42 14 :M
f0_12 sf
-.032(WG14/N619 X3J11/96-83)A
431 14 :M
-.095(10/15/96)A
42 722 :M
(6)S
404 722 :M
-.088(Enhancements)A
42 50 :M
f1_12 sf
-.023(7.x.6.y  The )A
f3_10 sf
-.028(scalb)A
f1_12 sf
-.027( function)A
42 74 :M
-.097(Synopsis)A
78 98 :M
f3_10 sf
(#include <math.h>)S
18 98 :M
f0_12 sf
(5)S
78 109 :M
f3_10 sf
(double scalb\(double x, double y\);)S
42 132 :M
f1_12 sf
-.031(Description)A
60 159 :M
f0_12 sf
2.572 .257(The )J
86 159 :M
f3_10 sf
@.482(scalb)A
f0_12 sf
1.588 .159( function computes )J
222 159 :M
f3_10 sf
@.691(x\312*\312FLT_RADIX)A
0 -3 rm
@.691(y)A
0 3 rm
f0_12 sf
1.788 .179(, for integral values )J
f3_10 sf
@.691(y)A
f0_12 sf
@.657 .066(.  If )J
453 159 :M
f3_10 sf
1.059(y)A
f0_12 sf
1.618 .162( is)J
12 159 :M
(1)S
18 159 :M
(0)S
42 171 :M
-.002(nonintegral, the result is implementation-defined.  A range error may occur.)A
42 195 :M
f1_12 sf
-.053(Returns)A
60 222 :M
f0_12 sf
-.219(The )A
82 222 :M
f3_10 sf
-.033(scalb)A
f0_12 sf
-.026( function returns the value of )A
254 222 :M
f3_10 sf
-.008(x\312*\312FLT_RADIX)A
0 -3 rm
(y)S
0 3 rm
f0_12 sf
-.006(, for integral values )A
f3_10 sf
(y)S
f0_12 sf
(.)S
12 222 :M
(1)S
18 222 :M
(5)S
42 258 :M
f2_12 sf
-.025(Insert the following subclause in X.9.3:)A
42 285 :M
f1_12 sf
-.055(X.9.y.1  The )A
107 285 :M
f3_10 sf
-.052(scalb)A
f1_12 sf
-.049( function)A
12 285 :M
f0_12 sf
(2)S
18 285 :M
(0)S
42 309 :M
(\245)S
60 309 :M
f3_10 sf
-.023(scalb\(-x, y\))A
f0_12 sf
-.018( and )A
f3_10 sf
-.023(-scalb\(x, y\))A
f0_12 sf
-.019( are equivalent.)A
42 321 :M
(\245)S
60 321 :M
f3_10 sf
-.024(scalb\(x, y\))A
f0_12 sf
-.02( returns a NaN if )A
210 321 :M
f3_10 sf
(y)S
f0_12 sf
-.04( is nonintegral.)A
42 333 :M
(\245)S
60 333 :M
f3_10 sf
(scalb\(x, )S
cF f5_10 sf
(\261)S
sf
(0\))S
f0_12 sf
( returns )S
f3_10 sf
(x)S
f0_12 sf
(.)S
42 345 :M
(\245)S
60 345 :M
f3_10 sf
-.009(scalb\(+0, +INFINITY\))A
f0_12 sf
-.007( returns a NaN and raises the invalid exception.)A
12 345 :M
(2)S
18 345 :M
(5)S
42 357 :M
(\245)S
60 357 :M
f3_10 sf
-.022(scalb\(+0, y\))A
f0_12 sf
-.017( returns +0, for integral )A
247 357 :M
f3_10 sf
-.245(y)A
f0_12 sf
-.261( < )A
266 357 :M
f3_10 sf
(+INFINITY)S
f0_12 sf
(.)S
42 369 :M
(\245)S
60 369 :M
f3_10 sf
-.02(scalb\(+INFINITY, y\))A
f0_12 sf
-.015( returns )A
f3_10 sf
-.02(+INFINITY)A
f0_12 sf
-.015(, for integral )A
330 369 :M
f3_10 sf
-.245(y)A
f0_12 sf
-.261( > )A
349 369 :M
f3_10 sf
(-INFINITY)S
f0_12 sf
(.)S
42 381 :M
(\245)S
60 381 :M
f3_10 sf
-.014(scalb\(x, -INFINITY\))A
f0_12 sf
-.011( returns +0, for finite positive-signed )A
354 381 :M
f3_10 sf
(x)S
f0_12 sf
(.)S
42 393 :M
(\245)S
60 393 :M
f3_10 sf
-.028(scalb\(x, +INFINITY\))A
f0_12 sf
-.02( returns )A
f3_10 sf
-.028(+INFINITY)A
f0_12 sf
-.021(, for positive )A
331 393 :M
f3_10 sf
(x)S
f0_12 sf
(.)S
42 405 :M
(\245)S
60 405 :M
f3_10 sf
-.006(scalb\(+INFINITY, -INFINITY\))A
f0_12 sf
-.006( returns a NaN.)A
12 405 :M
(3)S
18 405 :M
(0)S
42 417 :M
(\245)S
60 417 :M
f3_10 sf
-.024(scalb\(x, y\))A
f0_12 sf
-.019( returns a NaN, if )A
213 417 :M
f3_10 sf
-.27(x)A
f0_12 sf
-.24( or )A
235 417 :M
f3_10 sf
-.109(y)A
f0_12 sf
-.097( is a NaN.)A
42 441 :M
f2_12 sf
@.504 .05(Include scalb in the list of <math.h> \(but not <complex.h>\) functions that have a type-)J
42 453 :M
-.049(generic macro.)A
12 465 :M
f0_12 sf
(3)S
18 465 :M
(5)S
42 477 :M
f2_12 sf
-.025(Insert the following subclause in 7.x.6:)A
42 501 :M
f1_12 sf
-.023(7.x.6.y  The )A
f3_10 sf
-.028(ilogb)A
f1_12 sf
-.027( function)A
42 525 :M
-.097(Synopsis)A
12 525 :M
f0_12 sf
(4)S
18 525 :M
(0)S
78 549 :M
f3_10 sf
(#include <math.h>)S
78 560 :M
(int ilogb\(long double x\);)S
42 583 :M
f1_12 sf
-.031(Description)A
12 583 :M
f0_12 sf
(4)S
18 583 :M
(5)S
60 607 :M
@.208 .021(The )J
f3_10 sf
@.081(ilogb)A
f0_12 sf
@.232 .023( function extracts the exponent of )J
f3_10 sf
@.081(x)A
f0_12 sf
@.152 .015( as a signed )J
345 607 :M
f3_10 sf
@.081(int)A
f0_12 sf
@.198 .02( value.  It is equivalent)J
42 619 :M
@.467 .047(to )J
f3_10 sf
@.295(\(int\)logb\(x\))A
f0_12 sf
@.763 .076(, for finite nonzero )J
229 619 :M
f3_10 sf
@.411(x)A
f0_12 sf
1.159 .116(, computes the value )J
345 619 :M
f3_10 sf
@.438(INT_MIN)A
f0_12 sf
@.405 .041( if )J
f3_10 sf
@.438(x)A
f0_12 sf
1.008 .101( is zero, and)J
42 631 :M
-.035(computes the value )A
138 631 :M
f3_10 sf
-.024(INT_MAX)A
f0_12 sf
-.014( if )A
f3_10 sf
(x)S
f0_12 sf
-.019( is infinite or NaN.)A
12 643 :M
(5)S
18 643 :M
(0)S
78 655 :M
f0_10 sf
@.294([)A
f3_9 sf
@.477(ilogb)A
f0_10 sf
1.142 .114(\(NaN\) = )J
f3_9 sf
@.477(INT_MAX)A
f0_10 sf
1.554 .155( matches the fdlibm implementation, not XPG4 V2, which)J
78 666 :M
-.183(specifies )A
f3_9 sf
-.263(INT_MIN)A
f0_10 sf
-.19(;  )A
158 666 :M
f3_9 sf
-.081(INT_MAX)A
f0_10 sf
-.062( is more natural in some implementations.])A
endp
%%Page: 7 7
%%BeginPageSetup
initializepage
(; page: 7 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
78 14 :M
f0_12 sf
-.075(Draft 10/15/96)A
382 14 :M
-.032(WG14/N619 X3J11/96-83)A
78 722 :M
-.088(Enhancements)A
504 722 :M
(7)S
78 50 :M
f1_12 sf
-.053(Returns)A
96 74 :M
f0_12 sf
-.219(The )A
118 74 :M
f3_10 sf
-.029(ilogb)A
f0_12 sf
-.024( function returns the exponent of )A
308 74 :M
f3_10 sf
-.06(x)A
f0_12 sf
-.049( as a signed )A
373 74 :M
f3_10 sf
-.118(int)A
f0_12 sf
-.105( value.)A
54 98 :M
(5)S
78 110 :M
f1_12 sf
@.925 .092(7.  Enhancement:  )J
f0_12 sf
1.021 .102(Add )J
205 110 :M
f3_10 sf
@.289(x\312/\312x)A
f0_12 sf
@.4 .04( --> )J
f3_10 sf
@.289(1.0)A
f0_12 sf
@.772 .077( to the list of invalid optimizations, in the new)J
78 122 :M
-.019(example added as part of the floating-point spec.)A
78 146 :M
f1_12 sf
4.047 .405(Rationale:  )J
f0_12 sf
4.27 .427(Some compilers do this optimization, which is invalid \(for all)J
78 158 :M
-.024(implementations\) if )A
f3_10 sf
(x)S
f0_12 sf
-.024( can be zero, infinite, or NaN.)A
48 158 :M
(1)S
54 158 :M
(0)S
78 182 :M
f1_12 sf
-.132(Edits:)A
109 182 :M
f0_12 sf
(  )S
f2_12 sf
-.014(To the new example in 5.1.2.3, add the line)A
114 206 :M
f3_10 sf
(y = x / x;)S
204 206 :M
(/* not equivalent to y = 1.0; */)S
48 217 :M
f0_12 sf
(1)S
54 217 :M
(5)S
78 241 :M
f1_12 sf
@.958 .096(8.  Enhancement:)J
172 241 :M
f0_12 sf
@.65 .065(  Provide the )J
f3_10 sf
@.329(cis)A
f0_12 sf
1.294 .129( function, defined by cis\(x\)\312=\312cos\(x\)\312+\312i*sin\(x\), to)J
78 253 :M
f3_10 sf
(<complex.h>)S
f0_12 sf
(.)S
78 277 :M
f1_12 sf
@.453(Rationale:)A
f0_12 sf
1.74 .174(  Although the obvious implementation is correct \(which would suggest)J
48 277 :M
(2)S
54 277 :M
(0)S
78 289 :M
1.468 .147(leaving it for the user to implement\), having a library function might promote more)J
78 301 :M
-.012(efficient implementation.)A
78 325 :M
f1_12 sf
-.132(Edits:)A
109 325 :M
f0_12 sf
(  )S
f2_12 sf
-.011(Add to 7.x.2 in <complex.h> the subclause:)A
48 337 :M
f0_12 sf
(2)S
54 337 :M
(5)S
78 349 :M
f1_12 sf
-.039(7.x.2.y   The cis function)A
78 373 :M
-.097(Synopsis)A
114 397 :M
f3_10 sf
(#include <complex.h>)S
48 397 :M
f0_12 sf
(3)S
54 397 :M
(0)S
114 408 :M
f3_10 sf
(double complex cis\(double x\);)S
78 431 :M
f1_12 sf
-.031(Description)A
96 455 :M
f0_12 sf
-.219(The )A
118 455 :M
f3_10 sf
-.052(cis)A
f0_12 sf
-.045( function computes )A
231 455 :M
f3_10 sf
(cos\(x\)\312+\312I*sin\(x\))S
f0_12 sf
(.)S
48 455 :M
(3)S
54 455 :M
(5)S
78 479 :M
f1_12 sf
-.053(Returns)A
96 503 :M
f0_12 sf
-.219(The )A
118 503 :M
f3_10 sf
-.035(cis)A
f0_12 sf
-.028( function returns the value of )A
278 503 :M
f3_10 sf
(cos\(x\)\312+\312I*sin\(x\))S
f0_12 sf
(.)S
48 515 :M
(4)S
54 515 :M
(0)S
78 527 :M
f2_12 sf
-.001(Add cis to the list of type-generic macros for <complex.h> functions.)A
78 566 :M
f1_12 sf
@.101 .01(9.  Enhancement:)J
169 566 :M
f0_12 sf
@.116 .012(  Provide the math functions: cube root \()J
f3_10 sf
@.043(cbrt)A
f0_12 sf
@.133 .013(\), Bessel functions of the)J
78 578 :M
@.113 .011(first kind \()J
130 578 :M
f3_10 sf
(j0)S
f0_12 sf
(, )S
f3_10 sf
(j1)S
f0_12 sf
(, )S
167 578 :M
f3_10 sf
@.07(jn)A
f0_12 sf
@.198 .02(\), Bessel functions of the second kind \()J
f3_10 sf
@.07(y0)A
f0_12 sf
@.058 .006(, )J
f3_10 sf
@.07(y1)A
f0_12 sf
@.063 .006(, )J
406 578 :M
f3_10 sf
@.042(yn)A
f0_12 sf
@.129 .013(\), and reentrant log)J
48 578 :M
(4)S
54 578 :M
(5)S
78 590 :M
-.08(gamma \()A
f3_10 sf
-.08(lgamma_r)A
f0_12 sf
-.093(\).)A
78 614 :M
f1_12 sf
-.018(Rationale:)A
f0_12 sf
-.017(  These are specified in XPG4 V2 and are widely implemented.)A
78 638 :M
f1_12 sf
-.132(Edits:)A
109 638 :M
f0_12 sf
1.429 .143(  )J
119 638 :M
f2_12 sf
1.206 .121(Add specification for the functions to the )J
f9_10 sf
@.412(<math.h>)A
f2_12 sf
@.982 .098( spec and to the IEC 559)J
48 638 :M
f0_12 sf
(5)S
54 638 :M
(0)S
78 650 :M
f2_12 sf
-.004(annex, and add the names to the list of type-generic macros.)A
endp
%%Page: 8 8
%%BeginPageSetup
initializepage
(; page: 8 of 8)setjob
%%EndPageSetup
gS 0 0 552 730 rC
42 14 :M
f0_12 sf
-.032(WG14/N619 X3J11/96-83)A
431 14 :M
-.095(10/15/96)A
42 722 :M
(8)S
404 722 :M
-.088(Enhancements)A
42 50 :M
f1_12 sf
3.709 .371(10.  Enhancement:)J
152 50 :M
f0_12 sf
3.536 .354(  Provide foundational financial/growth functions: \(1+r\)^n)J
42 62 :M
(\()S
46 62 :M
f3_10 sf
-.033(compound)A
f0_12 sf
-.024(\) and \(1\312-\312\(1\312+\312r\)^\(-n\)\)\312/\312r \()A
220 62 :M
f3_10 sf
-.12(annuity)A
f0_12 sf
-.14(\).)A
42 86 :M
2.548 .255(Rationale:  These functions are key to implementation of several other financial)J
42 98 :M
@.499 .05(functions.  Straight forward implementation loses needed accuracy for some arguments.)J
18 98 :M
(5)S
42 110 :M
-.013(Shipping prior art has been around for years.)A
42 134 :M
f1_12 sf
-.132(Edits:)A
73 134 :M
f0_12 sf
1.429 .143(  )J
83 134 :M
f2_12 sf
1.206 .121(Add specification for the functions to the )J
f9_10 sf
@.412(<math.h>)A
f2_12 sf
@.982 .098( spec and to the IEC 559)J
42 146 :M
-.004(annex, and add the names to the list of type-generic macros.)A
12 158 :M
f0_12 sf
(1)S
18 158 :M
(0)S
42 182 :M
f1_12 sf
-.058(Other ideas:)A
42 206 :M
f0_12 sf
-.009(Use an encoding of the standardization date for the value of )A
332 206 :M
f3_10 sf
-.013(__STD_IEC_559__)A
f0_12 sf
-.01(.  \(Fred?\))A
12 218 :M
(1)S
18 218 :M
(5)S
42 230 :M
-.007(Use new alternate form of pragmas for translation directives.  \(Fred?\))A
42 254 :M
-.002(Remove use of trailing semicolons with the translation directive macros.  \(Douglas?\))A
42 278 :M
2.125 .213(Add the requirement that some form of error/exception reporting be implemented.)J
12 278 :M
(2)S
18 278 :M
(0)S
42 290 :M
-.05(\(Fred?\))A
42 314 :M
-.018(Provide the XPG4 V2 double-precision math constants.)A
42 338 :M
-.072(Provide a )A
91 338 :M
f3_10 sf
-.019(significand)A
f0_12 sf
-.015( function to compute scalb\(x, \(long\) logb\(x\)\).)A
12 338 :M
(2)S
18 338 :M
(5)S
42 362 :M
-.082(Clarify that )A
100 362 :M
f3_10 sf
(-z)S
f0_12 sf
-.011( negates real and imaginary parts.  \(rationale?\))A
12 398 :M
(3)S
18 398 :M
(0)S
endp
%%Trailer
end		% md
%%EOF
@EOF

chmod 640 math_complex_enhancements.ps

exit 0

