# 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:10:56 1996
#
# This archive contains:
#	complex_edits_update.ps	
#

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

echo x - complex_edits_update.ps
sed 's/^@//' >complex_edits_update.ps <<'@EOF'
%!PS-Adobe-3.0
%%Title: (Microsoft Word - complex_edit\311)
%%Creator: (Microsoft Word: PSPrinter 8.1.1)
%%CreationDate: (3:48 PM Tuesday, November 5, 1996)
%%For: ()
%%Pages: 5
%%DocumentFonts: Times-Bold Times-Roman Symbol Times-Italic Courier-Bold
%%DocumentNeededFonts: Times-Bold Times-Roman Symbol Times-Italic Courier-Bold
%%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-Bold
%%IncludeFont: Times-Roman
%%IncludeFont: Symbol
%%IncludeFont: Times-Italic
%%IncludeFont: Courier-Bold
/f0_1/Times-Bold :mre
/f0_18 f0_1 18 scf
/f0_16 f0_1 16 scf
/f0_12 f0_1 12 scf
/f1_1/Times-Roman :mre
/f1_12 f1_1 12 scf
/f1_10 f1_1 10 scf
/f1_9 f1_1 9 scf
/f2_1/Symbol :bsr
240/apple pd
:esr /f2_10 f2_1 10 scf
/f3_1/Times-Italic :mre
/f3_12 f3_1 12 scf
/f3_10 f3_1 10 scf
/f4_1 f2_1 :mi
/f4_10 f4_1 10 scf
/f5_1/Courier-Bold :mre
/f5_10 f5_1 10 scf
/f5_9 f5_1 9 scf
/Courier findfont[10 0 0 -10 0 0]:mf setfont
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
initializepage
(; page: 1 of 5)setjob
%%EndPageSetup
gS 0 0 552 730 rC
156 55 :M
f0_18 sf
-.03(Complex Arithmetic Edits\321Update)A
186 80 :M
f0_12 sf
-.026(WG14/N620 X3J11/96-84 \(Draft 10/15/96\))A
264 104 :M
f1_12 sf
-.11(Jim Thomas)A
54 104 :M
(5)S
249 116 :M
-.021(517 Hendon Court)A
241 128 :M
-.018(Sunnyvale, CA 94087)A
246 140 :M
f5_10 sf
(jthomas@best.com)S
48 167 :M
f1_12 sf
(1)S
54 167 :M
(0)S
96 179 :M
f3_12 sf
-.021(The changes in this update are:)A
78 203 :M
@.97 .097(1.  The words "and exception behavior" were added in three places to clarify that the)J
78 215 :M
-.004(exception behavior as well as result is determined by the table.)A
48 227 :M
f1_12 sf
(1)S
54 227 :M
(5)S
78 239 :M
f3_12 sf
@.183 .018(2.  The sample multiplication implementation was updated to catch overflow cases which)J
78 251 :M
-.01(the previous version allowed to result in NaN+iNaN instead of an infinity.)A
78 275 :M
@.364 .036(3.  The sample division implementation was updated to catch non-zero/zero cases which)J
78 287 :M
-.01(the previous version allowed to result in NaN+iNaN instead of an infinity.)A
48 287 :M
f1_12 sf
(2)S
54 287 :M
(0)S
78 326 :M
f0_16 sf
-.02(Y.5  Binary operators)A
96 354 :M
f1_12 sf
@.258 .026(The following subclauses supplement 6.3 in order to specify the type of the result for)J
48 354 :M
(2)S
54 354 :M
(5)S
78 366 :M
-.016(an operation with an imaginary operand.)A
96 390 :M
@.12 .012(For most operand types, the value of the result of a binary operator with an imaginary)J
78 402 :M
@.741 .074(or complex operand is completely determined, with reference to real arithmetic, by the)J
78 414 :M
@.219 .022(usual mathematical formula.  For some operand types, the usual mathematical formula is)J
48 414 :M
(3)S
54 414 :M
(0)S
78 426 :M
1.659 .166(problematic because of its treatment of infinities and because of undue overflow or)J
78 438 :M
1.507 .151(underflow \(7.X.1\);  in these cases the result satisfies certain properties \(specified in)J
78 450 :M
-.015(Y.5.1\), but is not completely determined.)A
78 486 :M
f0_12 sf
-.032(Y.5.1  Multiplicative operators)A
48 486 :M
f1_12 sf
(3)S
54 486 :M
(5)S
78 513 :M
f0_12 sf
-.123(Semantics)A
96 537 :M
f1_12 sf
@.206 .021(If one operand has real type and the other operand has imaginary type, then the result)J
78 549 :M
@.659 .066(has imaginary type.  If both operands have imaginary type, then the result has complex)J
48 549 :M
(4)S
54 549 :M
(0)S
78 561 :M
-.007(type.  \(If either operand has complex type, then the result has complex type.\))A
endp
%%Page: 2 2
%%BeginPageSetup
initializepage
(; page: 2 of 5)setjob
%%EndPageSetup
gS 0 0 552 730 rC
42 14 :M
f1_12 sf
-.032(WG14/N620 X3J11/96-84)A
403 14 :M
-.075(Draft 10/15/96)A
60 722 :M
(2)S
303 722 :M
-.01(C9X Complex Arithmetic\321Update)A
60 50 :M
@.372 .037(If the operands are not both complex, then the result and exception behavior of the )J
f5_10 sf
(*)S
42 62 :M
f1_12 sf
-.017(operator is defined by the usual mathematical formula:)A
107 94 :M
f3_10 sf
(*)S
206 94 :M
f1_10 sf
-.328(real)A
221 94 :M
f5_9 sf
-.459( )A
f3_10 sf
(x)S
296 94 :M
f1_10 sf
-.067(imaginary)A
337 94 :M
f5_9 sf
-.346( )A
f3_10 sf
-.409(y*I)A
400 94 :M
f1_10 sf
-.128(complex)A
f5_9 sf
-.14( )A
f3_10 sf
-.125(x + y*I)A
55 77 1 1 rF
55 77 1 1 rF
56 77 106 1 rF
162 77 1 1 rF
163 77 108 1 rF
271 77 1 1 rF
272 77 107 1 rF
379 77 1 1 rF
380 77 107 1 rF
487 77 1 1 rF
487 77 1 1 rF
55 78 1 18 rF
162 78 1 18 rF
164 78 1 18 rF
271 78 1 18 rF
379 78 1 18 rF
487 78 1 18 rF
97 115 :M
f1_10 sf
-.328(real)A
112 115 :M
f5_9 sf
-.207( )A
f3_10 sf
(u)S
211 115 :M
-.219(x*u)A
311 115 :M
-.07(\(y*u\)*I)A
403 115 :M
-.019(\(x*u\) + \(y*u\)*I)A
55 96 1 3 rF
56 96 106 1 rF
56 98 106 1 rF
162 96 1 1 rF
162 98 1 1 rF
164 96 1 1 rF
164 98 1 1 rF
165 96 106 1 rF
165 98 106 1 rF
271 96 1 3 rF
272 96 107 1 rF
272 98 107 1 rF
379 96 1 3 rF
380 96 107 1 rF
380 98 107 1 rF
487 96 1 3 rF
55 99 1 18 rF
162 99 1 18 rF
164 99 1 18 rF
271 99 1 18 rF
379 99 1 18 rF
487 99 1 18 rF
80 134 :M
f1_10 sf
-.067(imaginary)A
121 134 :M
f5_9 sf
-.346( )A
f3_10 sf
-.409(v*I)A
203 134 :M
-.143(\(x*v\)*I)A
305 134 :M
-.031(-y*v + 0*I)A
402 134 :M
-.031(\(-y*v\) + \(x*v\)*I)A
55 117 1 1 rF
56 117 106 1 rF
164 117 1 1 rF
162 117 1 1 rF
165 117 106 1 rF
271 117 1 1 rF
272 117 107 1 rF
379 117 1 1 rF
380 117 107 1 rF
487 117 1 1 rF
55 118 1 18 rF
162 118 1 18 rF
164 118 1 18 rF
271 118 1 18 rF
379 118 1 18 rF
487 118 1 18 rF
75 153 :M
f1_10 sf
-.095(complex)A
f5_9 sf
-.105( )A
f3_10 sf
-.095(u + v*I)A
187 153 :M
-.05(\(x*u\) + \(x*v\)*I)A
293 153 :M
(\(-y*v\) + \(y*u\)*I)S
55 136 1 1 rF
56 136 106 1 rF
164 136 1 1 rF
162 136 1 1 rF
165 136 106 1 rF
271 136 1 1 rF
272 136 107 1 rF
379 136 1 1 rF
380 136 1 1 rF
381 136 106 1 rF
487 136 1 1 rF
487 136 1 1 rF
55 137 1 18 rF
55 155 1 1 rF
55 155 1 1 rF
56 155 106 1 rF
162 137 1 18 rF
164 137 1 18 rF
162 155 1 1 rF
163 155 108 1 rF
271 137 1 18 rF
271 155 1 1 rF
272 155 107 1 rF
379 137 1 18 rF
379 155 1 1 rF
379 155 1 1 rF
60 177 :M
f1_12 sf
@.307 .031(If the second operand is not complex, then the result and exception behavior of the )J
468 177 :M
f5_10 sf
(/)S
18 177 :M
f1_12 sf
(5)S
42 189 :M
-.017(operator is defined by the usual mathematical formula:)A
108 221 :M
f3_10 sf
(/)S
216 221 :M
(x)S
319 221 :M
-.383(y*I)A
419 221 :M
-.159(x + y*I)A
55 204 1 1 rF
55 204 1 1 rF
56 204 106 1 rF
162 204 1 1 rF
163 204 108 1 rF
271 204 1 1 rF
272 204 107 1 rF
379 204 1 1 rF
380 204 107 1 rF
487 204 1 1 rF
487 204 1 1 rF
55 205 1 18 rF
162 205 1 18 rF
164 205 1 18 rF
271 205 1 18 rF
379 205 1 18 rF
487 205 1 18 rF
107 242 :M
(u)S
212 242 :M
-.108(x/u)A
312 242 :M
-.033(\(y/u\)*I)A
405 242 :M
-.059(\(x/u\) + \(y/u\)*I)A
55 223 1 3 rF
56 223 106 1 rF
56 225 106 1 rF
162 223 1 1 rF
162 225 1 1 rF
164 223 1 1 rF
164 225 1 1 rF
165 223 106 1 rF
165 225 106 1 rF
271 223 1 3 rF
272 223 107 1 rF
272 225 107 1 rF
379 223 1 3 rF
380 223 107 1 rF
380 225 107 1 rF
487 223 1 3 rF
55 226 1 19 rF
162 226 1 19 rF
164 226 1 19 rF
271 226 1 19 rF
379 226 1 19 rF
487 226 1 19 rF
103 261 :M
-.383(v*I)A
203 261 :M
-.138(\(-x/v\)*I)A
307 261 :M
-.091(y/v + 0*I)A
404 261 :M
(\(y/v\) + \(-x/v\)*I)S
55 244 1 1 rF
56 244 106 1 rF
164 244 1 1 rF
162 244 1 1 rF
165 244 106 1 rF
271 244 1 1 rF
272 244 107 1 rF
379 244 1 1 rF
380 244 107 1 rF
487 244 1 1 rF
55 245 1 18 rF
55 263 1 1 rF
55 263 1 1 rF
56 263 106 1 rF
162 245 1 18 rF
164 245 1 18 rF
162 263 1 1 rF
163 263 108 1 rF
271 245 1 18 rF
271 263 1 1 rF
272 263 107 1 rF
379 245 1 18 rF
379 263 1 1 rF
380 263 107 1 rF
487 245 1 18 rF
487 263 1 1 rF
487 263 1 1 rF
60 285 :M
f1_12 sf
@.241 .024(A complex or imaginary value with at least one infinite part is regarded as an )J
440 285 :M
f3_12 sf
-.142(infinity)A
42 297 :M
f1_12 sf
@.152 .015(\(even if its other part is a NaN\).  A complex or imaginary value is a )J
374 297 :M
f3_12 sf
-.024(finite number )A
442 297 :M
f1_12 sf
-.051(if each)A
12 297 :M
(1)S
18 297 :M
(0)S
42 309 :M
@.032 .003(of its parts is a finite number \(neither infinite nor NaN\).  A complex or imaginary value is)J
42 321 :M
(a )S
f3_12 sf
(zero)S
72 321 :M
f1_12 sf
@.641 .064( if each of its parts is a zero.  The )J
245 321 :M
f5_10 sf
@.136(*)A
f1_12 sf
@.212 .021( and )J
f5_10 sf
@.136(/)A
f1_12 sf
@.474 .047( operators satisfy the following infinity)J
42 335 :M
-.01(properties for all real, imaginary, and complex operands)A
312 332 :M
f1_9 sf
(1)S
316 335 :M
f1_12 sf
(:)S
42 359 :M
(\245)S
60 359 :M
@.693 .069(If one operand is an infinity and the other operand is a nonzero finite number or an)J
12 359 :M
(1)S
18 359 :M
(5)S
60 371 :M
-.03(infinity, then the result of the )A
203 371 :M
f5_10 sf
(*)S
f1_12 sf
-.025( operator is an infinity.)A
42 395 :M
(\245)S
60 395 :M
@.494 .049(If the first operand is an infinity and the second operand is a finite number, then the)J
60 407 :M
-.023(result of the )A
f5_10 sf
(/)S
f1_12 sf
-.024( operator is an infinity.)A
12 419 :M
(2)S
18 419 :M
(0)S
42 431 :M
(\245)S
60 431 :M
@.494 .049(If the first operand is a finite number and the second operand is an infinity, then the)J
60 443 :M
-.035(result of the )A
f5_10 sf
(/)S
f1_12 sf
-.038( operator is a zero.)A
42 467 :M
(\245)S
60 467 :M
@.115 .011(If the first operand is a nonzero finite number or an infinity and the second operand is)J
60 479 :M
-.02(a zero, then the result of the )A
197 479 :M
f5_10 sf
(/)S
f1_12 sf
-.025( operator is an infinity.)A
12 479 :M
(2)S
18 479 :M
(5)S
60 503 :M
1.259 .126(If both operands of the )J
f5_10 sf
@.498(*)A
f1_12 sf
1.311 .131( operator are complex or if the second operand of the )J
468 503 :M
f5_10 sf
(/)S
42 515 :M
f1_12 sf
@.779 .078(operator is complex, the operator raises exceptions if appropriate for the calculation of)J
42 527 :M
-.015(the parts of the result, and may raise spurious exceptions.)A
12 539 :M
(3)S
18 539 :M
(0)S
42 551 :M
f0_12 sf
-.142(Examples)A
42 575 :M
f1_12 sf
@.47 .047(1. Multiplication of )J
142 575 :M
f5_10 sf
@.144(double\312complex)A
f1_12 sf
@.453 .045( operands could be implemented as follows.  Note)J
42 587 :M
-.042(that the imaginary unit )A
154 587 :M
f5_10 sf
(I)S
f1_12 sf
-.009( has imaginary type \(see Y.6\).)A
12 599 :M
(3)S
18 599 :M
(5)S
42 611 :M
f5_10 sf
(#include <math.h>)S
42 622 :M
(#include <complex.h>)S
42 633 :M
(#define isinf\(x\) \(fabs\(x\)==INFINITY\))S
42 662 :M
f1_12 sf
(                                                )S
42 659.48 -.48 .48 186.48 659 .48 42 659 @a
42 673 :M
f1_9 sf
(1)S
46 676 :M
f1_10 sf
-.008(  These properties are already implied for those cases covered in the tables, but are required for all cases)A
42 687 :M
-.133(\(at least where the state for )A
f5_9 sf
-.195(CX_LIMITED_RANGE)A
f1_10 sf
-.14( is )A
244 687 :M
f3_10 sf
-.278(off)A
255 687 :M
f1_10 sf
-.828(\).)A
endp
%%Page: 3 3
%%BeginPageSetup
initializepage
(; page: 3 of 5)setjob
%%EndPageSetup
gS 0 0 552 730 rC
78 14 :M
f1_12 sf
-.075(Draft 10/15/96)A
382 14 :M
-.032(WG14/N620 X3J11/96-84)A
96 722 :M
-.01(C9X Complex Arithmetic\321Update)A
504 722 :M
(3)S
504 713 6 12 rC
504 722 :M
(3)S
gR
gS 0 0 552 730 rC
78 50 :M
f5_10 sf
(/* Multiply z * w ... */)S
78 61 :M
(double complex _Cmultd\(double complex z, double complex w\))S
78 72 :M
({)S
114 83 :M
(FP_CONTRACT_OFF;)S
114 94 :M
(double a, b, c, d, ac, bd, ad, bc, x, y;)S
54 94 :M
f1_12 sf
(5)S
114 105 :M
f5_10 sf
(a = creal\(z\); b = cimag\(z\);)S
114 116 :M
(c = creal\(w\); d = cimag\(w\);)S
114 127 :M
(ac = a * c;  bd = b * d;)S
114 138 :M
(ad = a * d;  bc = b * c;)S
114 149 :M
(x = ac - bd;)S
48 149 :M
f1_12 sf
(1)S
54 149 :M
(0)S
114 160 :M
f5_10 sf
(y = ad + bc;)S
114 171 :M
(/* Recover infinities that computed as NaN+iNaN ... */)S
114 182 :M
(if \(isnan\(x\) && isnan\(y\)\))S
114 193 :M
({)S
132 204 :M
(int recalc = 0;)S
48 204 :M
f1_12 sf
(1)S
54 204 :M
(5)S
132 215 :M
f5_10 sf
(if \(isinf\(a\) || isinf\(b\)\)  /* z is infinite */)S
132 226 :M
({)S
150 237 :M
(/* "Box" the infinity ... */)S
150 248 :M
(a = copysign\(isinf\(a\) ? 1.0 : 0.0, a\);)S
150 259 :M
(b = copysign\(isinf\(b\) ? 1.0 : 0.0, b\);)S
48 259 :M
f1_12 sf
(2)S
54 259 :M
(0)S
150 270 :M
f5_10 sf
(/* Change NaNs in the other factor to 0 ... */)S
150 281 :M
(if \(isnan\(c\)\) c = copysign\(0.0, c\);)S
150 292 :M
(if \(isnan\(d\)\) d = copysign\(0.0, d\);)S
150 303 :M
(recalc = 1;)S
132 314 :M
(})S
48 314 :M
f1_12 sf
(2)S
54 314 :M
(5)S
132 325 :M
f5_10 sf
(if \(isinf\(c\) || isinf\(d\)\)  /* w is infinite */)S
132 336 :M
({)S
150 347 :M
(/* "Box" the infinity ... */)S
150 358 :M
(c = copysign\(isinf\(c\) ? 1.0 : 0.0, c\);)S
150 369 :M
(d = copysign\(isinf\(d\) ? 1.0 : 0.0, d\);)S
48 369 :M
f1_12 sf
(3)S
54 369 :M
(0)S
150 380 :M
f5_10 sf
(/* Change NaNs in the other factor to 0 ... */)S
150 391 :M
(if \(isnan\(a\)\) a = copysign\(0.0, a\);)S
150 402 :M
(if \(isnan\(b\)\) b = copysign\(0.0, b\);)S
150 413 :M
(recalc = 1;)S
132 424 :M
(})S
48 424 :M
f1_12 sf
(3)S
54 424 :M
(5)S
132 435 :M
f5_10 sf
(if \(!recalc\))S
132 446 :M
({)S
150 457 :M
(/* Recover infinities from overflow cases ... */)S
150 468 :M
(if \(isinf\(ac\) || isinf\(bd\) || isinf\(ad\) || isinf\(bc\)\))S
150 479 :M
({)S
48 479 :M
f1_12 sf
(4)S
54 479 :M
(0)S
168 490 :M
f5_10 sf
(/* Change all NaNs to 0 ... */)S
168 501 :M
(if \(isnan\(a\)\) a = copysign\(0.0, a\);)S
168 512 :M
(if \(isnan\(b\)\) b = copysign\(0.0, b\);)S
168 523 :M
(if \(isnan\(c\)\) c = copysign\(0.0, c\);)S
168 534 :M
(if \(isnan\(d\)\) d = copysign\(0.0, d\);)S
48 534 :M
f1_12 sf
(4)S
54 534 :M
(5)S
168 545 :M
f5_10 sf
(recalc = 1;)S
150 556 :M
(})S
132 567 :M
(})S
132 578 :M
(if \(recalc\))S
132 589 :M
({)S
48 589 :M
f1_12 sf
(5)S
54 589 :M
(0)S
150 600 :M
f5_10 sf
(x = INFINITY * \(a * c - b * d\);)S
150 611 :M
(y = INFINITY * \(a * d + b * c\);)S
132 622 :M
(})S
114 633 :M
(})S
114 644 :M
(return x + I * y;)S
48 644 :M
f1_12 sf
(5)S
54 644 :M
(5)S
78 655 :M
f5_10 sf
(})S
endp
%%Page: 4 4
%%BeginPageSetup
initializepage
(; page: 4 of 5)setjob
%%EndPageSetup
gS 0 0 552 730 rC
42 14 :M
f1_12 sf
-.032(WG14/N620 X3J11/96-84)A
403 14 :M
-.075(Draft 10/15/96)A
60 722 :M
(4)S
303 722 :M
-.01(C9X Complex Arithmetic\321Update)A
42 50 :M
@.058 .006(In ordinary \(finite\) cases, the cost to satisfy the infinity property for the )J
f5_10 sf
(*)S
f1_12 sf
@.06 .006( operator is only)J
42 62 :M
@.361 .036(one )J
f5_10 sf
@.149(isnan)A
f1_12 sf
@.499 .05( test.  This implementation opts for performance over guarding against undue)J
42 74 :M
-.043(overflow and underflow.)A
42 98 :M
-.015(2. Division of two )A
f5_10 sf
-.019(double\312complex)A
f1_12 sf
-.016( operands could be implemented as follows.)A
18 98 :M
(5)S
42 122 :M
f5_10 sf
(#include <math.h>)S
42 133 :M
(#include <complex.h>)S
42 144 :M
(/* isinf is as in example 1 above */)S
12 155 :M
f1_12 sf
(1)S
18 155 :M
(0)S
42 166 :M
f5_10 sf
(/* Divide z / w ... */)S
42 177 :M
(double complex _Cdivd\(double complex z, double complex w\))S
42 188 :M
({)S
78 199 :M
(FP_CONTRACT_OFF;)S
78 210 :M
(double a, b, c, d, logbw, denom, x, y;)S
12 210 :M
f1_12 sf
(1)S
18 210 :M
(5)S
78 221 :M
f5_10 sf
(long llogbw = 0;)S
78 232 :M
(a = creal\(z\); b = cimag\(z\);)S
78 243 :M
(c = creal\(w\); d = cimag\(w\);)S
78 254 :M
(logbw = logb\(fmax\(fabs\(c\), fabs\(d\)\)\);)S
78 265 :M
(if \(isfinite\(logbw\)\))S
12 265 :M
f1_12 sf
(2)S
18 265 :M
(0)S
78 276 :M
f5_10 sf
({)S
96 287 :M
(llogbw = \(long\)logbw;)S
96 298 :M
(c = scalb\(c, -llogbw\);)S
96 309 :M
(d = scalb\(d, -llogbw\);)S
78 320 :M
(})S
12 320 :M
f1_12 sf
(2)S
18 320 :M
(5)S
78 331 :M
f5_10 sf
(denom = c * c + d * d;)S
78 342 :M
(x = scalb\(\(a * c + b * d\) / denom, -llogbw\);)S
78 353 :M
(y = scalb\(\(b * c - a * d\) / denom, -llogbw\);)S
78 364 :M
(/*)S
78 375 :M
( * Recover infinities and zeros that computed as NaN+iNaN;)S
12 375 :M
f1_12 sf
(3)S
18 375 :M
(0)S
78 386 :M
f5_10 sf
( * the only cases are infinite/finite, finite/infinite,)S
78 397 :M
( * and non-zero/zero ...)S
78 408 :M
( */)S
78 419 :M
(if\312\(isnan\(x\)\312&&\312isnan\(y\)\))S
78 430 :M
({)S
12 430 :M
f1_12 sf
(3)S
18 430 :M
(5)S
96 441 :M
f5_10 sf
(if \(\(isinf\(a\) || isinf\(b\)\) && isfinite\(c\) && isfinite\(d\)\))S
96 452 :M
({)S
114 463 :M
(a = copysign\(isinf\(a\) ? 1.0 : 0.0, a\);)S
114 474 :M
(b = copysign\(isinf\(b\) ? 1.0 : 0.0, b\);)S
114 485 :M
(x = INFINITY * \(a * c + b * d\);)S
12 485 :M
f1_12 sf
(4)S
18 485 :M
(0)S
114 496 :M
f5_10 sf
(y = INFINITY * \(b * c - a * d\);)S
96 507 :M
(})S
96 518 :M
(else if \(\(logbw == INFINITY\) && isfinite\(a\) && isfinite\(b\)\))S
96 529 :M
({)S
114 540 :M
(c = copysign\(isinf\(c\) ? 1.0 : 0.0, c\);)S
12 540 :M
f1_12 sf
(4)S
18 540 :M
(5)S
114 551 :M
f5_10 sf
(d = copysign\(isinf\(d\) ? 1.0 : 0.0, d\);)S
114 562 :M
(x = 0.0 * \(a * c + b * d\);)S
114 573 :M
(y = 0.0 * \(b * c - a * d\);)S
96 584 :M
(})S
96 595 :M
(else if \(\(denom == 0.0\) && \(isfinite\(a\) || isfinite\(b\)\)\))S
12 595 :M
f1_12 sf
(5)S
18 595 :M
(0)S
96 606 :M
f5_10 sf
({)S
114 617 :M
(x = copysign\(INFINITY, c\) * a;)S
114 628 :M
(y = copysign\(INFINITY, c\) * b;)S
96 639 :M
(})S
78 650 :M
(})S
12 650 :M
f1_12 sf
(5)S
18 650 :M
(5)S
78 661 :M
f5_10 sf
(return x + I * y;)S
42 672 :M
(})S
endp
%%Page: 5 5
%%BeginPageSetup
initializepage
(; page: 5 of 5)setjob
%%EndPageSetup
gS 0 0 552 730 rC
78 14 :M
f1_12 sf
-.075(Draft 10/15/96)A
382 14 :M
-.032(WG14/N620 X3J11/96-84)A
96 722 :M
-.01(C9X Complex Arithmetic\321Update)A
504 722 :M
(5)S
504 713 6 12 rC
504 722 :M
(5)S
gR
gS 0 0 552 730 rC
78 50 :M
f1_12 sf
@.647 .065(Scaling the denominator alleviates the main overflow and underflow problem, which is)J
78 62 :M
@.724 .072(more serious than for multiplication.  In the spirit of the multiplication example above,)J
78 74 :M
1.792 .179(this code does not defend against overflow and underflow in the calculation of the)J
78 86 :M
1.117 .112(numerator.  Scaling with the )J
227 86 :M
f5_10 sf
@.276(scalb)A
f1_12 sf
@.911 .091( function, instead of with division, provides better)J
78 98 :M
-.025(roundoff characteristics.)A
54 98 :M
(5)S
78 137 :M
f0_12 sf
-.04(Y.5.2  Additive operators)A
78 164 :M
-.123(Semantics)A
48 176 :M
f1_12 sf
(1)S
54 176 :M
(0)S
96 188 :M
@.206 .021(If one operand has real type and the other operand has imaginary type, then the result)J
78 200 :M
@.659 .066(has complex type.  If both operands have imaginary type, then the result has imaginary)J
78 212 :M
-.007(type.  \(If either operand has complex type, then the result has complex type.\))A
96 236 :M
@.736 .074(In all cases the result and exception behavior of a )J
348 236 :M
f5_10 sf
@.289(+)A
f1_12 sf
@.321 .032( or )J
f5_10 sf
@.289(-)A
f1_12 sf
@.796 .08( operator is defined by the)J
48 236 :M
(1)S
54 236 :M
(5)S
78 248 :M
-.011(usual mathematical formula:)A
143 280 :M
f1_10 sf
cF f2_10 sf
(\261)S
sf
252 280 :M
f3_10 sf
(x)S
355 280 :M
-.383(y*I)A
455 280 :M
-.159(x + y*I)A
91 263 1 1 rF
91 263 1 1 rF
92 263 106 1 rF
198 263 1 1 rF
199 263 108 1 rF
307 263 1 1 rF
308 263 107 1 rF
415 263 1 1 rF
416 263 107 1 rF
523 263 1 1 rF
523 263 1 1 rF
91 264 1 18 rF
198 264 1 18 rF
200 264 1 18 rF
307 264 1 18 rF
415 264 1 18 rF
523 264 1 18 rF
143 301 :M
(u)S
244 301 :M
-.938(x )A
251 301 :M
f1_10 sf
cF f2_10 sf
-.418(\261)A
sf
f3_10 sf
-.571( u)A
344 301 :M
cF f4_10 sf
(\261)S
sf
(u + y*I)S
447 301 :M
-.766(\(x)A
455 301 :M
f1_10 sf
cF f2_10 sf
-.19(\261)A
sf
f3_10 sf
-.163(u\) + y*I)A
91 282 1 3 rF
92 282 106 1 rF
92 284 106 1 rF
198 282 1 1 rF
198 284 1 1 rF
200 282 1 1 rF
200 284 1 1 rF
201 282 106 1 rF
201 284 106 1 rF
307 282 1 3 rF
308 282 107 1 rF
308 284 107 1 rF
415 282 1 3 rF
416 282 107 1 rF
416 284 107 1 rF
523 282 1 3 rF
91 285 1 18 rF
198 285 1 18 rF
200 285 1 18 rF
307 285 1 18 rF
415 285 1 18 rF
523 285 1 18 rF
139 320 :M
-.383(v*I)A
240 320 :M
-.938(x )A
247 320 :M
f1_10 sf
cF f2_10 sf
-.199(\261)A
sf
f3_10 sf
-.185( v*I)A
347 320 :M
-.766(\(y)A
355 320 :M
f1_10 sf
cF f2_10 sf
-.148(\261)A
sf
f3_10 sf
-.145(v\)*I)A
447 320 :M
-.19(x + \(y)A
471 320 :M
f1_10 sf
cF f2_10 sf
-.148(\261)A
sf
f3_10 sf
-.145(v\)*I)A
91 303 1 1 rF
92 303 106 1 rF
200 303 1 1 rF
198 303 1 1 rF
201 303 106 1 rF
307 303 1 1 rF
308 303 107 1 rF
415 303 1 1 rF
416 303 107 1 rF
523 303 1 1 rF
91 304 1 18 rF
198 304 1 18 rF
200 304 1 18 rF
307 304 1 18 rF
415 304 1 18 rF
523 304 1 18 rF
131 339 :M
-.086(u + v*I)A
232 339 :M
-.766(\(x)A
240 339 :M
f1_10 sf
cF f2_10 sf
-.443(\261)A
sf
f3_10 sf
-.437(u\) )A
256 339 :M
f1_10 sf
cF f2_10 sf
-.199(\261)A
sf
f3_10 sf
-.185( v*I)A
336 339 :M
f1_10 sf
cF f2_10 sf
-.183(\261)A
sf
f3_10 sf
-.164(u + \(y)A
366 339 :M
f1_10 sf
cF f2_10 sf
-.148(\261)A
sf
f3_10 sf
-.145(v\)*I)A
439 339 :M
-.766(\(x)A
447 339 :M
f1_10 sf
cF f2_10 sf
-.219(\261)A
sf
f3_10 sf
-.185(u\) + \(y)A
480 339 :M
f1_10 sf
cF f2_10 sf
-.148(\261)A
sf
f3_10 sf
-.145(v\)*I)A
91 322 1 1 rF
92 322 106 1 rF
200 322 1 1 rF
198 322 1 1 rF
201 322 106 1 rF
307 322 1 1 rF
308 322 107 1 rF
415 322 1 1 rF
416 322 107 1 rF
523 322 1 1 rF
91 323 1 18 rF
91 341 1 1 rF
91 341 1 1 rF
92 341 106 1 rF
198 323 1 18 rF
200 323 1 18 rF
198 341 1 1 rF
199 341 108 1 rF
307 323 1 18 rF
307 341 1 1 rF
308 341 107 1 rF
415 323 1 18 rF
415 341 1 1 rF
416 341 107 1 rF
523 323 1 18 rF
523 341 1 1 rF
523 341 1 1 rF
endp
%%Trailer
end		% md
%%EOF
@EOF

chmod 640 complex_edits_update.ps

exit 0

