%!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: ug.dvi %%Pages: 64 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips -o ug.ps ug %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1997.11.06:1840 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet TeXDict begin 40258437 52099154 1000 300 300 (ug.dvi) @start /Fa 17 89 df<003800007C00007C00006C0000EE0000EE0000EE0000C60000C6 0001C70001C70001C7000183000383800383800383800383800701C00701C007FFC007FF C00FFFE00E00E00E00E00E00E01E00F01C00707F01FCFF83FE7F01FC171E7F9D1A>65 D<007C3801FF3807FFF80F83F81E00F81C0078380078380038700038700038700000E000 00E00000E00000E00000E00000E00000E00000E000007000007000387000383800383800 381C00701E00F00F83E007FFC001FF80007C00151E7E9D1A>67 D<7FFE00FFFF007FFF80 1C07C01C01E01C00F01C00701C00781C00381C00381C003C1C001C1C001C1C001C1C001C 1C001C1C001C1C001C1C001C1C003C1C00381C00381C00781C00701C00F01C01E01C07C0 7FFFC0FFFF007FFE00161E7F9D1A>III<00F8E003FEE0 07FFE00F07E01E03E03C01E03800E07000E07000E07000E0E00000E00000E00000E00000 E00000E00000E00FF8E00FF8E00FF8E000E07000E07000E07001E03801E03C03E01E03E0 0F07E007FFE003FEE000F8E0151E7E9D1A>I<7FE000FFE0007FE0000E00000E00000E00 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E00000E001C0E001C0E001C0E001C0E001C7FFFFCFFFFFC7FFF FC161E7F9D1A>76 D78 D<0FFE003FFF807FFFC07C07C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E000 E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001 E0F001E07001C07C07C07FFFC03FFF800FFE00131E7D9D1A>II<0FFE003FFF807FFFC07C07C07001C0F001E0E000E0 E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0 E000E0E000E0E000E0E070E0E0F0E0F079E07079C07C3FC07FFFC03FFF800FFE00000F00 0007000007800003800003C00001C00001C013257D9D1A>II<03F8E00FFEE01FFFE03C07E07801E0F001E0E000E0E0 00E0E000E0E000007000007800003F80001FF80007FF00007FC00007E00000F000007000 0038000038600038E00038E00038E00070F000F0FE01E0FFFFC0EFFF80E1FE00151E7E9D 1A>I<7FFFFEFFFFFEFFFFFEE0380EE0380EE0380EE0380E003800003800003800003800 003800003800003800003800003800003800003800003800003800003800003800003800 00380000380000380000380003FF8003FF8003FF80171E7F9D1A>III<7F87F87F87F87F87F80E01C00703C007838003878003C70001CF0001EE00 00FE0000FC00007C00007800003800007C00007C0000FE0000EE0001CF0001C700038780 0383800701C00701C00E00E00E00E07F01FCFF83FE7F01FC171E7F9D1A>88 D E /Fb 13 121 df<01E3000717000C0F00180F00380E00300E00700E00700E00E01C00 E01C00E01C00E01C00E03880E03880E038806078803199001E0E0011127E9116>97 D<3F00070007000E000E000E000E001C001C001C001C0039E03A303C1838187018701C70 1C701CE038E038E038E030E070E060E0C061C023001E000E1D7E9C12>I<01F0030C0C0C 1C1E383C301870007000E000E000E000E000E000E0046008601030601F800F127E9112> I<0FC00001C00001C0000380000380000380000380000700000700000700000700000E07 000E08800E11C00E23C01C47801C83001D00001E00003FC00038E0003870003870007071 00707100707100707200E03200601C00121D7E9C16>107 D<1F80038003800700070007 0007000E000E000E000E001C001C001C001C0038003800380038007000700070007000E2 00E200E200E40064003800091D7F9C0C>I<381F81F04E20C6184640E81C4680F01C8F00 F01C8E00E01C0E00E01C0E00E01C1C01C0381C01C0381C01C0381C01C070380380713803 8071380380E1380380E2700700643003003820127E9124>I<00F800030C000E06001C03 00180300300300700380700380E00700E00700E00700E00E00E00E00E01C006018006030 0030E0000F800011127E9114>111 D<07878009C86008D03008E03011C03011C03801C0 3801C0380380700380700380700380600700E00700C00701800783000E86000E78000E00 000E00001C00001C00001C00001C00003C0000FF0000151A819115>I<3C3C4E42468747 0F8E1E8E0C0E000E001C001C001C001C0038003800380038007000300010127E9113> 114 D<01F0060C0C040C0E180C1C001F000FE00FF003F80038201C7018F018F010803060 601F800F127E9113>I<1C00C02701C04701C04701C08703808703800E03800E03801C07 001C07001C07001C0700180E20180E20180E201C1E200C264007C38013127E9118>117 D<1C00C0802701C1C04701C1C04701C0C087038040870380400E0380400E0380401C0700 801C0700801C0700801C07010018060100180601001C0E02001C0F04000E13080003E1F0 001A127E911E>119 D<07878008C84010F0C020F1E020E3C040E18000E00000E00001C0 0001C00001C00001C000638080F38080F38100E5810084C60078780013127E9118>I E /Fc 37 124 df45 D<00010003000600060006000C000C000C 0018001800180030003000300060006000C000C000C00180018001800300030003000600 06000C000C000C00180018001800300030003000600060006000C000C00010297E9E15> 47 D<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E0 07E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<01000700 3F00C7000700070007000700070007000700070007000700070007000700070007000700 0700070007000700070007000700FFF80D1C7C9B15>I<07C01830201C400C400EF00FF8 0FF807F8077007000F000E000E001C001C00380070006000C00180030006010C01180110 023FFE7FFEFFFE101C7E9B15>I<000C00000C00001C00003C00003C00005C0000DC0000 9C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FF FFC0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>52 D<300C3FF83FF03FC020002000200020002000200023E02C303018301C200E000E000F00 0F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C0404 0C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E007 600760077006300E300C18180C3003E0101D7E9B15>I<03E00C301008200C2006600660 06700670067C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C00360 026004300C1C1007E0101D7E9B15>56 D<03C00C301818300C700C600EE006E006E007E0 07E007E007E0076007700F300F18170C2707C700060006000E300C780C78187018203010 C00F80101D7E9B15>I<000600000006000000060000000F0000000F0000000F00000017 8000001780000037C0000023C0000023C0000043E0000041E0000041E0000080F0000080 F0000080F000010078000100780001FFF80002003C0002003C0002003C0004001E000400 1E000C001F000C000F001E001F00FF00FFF01C1D7F9C1F>65 D I<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000 807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000 00F0000000700000807800008078000080380000801C0001001C0001000E000200070004 000180080000E03000001FC000191E7E9C1E>I69 D73 D<07FF80007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C 00003C00003C00003C00003C00003C00003C00003C00003C00003C00703C00F83C00F83C 00F8380070780040700030E0000F8000111D7F9B15>IIII<003F800000E0E0000380380007001C00 0E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0 F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0 380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C 20>79 DI82 D<07E0801C1980300580300380600180E00180E00080E00080E00080F00000F80000 7C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C0 8001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I85 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C0038 1C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 D<03F80C0C181E301E700C6000E000E000E000E000E000E00060007002300218040C1803 E00F127F9112>99 D<07E00C301818300C700E6006E006FFFEE000E000E000E000600070 02300218040C1803E00F127F9112>101 D104 D<18003C003C0018000000000000000000000000000000FC001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I108 D110 D112 D114 D<04000400040004000C000C 001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C 100E2003C00C1A7F9910>116 D120 DI123 D E /Fd 2 86 df<003FFFF000003FFFF0000001F800000001F000000001F000000001F0 00000001F000000003E000000003E000000003E000000003E000000007C000000007C000 000007C000000007C00000000F800000000F800000000F800000000F800000001F000000 001F000000001F000000001F000000003E000000003E000000003E000000003E00001000 7C000020007C000020007C000040007C00004000F80000C000F800008000F800018000F8 00030001F000070001F0000F0001F0003E0003F000FE00FFFFFFFE00FFFFFFFC0024297E A829>76 D<7FFFC00FFF807FFFC00FFF8003F00000F80003E00000600003E00000400003 E00000400003E00000400007C00000800007C00000800007C00000800007C0000080000F 80000100000F80000100000F80000100000F80000100001F00000200001F00000200001F 00000200001F00000200003E00000400003E00000400003E00000400003E00000400007C 00000800007C00000800007C00000800007C0000080000F80000100000F80000100000F8 0000100000F80000200000F80000200000F80000400000F80000C0000078000080000078 00010000003C00020000003C000C0000001E00380000000F80F000000003FFC000000000 FE00000000292A7CA829>85 D E /Fe 38 122 df<1C3E7E7E3A02040408081020408007 0E769F0E>39 D<1C3C3C3C3C040408081020204080060E7D840E>44 D<70F8F8F0E005057B840E>46 D<000F800030E000E07001C0700380300380380700380F 00780F00780E00781E00781E00703C00F03C00F03C00F03C00F07801E07801E07801E078 01C07003C0F003C0F00380F00780F00700700700700E00701C003038001870000FC00015 1F7C9D17>48 D<001F000061C00080E00100E00200700240700440700420700840F00840 F00840F00880E00901E00601C0000380000700000C0000180000600000C0000300000400 000800401000401000802001807E038047FF0041FE0080FC00807800141F7C9D17>50 D<00000200000006000000060000000E0000001E0000001E0000003F0000002F0000004F 000000CF0000008F0000010F0000010F0000020F0000020F0000040F0000080F0000080F 0000100F800010078000200780003FFF8000400780008007800080078001000780010007 800200078006000780040007801E0007C0FF807FF81D207E9F22>65 D<0000FE0200078186001C004C0038003C0060003C00C0001C01C0001803800018070000 180F0000181E0000101E0000103C0000003C000000780000007800000078000000780000 00F0000000F0000000F0000000F0000000F0000080700000807000008070000100380001 0038000200180004000C001800060020000381C00000FE00001F217A9F21>67 D<0000FC040007030C001C00980030007800E0007801C000380380003003800030070000 300E0000301E0000201E0000203C0000003C000000780000007800000078000000780000 00F0000000F000FFF0F0000780F0000780F0000F0070000F0070000F0070000F0070001E 0038001E0018003E001C002E000E00CC000383040000FC00001E217A9F23>71 D<01FFF0001F00001E00001E00001E00003C00003C00003C00003C000078000078000078 0000780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C0 0003C0000780000780000780000780000F8000FFF000141F7D9E12>73 D<000FFF8000007C000000780000007800000078000000F0000000F0000000F0000000F0 000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000000780 00000780000007800000078000000F0000000F0000300F0000780F0000F81E0000F81E00 00F03C0000803800004070000020E000001F80000019207D9E18>I<00FFF01FE0001F00 0F80001E000E00001E000800001E001000003C002000003C004000003C010000003C0200 00007804000000780800000078100000007830000000F0F0000000F1F8000000F2780000 00F478000001E83C000001F03C000001E03C000001E01E000003C01E000003C01E000003 C00F000003C00F000007800F00000780078000078007800007800780000F8007C000FFF0 3FF800231F7D9E23>I<01FFF800001F0000001E0000001E0000001E0000003C0000003C 0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0 000000F0000001E0000001E0000001E0000001E0008003C0010003C0010003C0030003C0 0200078006000780060007800C0007801C000F007800FFFFF800191F7D9E1D>I<01FE00 007FC0001E0000FC00001E0000F80000170001780000170001780000270002F000002700 04F00000270004F00000270008F00000470009E00000470011E00000470021E000004700 21E00000870043C00000838043C00000838083C00000838083C000010381078000010382 0780000103820780000103840780000203840F00000203880F00000203900F0000020390 0F00000401E01E00000401E01E00000401C01E00000C01801E00001C01803E0000FF8103 FFC0002A1F7D9E29>I<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C 003C003C003C003C003C0078007800780078007800F0007800E000F003C000F00F0000FF FC0000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0 0000078000000780000007800000078000000F800000FFF000001E1F7D9E1F>80 D<00FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C0078003C00 78007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F01C0001E00E 0001E00F0001E0070001E0078003C00F0003C00F0003C00F0003C00F0007801E0007801E 0807801E0807801E100F800E10FFF00E20000003C01D207D9E21>82 D<0007E040001C18C0003005800060038000C0038001C001800180010003800100038001 00038001000380000003C0000003C0000003F8000001FF800001FFE000007FF000001FF0 000001F80000007800000078000000380000003800200038002000380020003000600070 00600060006000E0007000C000E8038000C606000081F800001A217D9F1A>I<0FFFFFFC 1E03C0381803C0181003C0082003C00820078008600780084007800840078008800F0010 000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000 003C0000003C00000078000000780000007800000078000000F0000000F0000000F00000 00F0000001F000007FFF80001E1F799E21>I<3FFC0FF807C003C0078001000780010007 8001000F0002000F0002000F0002000F0002001E0004001E0004001E0004001E0004003C 0008003C0008003C0008003C00080078001000780010007800100078001000F0002000F0 002000F0002000F0004000F0004000700080007001000030020000380400000C18000007 E000001D20779E22>I<00F1800389C00707800E03801C03803C03803807007807007807 00780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F07001314 7C9317>97 D<007E0001C1000300800E07801E07801C07003C0200780000780000780000 F00000F00000F00000F00000F0000070010070020030040018380007C00011147C9315> 99 D<0000780003F80000700000700000700000700000E00000E00000E00000E00001C0 0001C000F1C00389C00707800E03801C03803C0380380700780700780700780700F00E00 F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C 01C207010E011C013C013802780C7BF07C00F000F000F000F00070007001700238041838 07C010147C9315>I<00007800019C00033C00033C000718000700000700000E00000E00 000E00000E00000E0000FFE0001C00001C00001C00001C00003800003800003800003800 00380000700000700000700000700000700000E00000E00000E00000E00000E00001C000 01C00001C0000180003180007B0000F300006600003C00001629829F0E>I<001E300071 3800E0F001C0700380700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01 C01E03801E03800E07800E0B8006170001E700000700000700000E00000E00300E00781C 00F038006070003FC000151D7F9315>I<01E0000FE00001C00001C00001C00001C00003 8000038000038000038000070000070000071E000763000E81800F01C00E01C00E01C01C 03801C03801C03801C0380380700380700380700380E10700E20700E20701C20700C40E0 0C8060070014207D9F17>I<00C001E001E001C000000000000000000000000000000E00 1300230043804700470087000E000E000E001C001C001C00384038803880708031003200 1C000B1F7C9E0E>I<03C01FC0038003800380038007000700070007000E000E000E000E 001C001C001C001C0038003800380038007000700070007100E200E200E200E200640038 000A207C9F0C>108 D<1C0F80F0002630C318004740640C004780680E004700700E0047 00700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C038001C01C038001C01 C038001C01C0708038038071003803807100380380E10038038062007007006400300300 380021147C9325>I<1C0F802630C04740604780604700704700708E00E00E00E00E00E0 0E00E01C01C01C01C01C01C01C03843803883803883807083803107003303001C016147C 931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003 C0F003C0F003C0F00780F00700700F00700E0030180018700007C00013147C9317>I<01 C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01 C03C01C0380380780380700380E003C1C0072380071E000700000700000E00000E00000E 00000E00001C00001C0000FF8000171D809317>I<1C1E00266100278380478780470780 4703008E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000 38000070000030000011147C9313>114 D<00FC030206010C030C070C060C000F800FF0 07F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<018001C0038003 800380038007000700FFF007000E000E000E000E001C001C001C001C0038003800380038 20704070407080708031001E000C1C7C9B0F>I<0E00C01300E02301C04381C04701C047 01C08703800E03800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C 1E400C264007C38014147C9318>I<0E00C1C01300E3C02301C3E04381C1E04701C0E047 01C060870380400E0380400E0380400E0380401C0700801C0700801C0700801C0701001C 0701001C0601001C0F02000C0F04000E13080003E1F0001B147C931E>119 D<0383800CC4401068E01071E02071E02070C040E00000E00000E00000E00001C00001C0 0001C00001C040638080F38080F38100E5810084C60078780013147D9315>I<0E00C013 00E02301C04381C04701C04701C08703800E03800E03800E03801C07001C07001C07001C 07001C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E0 6000C0C0004380003E0000131D7C9316>I E /Ff 7 115 df<1FFFFE381C0E201C04601C 04401C0440380480380400380000380000700000700000700000700000E00000E00000E0 0000E00001C00001C00001C00001C00003C0003FFC0017177F9615>84 D<07C00C20107020706000C000C000C00080008000C010C02060C03F000C0E7E8D0F>99 D<0300038003000000000000000000000000001C002400460046008C000C001800180018 0031003100320032001C0009177F960C>105 D<00180038001000000000000000000000 000001C0022004300430086000600060006000C000C000C000C001800180018001806300 E300C60078000D1D80960E>I<1F0006000600060006000C000C000C000C00181C186618 8E190C32003C003F00318060C060C460C460C4C0C8C0700F177E9612>I<383C1E0044C6 630047028100460301008E0703000C0603000C0603000C060300180C0600180C0620180C 0C20180C0C40301804C0301807001B0E7F8D1F>109 D<30F049184E384C309C00180018 0018003000300030003000600060000D0E7F8D10>114 D E /Fg 25 122 df<70F8F8F8700505798414>46 D<0006000E000E001C001C0038003800700070 00E000E001C001C0038003800380070007000E000E001C001C003800380070007000E000 E000C0000F1D7E9914>I<07C00FE01C7038383018701C701CE00EE00EE00EE00EE00EE0 0EE00EE00EE00E701C701C383838381C700FE007C00F177E9614>I<0300030007000F00 3F00F7004700070007000700070007000700070007000700070007000700070007007FF0 7FF00C177C9614>I<01C00003E00003E000036000036000077000077000077000077000 0630000E38000E38000E38000E38001C1C001FFC001FFC001C1C001C1C00380E00380E00 FE3F80FE3F8011177F9614>65 D<01F18007FF800E1F801C078038078070038070038070 0380E00000E00000E00000E00000E00000E00000E000007003807003807003803807001C 07000E0E0007FC0001F00011177F9614>67 DII76 DI80 D<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE00FF001F8001C001E000E600EE0 0EE00EF01CF838FFF0C7E00F177E9614>83 D85 D<7E3E007E3E001C3C001E3800 0E78000F700007700007E00003E00003C00001C00003C00003E00003E000077000077000 0E78000E38001C3C001C1C003C1E00FE3F80FE3F8011177F9614>88 D<7FFEFFFEE01CE01CE038E038007000E000E001C001C00380070007000E000E001C0038 0E380E700E700EFFFEFFFE0F177E9614>90 D<03F80FFE1C0E380470006000E000E000E0 00E00060007000380E1C1E0FFC03F00F107E8F14>99 D<07E00FF01C38301C700CE00EE0 0EFFFEFFFEE00060007000380E1C1E0FFC03F00F107E8F14>101 D<07CF001FFF80383B80301800701C00701C00701C003018003838003FF00037C0007000 007000003FF8001FFC003FFE00700F00E00380E00380E00380E003807007003C1E001FFC 0007F00011197F8F14>103 D108 D112 D114 D<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E 8F14>I<06000E000E000E000E007FFCFFFC0E000E000E000E000E000E000E000E000E0E 0E0E0E0E0E1C07F801F00F157F9414>II< FE3F80FE3F801C0E001C1C001C1C000E1C000E38000E3800073800073000073000037000 03700003E00001E00001E00001C00001C00001C0000380007380007700007E00003C0000 11187F8F14>121 D E /Fh 4 53 df<187898181818181818181818181818FF08107D8F 0F>49 D<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC0 0B107F8F0F>I<1F00218060C060C000C0008001001F00008000400060C060C060804060 801F000B107F8F0F>I<01800180038005800D801980118021804180C180FFE001800180 018001800FE00B107F8F0F>I E /Fi 4 53 df<06000E00FE000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E00FFE00B157D9412>49 D<0F8030E040708030C038E0384038003800700070006000C00180030006000C08080810 183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C00180038006007E00030 0018000C000E000EE00EE00EC00C401830300FE00F157F9412>I<00300030007000F001 F001700270047008701870107020704070C070FFFE0070007000700070007003FE0F157F 9412>I E /Fj 7 113 df<00000C0000180000380000300000600000E00000C00001C000 0380000380000700000700000E00000E00001C00001C0000380000380000780000700000 F00000F00000E00001E00001E00003C00003C00003C00003C0000780000780000780000F 80000F00000F00000F00001F00001F00001E00001E00001E00003E00003E00003E00003E 00003C00003C00003C00007C00007C00007C00007C00007C00007C00007C00007C000078 0000780000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8 0000F80000F80000F80000F80000F80000F80000164B748024>48 DI64 D<00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 7C00007C00007C00007C00007C00007C0000780000780000F80000F80000F80000F80000 F80000F80000F80000F80000F00000F00000F00001F00001F00001F00001F00001E00001 E00001E00003E00003E00003C00003C00003C00007C0000780000780000780000F00000F 00000F00000F00001E00001E00001C00003C00003C0000380000780000700000700000E0 0000E00001C00001C0000380000380000700000700000E00000C00001C00001800003000 00700000600000C00000164B7F8224>III<00000000020000000006000000000C000000000C000000 00180000000018000000003000000000300000000060000000006000000000C000000000 C00000000180000000018000000003000000000300000000060000000006000000000C00 0000000C000000001800000000180000000030000000003000000000600008000060001C 0000C0003C0000C000CE000180000E000180000E00030000070003000007000600000380 06000003800C000001C00C000001C018000001E018000000E030000000E0300000007060 000000706000000038C000000038C00000001D800000001D800000001F000000000F0000 00000E000000000600000027327C812A>112 D E /Fk 9 111 df0 D<400004C0000C6000183000301800600C00C006018003030001860000CC 0000780000300000300000780000CC000186000303000601800C00C01800603000306000 18C0000C40000416187A9623>2 D<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0 FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012127E 9317>15 D21 D<003FF800FFF803C0000700000C00001800003000003000 00600000600000C00000C00000C00000FFFFF8FFFFF8C00000C00000C000006000006000 003000003000001800000C000007000003C00000FFF8003FF8151C7C981E>50 D<00000C00000C0000180000180000300000300000600000600000C00000C00001800001 80000180000300000300000600000600000C00000C000018000018000030000030000060 0000600000C00000C0000180000180000300000300000600000600000600000C00000C00 00180000180000300000300000600000600000C00000400000162C7AA000>54 D106 D<4020C030C030C030C030C030C030C030C0 30C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C0 30C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C030C0 3040200C2E7BA117>I110 D E /Fl 17 118 df76 DI<0003FF800180001FFFF00380007FFFFC078001FFFF FF0F8003FE00FF9F8007F0000FFF800FE00003FF801FC00001FF803F8000007F803F8000 007F807F0000003F807F0000001F807F0000001F80FF0000000F80FF0000000F80FF0000 000F80FF8000000780FF8000000780FFC000000780FFE000000780FFF8000000007FFE00 0000007FFFF00000007FFFFF0000003FFFFFF800003FFFFFFF00001FFFFFFFC0000FFFFF FFF00007FFFFFFF80003FFFFFFFC0001FFFFFFFE00007FFFFFFF00003FFFFFFF800007FF FFFF8000007FFFFFC0000007FFFFC00000003FFFE000000003FFE000000000FFF0000000 007FF0000000003FF0700000001FF0F00000001FF0F00000001FF0F00000000FF0F00000 000FF0F80000000FF0F80000000FE0F80000000FE0FC0000000FE0FC0000001FC0FE0000 001FC0FF0000001F80FFC000003F80FFF000007F00FFFC0001FE00FCFFC007FC00F87FFF FFF000F01FFFFFE000E003FFFF8000C0003FFC00002C3D7BBB37>83 D85 D<001FFF80000001FFFFF0000003FFFFFC000007F003FF00000FF800 FF80001FFC007FC0001FFC003FE0001FFC003FF0001FFC001FF0000FF8001FF8000FF800 1FF80007F0001FF80001C0001FF8000000001FF8000000001FF8000000001FF8000000FF FFF800000FFFFFF800007FFC1FF80001FFC01FF80007FE001FF8000FFC001FF8001FF000 1FF8003FF0001FF8007FE0001FF8007FE0001FF800FFC0001FF800FFC0001FF800FFC000 1FF800FFC0001FF800FFC0003FF8007FE0003FF8007FE0006FF8003FF001CFFC001FFC07 87FFF007FFFF07FFF001FFFC03FFF0003FF0007FF02C267DA530>97 D<000000003FC00000003FFFC00000003FFFC00000003FFFC00000003FFFC000000001FF C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF C000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FF C000000000FFC000000000FFC000000000FFC000000000FFC00000FFC0FFC0000FFFF8FF C0003FFFFEFFC000FFE03FFFC001FF000FFFC003FE0003FFC007FC0001FFC00FF80000FF C01FF00000FFC01FF00000FFC03FF00000FFC03FE00000FFC07FE00000FFC07FE00000FF C07FE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FF C0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC07FE00000FFC07FE00000FF C07FE00000FFC03FF00000FFC03FF00000FFC01FF00000FFC00FF80001FFC007F80003FF C003FC0007FFC001FF000FFFE000FFC07EFFFF003FFFFCFFFF000FFFF0FFFF0001FF80FF FF303C7DBB37>100 D<0001FF8000000FFFF800003FFFFE0000FF80FF0001FE003F8007 FC001FC00FF8000FE00FF8000FF01FF00007F03FF00007F83FF00007F87FE00007F87FE0 0003FC7FE00003FC7FE00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE000 0000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FE00000003FE00000 003FF000003C1FF000003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E0 00FFC03FC0003FFFFF000007FFFC000000FFE00026267DA52D>I<000000001F800007FE 007FC0007FFFE1FFE001FFFFFBE7F003FE07FF07F007F801FE07F00FF000FF07F01FF000 FF87E03FE0007FC3C03FE0007FC0007FE0007FE0007FE0007FE0007FE0007FE0007FE000 7FE0007FE0007FE0007FE0007FE0007FE0007FE0003FE0007FC0003FE0007FC0001FF000 FF80000FF000FF000007F801FE000003FE07FC000007FFFFF800000E7FFFE000000E07FE 0000001E00000000001E00000000001E00000000001E00000000001F00000000001FC000 0000001FFFFFFC00001FFFFFFF80000FFFFFFFF00007FFFFFFF80007FFFFFFFC0003FFFF FFFE0003FFFFFFFF000FFFFFFFFF801FC00007FF803F000000FF807F0000003FC0FE0000 001FC0FE0000001FC0FE0000001FC0FE0000001FC0FE0000001FC07F0000003F807F0000 003F803F8000007F001FC00000FE000FF00003FC0007FE001FF80001FFFFFFE000003FFF FF00000003FFF000002C397DA631>103 D<00FF00000000FFFF00000000FFFF00000000 FFFF00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF007FC00003FF01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF00 03FF3001FF8003FF6000FF8003FFE000FFC003FFC000FFC003FF8000FFC003FF8000FFC0 03FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFF FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303C7CBB37>I<01F00007FC000FFE000FFE 001FFF001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F0000000000000000000 0000000000000000000000000000000000000000000000FF007FFF007FFF007FFF007FFF 0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153D7DBC1B>I<00 FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC16 3C7DBB1B>108 D<00FE007FC000FFFE01FFF800FFFE07FFFC00FFFE0F03FE00FFFE1C01 FF0007FE3001FF8003FE6000FF8003FEE000FFC003FEC000FFC003FF8000FFC003FF8000 FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3F FFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30267CA537>110 D<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE03FF00FFFFF000FF8003FFC0007F C003FF80003FE003FF00003FF003FF00001FF803FF00001FFC03FF00000FFC03FF00000F FE03FF00000FFE03FF000007FE03FF000007FF03FF000007FF03FF000007FF03FF000007 FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007 FE03FF000007FE03FF00000FFE03FF00000FFC03FF00000FFC03FF00001FF803FF00001F F803FF00003FF003FF80003FE003FFC0007FC003FFF001FF8003FFFC07FF0003FF3FFFFC 0003FF0FFFF00003FF03FF000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 0003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC0000 00FFFFFC00000030377DA537>112 D<0000FF8003C0000FFFF007C0003FFFF80FC000FF E03E1FC001FF800F1FC003FE0007BFC007FC0003FFC00FFC0001FFC01FF80001FFC01FF8 0000FFC03FF00000FFC03FF00000FFC07FF00000FFC07FE00000FFC07FE00000FFC0FFE0 0000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE0 0000FFC0FFE00000FFC0FFE00000FFC07FE00000FFC07FF00000FFC07FF00000FFC03FF0 0000FFC03FF80000FFC01FF80000FFC00FFC0001FFC007FC0003FFC003FE0007FFC001FF 001FFFC000FFC07EFFC0003FFFF8FFC0000FFFE0FFC00001FF00FFC000000000FFC00000 0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000 0000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC00000 003FFFFF0000003FFFFF0000003FFFFF0000003FFFFF30377DA534>I<00FE01FC00FFFE 07FF00FFFE0FFF80FFFE1E1FC0FFFE383FE007FE707FF003FE607FF003FEC07FF003FEC0 7FF003FFC03FE003FF803FE003FF801FC003FF80070003FF00000003FF00000003FF0000 0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFF FE000024267EA529>I<000F0000000F0000000F0000000F0000000F0000001F0000001F 0000001F0000001F0000003F0000003F0000007F0000007F000000FF000001FF000003FF 000007FF00001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF003FF000003FF000003FF000003FF 000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF 000003FF000003FF000003FF000003FF000003FF000003FF000003FF003C03FF003C03FF 003C03FF003C03FF003C03FF003C03FF003C03FF003C01FF007801FF807800FF80F0007F C1E0003FFFC0000FFF800001FE001E377EB626>116 D<00FF00003FC0FFFF003FFFC0FF FF003FFFC0FFFF003FFFC0FFFF003FFFC007FF0001FFC003FF0000FFC003FF0000FFC003 FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003FF0003FFC001FF0003FFC001 FF0006FFC000FF800EFFE0007FC03CFFFF003FFFF8FFFF000FFFE0FFFF0001FF80FFFF30 267CA537>I E /Fm 88 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F87000000000 0070F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038 E038E03860300D0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFF C0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFF E07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00C00001 C00001C00001C00003F0000FFC003FFE007DCF0071C700E1C380E1C780E1C780E1C780F1 C00079C0003FC0001FE0000FF80001FC0001DE0001CF0001C70061C380F1C380F1C380E1 C380E1C70071C70079DE003FFE001FF80007E00001C00001C00001C00000C00011247D9F 18>I<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F81CF3F81CE3F8 0FC1C00FC3800F83800F03801F07003F87007B8E0071CE00E1FC00E0FC00E07C00E07870 E0787070FE707FFFE03FC7E00F03C0151C7F9B18>38 D<387C7C7E3E0E0E0E1C1C38F8F0 C0070E789B18>I<007000F001E003C007800F001E001C00380038007000700070007000 E000E000E000E000E000E000E000E0007000700070007000380038001C001E000F000780 03C001F000F000700C24799F18>I<6000F00078003C001E000F000780038001C001C000 E000E000E000E00070007000700070007000700070007000E000E000E000E001C001C003 8007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C00041C1 00F1C780FDDF807FFF001FFC0007F00007F0001FFC007FFF00FDDF80F1C78041C10001C0 0001C00001C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000 F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000 F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFFC0FFFFE0 FFFFE07FFFC013047E8F18>I<3078FCFC78300606778518>I<000300000780000780000F 80000F00001F00001E00001E00003E00003C00007C0000780000780000F80000F00001F0 0001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E00003E00 003C00003C00007C0000780000F80000F00000F0000060000011247D9F18>I<01F00007 FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E0 00E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000F FE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB804380038003 80038003800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F 1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E0 0000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E00007C000 0F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807 807803C07801C03001C00001C0000380000380000F0003FF0003FE0003FF000007800003 C00001C00000E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F8 00131C7E9B18>I<001F00003F0000770000770000E70001E70001C70003870007870007 07000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000 0700000700000700000700007FF0007FF0007FF0151C7F9B18>I<3FFF803FFF803FFF80 3800003800003800003800003800003800003800003800003BF8003FFE003FFF003C0780 3003C00001C00000E00000E06000E0F000E0F000E0E001C07003C07C0F803FFF001FFC00 03F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03C03801803800007000 00700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000 E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>II<03F8000FFE001FFF003E0F803803807001C07001C0 7001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0 E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<03F0 000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001E0E001E07001E07803 E03C0FE01FFFE00FFEE003F0E00000E00001C00001C00001C0300380780780780F00783E 003FFC001FF00007C000131C7E9B18>I<3078FCFC783000000000000000003078FCFC78 300614779318>I<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A 789318>I<0000C00003E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F 0000FC0000FC00007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E000 03E00000C013187E9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000 FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F80000FC00007F00003F80000FE0 0007F00001FC0000FE00003F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0 000FE0003F80007F0000FC0000F8000060000013187E9918>I<00700000F80000F80000 D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E0007070007070007 07000707000707000FFF800FFF800FFF800E03801C01C01C01C01C01C07F07F0FF07F87F 07F0151C7F9B18>65 D<7FFC00FFFF007FFF801C03C01C01C01C00E01C00E01C00E01C00 E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00 701C00701C00F01C00E01C03E07FFFC0FFFF807FFE00141C7F9B18>I<00F8E003FEE007 FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E0 0000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003 FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0 1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E0 1C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>III<01F1C0 03FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000 E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC0 0FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01 C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01 C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7F FF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001 C0007FFF00FFFF807FFF00111C7D9B18>I<01FFC001FFC001FFC0000E00000E00000E00 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E00F00E00F00E00F03C007FFC003FF0000FC000121C7D9B18> I<7F07F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0 001DF0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03 801C01C07F03F0FF87F87F03F0151C7F9B18>III<7E07F0FF0FF87F07F01D81C01D81 C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39 C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C 7F9B18>I<0FFE003FFF807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000E0E0 00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F0 01E07001C07C07C07FFFC03FFF800FFE00131C7E9B18>II<0FFE003FFF807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000 E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E070E0E070 E0F079E07039C0783FC07FFFC03FFF800FFE00000F000007800007800003C00001C00001 C013227E9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C 03C01C03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C 03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>I<03F1C01FFFC03FFFC0 7C0FC07003C0E001C0E001C0E001C0E000007000007800003F00001FF00007FE0000FF00 000F800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00 E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E070380070000070 000070000070000070000070000070000070000070000070000070000070000070000070 0000700000700000700000700007FF0007FF0007FF00151C7F9B18>IIII<7F0FE07F9FE07F0FE00E07000F0700070E00078E0003 9C0003DC0001F80001F80000F80000F00000700000F00000F80001FC0001DC00039E0003 8E00070F000707000E07800E03801E03C07F07F0FF07F87F07F0151C7F9B18>II<3FFFE07FFFE07FFFE07001C07003C07007807007 00000F00001E00001C00003C0000780000700000F00001E00001C00003C0000780000700 000F00001E00E01C00E03C00E07800E07000E0FFFFE0FFFFE0FFFFE0131C7E9B18>II<600000F00000F00000F800007800007C00003C00003C00003E00001E0000 1F00000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F000 00F800007800007800007C00003C00003E00001E00001E00001F00000F00000F80000780 00078000030011247D9F18>II<7FFFC0FFFFE0FFFFE07FFFC013047E7F 18>95 D<0FF0001FFC003FFE003C0F0018070000038000038000FF8007FF801FFF807F03 80780380E00380E00380E00380F00780780F803FFFF81FFDF807F0F815147E9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1 E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80 E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038030070 0000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01F FF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380000380000380 00038003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380 E00380E00380700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F0 0007FC001FFE003E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000 007000007001C03801C03E07C01FFF8007FF0001F80012147D9318>I<001F80007FC000 FFE000E1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007F FF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E301C0E00380700380700380700 3807003807001C0E001E1E001FFC001FF80039E0003800001C00001FFE001FFFC03FFFE0 7801F0700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F 9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFF C00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00 E00E00E00E00E07FC7FCFFE7FE7FC7FC171C809B18>I<038007C007C007C00380000000 00000000007FC0FFC07FC001C001C001C001C001C001C001C001C001C001C001C001C001 C001C0FFFFFFFFFFFF101D7C9C18>I<0038007C007C007C003800000000000000000FFC 0FFC0FFC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C001C6038F078FFF07FE03F800E277E9C18>I<7E0000FE00007E 00000E00000E00000E00000E00000E00000E3FF00E3FF00E3FF00E07800E0F000E1E000E 3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C07FC7F8FF C7F87FC7F8151C7F9B18>III<7E3E00FEFF807FFFC00F C1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E 00E00E00E07FC7FCFFE7FE7FC7FC1714809318>I<01F0000FFE001FFF003E0F80380380 7001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F80 1FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00 700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF 800E3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E 809318>I<01F38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E0 0380E00380E00380700780700780380F803C1F801FFF800FFB8003E38000038000038000 0380000380000380000380000380001FF0003FF8001FF0151E7E9318>II<07F7003FFF007FFF00780F 00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F003 80F80F00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007F FFC0FFFFC0FFFFC003800003800003800003800003800003800003800003800003800003 80400380E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE0 7E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 0E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01C01 C00E03800E03800E0380070700070700070700078F00038E00038E00038E0001DC0001DC 0001DC0000F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF00F0700078E00039E0001DC00 01F80000F80000700000F00000F80001DC00039E00038E000707000E07807F8FF0FF8FF8 7F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E03800703800707000707 00038700038700038E0001CE0001CE0001CC0000CC0000DC000078000078000078000070 0000700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3F FFF07FFFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C00007 80000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0 007FE000780000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 00E00001E0007FC000FF8000FF80007FC00001E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E000007800007FE0001FE00007E013247E9F18> I<7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E0 0000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E0 0000E00000E00000E00000E00000E00000E00000E00000E00003C000FFC000FF00007C00 0013247E9F18>125 D<060C1F1E3FBEFBF8F1F060C00F067C9B18>I E /Fn 1 14 df<0007F00000003FFE000000780F000001C001C000038000E00006000030 000C000018001800000C001800000C003000000600600000030060000003006000000300 C000000180C000000180C000000180C000000180C000000180C000000180C00000018060 000003006000000300600000030030000006001800000C001800000C000C000018000600 003000038000E00001C001C00000780F0000003FFE00000007F0000021217E9926>13 D E /Fo 61 124 df<00FE000381000601800E03801C01001C00001C00001C00001C0000 1C0000FFFF801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380 1C03801C03801C03801C0380FF8FF0141A809915>12 D<007E1F8001C170400703C06006 0380E00E0380400E0380000E0380000E0380000E0380000E038000FFFFFFE00E0380E00E 0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E 0380E00E0380E00E0380E00E0380E07F8FE3FC1E1A809920>14 D<00800100020004000C 00080018003000300030006000600060006000E000E000E000E000E000E000E000E000E0 00E0006000600060006000300030003000180008000C00040002000100008009267D9B0F >40 D<8000400020001000180008000C0006000600060003000300030003000380038003 80038003800380038003800380038003000300030003000600060006000C000800180010 0020004000800009267E9B0F>I<60F0F07010101020204040040B7D830B>44 DI<60F0F06004047D830B>I<07E01C38381C300C700E60066006 E007E007E007E007E007E007E007E007E007E00760066006700E300C381C1C3807E01018 7F9713>48 D<03000700FF00070007000700070007000700070007000700070007000700 070007000700070007000700070007007FF80D187D9713>I<0F80106020304038803CC0 1CE01C401C003C003800380070006000C001800100020004040804100430083FF87FF8FF F80E187E9713>I<07E01838201C601E700E201E001E001C001C0038007007E00038001C 000E000F000FE00FE00FC00F400E601C183807E010187F9713>I<001800180038007800 F800B8013802380238043808381838103820384038C038FFFF0038003800380038003800 3803FF10187F9713>I<30183FF03FE03F80200020002000200020002FC0306020300038 0018001C001C401CE01CE01C80184038403030E00F800E187E9713>I<01F807040C0618 0E300E300070006000E000E3E0E418E80CF00EE006E007E007E007600760077006300E18 0C0C3807E010187F9713>I<40007FFF7FFE7FFE40048008801080100020004000400080 01800100030003000700060006000E000E000E000E000E00040010197E9813>I<07E018 18300C2006600660067006780C3E181F3007C003E00CF8307C601E600FC007C003C003C0 0360022004181807E010187F9713>I<07E01C303018700C600EE006E006E007E007E007 6007700F3017182707C700070006000E000C700C7018603030600F8010187F9713>I<00 7F00000180C000060030000800080010000400203E020020E1020041C081004380710083 807080870070808700708087007080870070808700708087007080838070804380708041 C0F10020E13100203E1E0010000000080000000600038001803E00007FE000191A7E991E >64 D<000C0000000C0000000C0000001E0000001E0000002F0000002700000027000000 43800000438000004380000081C0000081C0000181E0000100E0000100E00003FFF00002 0070000200700004003800040038000400380008001C0008001C003C001E00FF00FFC01A 1A7F991D>II<003F0201C0C603002E0E001E1C000E1C00 06380006780002700002700002F00000F00000F00000F00000F00000F000007000027000 027800023800041C00041C00080E000803003001C0C0003F00171A7E991C>IIII<003F020001C0C60003002E 000E001E001C000E001C00060038000600780002007000020070000200F0000000F00000 00F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038000E001C000E 001C000E000E000E000300160001C06600003F82001A1A7E991E>III76 DII<007F000001C1C000070070000E0038001C001C003C001E0038000E0078 000F0070000700F0000780F0000780F0000780F0000780F0000780F0000780F0000780F0 00078078000F0078000F0038000E003C001E001C001C000E0038000700700001C1C00000 7F0000191A7E991E>II82 D<0FC21836200E6006C0 06C002C002C002E00070007E003FE01FF803FC007E000E00070003800380038003C002C0 06E004D81887E0101A7E9915>I<7FFFFF00701C0700401C0100401C0100C01C0180801C 0080801C0080801C0080001C0000001C0000001C0000001C0000001C0000001C0000001C 0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C 0000001C000003FFE000191A7F991C>II88 D<1FC000387000383800101C00 001C00001C0003FC001E1C00381C00701C00E01C00E01C80E01C80E03C80705F801F8F00 11107F8F13>97 DI<07F81C1C381C70087000E000E000E0 00E000E000E0007000700438081C1807E00E107F8F11>I<003F00000700000700000700 00070000070000070000070000070000070003E7000C1700180F00300700700700E00700 E00700E00700E00700E00700E00700600700700700380F001C370007C7E0131A7F9915> I<07C01C3030187018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F 8F11>I<01F007180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C00 1C001C001C001C001C001C001C001C001C00FF800D1A80990C>I<0FCF00187180303000 7038007038007038007038003030001860002FC0006000006000007000003FF0003FFC00 1FFE00600F00C00300C00300C00300C00300600600381C0007E00011187F8F13>II<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1C FF081A80990A>I107 DIII<07E01C38300C700E 6006E007E007E007E007E007E0076006700E381C1C3807E010107F8F13>II114 D<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F80 0C107F8F0F>I<0800080008000800180018003800FFC038003800380038003800380038 003800382038203820382018201C4007800B177F960F>IIIIII123 D E /Fp 3 123 df<0C000C00CCC0EDC07F800C007F80EDC0CCC00C000C000A0B7D8B10>3 D<1818181818FFFF18181818181818181818181818181808167D900E>121 D<1818181818FF18181818180018181818FFFF1818181808167D900E>I E /Fq 41 123 df<0600700701F80E02F00E0C600E10000E20001C40001C80001F00001F F800381E00380700380700380384700708700708700708700310E003106001E016147E93 1A>20 D<007F0001FF800701E00C00401800001000001000001000001000000FF8000FB0 00104000200000400000400000800000800000400100400200300C001FF80007E0001316 809415>34 D<70F8F8F87005057C840D>58 D<70F0F8F878080808101010202040050E7C 840D>I<0000400000C0000180000180000180000300000300000300000600000600000C 00000C00000C0000180000180000180000300000300000600000600000600000C00000C0 0000C0000180000180000180000300000300000600000600000600000C00000C00000C00 00180000180000300000300000300000600000600000600000C00000C00000122D7EA117 >61 D<000002000000060000000E0000000E0000001E0000001F0000002F0000006F0000 004F0000008F0000008F0000010F0000030F0000020F0000040F8000040F800008078000 180780001007800020078000200780007FFF800080078000800780010007C0010003C002 0003C0040003C0040003C00C0003C03C0007C0FF003FFC1E207E9F22>65 D<01FFFFE0001E0078001E003C001E001C001E001E003C001E003C001E003C001E003C00 1E0078003C0078003C00780078007800F000F003C000FFFF0000F007C000F000E001E000 F001E0007801E0007801E0007803C0007803C0007803C0007803C00070078000F0078001 E0078003C0078007800F001E00FFFFF0001F1F7E9E22>I<01FFFFE000001E003800001E 000E00001E000700001E000700003C000380003C000380003C0001C0003C0001C0007800 01C000780001C000780001C000780001C000F00003C000F00003C000F00003C000F00003 C001E000078001E000078001E000070001E0000F0003C0000E0003C0001E0003C0001C00 03C00038000780007000078000E000078001C00007800700000F001C0000FFFFF0000022 1F7E9E26>68 D<01FFFFFF001E001E001E0006001E0006001E0002003C0002003C000200 3C0002003C00020078000400780200007802000078020000F0040000F00C0000FFFC0000 F00C0001E0080001E0080001E0080001E0080003C0000003C0000003C0000003C0000007 8000000780000007800000078000000F800000FFFC0000201F7E9E1D>70 D<00007F00800003C0C180000E00230000380017000070000F0000E0000F0001C0000600 038000060007000006000F000006000E000004001E000004003C000000003C0000000078 00000000780000000078000000007800000000F000000000F0003FFE00F00000F000F000 00F000700001E000700001E000700001E000700001E000380003C000380003C0001C0007 C0000E0005C000070019800001C0608000007F80000021217F9F24>I<01FFF0FFF8001F 000F80001E000F00001E000F00001E000F00003C001E00003C001E00003C001E00003C00 1E000078003C000078003C000078003C000078003C0000F000780000FFFFF80000F00078 0000F000780001E000F00001E000F00001E000F00001E000F00003C001E00003C001E000 03C001E00003C001E000078003C000078003C000078003C000078003C0000F8007C000FF F87FFC00251F7E9E26>I<01FFF0001F00001E00001E00001E00003C00003C00003C0000 3C0000780000780000780000780000F00000F00000F00000F00001E00001E00001E00001 E00003C00003C00003C00003C0000780000780000780000780000F8000FFF000141F7E9E 14>I<01FFF800001F0000001E0000001E0000001E0000003C0000003C0000003C000000 3C00000078000000780000007800000078000000F0000000F0000000F0000000F0000001 E0000001E0000001E0000001E0004003C0008003C0008003C0018003C001000780030007 8003000780060007800E000F007C00FFFFFC001A1F7E9E1F>76 D<01FFFFE0001E007800 1E001C001E000E001E000F003C000F003C000F003C000F003C000F0078001E0078001E00 78003C0078007800F000E000F003C000FFFE0000F0000001E0000001E0000001E0000001 E0000003C0000003C0000003C0000003C00000078000000780000007800000078000000F 800000FFF80000201F7E9E1D>80 D<0000FF00000781C0001C00E0003800700070003801 E0001C03C0001C0380001E0700001E0F00000E1E00000E1E00000E3C00000E3C00001E78 00001E7800001E7800001E7800001EF000003CF000003CF0000038F0000078F000007070 0000F0700000E0700E01C078300380384087001C408E001C409C000E40F00003C1C02000 FFC0200000C0600000C0400000C0C00000E1800000FF800000FF0000007E0000003C001F 297F9F24>I<01FFFF80001E00F0001E0038001E001C001E001C003C001E003C001E003C 001E003C001E0078003C0078003C00780078007800F000F001C000F0070000FFF80000F0 0E0001E0070001E0078001E0038001E003C003C0078003C0078003C0078003C007800780 0F0007800F0207800F0207800F040F800704FFF80308000001F01F207E9E23>I<7FFC07 FE07C000F00780004007800040078000400F0000800F0000800F0000800F0000801E0001 001E0001001E0001001E0001003C0002003C0002003C0002003C00020078000400780004 007800040078000400F0000800F0000800F0000800F00010007000200070002000700040 0038008000180300000E0C000003F000001F207D9E1F>85 D<00FFF01FF8000FC0078000 0F80060000078004000007C008000007C010000003C020000003E040000001E0C0000001 F180000001F300000000F200000000FC0000000078000000007C000000007C000000007C 00000000BE000000011E000000021F000000041F0000000C0F000000180F800000100780 00002007C000004007C000008003C000010003E000070001E0001F0003F000FFC01FFE00 251F7F9E26>88 D<00F1800389C00707800E03801C03803C038038070078070078070078 0700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E93 18>97 D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E 380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F 14>I<007C0001C3000700800E07801E07801C07003C0200780000780000780000F00000 F00000F00000F00000F000007001007002003004001838000FC00011147E9314>I<0000 780003F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1 C00389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E 00F00E10F01C20F01C20703C20705C40308C400F078015207E9F18>I<007C018207010E 011C013C013802780C7BF07C00F000F000F000F000700070017002300418380FC010147E 9315>I<00007C0000CE00019E00039E00030C000700000700000700000700000E00000E 00000E0000FFF0000E00000E00001C00001C00001C00001C00001C000038000038000038 0000380000380000700000700000700000700000700000E00000E00000E00000E00000C0 0001C000318000798000F300006200003C000017297E9F16>I<01E0000FE00001C00001 C00001C00001C000038000038000038000038000070000070000071F000761800E80C00F 00C00E00E00E00E01C01C01C01C01C01C01C01C038038038038038038038070470070870 0E08700E10700610E006206003C016207E9F1A>104 D<00E001E001E000C00000000000 0000000000000000000E00130023804380438043808700070007000E000E001C001C001C 20384038403840388019000E000B1F7E9E10>I<0000C00001E00001E00001C000000000 0000000000000000000000000000000000001E0000230000438000838001038001038002 0700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C0000 380000380000380000380000700000700030700078E000F1C0006380003E00001328819E 13>I<01E0000FE00001C00001C00001C00001C000038000038000038000038000070000 0700000701E00706100E08700E10F00E20F00E20601C40001D80001E00001FC000387000 383800383800381C20703840703840703840701880E01880600F0014207E9F18>I<01C0 1FC0038003800380038007000700070007000E000E000E000E001C001C001C001C003800 3800380038007000700070007100E200E200E200E200640038000A207E9F0E>I<1E07C0 7C00231861860023A032030043C034030043803803804380380380870070070007007007 00070070070007007007000E00E00E000E00E00E000E00E00E000E00E01C101C01C01C20 1C01C038201C01C038401C01C0184038038018801801800F0024147E9328>I<1E078023 18C023A06043C0704380704380708700E00700E00700E00700E00E01C00E01C00E01C00E 03821C03841C07041C07081C03083803101801E017147E931B>I<007C0001C300030180 0E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700 700F00700E0030180018700007C00013147E9316>I<03C1E004621804741C08781C0870 1E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380780380700380 E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FFC0 00171D819317>I<1C1E002621004743804787804707804703008E00000E00000E00000E 00001C00001C00001C00001C000038000038000038000038000070000030000011147E93 15>114 D<00FC000303000600800C01800C03800C03000E00000F80000FF80007FC0001 FE00001F00000700700700F00600F00600E004004008002030001FC00011147E9315>I< 018001C0038003800380038007000700FFF807000E000E000E000E001C001C001C001C00 3800380038003810702070207040708031001E000D1C7F9B10>I<0F00601180702180E0 21C0E041C0E04380E08381C00701C00701C00701C00E03800E03800E03800E03840E0708 0C07080C07080E0F1006131003E1E016147E931A>I<1E01C02303C02303E04381E04300 E04700608700400E00400E00400E00401C00801C00801C00801C01001C01001C02001C04 000C04000E180003E00013147E9316>I<0F006070118070F02180E0F821C0E07841C0E0 384380E0188381C0100701C0100701C0100701C0100E0380200E0380200E0380200E0380 400E0380400E0380800E078080060781000709C20001F07C001D147E9321>I<03C1C00C 62201034701038F02038F020386040700000700000700000700000E00000E00000E00000 E02061C040F1C040F1C080E2C080446300383C0014147E931A>I<01C02003F04007F8C0 0C1F8008010000020000040000080000100000600000C000010000020000040080080100 1003003F060063FE0040FC0080700013147E9315>122 D E /Fr 85 124 df<001F83E000F06E3001C078780380F8780300F0300700700007007000070070 0007007000070070000700700007007000FFFFFF80070070000700700007007000070070 000700700007007000070070000700700007007000070070000700700007007000070070 0007007000070070000700700007007000070070003FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700 00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 E00700E00700E00700E00700E00700E00700E00700E03FC3FC1620809F19>I<003FE000 E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007 00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007 00E00700E00700E00700E00700E00700E03FE7FC1620809F19>I<001F81F80000F04F04 0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000 070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007 007007000700700700070070070007007007000700700700070070070007007007000700 700700070070070007007007000700700700070070070007007007000700700700070070 07003FE3FE3FE02320809F26>I<7038F87CFC7EFC7E743A040204020402080408041008 1008201040200F0E7F9F17>34 D<00018030000001803000000180300000018030000003 0060000003006000000300600000030060000003006000000600C000000600C000000600 C000000600C000000600C000000C0180007FFFFFFF00FFFFFFFF80001803000000180300 00003006000000300600000030060000003006000000600C000000600C0000FFFFFFFF80 7FFFFFFF0000C01800000180300000018030000001803000000180300000018030000003 0060000003006000000300600000030060000003006000000600C000000600C000000600 C0000021297E9F26>I<078000180018400018003020003000301800E000601703600060 08FCC000E008018000E008018000E008030000E008060000E008060000E0080C00006008 18000060101800003010300000302060000018406000000780C000000001807800000181 8400000303020000030301000006070100000C060100000C0E008000180E008000300E00 8000300E008000600E008000C00E008000C00E0080018006010003000701000300030100 06000302000C00018400040000780021257EA126>37 D<00780000008400000184000003 020000070200000702000007020000070200000704000007040000070800000708000003 90000003A00FFC03C001E003C000C001C0008001C0010002E0010004E002000870020018 78040030380800703C0800701C1000F00E1000F00F2000F007C000F00380047001C00478 02E008380470181C183C3007E00FC01E227EA023>I<70F8FCFC74040404080810102040 060E7C9F0D>I<0040008001000300060004000C00180018003800300030007000600060 0060006000E000E000E000E000E000E000E000E000E000E000E000E00060006000600060 007000300030003800180018000C000400060003000100008000400A2E7BA112>I<8000 400020003000180008000C00060006000700030003000380018001800180018001C001C0 01C001C001C001C001C001C001C001C001C001C001800180018001800380030003000700 060006000C000800180030002000400080000A2E7EA112>I<0003000000030000000300 000003000000030000000300000003000000030000000300000003000000030000000300 00000300000003000000030000FFFFFFFCFFFFFFFC000300000003000000030000000300 000003000000030000000300000003000000030000000300000003000000030000000300 0000030000000300001E207E9A23>43 D<70F0F8F878080808101010202040050E7C840D >II<70F8F8F87005057C840D>I<0000400000C0000180000180 000180000300000300000300000600000600000C00000C00000C00001800001800001800 00300000300000600000600000600000C00000C00000C000018000018000018000030000 0300000600000600000600000C00000C00000C0000180000180000300000300000300000 600000600000600000C00000C00000122D7EA117>I<03F0000E1C001C0E001806003807 00700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003 C0F003C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E 000E1C0003F000121F7E9D17>I<008003800F80F3800380038003800380038003800380 0380038003800380038003800380038003800380038003800380038003800380038007C0 FFFE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0F803C0F803C0 F803C02007C00007C0000780000780000F00000E00001C0000380000700000600000C000 0180000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0 000C1C00100E00200F00780F80780780780780380F80000F80000F00000F00001E00001C 0000700007F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807 C0F00780400780400F00200E00183C0007F000121F7E9D17>I<000600000600000E0000 0E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E0008 0E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E0000 0E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE000100000100000 10000010000010000010000011F000161C00180E001007001007800003800003800003C0 0003C00003C07003C0F003C0F003C0E00380400380400700200600100C0008380007E000 121F7E9D17>I<007C000182000701000E03800C07801807803803003800007800007000 00700000F1F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003 C07003C07003C07003803803803807001807000C0E00061C0001F000121F7E9D17>I<40 00007FFFE07FFFC07FFFC040008080010080010080020000040000040000080000100000 100000200000200000600000600000E00000C00001C00001C00001C00001C00003C00003 C00003C00003C00003C00003C00003C000018000131F7E9D17>I<03F0000C0C00100600 3003002001806001806001806001807001807803003E03003F06001FC8000FF00003F800 07FC000C7E00103F00300F806007806001C0C001C0C000C0C000C0C000C0C00080600180 2001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C003806003807007007 00700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180B C00E13C003E3C0000380000380000380000700300700780600780E00700C002018001070 000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D> I<70F8F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D> I<7FFFFFF8FFFFFFFC000000000000000000000000000000000000000000000000000000 0000000000FFFFFFFC7FFFFFF81E0C7E9023>61 D<000100000003800000038000000380 000007C0000007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F0 0000207800002078000020780000403C0000403C0000C03E0000801E0000801E0001FFFF 0001000F0001000F00020007800200078002000780040003C0040003C00C0003C01E0003 E0FF801FFE1F207F9F22>65 DI< 000FE01000381C3000E0027003C00170078000F00F0000701E0000701E0000303C000030 3C0000107C00001078000010F8000000F8000000F8000000F8000000F8000000F8000000 F8000000F8000000F8000000780000007C0000103C0000103C0000101E0000201E000020 0F0000200780004003C0008000E0030000380C00000FF0001C217E9F21>IIII<000FE01000381C30 00E0027003C00170078000F00F0000701E0000701E0000303C0000303C0000107C000010 78000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFE F80001F0780000F07C0000F03C0000F03C0000F01E0000F01E0000F00F0000F0078000F0 03C0017000E0023000380C10000FF0001F217E9F24>III<07FFC0003E00001E00001E00001E00001E00001E00001E00001E00001E 00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E 00001E00201E00F81E00F81E00F81E00F01C00403C006038001070000FC00012207F9E17 >IIIII<001FE0000070380001C00E000380 0700070003800F0003C01E0001E03C0000F03C0000F07C0000F87C0000F878000078F800 007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C7800 00787C0000F87C0000F83C0000F03E0001F01E0001E00F0003C0070003800380070001E0 1E0000703800001FE0001E217E9F23>II<001FE0000070380001C00E0003800700070003800F0003C01E0001E03E0001F0 3C0000F07C0000F87C0000F878000078F800007CF800007CF800007CF800007CF800007C F800007CF800007CF800007CF800007C780000787C0000F87C0000F83C0000F03E0781F0 1E0841E00F1023C0071023800390170001D01E0000783804001FF80400001C0400000C0C 00000E1C00000FF800000FF8000007F8000007F0000001E01E297E9F23>II<03F0400C0CC01803C03001C06000 C06000C0E000C0E00040E00040E00040F00000F800007C00007F80003FF8001FFF0007FF 8000FFC0001FE00003E00001E00000F0000070800070800070800070800070C00060C000 E0E000C0F80180C6030081FC0014217E9F19>I<7FFFFFE0780F01E0600F0060400F0020 400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC00 1C1F7E9E21>IIII<7FF81FF80FE007C007C0030003C0020003E0060001F0040000F00800 00F8180000781000003C2000003E6000001E4000000F8000000F8000000780000003C000 0007E0000005E0000008F0000018F8000010780000207C0000603E0000401E0000801F00 01000F8001000780020007C0060003C01F0007E0FFC01FFE1F1F7F9E22>II<7FFFFE7E003C78003C7000786000F86000F0 4001E04003E04003C0400780000780000F00001E00001E00003C00007C0000780000F000 01F00001E00203C00203C0020780020F80060F00061E00043E000C3C000C78003C7800FC FFFFFC171F7E9E1C>II<08041008201020104020 4020804080408040B85CFC7EFC7E7C3E381C0F0E7A9F17>II<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E 0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>97 D<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00 001C7C001D87001E01801E00C01C00E01C00701C00701C00781C00781C00781C00781C00 781C00781C00701C00F01C00E01E00C01A0180198700107C0015207E9F19>I<01FC0007 06001C0F00380F00380600780000700000F00000F00000F00000F00000F00000F0000070 00007800003800803800801C010007060001F80011147F9314>I<0001C0000FC00001C0 0001C00001C00001C00001C00001C00001C00001C00001C00001C001F1C0070DC00C03C0 1801C03801C07801C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07001C0 3801C01803C00C03C0070DC001F1F815207F9F19>I<03F0000E1C001C0E003807003807 00700700700380F00380F00380FFFF80F00000F00000F000007000007000003800803800 801C010007060001F80011147F9314>I<007C01C6030F070F0E060E000E000E000E000E 000E000E00FFF00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E007FE01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F 00780F00780F00780F00380E001C1C001E380033E0002000002000003000003000003FFE 001FFF801FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC 00141F7F9417>I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C 00001C00001C00001C7C001C86001D03001E03801E03801C03801C03801C03801C03801C 03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014207E9F 19>I<38007C007C007C0038000000000000000000000000001C00FC001C001C001C001C 001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091F7F9E0C>I< 00E001F001F001F000E0000000000000000000000000007007F000F00070007000700070 007000700070007000700070007000700070007000700070007000700070007000706070 F060F0C061803F000C28829E0E>I<1C0000FC00001C00001C00001C00001C00001C0000 1C00001C00001C00001C00001C00001C1FE01C07801C06001C04001C08001C10001C2000 1C60001CE0001DF0001E70001C38001C3C001C1C001C0E001C0F001C07001C07801C07C0 FF9FF014207E9F18>I<1C00FC001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00 FF8009207F9F0C>I<1C3E03E000FCC30C30001D039038001E01E01C001E01E01C001C01 C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0 1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF 8021147E9326>I<1C7C00FC86001D03001E03801E03801C03801C03801C03801C03801C 03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014147E93 19>I<01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0 F000F0F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<1C7C 00FD87001E01801E01C01C00E01C00F01C00701C00781C00781C00781C00781C00781C00 781C00701C00F01C00E01E01C01E03801D87001C7C001C00001C00001C00001C00001C00 001C00001C00001C0000FF8000151D7E9319>I<01F040070CC00E02C01C03C03801C078 01C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07801C03801C01C03C00C 05C00709C001F1C00001C00001C00001C00001C00001C00001C00001C00001C0000FF815 1D7F9318>I<1CF0FD181E3C1E3C1E181C001C001C001C001C001C001C001C001C001C00 1C001C001C001C00FFC00E147E9312>I<0FC830386018C008C008C008E0007C003FE01F F007F8003C800E8006C006C006C004E00CD81887E00F147F9312>I<0200020002000600 06000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E04 0E040E040E040708030801F00E1C7F9B12>I<1C0380FC1F801C03801C03801C03801C03 801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07 80061B8003E3F014147E9319>IIIII<7FFF700E600E401C40384078407000E001E001C00380078007010E011E011C 0338027006700EFFFE10147F9314>II E /Fs 45 124 df<000FE000007FF80000F81C0001E07C0003E07C0007C07C0007C07C0007C038 0007C0000007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C03E0007C03E0007C03E 0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E 0007C03E0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>12 D45 D<387CFEFEFE7C3807077C860F>I<01FC0007FF 001F07C01E03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01 F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E03E01E03 C01F8FC007FF0001FC00151D7E9C1A>48 D<00700000F00007F000FFF000F9F00001F000 01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F000 01F00001F00001F00001F00001F00001F00001F00001F00001F0007FFFC07FFFC0121D7D 9C1A>I<03FC001FFF80381FC07C07E0FE03F0FE03F0FE03F8FE01F87C01F83801F80003 F80003F00003F00007E0000FC0000F00001E00003C0000700000E00001C0180380180600 180C00381FFFF03FFFF07FFFF0FFFFF0FFFFF0151D7E9C1A>I<03FC000FFF801C0FC03C 07E07E03F07E03F07E03F07E07F03C07E00007E0000FC0003F8003FE0003FC00000F8000 07C00003E00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC03F07807E03C0FC01F FF8003FC00151D7E9C1A>I<0001C00003C00007C00007C0000FC0001FC0003BC00073C0 0063C000C3C00183C00383C00703C00E03C00C03C01803C03803C07003C0E003C0FFFFFE FFFFFE0007C00007C00007C00007C00007C00007C000FFFE00FFFE171D7F9C1A>I<1C00 E01FFFE01FFFC01FFF801FFF001FFC001FC00018000018000018000018000019FE001FFF 801E07C01803E01001F00001F00001F80001F87801F8FC01F8FC01F8FC01F8FC01F07803 F07003E03C0FC00FFF0003FC00151D7E9C1A>I<003F0001FFC007C0E00F81E01F03F01E 03F03E03F07C03F07C01E07C0000FC1000FCFF00FDFFC0FD03E0FE01F0FE01F0FC01F8FC 01F8FC01F8FC01F87C01F87C01F87C01F83C01F03E01F01E03E00F07C007FF8001FE0015 1D7E9C1A>I<6000007FFFF87FFFF87FFFF07FFFE07FFFC0E00180C00300C00300C00600 000C0000180000380000300000700000F00000F00001E00001E00003E00003E00003E000 03E00007E00007E00007E00007E00007E00003C000018000151E7D9D1A>I<01FE000FFF 801E07C03801E03800F07800F07800F07C00F07F00F07FC1E03FE3C01FFF800FFE0007FF 8007FFC01FFFE03C3FF0780FF07803F8F001F8F000F8F00078F00078F000707800707C00 E03E03C00FFF8003FC00151D7E9C1A>I<01FC000FFF001F07803E03C07C03E07C01E0FC 01F0FC01F0FC01F0FC01F8FC01F8FC01F8FC01F87C03F87C03F83E05F81FFDF807F9F800 41F80001F03C01F07E01F07E03E07E03E07E03C03C0780381F001FFC0007F000151D7E9C 1A>I<0000E000000000E000000001F000000001F000000001F000000003F800000003F8 00000006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F00 0000303F800000301F800000701FC00000600FC00000600FC00000C007E00000FFFFE000 01FFFFF000018003F000038003F800030001F800030001F800060000FC00060000FC000E 0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 DI69 D73 D76 DI80 D<03FC080FFF381E03F838 00F8700078700038F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFC00F FFE007FFF000FFF80007F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F8 0070FE01E0EFFFC081FF00161F7D9E1D>83 D<7FFFFFFC7FFFFFFC7C07E07C7007E01C60 07E00C6007E00CE007E00EC007E006C007E006C007E006C007E0060007E0000007E00000 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 07E0000007E0000007E0000007E0000007E0000007E00003FFFFC003FFFFC01F1E7E9D24 >II<07FC001FFF803F07C03F03E03F01F03F 01F00C01F00001F0003FF007FDF01F81F03E01F07C01F0F801F0F801F0F801F0FC02F07E 0CF03FF87E0FE03E17147F9319>97 DI<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC 0000FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF0001FC0013 147E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F80000F80000F8 0000F80000F801F8F807FEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8 FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D> I<01FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC00 00FC00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>I<003F8000 FFC003E3E007C7E00787E00F87E00F83C00F80000F80000F80000F80000F8000FFFC00FF FC000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F 80000F80000F80000F80000F80007FF8007FF80013207F9F10>I<03FC3C0FFFFE1E079E 3C03DE7C03E07C03E07C03E07C03E07C03E03C03C01E07801FFF0013FC00300000300000 3800003FFF801FFFF00FFFF81FFFFC78007C70003EF0001EF0001EF0001E78003C78003C 3F01F80FFFE001FF00171E7F931A>II<1C003E007F007F007F003E001C000000000000000000000000 00FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 00FFE0FFE00B217EA00E>I108 DII<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC00 7EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A >II<01F81807FE381F87783F01F8 3E01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F8 3F01F81F87F80FFEF803F8F80000F80000F80000F80000F80000F80000F80000F80007FF 0007FF181D7E931C>II<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E0 07F006F81EFFFCC7F010147E9315>I<0300030003000300070007000F000F003F00FFFC FFFC1F001F001F001F001F001F001F001F001F001F001F061F061F061F061F060F8C07F8 03F00F1D7F9C14>II120 DI< FFFFFF80FFFFFF801902808C1A>123 D E /Ft 51 123 df45 D<387CFEFEFE7C3807077C8610>I<00180000780001F800FFF800FFF80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8 FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E00 00380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0 FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03 F81F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000 FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE001720 7E9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000 E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFFFF FFFF0007E00007E00007E00007E00007E00007E00007E000FFFF00FFFF18207E9F1C>I< 3000203E01E03FFFC03FFF803FFF003FFE003FF80033C000300000300000300000300000 31FC0037FF003E0FC03807E03003E00003F00003F00003F80003F83803F87C03F8FE03F8 FE03F8FC03F0FC03F07007E03007C03C1F800FFF0003F80015207D9F1C>I<001F8000FF E003E07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFF E0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C00 7C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7F FFFE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C0000 1C0000180000380000780000780000F00000F00000F00001F00001F00001F00003F00003 F00003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC00703E0 0E00F01C00F01C00783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC0 03FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001EF8001C 7800383C00381F00F00FFFC001FF0017207E9F1C>I<01FE0007FF800F83E01E01F03E00 F07C00F87C0078FC007CFC007CFC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01 FE1E037E0FFE7E07FC7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01E01E03 C01C0F800FFE0003F80017207E9F1C>I<000070000000007000000000F800000000F800 000000F800000001FC00000001FC00000003FE00000003FE00000003FE000000067F0000 00067F0000000C7F8000000C3F8000000C3F800000181FC00000181FC00000301FE00000 300FE00000700FF000006007F000006007F00000C007F80000FFFFF80001FFFFFC000180 01FC00018001FC00030001FE00030000FE00070000FF000600007F000600007F00FFE007 FFF8FFE007FFF825227EA12A>65 DI<0003FE0080001FFF818000FF01E38001F8003F8003E0001F 8007C0000F800F800007801F800007803F000003803F000003807F000001807E00000180 7E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE 00000000FE000000007E000000007E000001807F000001803F000001803F000003801F80 0003000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE 000021227DA128>IIII 72 DI76 DI<00 07FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F001F80 003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE0000 0FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F E07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F000FC0007E00 07E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>79 DI< FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0007F0007 F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007F0 01F80007F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F001 FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC 0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF800FF027227EA12A>82 D<01FE0207FF861F01FE3C007E7C001E78000E78000EF80006F80006FC0006FC0000FF00 00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F00003F0000 3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F >I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801 C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F800000003F8000001FFFFF00001FFFFF00022227EA127>II<0FFC003F FF807E07C07E03E07E01E07E01F03C01F00001F00001F0003FF003FDF01FC1F03F01F07E 01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC00 00FC0000FC0000FC00007C00007E00007E00003E00181F00300FC06007FFC000FF001516 7E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E 0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E 003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E 00FC003E00FC003E007C003E007C003E003E007E001F00FE000F83BE0007FF3FC001FC3F C01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FF FFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000 FF0015167E951A>I<001FC0007FE000F1F001E3F003E3F007C3F007C1E007C00007C000 07C00007C00007C00007C000FFFE00FFFE0007C00007C00007C00007C00007C00007C000 07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000 3FFC003FFC00142380A211>I<01FE0F0007FFBF800F87C7801F03E7801E01E0003E01F0 003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C0000FFF800009FE00 0018000000180000001C0000001FFFE0000FFFF80007FFFE001FFFFF003C003F0078000F 80F0000780F0000780F0000780F000078078000F003C001E001F007C000FFFF80001FFC0 0019217F951C>II<1C003E007F007F007F003E001C000000000000000000000000 000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F00FFE0FFE00B247EA310>I108 DII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC00 7EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE 0017167E951C>II<00 FE030007FF87000FC1C7001F006F003F003F007E003F007E001F007C001F00FC001F00FC 001F00FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E001F003E003F001F 007F000FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F0000001F0000 001F0000001F0000001F000000FFE00000FFE01B207E951E>II<0FF3003FFF00781F00 600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780 C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<0180000180000180 000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81 800F81800F830007C30003FE0000F80011207F9F16>IIIIII<7FFFF07FFFF07C03E07007C0600FC0E0 1F80C01F00C03E00C07E0000FC0000F80001F00003F03007E03007C0300F80701F80703F 00603E00E07C03E0FFFFE0FFFFE014167E9519>I E /Fu 46 122 df<0001FF0000001FFFC000007F80F00000FC00F80001F801F80003F803FC0007F003FC 0007F003FC0007F003FC0007F001F80007F000F00007F000000007F000000007F0000000 07F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007F001FC0007 F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0 01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001 FC0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0222A7FA9 26>12 D45 D<003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001F C07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F E07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E 0007E0FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00 FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622> I<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003FC0FF003F E0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F 000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00 E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF C0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFF8000F81FE00 1F00FE003F80FF003F807F803F807F803F807F801F807F800F007F800000FF000000FF00 0000FE000001FC000001F8000007F00000FFC00000FFF0000001FC000000FE0000007F00 00007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0 FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF80001B277DA6 22>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000 077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003 807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FF FFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 00FE00003FFFF8003FFFF8003FFFF81D277EA622>I<080003001F803F001FFFFE001FFF FC001FFFF8001FFFF0001FFFE0001FFF80001FFE00001C0000001C0000001C0000001C00 00001C0000001C0000001C7FC0001DFFF8001F80FC001E003E0008003F0000003F800000 1FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE00 1FC0FC001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B27 7DA622>I<0007F800003FFE0000FFFF0001FC078003F00F8007E01FC00FC01FC01FC01F C01F801FC03F800F803F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF8 00FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001F E07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F 0007E07E0003FFFC0000FFF000003FC0001B277DA622>I<380000003E0000003FFFFFF0 3FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00 E0003800E0007000E000E0000001C0000001C000000380000007800000070000000F0000 001F0000001E0000003E0000003E0000007E0000007C0000007C000000FC000000FC0000 00FC000000FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0000 00F80000007000001C297CA822>I<003FC00001FFF00003FFFC0007C07E000F001F001E 001F001E000F803E000F803E000F803F000F803F800F803FC00F003FF01F001FFC1E001F FE3C000FFFF80007FFE00003FFF00001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03C 01FFC07C007FE07C001FE0F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C 0003C07C0007803F000F001FC03E000FFFFC0003FFF800007FC0001B277DA622>I<007F 800001FFF00007FFF8000FE0FC001F807E003F803F007F003F007F001F80FF001F80FF00 1FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F003FE03F00 3FE01F807FE00F807FE007C1DFE003FF9FE0007E1FE000001FE000001FC000001FC00000 1FC000001F803E003F807F003F807F003F007F007E007F007C003E00F8003E03F0001FFF E0000FFF800001FE00001B277DA622>I<000003800000000007C00000000007C0000000 000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF8000000 003FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE000000 01E1FF00000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC00000 07003FC0000007003FC000000E001FE000000E001FE000001E001FF000001C000FF00000 1FFFFFF000003FFFFFF800003FFFFFF80000780007FC0000700003FC0000F00003FE0000 E00001FE0000E00001FE0001E00001FF0001C00000FF0003C00000FF80FFFE001FFFFEFF FE001FFFFEFFFE001FFFFE2F297EA834>65 DI<00003FF001800003FFFE0380000FFFFF 8780003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF00000 0F801FE0000007801FE0000007803FC0000007803FC0000003807FC0000003807F800000 03807F8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000 0000FF8000000000FF8000000000FF8000000000FF80000000007F80000000007F800000 00007FC0000003803FC0000003803FC0000003801FE0000003801FE0000007000FF00000 070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFF C0000003FFFF000000003FF8000029297CA832>I69 D73 D 76 DI80 D82 D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007 E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000 007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFC0007FFFE00007FF F000007FF000000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8F00001 F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E1FFFE00C01FF0001D297C A826>I85 D<03FF80000FFFF0001F01F8003F807E003F807E003F803F001F003F800E00 3F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F00 3F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF 0FFC01FC03FC1E1B7E9A21>97 DI<003FF80000FFFE0003F01F0007E03F800FC03F801F 803F803F801F007F000E007F0000007F000000FF000000FF000000FF000000FF000000FF 000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007 E0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003 F83FF80007E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F00 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003 F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF8 0003F03FFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007 C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FF FFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F 8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC 00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F000 07F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F000 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F 007C383F007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F 007C001F80FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003F FFF8001FFFFF001FFFFF800FFFFFC007FFFFE01FFFFFF03C0007F07C0001F8F80000F8F8 0000F8F80000F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E 287E9A22>II<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000 000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F E00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC0 1F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF00 07F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F80 0FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II<001FC0380000FFF0780003F838F80007E00DF8000F C007F8001FC007F8003F8003F8007F8003F8007F8003F8007F0003F800FF0003F800FF00 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003 F8007F8003F8003F8003F8001F8007F8000FC007F80007E01FF80003F03BF80000FFF3F8 00003FC3F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F80000003FFF8000003FFF8000003FFF8021277E9A24> II<03FE300FFFF01E03F03800F0700070F00070F0 0070F80070FE0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80007FC6000FCE0 007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<007000 00700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0 FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F00007F00007F03807F03807F03807F03807F03807F03803F03803F87001F86000FFC0 001F8015267FA51B>II119 DII E /Fv 7 123 df0 D<020002000200C218F2783AE00F800F803AE0F278C2 180200020002000D0E7E8E12>3 D21 D<060F0F0E1E1E1C3C383830707060E0C04008117F910A>48 D<0F8007C019E01C202030301040184008C00C8004800780048007000480038004800780 048004C00C400860082030301010E01E600F8007C01E0E7E8D23>I<0600060006000600 0600060006000600FFF0FFF0060006000600060006000600060006000600060006000600 06000600060006000600060006000C1D7E9611>121 D<060006000600060006000600FF F0FFF00600060006000600060006000000060006000600060006000600FFF0FFF0060006 0006000600060006000C1D7E9611>I E /Fw 29 122 df<70F8FCFC7404040404080810 102040060F7C840E>44 D<70F8F8F87005057C840E>46 D<008003800F80F38003800380 038003800380038003800380038003800380038003800380038003800380038003800380 038003800380038003800380038007C0FFFE0F217CA018>49 D<1000801E07001FFF001F FE001FF80017E00010000010000010000010000010000010000011F800120C001C070018 03801003800001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E001C080 01C04003C04003802007001006000C1C0003F00013227EA018>53 D<4000006000007FFFE07FFFC07FFFC0400080C001008001008002008002000004000008 0000080000100000200000200000600000400000C00000C00001C00001C0000180000380 000380000380000380000780000780000780000780000780000780000780000300001323 7DA118>55 D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0 F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E0 0001C00001C00001C0000380000380300380780700780600700C002018001030000FC000 13227EA018>57 D68 D<0007F008003C0C1800E0021801C001B8038000F8070000780F000038 1E0000381E0000183C0000183C0000187C0000087800000878000008F8000000F8000000 F8000000F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C000078 3C0000783C0000781E0000781E0000780F00007807000078038000B801C000B800E00318 003C0C080007F00020247DA226>71 D<03FFE0001F00000F00000F00000F00000F00000F 00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F 00000F00000F00000F00000F00000F00000F00000F00700F00F80F00F80F00F80E00F01E 00401C0020380018700007C00013237EA119>74 D76 D78 D82 D<03F0200C0C6018026030 01E07000E0600060E00060E00060E00020E00020E00020F00000F000007800007F00003F F0001FFE000FFF0003FF80003FC00007E00001E00000F00000F000007080007080007080 0070800070C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>I87 D<7FF803FF000FE001F80007C000E00003E000C00001E000800001F001800000F8010000 0078020000007C040000003E040000001E080000001F100000000FB000000007A0000000 07C000000003E000000001E000000001F000000003F80000000278000000047C0000000C 3E000000081E000000101F000000200F80000020078000004007C000008003E000008001 E000010001F000030000F800070000F8001F8000FC00FFC003FFC022227FA125>I<1FE0 00303800780C00780E0030070000070000070000070000FF0007C7001E07003C07007807 00700700F00708F00708F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E001E0E00 1E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F001723 7FA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F0 0000F00000F00000F000007000007800203800201C00400E008007030000FC0013157F94 16>101 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FF E7FF18237FA21B>104 D<1C003E003E003E001C00000000000000000000000000000000 000E007E001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E00FFC00A227FA10E>I<0E00FE001E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E00FFE00B237FA20E>108 D<0E1FC07F00FE60E183801E807201C0 0F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E 003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 3800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00 700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C038 00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038 00E01C01C00E038007070001FC0015157F9418>I<0E3CFE461E8F0F0F0F060F000E000E 000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F003FE00FF001F8003C801C800C800CC00CC0 08E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFFC 0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E040708 030801F00E1F7F9E13>I118 D121 D E /Fx 12 118 df<78FCFCFEFE7A020202020204040408081020204007147A B112>39 D<00001FE000800000FFFC01800007F00F0180000F80018380003E0000C38000 780000278000F00000178001E000000F8003C000000F800780000007800780000003800F 00000003801F00000001801E00000001803E00000001803C00000001803C00000000807C 00000000807C0000000080780000000000F80000000000F80000000000F80000000000F8 0000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8 0000000000F800000FFFFC7800000FFFFC7C0000001FC07C0000000F803C0000000F803C 0000000F803E0000000F801E0000000F801F0000000F800F0000000F80078000000F8007 C000000F8003C000000F8001E000000F8000F000001780007C00001780003E0000638000 0F8000C3800007F00781800000FFFE008000001FF000002E337CB134>71 D 76 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E070 0000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F80000007C 0000007E0000003F0000003FC000001FF800000FFF800007FFF00003FFFC0000FFFF0000 0FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F880 00007880000078800000788000007880000078C0000078C0000070E00000F0E00000E0F0 0000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83 D85 D<000000F00000001FF00000001FF000 000001F000000000F000000000F000000000F000000000F000000000F000000000F00000 0000F000000000F000000000F000000000F000000000F000000000F000000000F0000000 00F000000000F000000FC0F000007030F00001C00CF000038002F000070001F0000E0001 F0001E0000F0003C0000F0003C0000F0007C0000F000780000F000780000F000F80000F0 00F80000F000F80000F000F80000F000F80000F000F80000F000F80000F000780000F000 780000F0007C0000F0003C0000F0003C0000F0001E0000F0000E0001F000070002F00003 8004F00001C008F80000F030FF80001FC0FF8021327EB125>100 D<003F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C000F 0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F80000 00F8000000F8000000780000007C0000003C0000003C0000801E0000800E0001000F0002 000700020001C00C0000F03000001FC000191F7E9E1D>I<0F001F801F801F801F800F00 0000000000000000000000000000000000000000000007807F807F800F80078007800780 078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800FC0FFF8FFF80D307EAF12>105 D<0781FC0000FF86078000FF8801C000 0F9000E00007A000700007C00078000780003C000780003E000780001E000780001F0007 80001F000780000F000780000F800780000F800780000F800780000F800780000F800780 000F800780000F800780000F000780001F000780001F000780001E000780003E00078000 3C0007C000780007A000700007A000E000079803C00007860F00000781F8000007800000 000780000000078000000007800000000780000000078000000007800000000780000000 0780000000078000000007800000000FC0000000FFFC000000FFFC000000212D7E9E25> 112 D<0783E0FF8418FF887C0F907C07A07C07A03807C00007C00007C000078000078000 078000078000078000078000078000078000078000078000078000078000078000078000 0780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00 003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000 1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<078000F000FF80 1FF000FF801FF0000F8001F000078000F000078000F000078000F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078000F000 078001F000078001F000078001F000038002F00003C004F00001C008F800007030FF8000 1FC0FF80211F7E9E25>117 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 652 228 a Fx(Sup)r(erLU)21 b(Users')g(Guide)429 354 y Fw(James)15 b(W.)h(Demmel)834 336 y Fv(\003)968 354 y Fw(John)h(R.)e(Gilb)q(ert)1307 336 y Fv(y)1443 354 y Fw(Xiao)o(y)o(e)g(S.)h(Li)1704 336 y Fv(z)772 456 y Fw(No)o(v)o(em)o(b)q(er)d(15,)k(1997)0 717 y Fu(Con)n(ten)n(ts)0 876 y Ft(I)56 b(Sequen)n(tial)17 b(Sup)r(erLU)1353 b(3)0 978 y Fs(1)42 b(In)o(tro)q(duction)1569 b(4)68 1034 y Fr(1.1)46 b(Ab)q(out)15 b(Sup)q(erLU)h Fq(:)23 b(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)64 b Fr(4)68 1091 y(1.2)46 b(Av)m(ailabilit)o(y)36 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)64 b Fr(4)68 1147 y(1.3)46 b(Ho)o(w)14 b(to)h(call)h(a)f(Sup)q(erLU)i(routine)37 b Fq(:)23 b(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)64 b Fr(4)0 1249 y Fs(2)42 b(Matrix)18 b(data)g(structures)1331 b(6)0 1351 y(3)42 b(P)o(erm)o(utations)1548 b(9)68 1408 y Fr(3.1)46 b(Ordering)16 b(for)e(sparsit)o(y)23 b Fq(:)g(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(11)68 1464 y(3.2)k(P)o(artial)15 b(piv)o(oting)h(with)f(threshold)36 b Fq(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)42 b Fr(11)0 1566 y Fs(4)g(User-callable)20 b(routines)1333 b(12)68 1622 y Fr(4.1)46 b(Driv)o(er)15 b(routines)33 b Fq(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(12)68 1679 y(4.2)k(Computational)15 b(routines)38 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(13)0 1781 y Fs(5)g(Matlab)19 b(in)o(terface)1452 b(13)0 1883 y(6)42 b(Memory)16 b(managemen)o(t)h(for)g Fq(L)h Fs(and)g Fq(U)1052 b Fs(15)p 0 1922 780 2 v 51 1949 a Fp(\003)69 1965 y Fo(Computer)10 b(Science)g(Division)q(,)i(Univ)o(ersit)o(y)f(of) e(California,)j(Berk)o(eley)m(,)f(CA)e(94720)h(\(demmel@cs.b)q(erk)o (eley)m(.edu\).)18 b(The)9 b(researc)o(h)0 2011 y(of)19 b(Demmel)h(and)g(Li)g(w)o(as)f(supp)q(orted)i(in)f(part)g(b)o(y)g(NSF)f (gran)o(t)h(ASC{9313958,)i(DOE)d(gran)o(t)h(DE{F)o(G03{94ER25219,)j(UT) 0 2056 y(Sub)q(con)o(tract)17 b(No.)e(ORA4466)h(from)f(ARP)m(A)g(Con)o (tract)h(No.)f(D)o(AAL03{91{C0047,)i(DOE)f(gran)o(t)f(DE{F)o (G03{94ER25206)q(,)j(and)0 2102 y(NSF)13 b(Infrastructure)h(gran)o(ts)f (CD)o(A{8722788)i(and)e(CD)o(A{9401156.)53 2133 y Fp(y)69 2149 y Fo(Xero)o(x)h(P)o(alo)h(Alto)f(Researc)o(h)h(Cen)o(ter,)f(3333)g (Co)o(y)o(ote)g(Hill)i(Road,)f(P)o(alo)f(Alto,)h(CA)e(94304)i(\(gilb)q (ert@parc.xero)o(x.com\).)22 b(The)0 2195 y(researc)o(h)10 b(of)f(this)h(author)g(w)o(as)f(supp)q(orted)i(in)f(part)f(b)o(y)h(the) f(Institute)i(for)e(Mathematics)h(and)g(Its)f(Applications)j(at)e(the)f (Univ)o(ersit)o(y)i(of)0 2240 y(Minnesota)j(and)e(in)g(part)g(b)o(y)g (D)o(ARP)m(A)g(Con)o(tract)g(No.)k(D)o(ABT63-95-C0087.)h(Cop)o(yrigh)o (t)1356 2239 y(c)1345 2240 y Fn(\015)12 b Fo(1994-1997)h(b)o(y)f(Xero)o (x)f(Corp)q(oration.)0 2286 y(All)j(righ)o(ts)g(reserv)o(ed.)53 2317 y Fp(z)69 2333 y Fo(National)k(Energy)f(Researc)o(h)g(Scien)o (ti\014c)i(Computing)e(\(NERSC\),)f(La)o(wrence)h(Berk)o(eley)g (National)h(Lab,)f(1)f(Cyclotron)i(Rd,)0 2378 y(Berk)o(eley)m(,)11 b(CA)d(94720)h(\(xiao)o(y)o(e@nersc.go)o(v\).)18 b(This)9 b(w)o(ork)g(w)o(as)g(supp)q(orted)h(in)g(part)f(b)o(y)g(the)g (Director,)i(O\016ce)d(of)h(Computational)i(and)0 2424 y(T)m(ec)o(hnology)16 b(Researc)o(h,)g(Division)i(of)c(Mathematical,)j (Information,)f(and)f(Computational)j(Sciences)e(of)e(the)h(U.S.)f (Departmen)o(t)0 2470 y(of)f(Energy)h(under)f(con)o(tract)h(n)o(um)o(b) q(er)g(DE-A)o(C03-76SF00098.)964 2795 y Fr(1)p eop %%Page: 2 2 2 1 bop 0 46 a Fs(7)42 b(Installation)1573 b(16)68 102 y Fr(7.1)46 b(File)16 b(structure)28 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(16)68 159 y(7.2)k(T)l(esting)h Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)42 b Fr(17)68 215 y(7.3)k(P)o(erformance-tuning)15 b(parameters)23 b Fq(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(18)68 271 y(7.4)k(Error)14 b(handling)41 b Fq(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)42 b Fr(19)0 373 y Fs(8)g(Statistics)1623 b(19)0 475 y(9)42 b(Example)18 b(programs)1399 b(20)68 532 y Fr(9.1)46 b(Rep)q(eated)16 b(factorizations)42 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) 42 b Fr(20)68 588 y(9.2)k(Calling)16 b(from)f(F)l(ortran)24 b Fq(:)f(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)42 b Fr(20)0 747 y Ft(I)r(I)55 b(Multithreading)18 b(Sup)r(erLU)1183 b(23)0 849 y Fs(10)16 b(Storage)i(t)o(yp)q(es)f(for)g Fq(L)h Fs(and)f Fq(U)1240 b Fs(24)0 951 y(11)16 b(User-callable)k (routines)1333 b(25)68 1007 y Fr(11.1)23 b(Driv)o(er)15 b(routines)33 b Fq(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(25)68 1064 y(11.2)23 b(Computational)15 b(routines)38 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(26)0 1166 y Fs(12)16 b(Installation)k(and)e(troublesho)q(oting) 1096 b(26)68 1222 y Fr(12.1)23 b(Av)m(ailabilit)o(y)36 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(26)68 1278 y(12.2)23 b(File)16 b(structure)28 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(27)68 1335 y(12.3)23 b(P)o(erformance)14 b(issues)30 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)42 b Fr(27)173 1391 y(12.3.1)27 b(Memory)15 b(managemen)o(t)f(for)h Fq(L)g Fr(and)g Fq(U)38 b(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)42 b Fr(27)173 1448 y(12.3.2)27 b(Symmetric)16 b(structure)f(pruning)36 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)42 b Fr(28)173 1504 y(12.3.3)27 b(The)16 b(inquiry)g(function)g Fm(sp)p 797 1504 15 2 v 17 w(ienv\(\))11 b Fq(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(29)0 1606 y Fs(13)16 b(P)o(orting)i(to)f(other)h(platforms)1221 b(29)68 1663 y Fr(13.1)23 b(Creating)15 b(m)o(ultiple)i(threads)33 b Fq(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(30)68 1719 y(13.2)23 b(Use)15 b(of)g(m)o(utexes)32 b Fq(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)42 b Fr(30)0 1821 y Fs(A)28 b(Sp)q(eci\014cations) 20 b(of)e(routines)f(in)h(sequen)o(tial)g(Sup)q(erLU)730 b(33)68 1877 y Fr(A.1)35 b Fm(SGSEQU)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)42 b Fr(33)68 1934 y(A.2)35 b Fm(SGSCON)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(34)68 1990 y(A.3)35 b Fm(SGSRFS)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) 42 b Fr(35)68 2047 y(A.4)35 b Fm(SGSSV)i Fq(:)22 b(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)42 b Fr(37)68 2103 y(A.5)35 b Fm(SGSSVX)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(39)68 2160 y(A.6)35 b Fm(SGSTRF)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) 42 b Fr(47)68 2216 y(A.7)35 b Fm(SGSTRS)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(49)68 2273 y(A.8)35 b Fm(SLAQGS)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(50)0 2375 y Fs(B)31 b(Sp)q(eci\014cations)20 b(of)e(routines)f(in) h(parallel)i(Sup)q(erLU)788 b(51)68 2431 y Fr(B.1)37 b Fm(PDGSSV)13 b Fq(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(51)68 2487 y(B.2)37 b Fm(PDGSSVX)24 b Fq(:)e(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)42 b Fr(54)68 2544 y(B.3)37 b Fm(PDGSTRF)24 b Fq(:)e(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)42 b Fr(61)964 2795 y(2)p eop %%Page: 3 3 3 2 bop 0 46 a Fu(P)n(art)23 b(I)0 149 y Fl(Sequen)m(tial)36 b(Sup)s(erLU)964 2795 y Fr(3)p eop %%Page: 4 4 4 3 bop 0 46 a Fu(1)69 b(In)n(tro)r(duction)0 149 y Ft(1.1)56 b(Ab)r(out)18 b(Sup)r(erLU)0 235 y Fr(The)e(Sup)q(erLU)i(pac)o(k)m(age) e(con)o(tains)g(a)g(set)f(of)h(subroutines)h(to)e(solv)o(e)h(sparse)g (linear)h(systems)f Fq(AX)h Fr(=)e Fq(B)r Fr(.)23 b(Here)0 291 y Fq(A)15 b Fr(is)g(a)g(square,)f(nonsingular,)i Fq(n)9 b Fk(\002)h Fq(n)15 b Fr(sparse)f(matrix,)g(and)h Fq(X)j Fr(and)d Fq(B)j Fr(are)c(dense)i Fq(n)9 b Fk(\002)h Fq(nr)q(hs)15 b Fr(matrices,)g(where)0 348 y Fq(nr)q(hs)i Fr(is)g(the)f(n)o(um)o(b)q(er)h(of)f(righ)o(t-hand)g(sides)i(and)e (solution)h(v)o(ectors.)23 b(Matrix)15 b Fq(A)i Fr(need)g(not)f(b)q(e)h (symmetric)f(or)0 404 y(de\014nite;)e(indeed,)h(Sup)q(erLU)e(is)g (particularly)h(appropriate)e(for)g(matrices)g(with)h(v)o(ery)f (unsymmetric)h(structure.)71 460 y(The)e(pac)o(k)m(age)h(uses)g Fq(LU)k Fr(decomp)q(osition)d(with)f(partial)g(piv)o(oting,)h(and)e (forw)o(ard/bac)o(k)f(substitutions.)20 b(The)0 517 y(columns)15 b(of)g Fq(A)f Fr(ma)o(y)g(b)q(e)h(preordered)g(b)q(efore)g (factorization)g(\(either)g(b)o(y)f(the)h(user)f(or)g(b)o(y)h(Sup)q (erLU)r(\);)f(this)h(pre-)0 573 y(ordering)g(for)f(sparsit)o(y)h(is)g (completely)h(separate)f(from)f(the)g(factorization.)20 b(T)l(o)15 b(impro)o(v)o(e)f(bac)o(kw)o(ard)g(stabilit)o(y)l(,)0 630 y(w)o(e)k(pro)o(vide)i(w)o(orking)e(precision)i(iterativ)o(e)f (re\014nemen)o(t)g(subroutines)g([2].)30 b(Routines)19 b(are)g(also)f(a)o(v)m(ailable)j(to)0 686 y(equilibrate)d(the)f (system,)e(estimate)i(the)f(condition)i(n)o(um)o(b)q(er,)e(calculate)i (the)e(relativ)o(e)h(bac)o(kw)o(ard)e(error,)h(and)0 743 y(estimate)h(error)g(b)q(ounds)i(for)e(the)h(re\014ned)g (solutions.)28 b(W)l(e)18 b(also)f(include)j(a)d(Matlab)h(MEX-\014le)g (in)o(terface,)g(so)0 799 y(that)13 b(our)h(factor)f(and)h(solv)o(e)g (routines)h(can)f(b)q(e)g(called)i(as)d(alternativ)o(es)h(to)g(those)g (built)h(in)o(to)f(Matlab.)19 b(The)14 b Fq(LU)0 856 y Fr(factorization)f(routines)g(can)g(handle)i(non-square)e(matrices,)g (but)g(the)g(triangular)g(solv)o(es)g(are)g(p)q(erformed)g(only)0 912 y(for)i(square)g(matrices.)71 969 y(The)f(factorization)g (algorithm)h(uses)f(a)g(graph)g(reduction)i(tec)o(hnique)f(to)f(reduce) h(graph)f(tra)o(v)o(ersal)f(time)i(in)0 1025 y(the)g(sym)o(b)q(olic)g (analysis.)21 b(W)l(e)14 b(exploit)i(dense)f(submatrices)g(in)g(the)g (n)o(umerical)g(k)o(ernel,)g(and)g(organize)g(compu-)0 1081 y(tational)h(lo)q(ops)g(in)g(a)f(w)o(a)o(y)g(that)f(reduces)j (data)e(mo)o(v)o(emen)o(t)f(b)q(et)o(w)o(een)i(lev)o(els)h(of)e(the)g (memory)g(hierarc)o(h)o(y)l(.)22 b(The)0 1138 y(resulting)15 b(algorithm)f(is)g(highly)i(e\016cien)o(t)e(on)g(mo)q(dern)h(arc)o (hitectures.)k(The)14 b(p)q(erformance)h(gains)f(are)f(particu-)0 1194 y(larly)i(eviden)o(t)g(for)f(large)g(problems.)20 b(There)15 b(are)f(\\tuning)h(parameters")e(to)g(optimize)j(the)e(p)q (eak)h(p)q(erformance)0 1251 y(as)g(a)g(function)h(of)e(cac)o(he)i (size.)21 b(F)l(or)14 b(a)h(detailed)i(description)g(of)d(the)i (algorithm,)e(see)i(reference)g([4)o(].)71 1307 y(Sup)q(erLU)g(is)f (implemen)o(ted)h(in)g(ANSI)f(C,)g(and)f(m)o(ust)h(b)q(e)g(compiled)h (with)f(a)g(standard)f(ANSI)i(C)e(compiler.)0 1364 y(It)i(includes)j(v) o(ersions)e(for)e(b)q(oth)i(real)f(and)h(complex)g(matrices,)f(in)i(b)q (oth)e(single)i(and)e(double)i(precision.)25 b(The)0 1420 y(\014le)c(names)e(for)g(the)h(single-precision)j(real)d(v)o (ersion)g(start)e(with)i(letter)g(\\s")f(\(suc)o(h)h(as)f Fm(sgstrf.c)p Fr(\);)h(the)g(\014le)0 1477 y(names)14 b(for)e(the)i(double-precision)j(real)d(v)o(ersion)f(start)g(with)h (letter)f(\\d")h(\(suc)o(h)f(as)g Fm(dgstrf.c)p Fr(\);)g(the)g(\014le)i (names)0 1533 y(for)e(the)h(single-precision)j(complex)e(v)o(ersion)f (start)f(with)h(letter)g(\\c")g(\(suc)o(h)g(as)f Fm(cgstrf.c)p Fr(\);)g(the)h(\014le)h(names)f(for)0 1590 y(the)h(double-precision)k (complex)d(v)o(ersion)f(start)f(with)h(letter)h(\\z")f(\(suc)o(h)g(as)g Fm(zgstrf.c)p Fr(\).)0 1711 y Ft(1.2)56 b(Av)m(ailabilit)n(y)0 1797 y Fr(The)15 b(pac)o(k)m(age)h(can)f(b)q(e)h(obtained)g(from)e (Netlib)j(through)e(the)g(URL)h(address:)95 1903 y Fm (http://www.netlib.org/scalapa)o(ck/proto)o(type/)0 2010 y Fr(It)f(is)h(also)f(a)o(v)m(ailable)i(on)e(the)g(FTP)g(serv)o(er)g (at)f(UC)h(Berk)o(eley:)95 2116 y Fm(ftp)24 b(ftp.cs.berkeley.edu)95 2172 y(login:)f(anonymous)95 2229 y(ftp>)h(cd)f (/pub/src/lapack/SuperLU)95 2285 y(ftp>)h(binary)95 2342 y(ftp>)g(get)f(superlu_1.1.tar.gz)0 2463 y Ft(1.3)56 b(Ho)n(w)19 b(to)g(call)f(a)g(Sup)r(erLU)g(routine)0 2549 y Fr(As)d(a)f(simple)i(example,)f(let)h(us)e(consider)i(ho)o(w)e (to)g(solv)o(e)h(a)f(5)9 b Fk(\002)h Fr(5)k(sparse)g(linear)i(system)f Fq(AX)g Fr(=)e Fq(B)r Fr(,)j(b)o(y)e(calling)0 2606 y(a)h(driv)o(er)g (routine)h Fm(dgssv)p Fr(.)j(Figure)d(1)f(sho)o(ws)f(matrix)h Fq(A)p Fr(,)g(and)g(its)h Fq(L)f Fr(and)g Fq(U)20 b Fr(factors.)964 2795 y(4)p eop %%Page: 5 5 5 4 bop 385 56 a Fj(0)385 129 y(B)385 154 y(B)385 178 y(B)385 203 y(B)385 228 y(B)385 255 y(@)434 89 y Fq(s)76 b(u)25 b(u)441 146 y(l)g(u)492 202 y(l)j(p)587 259 y(e)d(u)441 315 y(l)37 b(l)131 b(r)671 56 y Fj(1)671 129 y(C)671 154 y(C)671 178 y(C)671 203 y(C)671 228 y(C)671 255 y(A)1024 56 y(0)1024 129 y(B)1024 154 y(B)1024 178 y(B)1024 203 y(B)1024 228 y(B)1024 255 y(@)1073 89 y Fr(19)p Fq(:)p Fr(00)187 b(21)p Fq(:)p Fr(00)59 b(21)p Fq(:)p Fr(00)1096 146 y(0)p Fq(:)p Fr(63)23 b(21)p Fq(:)p Fr(00)h Fk(\000)p Fr(13)p Fq(:)p Fr(26)g Fk(\000)p Fr(13)p Fq(:)p Fr(26)1224 202 y(0)p Fq(:)p Fr(57)59 b(23)p Fq(:)p Fr(58)82 b(7)p Fq(:)p Fr(58)1552 259 y(5)p Fq(:)p Fr(00)23 b(21)p Fq(:)p Fr(00)1096 315 y(0)p Fq(:)p Fr(63)46 b(0)p Fq(:)p Fr(57)g Fk(\000)p Fr(0)p Fq(:)p Fr(24)h Fk(\000)p Fr(0)p Fq(:)p Fr(77)24 b(34)p Fq(:)p Fr(20)1773 56 y Fj(1)1773 129 y(C)1773 154 y(C)1773 178 y(C)1773 203 y(C)1773 228 y(C)1773 255 y(A)382 428 y Fr(Original)17 b(matrix)e Fq(A)447 b Fr(F)l(actors)14 b Fq(F)19 b Fr(=)13 b Fq(L)d Fr(+)h Fq(U)k Fk(\000)10 b Fq(I)140 485 y(s)j Fr(=)g(19)p Fq(;)8 b(u)k Fr(=)h(21)p Fq(;)8 b(p)j Fr(=)i(16)p Fq(;)8 b(e)j Fr(=)i(5)p Fq(;)8 b(r)k Fr(=)h(18)p Fq(;)8 b(l)k Fr(=)h(12)477 589 y(Figure)j(1:)j(A)d(5)9 b Fk(\002)i Fr(5)k(matrix)g(and)g(its)g Fq(L)g Fr(and)h Fq(U)k Fr(factors.)71 727 y(The)15 b(program)f(\014rst) h(initializes)j(the)e(three)f(arra)o(ys,)f Fm(a[],)23 b(asub[])14 b Fr(and)i Fm(xa[])p Fr(,)e(whic)o(h)i(store)f(the)g (nonzero)0 783 y(co)q(e\016cien)o(ts)d(of)e(matrix)h Fq(A)p Fr(,)h(their)f(ro)o(w)f(indices,)k(and)d(the)g(indices)i (indicating)g(the)e(b)q(eginning)i(of)e(eac)o(h)g(column)h(in)0 840 y(the)i(co)q(e\016cien)o(t)i(and)e(ro)o(w)f(index)j(arra)o(ys.)i (This)d(storage)e(format)g(is)i(called)g(compressed)g(column)g(format,) e(also)0 896 y(kno)o(wn)i(as)g(Harw)o(ell-Bo)q(eing)j(format)c([6)o(].) 20 b(Next,)15 b(the)h(t)o(w)o(o)e(utilit)o(y)j(routines)f Fm(dCreate)p 1521 896 15 2 v 16 w(CompCol)p 1705 896 V 16 w(Matrix)f Fr(and)0 953 y Fm(dCreate)p 171 953 V 16 w(Dense)p 307 953 V 17 w(Matrix)f Fr(are)h(called)i(to)d(set)h(up)h (matrices)f Fq(A)h Fr(and)f Fq(B)r Fr(,)h(resp)q(ectiv)o(ely)l(,)g(in)g (the)g(data)e(structures)0 1009 y(in)o(ternally)k(used)g(b)o(y)e(Sup)q (erLU)r(.)24 b(The)17 b(routine)h Fm(get)p 920 1009 V 16 w(perm)p 1032 1009 V 17 w(c)f Fr(is)g(called)h(to)e(generate)h(a)f (column)i(p)q(erm)o(utation)0 1065 y(v)o(ector,)12 b(stored)g(in)i Fm(perm)p 431 1065 V 16 w(c[])p Fr(.)19 b(A)13 b(go)q(o)q(d)f(column)i (p)q(erm)o(utation)f(should)g(mak)o(e)f(the)h Fq(L)g Fr(and)g Fq(U)k Fr(factors)12 b(as)g(sparse)0 1122 y(as)17 b(p)q(ossible.)27 b(The)17 b(user)g(can)g(supply)h Fm(perm)p 776 1122 V 17 w(c[])f Fr(instead)g(of)g(using)h(the)f(one)g(pro)o (vided)h(b)o(y)f(Sup)q(erLU)q(.)25 b(After)0 1178 y(calling)d(the)f (Sup)q(erLU)g(routine)g Fm(dgssv)p Fr(,)g(the)f Fq(B)j Fr(matrix)d(is)h(o)o(v)o(erwritten)f(b)o(y)g(the)h(solution)g(matrix)f Fq(X)t Fr(.)34 b(In)0 1235 y(the)19 b(end,)i(all)f(the)f(dynamically)i (allo)q(cated)g(data)d(structures)h(are)g(de-allo)q(cated)i(b)o(y)e (calling)i(v)m(arious)f(utilit)o(y)0 1291 y(routines.)172 1275 y Fi(1)71 1348 y Fr(The)15 b(Sup)q(erLU)i(pac)o(k)m(age)e(can)g(p) q(erform)g(more)g(general)h(tasks,)e(whic)o(h)i(will)h(b)q(e)e (explained)j(later.)0 1454 y Fm(#include)23 b("dsp_defs.h")0 1510 y(#include)g("util.h")0 1623 y(main\(int)g(argc,)g(char)g (*argv[]\))0 1680 y({)95 1736 y(SuperMatrix)g(A,)g(L,)h(U,)g(B;)95 1793 y(double)71 b(*a,)24 b(*rhs;)95 1849 y(double)71 b(s,)24 b(u,)f(p,)h(e,)g(r,)f(l;)95 1906 y(int)143 b(*asub,)23 b(*xa;)95 1962 y(int)143 b(*perm_r;)23 b(/*)h(row)f(permutations)f (from)i(partial)e(pivoting)h(*/)95 2019 y(int)143 b(*perm_c;)23 b(/*)h(column)f(permutation)f(vector)h(*/)95 2075 y(int)143 b(nrhs,)23 b(info,)h(i,)f(m,)h(n,)f(nnz,)h(permc_spec;)95 2188 y(/*)g(Initialize)f(matrix)g(A.)g(*/)95 2244 y(m)h(=)g(n)g(=)f(5;) 95 2301 y(nnz)h(=)g(12;)95 2357 y(if)g(\()g(!\(a)f(=)h (doubleMalloc\(nnz\)\))d(\))j(ABORT\("Malloc)e(fails)h(for)h(a[]."\);) 95 2414 y(if)g(\()g(!\(asub)f(=)h(intMalloc\(nnz\)\))d(\))j (ABORT\("Malloc)e(fails)h(for)h(asub[]."\);)95 2470 y(if)g(\()g(!\(xa)f (=)h(intMalloc\(n+1\)\))e(\))h(ABORT\("Malloc)f(fails)i(for)f (xa[]."\);)95 2527 y(s)h(=)g(19.0;)f(u)h(=)g(21.0;)f(p)g(=)h(16.0;)f(e) h(=)g(5.0;)f(r)h(=)g(18.0;)f(l)g(=)h(12.0;)95 2583 y(a[0])g(=)f(s;)h (a[1])f(=)h(l;)g(a[2])f(=)h(l;)f(a[3])h(=)f(u;)h(a[4])f(=)h(l;)g(a[5])f (=)h(l;)p 0 2620 780 2 v 52 2647 a Fh(1)69 2663 y Fo(This)14 b(sample)g(program)g(is)f(lo)q(cated)i(in)f Fg(SuperLU/)o(EXA)o(MP)o (LE/)o(sup)o(er)o(lu.)o(c.)964 2795 y Fr(5)p eop %%Page: 6 6 6 5 bop 95 46 a Fm(a[6])24 b(=)f(u;)h(a[7])f(=)h(p;)g(a[8])f(=)h(u;)f (a[9])h(=)f(e;)h(a[10]=)f(u;)h(a[11]=)f(r;)95 102 y(asub[0])g(=)h(0;)g (asub[1])f(=)g(1;)h(asub[2])f(=)h(4;)f(asub[3])g(=)h(1;)95 159 y(asub[4])f(=)h(2;)g(asub[5])f(=)g(4;)h(asub[6])f(=)h(0;)f(asub[7]) g(=)h(2;)95 215 y(asub[8])f(=)h(0;)g(asub[9])f(=)g(3;)h(asub[10]=)f(3;) g(asub[11]=)g(4;)95 271 y(xa[0])h(=)f(0;)h(xa[1])f(=)h(3;)f(xa[2])h(=)f (6;)h(xa[3])f(=)h(8;)f(xa[4])h(=)f(10;)h(xa[5])f(=)h(12;)95 384 y(/*)g(Create)f(matrix)g(A)h(in)f(the)h(format)f(expected)g(by)g (SuperLU.)g(*/)95 441 y(dCreate_CompCol_Matrix\(&A,)e(m,)i(n,)h(nnz,)f (a,)h(asub,)f(xa,)g(NC,)h(_D,)f(GE\);)95 554 y(/*)h(Create)f (right-hand)g(side)g(matrix)g(B.)h(*/)95 610 y(nrhs)g(=)f(1;)95 667 y(if)h(\()g(!\(rhs)f(=)h(doubleMalloc\(m)e(*)h(nrhs\)\))g(\))h (ABORT\("Malloc)e(fails)h(for)h(rhs[]."\);)95 723 y(for)g(\(i)f(=)h(0;) g(i)g(<)f(m;)h(++i\))f(rhs[i])g(=)h(1.0;)95 780 y (dCreate_Dense_Matrix\(&B,)d(m,)j(nrhs,)f(rhs,)g(m,)h(DN,)f(_D,)h (GE\);)95 892 y(if)g(\()g(!\(perm_r)f(=)g(intMalloc\(m\)\))f(\))i (ABORT\("Malloc)e(fails)h(for)h(perm_r[]."\);)95 949 y(if)g(\()g(!\(perm_c)f(=)g(intMalloc\(n\)\))f(\))i(ABORT\("Malloc)e (fails)h(for)h(perm_c[]."\);)95 1062 y(/*)119 1118 y(*)g(Get)f(column)h (permutation)e(vector)h(perm_c[],)g(according)f(to)i(permc_spec:)119 1175 y(*)72 b(permc_spec)22 b(=)i(0:)g(use)f(the)g(natural)g(ordering) 119 1231 y(*)72 b(permc_spec)22 b(=)i(1:)g(use)f(minimum)g(degree)g (ordering)g(on)g(structure)g(of)h(A'*A)119 1288 y(*)72 b(permc_spec)22 b(=)i(2:)g(use)f(minimum)g(degree)g(ordering)g(on)g (structure)g(of)h(A'+A)119 1344 y(*/)95 1401 y(permc_spec)f(=)h(0;)95 1457 y(get_perm_c\(permc_spec,)d(&A,)j(perm_c\);)95 1570 y(dgssv\(&A,)f(perm_c,)g(perm_r,)g(&L,)g(&U,)h(&B,)f(&info\);)95 1683 y(dPrint_CompCol_Matrix\("A",)e(&A\);)95 1739 y (dPrint_CompCol_Matrix\("U",)g(&U\);)95 1796 y (dPrint_SuperNode_Matrix\("L",)f(&L\);)95 1852 y (PrintInt10\("\\nperm_r",)h(m,)j(perm_r\);)95 1965 y(/*)g(De-allocate)e (storage)h(*/)95 2022 y(SUPERLU_FREE)g(\(rhs\);)95 2078 y(SUPERLU_FREE)g(\(perm_r\);)95 2134 y(SUPERLU_FREE)g(\(perm_c\);)95 2191 y(Destroy_CompCol_Matrix\(&A\);)95 2247 y (Destroy_SuperMatrix_Store\(&B\))o(;)95 2304 y (Destroy_SuperNode_Matrix\(&L\);)95 2360 y (Destroy_CompCol_Matrix\(&U\);)0 2417 y(})0 2560 y Fu(2)69 b(Matrix)23 b(data)h(structures)71 2661 y Fr(Sup)q(erLU)15 b(uses)f(a)g(principal)i(data)e(structure)g Fm(SuperMatrix)e Fr(\(de\014ned)j(in)g Fm(SRC/supermatrix.h)p Fr(\))c(to)j(rep-)964 2795 y(6)p eop %%Page: 7 7 7 6 bop 0 212 a Fm(typedef)23 b(struct)g({)95 268 y(Stype_t)g(Stype;)g (/*)h(Storage)f(type:)g(indicates)g(the)g(storage)g(format)g(of)h (*Store.)f(*/)95 325 y(Dtype_t)g(Dtype;)g(/*)h(Data)f(type.)g(*/)95 381 y(Mtype_t)g(Mtype;)g(/*)h(Mathematical)e(type)i(*/)95 437 y(int)48 b(nrow;)118 b(/*)24 b(number)f(of)h(rows)f(*/)95 494 y(int)48 b(ncol;)118 b(/*)24 b(number)f(of)h(columns)f(*/)95 550 y(void)h(*Store;)70 b(/*)24 b(pointer)f(to)g(the)h(actual)f (storage)g(of)g(the)h(matrix)f(*/)0 607 y(})h(SuperMatrix;)0 720 y(typedef)f(enum)g({)95 776 y(NC,)191 b(/*)24 b(column-wise,)e(not) h(supernodal)g(*/)95 833 y(NR,)191 b(/*)24 b(row-wise,)e(not)i (supernodal)e(*/)95 889 y(SC,)191 b(/*)24 b(column-wise,)e(supernodal)g (*/)95 946 y(SR,)191 b(/*)24 b(row-wise,)e(supernodal)h(*/)95 1002 y(NCP,)167 b(/*)24 b(column-wise,)e(not)h(supernodal,)g(permuted)f (by)i(columns)430 1058 y(\(After)f(column)g(permutation,)f(the)h (consecutive)g(columns)g(of)453 1115 y(nonzeros)g(may)h(not)f(be)h (stored)f(contiguously.)f(*/)95 1171 y(DN)215 b(/*)24 b(Fortran)e(style)i(column-wise)e(storage)h(for)g(dense)h(matrix)f(*/)0 1228 y(})h(Stype_t;)0 1341 y(typedef)f(enum)g({)95 1397 y(_S,)215 b(/*)23 b(single)g(*/)95 1454 y(_D,)215 b(/*)23 b(double)g(*/)95 1510 y(_C,)215 b(/*)23 b(single-complex)f(*/)95 1567 y(_Z)239 b(/*)23 b(double-complex)f(*/)0 1623 y(})i(Dtype_t;)0 1736 y(typedef)f(enum)g({)95 1792 y(GE,)191 b(/*)24 b(general)e(*/)95 1849 y(TRLU,)143 b(/*)24 b(lower)f(triangular,)f(unit)h(diagonal)g(*/) 95 1905 y(TRUU,)143 b(/*)24 b(upper)f(triangular,)f(unit)h(diagonal)g (*/)95 1962 y(TRL,)167 b(/*)24 b(lower)f(triangular)f(*/)95 2018 y(TRU,)167 b(/*)24 b(upper)f(triangular)f(*/)95 2075 y(SYL,)167 b(/*)24 b(symmetric,)e(store)h(lower)g(half)h(*/)95 2131 y(SYU,)167 b(/*)24 b(symmetric,)e(store)h(upper)g(half)h(*/)95 2188 y(HEL,)167 b(/*)24 b(Hermitian,)e(store)h(lower)g(half)h(*/)95 2244 y(HEU)191 b(/*)24 b(Hermitian,)e(store)h(upper)g(half)h(*/)0 2300 y(})g(Mtype_t;)589 2505 y Fr(Figure)15 b(2:)20 b Fm(SuperMatrix)13 b Fr(data)i(structure.)964 2795 y(7)p eop %%Page: 8 8 8 7 bop 0 46 a Fr(resen)o(t)17 b(a)h(general)g(matrix,)g(sparse)f(or)g (dense.)28 b(Figure)18 b(2)g(presen)o(ts)f(the)h(sp)q(eci\014cation)h (of)f(the)g Fm(SuperMatrix)0 102 y Fr(structure.)25 b(The)18 b Fm(SuperMatrix)d Fr(structure)i(con)o(tains)g(t)o(w)o(o)f(lev)o(els)i (of)f(\014elds.)26 b(The)18 b(\014rst)e(lev)o(el)j(de\014nes)f(all)g (the)0 159 y(prop)q(erties)d(of)e(a)h(matrix)g(whic)o(h)g(are)g(indep)q (enden)o(t)j(of)c(ho)o(w)h(it)g(is)g(stored)g(in)h(memory)l(.)k(In)c (particular,)f(it)g(sp)q(eci-)0 215 y(\014es)e(the)g(follo)o(wing)h (three)f(orthogonal)f(prop)q(erties:)19 b(storage)10 b(t)o(yp)q(e)i(\()p Fm(Stype)p Fr(\))f(indicates)i(the)f(t)o(yp)q(e)g (of)f(the)h(storage)0 271 y(sc)o(heme)i(in)g Fm(*Store)p Fr(;)e(data)h(t)o(yp)q(e)g(\()p Fm(Dtype)p Fr(\))f(enco)q(des)i(the)g (four)e(precisions;)j(mathematical)f(t)o(yp)q(e)f(\()p Fm(Mtype)p Fr(\))f(sp)q(ec-)0 328 y(i\014es)19 b(some)e(mathematical)h (prop)q(erties.)28 b(The)18 b(second)h(lev)o(el)g(\()p Fm(*Store)p Fr(\))d(p)q(oin)o(ts)i(to)f(the)h(actual)g(storage)e(used)0 384 y(to)g(store)g(the)h(matrix.)23 b(W)l(e)17 b(asso)q(ciate)g(with)g (eac)o(h)f Fm(Stype)23 b(XX)17 b Fr(a)f(storage)f(format)h(called)i Fm(XXformat)p Fr(,)d(suc)o(h)i(as)0 441 y Fm(NPformat)p Fr(,)d Fm(SCformat)p Fr(,)f(etc.)71 497 y(The)20 b Fm(SuperMatrix)f Fr(t)o(yp)q(e)h(so)g(de\014ned)i(can)f(accommo)q(date)e(v)m(arious)i(t) o(yp)q(es)g(of)f(matrix)g(structures)g(and)0 554 y(appropriate)h(op)q (erations)h(to)e(b)q(e)i(applied)h(on)f(them,)g(although)f(curren)o (tly)h(Sup)q(erLU)h(implemen)o(ts)f(only)g(a)0 610 y(subset)15 b(of)g(this)h(collection.)21 b(Sp)q(eci\014call)q(y)l(,)d(matrices)d Fq(A)p Fr(,)g Fq(L)p Fr(,)f Fq(U)5 b Fr(,)15 b Fq(B)r Fr(,)h(and)f Fq(X)k Fr(can)c(ha)o(v)o(e)g(the)g(follo)o(wing)h(t)o(yp)q (es:)p 511 675 913 2 v 510 731 2 57 v 699 731 V 791 714 a Fq(A)p 915 731 V 148 w(L)p 1060 731 V 100 w(U)p 1182 731 V 90 w(B)p 1302 731 V 84 w(X)p 1423 731 V 511 733 913 2 v 510 789 2 57 v 536 772 a Fm(Stype)p 699 789 V 69 w(NC)f Fr(or)f Fm(NR)p 915 789 V 74 w(SC)p 1060 789 V 85 w(NC)p 1182 789 V 73 w(DN)p 1302 789 V 73 w(DN)p 1423 789 V 510 846 V 536 829 a(Dtype)656 812 y Fi(2)p 699 846 V 773 829 a Fr(an)o(y)p 915 846 V 109 w(an)o(y)p 1060 846 V 63 w(an)o(y)p 1182 846 V 50 w(an)o(y)p 1302 846 V 49 w(an)o(y)p 1423 846 V 510 902 V 536 885 a Fm(Mtype)p 699 902 V 128 w(GE)p 915 902 V 109 w(TRLU)p 1060 902 V 49 w(TRU)p 1182 902 V 61 w(GE)p 1302 902 V 73 w(GE)p 1423 902 V 511 904 913 2 v 71 989 a Fr(In)h(what)g(follo)o(ws,)g(w)o(e) g(illustrate)h(the)f(storage)f(sc)o(hemes)i(de\014ned)g(b)o(y)g Fm(Stype)p Fr(.)j(F)l(ollo)o(wing)d(C's)e(con)o(v)o(en)o(tion,)0 1046 y(all)i(arra)o(y)e(indices)j(and)f(lo)q(cations)g(b)q(elo)o(w)f (are)g(0-based.)68 1152 y Fk(\017)23 b Fq(A)15 b Fr(ma)o(y)g(ha)o(v)o (e)h(storage)e(t)o(yp)q(e)i Fm(NC)f Fr(or)g Fm(NR)p Fr(.)21 b(The)16 b Fm(NC)f Fr(format)g(is)h(the)f(same)h(as)f(the)h(Harw)o (ell-Bo)q(eing)h(sparse)114 1209 y(matrix)d(format)g([6],)g(that)h(is,) g(the)g(compressed)h(column)g(storage.)209 1321 y Fm(typedef)23 b(struct)g({)305 1377 y(int)47 b(nnz;)119 b(/*)23 b(number)g(of)h (nonzeros)f(in)g(the)h(matrix)f(*/)305 1434 y(void)g(*nzval;)47 b(/*)23 b(array)g(of)h(nonzero)f(values)g(packed)g(by)h(column)f(*/)305 1490 y(int)47 b(*rowind;)23 b(/*)g(array)g(of)h(row)f(indices)g(of)h (the)f(nonzeros)g(*/)305 1547 y(int)47 b(*colptr;)23 b(/*)g(colptr[j])g(stores)g(the)g(location)g(in)h(nzval[])f(and)g (rowind[])710 1603 y(which)g(starts)g(column)g(j)h(*/)209 1660 y(})g(NCformat;)114 1772 y Fr(The)15 b Fm(NR)g Fr(format)f(is)i (the)f(compressed)g(ro)o(w)g(storage)f(de\014ned)i(b)q(elo)o(w.)209 1885 y Fm(typedef)23 b(struct)g({)305 1941 y(int)47 b(nnz;)119 b(/*)23 b(number)g(of)h(nonzeros)f(in)g(the)h(matrix)f(*/)305 1998 y(void)g(*nzval;)47 b(/*)23 b(array)g(of)h(nonzero)f(values)g (packed)g(by)h(row)f(*/)305 2054 y(int)47 b(*colind;)23 b(/*)g(array)g(of)h(column)f(indices)g(of)h(the)f(nonzeros)g(*/)305 2111 y(int)47 b(*rowptr;)23 b(/*)g(rowptr[j])g(stores)g(the)g(location) g(in)h(nzval[])f(and)g(colind[])710 2167 y(which)g(starts)g(row)h(j)g (*/)209 2223 y(})g(NRformat;)114 2336 y Fr(The)15 b(factorization)g (and)g(solv)o(e)g(routines)g(in)h(Sup)q(erLU)g(are)f(designed)h(to)e (handle)j(column-wise)f(storage)114 2392 y(only)l(.)35 b(If)20 b(the)g(input)h(matrix)e Fq(A)h Fr(is)h(in)g(ro)o(w-orien)o (ted)e(storage,)h(i.e.,)g(in)h Fm(NR)f Fr(format,)f(then)i(the)f(driv)o (er)114 2449 y(routines)12 b(\()p Fm(SGSSV)e Fr(and)i Fm(SGSSVX)p Fr(\))e(actually)i(p)q(erform)g(the)f Fq(LU)17 b Fr(decomp)q(osition)c(on)e Fq(A)1570 2432 y Ff(T)1598 2449 y Fr(,)g(whic)o(h)i(is)f(column-)114 2505 y(wise,)h(and)f(solv)o (e)g(the)g(system)g(using)h(the)f Fq(L)861 2489 y Ff(T)901 2505 y Fr(and)g Fq(U)1022 2489 y Ff(T)1062 2505 y Fr(factors.)17 b(The)c(data)e(structures)h(holding)i Fq(L)e Fr(and)g Fq(U)114 2562 y Fr(on)j(output)g(are)g(di\013eren)o(t)g(\(sw)o(app)q (ed\))g(from)g(the)g(data)g(structures)g(y)o(ou)g(get)g(from)f (column-wise)j(input.)p 0 2604 780 2 v 52 2631 a Fh(2)69 2647 y Fg(Dtype)11 b Fo(can)i(b)q(e)h(one)f(of)p 419 2647 12 2 v 27 w Fg(S)p Fo(,)p 476 2647 V 26 w Fg(D)p Fo(,)p 534 2647 V 26 w Fg(C)g Fo(or)p 627 2647 V 27 w Fg(Z)o Fo(.)964 2795 y Fr(8)p eop %%Page: 9 9 9 8 bop 114 46 a Fr(F)l(or)18 b(more)g(detailed)j(descriptions)f(ab)q (out)f(this)g(pro)q(cess,)h(please)g(refer)f(to)f(the)h(leading)h (commen)o(ts)e(of)114 102 y(routines)d Fm(SGSSV)g Fr(and)g Fm(SGSSVX)f Fr(in)i(App)q(endix)i(A.)114 177 y(Alternativ)o(ely)l(,)d (the)g(users)f(ma)o(y)g(call)i(a)e(utilit)o(y)h(routine)g Fm(sCompRow)p 1292 177 15 2 v 16 w(to)p 1356 177 V 17 w(CompCol)f Fr(to)g(con)o(v)o(ert)f(the)i(input)114 233 y(matrix)g(in)i Fm(NR)f Fr(format)f(to)g(another)h(matrix)f(in)i Fm(NC)f Fr(format,)f(b)q(efore)h(calling)i(Sup)q(erLU.)f(The)f (de\014nition)114 290 y(of)e(this)i(routine)g(is)209 401 y Fm(void)23 b(sCompRow_to_CompCol\(int)e(m,)j(int)f(n,)h(int)f (nnz,)782 457 y(float)g(*a,)g(int)h(*colind,)f(int)g(*rowptr,)782 513 y(float)g(**at,)g(int)h(**rowind,)e(int)i(**colptr\);)114 624 y Fr(This)13 b(con)o(v)o(ersion)h(tak)o(es)e(time)i(prop)q (ortional)g(to)e(the)h(n)o(um)o(b)q(er)h(of)f(nonzeros)g(in)h Fq(A)p Fr(.)19 b(Ho)o(w)o(ev)o(er,)13 b(it)g(requires)114 681 y(storage)h(for)g(a)h(separate)g(cop)o(y)g(of)g(matrix)f Fq(A)p Fr(.)68 774 y Fk(\017)23 b Fq(L)15 b Fr(is)h(a)f(sup)q(erno)q (dal)i(matrix)e(with)h(the)g(storage)e(t)o(yp)q(e)h Fm(SC)p Fr(.)21 b(Due)15 b(to)g(the)h(sup)q(erno)q(dal)h(structure,)e Fq(L)g Fr(is)h(in)114 830 y(fact)e(stored)h(as)g(a)g(sparse)g(blo)q(c)o (k)h(lo)o(w)o(er)e(triangular)i(matrix)f([4)o(].)209 953 y Fm(typedef)23 b(struct)g({)305 1009 y(int)47 b(nnz;)262 b(/*)23 b(number)g(of)h(nonzeros)f(in)g(the)h(matrix)f(*/)305 1066 y(int)47 b(nsuper;)190 b(/*)23 b(index)h(of)f(the)h(last)f (supernode)g(*/)305 1122 y(void)g(*nzval;)190 b(/*)23 b(array)h(of)f(nonzero)g(values)g(packed)g(by)h(column)f(*/)305 1179 y(int)47 b(*nzval_colptr;)22 b(/*)h(nzval_colptr[j])f(stores)h (the)h(location)e(in)853 1235 y(nzval[])h(which)g(starts)h(column)f(j)g (*/)305 1291 y(int)47 b(*rowind;)166 b(/*)23 b(array)h(of)f(compressed) g(row)g(indices)g(of)853 1348 y(rectangular)g(supernodes)f(*/)305 1404 y(int)47 b(*rowind_colptr;/*)21 b(rowind_colptr[j])h(stores)h(the) h(location)e(in)853 1461 y(rowind[])h(which)g(starts)g(column)g(j)h(*/) 305 1517 y(int)47 b(*col_to_sup;)70 b(/*)23 b(col_to_sup[j])f(is)i(the) g(supernode)e(number)h(to)853 1574 y(which)h(column)f(j)g(belongs)g(*/) 305 1630 y(int)47 b(*sup_to_col;)70 b(/*)23 b(sup_to_col[s])f(points)i (to)f(the)h(starting)e(column)853 1687 y(of)i(the)f(s-th)h(supernode)e (*/)209 1743 y(})i(SCformat;)68 1866 y Fk(\017)f Fr(Both)11 b Fq(B)k Fr(and)d Fq(X)j Fr(are)d(stored)f(as)h(con)o(v)o(en)o(tional)g (t)o(w)o(o-dimensional)h(arra)o(ys)d(in)j(column-ma)s(jor)f(order,)g (with)114 1922 y(the)j(storage)f(t)o(yp)q(e)h Fm(DN)p Fr(.)209 2033 y Fm(typedef)23 b(struct)g({)305 2089 y(int)g(lda;)119 b(/*)23 b(leading)g(dimension)g(*/)305 2146 y(void)g(*nzval;)g(/*)g (array)h(of)f(size)g(lda-by-ncol)g(to)g(represent)686 2202 y(a)h(dense)f(matrix)g(*/)209 2258 y(})h(DNformat;)71 2369 y Fr(Figure)15 b(3)g(sho)o(ws)f(the)i(data)e(structures)h(for)g (the)g(example)h(matrices)f(in)h(Figure)g(1.)0 2512 y Fu(3)69 b(P)n(erm)n(utations)0 2614 y Fr(Tw)o(o)13 b(p)q(erm)o(utation) h(matrices)g(are)f(in)o(v)o(olv)o(ed)i(in)g(the)f(solution)g(pro)q (cess.)20 b(In)14 b(fact,)g(the)g(actual)g(factorization)f(w)o(e)0 2670 y(p)q(erform)i(is)h Fq(P)247 2677 y Ff(r)266 2670 y Fq(AP)335 2654 y Ff(T)329 2681 y(c)376 2670 y Fr(=)d Fq(LU)5 b Fr(,)15 b(where)h Fq(P)680 2677 y Ff(r)714 2670 y Fr(is)g(determined)h(from)d(partial)i(piv)o(oting)g(\(with)f(a)g (threshold)h(piv)o(oting)964 2795 y(9)p eop %%Page: 10 10 10 9 bop 68 413 a Fk(\017)23 b Fm(A)g(=)h({)g(Stype)f(=)h(NC;)f(Dtype)g (=)h(_D;)g(Mtype)f(=)g(GE;)h(nrow)f(=)h(5;)g(ncol)f(=)h(5;)257 469 y(*Store)f(=)h({)f(nnz)h(=)f(12;)519 525 y(nzval)g(=)h([)g(19.00,)f (12.00,)g(12.00,)g(21.00,)g(12.00,)g(12.00,)g(21.00,)758 582 y(16.00,)g(21.00,)g(5.00,)g(21.00,)g(18.00)g(];)519 638 y(rowind)g(=)h([)g(0,)f(1,)h(4,)g(1,)f(2,)h(4,)f(0,)h(2,)g(0,)f(3,) h(3,)f(4)h(];)519 695 y(colptr)f(=)h([)g(0,)f(3,)h(6,)g(8,)f(10,)h(12)f (];)472 751 y(})209 808 y(})68 958 y Fk(\017)g Fm(U)g(=)h({)g(Stype)f (=)h(NC;)f(Dtype)g(=)h(_D;)g(Mtype)f(=)g(TRU;)h(nrow)f(=)h(5;)f(ncol)h (=)f(5;)257 1014 y(*Store)g(=)h({)f(nnz)h(=)f(11;)519 1071 y(nzval)g(=)h([)g(21.00,)f(-13.26,)g(7.58,)g(21.00)g(];)519 1127 y(rowind)g(=)h([)g(0,)f(1,)h(2,)g(0)f(];)519 1184 y(colptr)g(=)h([)g(0,)f(0,)h(0,)g(1,)f(4,)h(4)f(];)472 1240 y(})209 1297 y(})68 1447 y Fk(\017)g Fm(L)g(=)h({)g(Stype)f(=)h (SC;)f(Dtype)g(=)h(_D;)g(Mtype)f(=)g(TRLU;)h(nrow)f(=)h(5;)f(ncol)h(=)f (5;)257 1503 y(*Store)g(=)h({)f(nnz)h(=)f(11;)519 1560 y(nsuper)g(=)h(2;)519 1616 y(nzval)f(=)h([)g(19.00,)f(0.63,)g(0.63,)g (21.00,)g(0.57,)h(0.57,)f(-13.26,)758 1673 y(23.58,)g(-0.24,)g(5.00,)g (-0.77,)g(21.00,)g(34.20)g(];)519 1729 y(nzval_colptr)g(=)g([)h(0)g(3,) f(6,)h(9,)f(11,)h(13)g(];)519 1786 y(rowind)f(=)h([)g(0,)f(1,)h(4,)g (1,)f(2,)h(4,)f(3,)h(4)g(];)519 1842 y(rowind_colptr)e(=)i([)g(0,)f(3,) h(6,)g(6,)f(8,)h(8)g(];)519 1899 y(col_to_sup)f(=)h([)f(0,)h(1,)f(1,)h (2,)g(2)f(];)519 1955 y(sup_to_col)g(=)h([)f(0,)h(1,)f(3,)h(5)g(];)472 2012 y(})209 2068 y(})0 2272 y Fr(Figure)g(3:)37 b(The)24 b(data)f(structures)h(for)f(a)h(5)15 b Fk(\002)i Fr(5)23 b(matrix)h(and)g(its)g Fq(LU)29 b Fr(factors,)24 b(as)g(represen)o(ted) g(in)h(the)0 2329 y Fm(SuperMatrix)14 b Fr(data)g(structure.)20 b(Zero-based)15 b(indexing)i(is)f(used.)952 2795 y(10)p eop %%Page: 11 11 11 10 bop 0 46 a Fr(option\),)13 b(and)g Fq(P)285 53 y Ff(c)315 46 y Fr(is)g(a)g(column)g(p)q(erm)o(utation)g(c)o(hosen)g (either)g(b)o(y)g(the)g(user)g(or)f(Sup)q(erLU)r(,)g(usually)j(to)d (mak)o(e)g(the)0 102 y Fq(L)k Fr(and)g Fq(U)k Fr(factors)15 b(as)g(sparse)h(as)f(p)q(ossible.)23 b Fq(P)805 109 y Ff(r)840 102 y Fr(and)16 b Fq(P)958 109 y Ff(c)991 102 y Fr(are)g(represen)o(ted)g(b)o(y)g(t)o(w)o(o)e(in)o(teger)i(v)o (ectors)f Fm(perm)p 1865 102 15 2 v 16 w(r[])0 159 y Fr(and)g Fm(perm)p 187 159 V 17 w(c[])p Fr(,)f(whic)o(h)i(are)f(the)h (p)q(erm)o(utations)f(of)g(the)g(in)o(tegers)g(\(0)d(:)g Fq(m)e Fk(\000)h Fr(1\))j(and)i(\(0)c(:)g Fq(n)e Fk(\000)h Fr(1\),)j(resp)q(ectiv)o(ely)l(.)0 280 y Ft(3.1)56 b(Ordering)18 b(for)g(sparsit)n(y)0 366 y Fr(Column)j(reordering)h(for)e(sparsit)o(y) h(is)g(completely)h(separate)f(from)f(the)h Fq(LU)26 b Fr(factorization.)37 b(The)21 b(column)0 423 y(p)q(erm)o(utation)14 b Fq(P)288 430 y Ff(c)320 423 y Fr(should)h(b)q(e)f(applied)i(b)q (efore)f(calling)h(the)e(factorization)g(routine)g Fm(SGSTRF)p Fr(.)f(In)i(principle,)h(an)o(y)0 479 y(ordering)g(heuristic)g(used)g (for)f(symmetric)g(matrices)g(can)h(b)q(e)f(applied)i(to)e Fq(A)1335 463 y Ff(T)1363 479 y Fq(A)g Fr(\(or)f Fq(A)c Fr(+)h Fq(A)1609 463 y Ff(T)1652 479 y Fr(if)k(the)h(matrix)e(is)0 535 y(nearly)j(structurally)f(symmetric\))g(to)f(obtain)h Fq(P)853 542 y Ff(c)871 535 y Fr(.)22 b(Curren)o(tly)l(,)16 b(w)o(e)g(pro)o(vide)h(the)f(follo)o(wing)g(ordering)h(options)0 592 y(through)e(subroutine)h Fm(get)p 472 592 V 17 w(perm)p 585 592 V 16 w(c)p Fr(.)71 678 y Fm(void)23 b(get)p 265 678 V 17 w(perm)p 378 678 V 16 w(c\(int)g(ispec,)h(SuperMatrix)e(*A,)h (int)h(*perm)p 1302 678 V 16 w(c\);)71 765 y(Ispec)c Fr(sp)q(eci\014es)k(the)d(ordering)h(to)f(b)q(e)h(returned)g(in)g Fm(*perm)p 1167 765 V 16 w(c)p Fr(,)h(the)e(in)o(teger)h(v)o(ector)f (represen)o(ting)h(the)0 821 y(p)q(erm)o(utation)15 b(matrix)g Fq(P)437 828 y Ff(c)455 821 y Fr(:)159 915 y(isp)q(ec)g(=)h(0:)j (natural)c(ordering)h(\(i.e.,)f Fq(P)848 922 y Ff(c)878 915 y Fr(=)e Fq(I)t Fr(\))270 972 y(=)j(1:)j(MMD)14 b(applied)k(to)c (the)h(structure)g(of)g Fq(A)1083 955 y Ff(T)1111 972 y Fq(A)270 1028 y Fr(=)h(2:)j(MMD)14 b(applied)k(to)c(the)h(structure)g (of)g Fq(A)10 b Fr(+)h Fq(A)1173 1012 y Ff(T)71 1122 y Fr(The)i(MMD)g(co)q(de)h(is)g(due)g(to)f(Joseph)h(W.H.)e(Liu,)j(whic) o(h)f(implemen)o(ts)h(a)e(v)m(arian)o(t)h(of)f(the)g(minim)o(um)i (degree)0 1178 y(ordering)h(algorithm)f([12)o(].)71 1235 y(Alternativ)o(ely)l(,)23 b(the)d(users)h(can)g(pro)o(vide)g(their)g(o) o(wn)f(column)h(p)q(erm)o(utation)g(v)o(ector.)35 b(F)l(or)20 b(example,)j(it)0 1291 y(ma)o(y)e(b)q(e)h(an)g(ordering)g(suitable)g (for)f(the)h(underlying)i(ph)o(ysical)f(problem.)39 b(Both)22 b(driv)o(er)g(routines)g Fm(SGSSV)0 1348 y Fr(and)f Fm(SGSSVX)g Fr(tak)o(e)f Fm(perm)p 462 1348 V 17 w(c[])h Fr(as)f(an)i(input)g (argumen)o(t.)37 b(In)22 b(the)f(future,)h(w)o(e)f(will)i(augmen)o(t)e Fm(get)p 1800 1348 V 17 w(perm)p 1913 1348 V 16 w(c)0 1404 y Fr(functionalit)o(y)14 b(with)g(more)f(ordering)h(algorithms,)f (suc)o(h)g(as)g(appro)o(ximate)g(minim)o(um)h(degree)g(ordering)g(on)f (the)0 1461 y(column)j(in)o(tersection)g(graph)f(of)g Fq(A)g Fr([3)o(].)71 1517 y(After)c(p)q(erm)o(utation)h Fq(P)472 1524 y Ff(c)501 1517 y Fr(is)g(applied)h(to)e Fq(A)p Fr(,)h(w)o(e)g(use)g Fm(NCP)f Fr(format)f(to)h(represen)o(t)h (the)g(p)q(erm)o(uted)g(matrix)f Fq(AP)1909 1501 y Ff(T)1903 1528 y(c)1937 1517 y Fr(,)0 1573 y(in)h(whic)o(h)g(the)f(consecutiv)o (e)h(columns)g(of)f(nonzeros)g(ma)o(y)f(not)h(b)q(e)h(stored)f(con)o (tiguously)g(in)h(memory)l(.)18 b(Therefore,)0 1630 y(w)o(e)f(need)i(t) o(w)o(o)d(separate)h(arra)o(ys)g(of)g(p)q(oin)o(ters,)h Fm(colbeg[])f Fr(and)g Fm(colend[])p Fr(,)g(to)g(indicate)i(the)f(b)q (eginning)i(and)0 1686 y(end)c(of)f(eac)o(h)g(column)h(in)g Fm(nzval[])e Fr(and)i Fm(rowind[])p Fr(.)95 1780 y Fm(typedef)23 b(struct)g({)191 1837 y(int)47 b(nnz;)119 b(/*)24 b(number)f(of)g (nonzeros)g(in)h(the)f(matrix)g(*/)191 1893 y(void)g(*nzval;)47 b(/*)24 b(array)f(of)g(nonzero)g(values,)g(packed)g(by)h(column)f(*/) 191 1950 y(int)47 b(*rowind;)23 b(/*)h(array)f(of)g(row)h(indices)f(of) g(the)h(nonzeros)f(*/)191 2006 y(int)47 b(*colbeg;)23 b(/*)h(colbeg[j])e(points)h(to)h(the)f(location)g(in)h(nzval[])f(and)g (rowind[])597 2062 y(which)g(starts)g(column)g(j)h(*/)191 2119 y(int)47 b(*colend;)23 b(/*)h(colend[j])e(points)h(to)h(one)f (past)h(the)f(location)g(in)g(nzval[])597 2175 y(and)g(rowind[])g (which)g(ends)g(column)g(j)h(*/)95 2232 y(})g(NCPformat;)0 2354 y Ft(3.2)56 b(P)n(artial)18 b(piv)n(oting)g(with)h(threshold)0 2439 y Fr(W)l(e)h(ha)o(v)o(e)f(included)k(a)c(threshold)i(piv)o(oting)f (parameter)f Fq(u)h Fk(2)h Fr([0)p Fq(;)8 b Fr(1])17 b(to)j(con)o(trol)f(n)o(umerical)i(stabilit)o(y)l(.)35 b(The)0 2496 y(user)16 b(can)g(c)o(ho)q(ose)g(to)g(use)g(a)g(ro)o(w)f (p)q(erm)o(utation)h(obtained)g(from)f(a)h(previous)h(factorization.)22 b(\(The)16 b(argumen)o(t)0 2552 y Fm(*refact)23 b(=)h('Y')19 b Fr(should)i(b)q(e)f(passed)g(to)g(the)f(factorization)h(routine)g Fm(xGSTRF)p Fr(.\))f(The)h(piv)o(oting)g(subroutine)0 2609 y Fm(xPIVOTL)15 b Fr(c)o(hec)o(ks)i(whether)f(this)h(c)o(hoice)g (of)f(piv)o(ot)g(satis\014es)g(the)h(threshold;)g(if)f(not,)g(it)g (will)i(try)e(the)g(diagonal)0 2665 y(elemen)o(t.)30 b(If)18 b(neither)h(of)f(the)g(ab)q(o)o(v)o(e)g(satis\014es)g(the)h (threshold,)g(the)f(maxim)o(um)g(magnitude)h(elemen)o(t)g(in)g(the)952 2795 y(11)p eop %%Page: 12 12 12 11 bop 0 46 a Fr(column)20 b(will)g(b)q(e)f(used)h(as)e(the)h(piv)o (ot.)30 b(The)19 b(pseudo-co)q(de)h(of)e(the)h(piv)o(oting)g(p)q(olicy) i(for)d(column)h Fq(j)i Fr(is)e(giv)o(en)0 102 y(b)q(elo)o(w.)104 208 y(\(1\))44 b(compute)15 b Fq(thr)q(esh)f Fr(=)f Fq(u)i Fk(j)p Fq(a)663 215 y Ff(mj)712 208 y Fk(j)p Fr(,)g(where)g Fk(j)p Fq(a)921 215 y Ff(mj)970 208 y Fk(j)e Fr(=)g(max)1128 215 y Ff(i)p Fv(\025)p Ff(j)1193 208 y Fk(j)p Fq(a)1230 215 y Ff(ij)1260 208 y Fk(j)p Fr(;)104 321 y(\(2\))44 b Fs(if)16 b Fr(user)f(sp)q(eci\014es)i(piv)o(ot)e(ro)o(w)f Fq(k)j Fs(and)e Fk(j)p Fq(a)904 328 y Ff(k)q(j)942 321 y Fk(j)d(\025)h Fq(thr)q(esh)j Fs(and)g Fq(a)1286 328 y Ff(k)q(j)1336 321 y Fk(6)p Fr(=)d(0)i Fs(then)311 378 y Fr(piv)o(ot)g(ro)o(w)f(=)f Fq(k)q Fr(;)207 434 y Fs(else)18 b(if)33 b Fk(j)p Fq(a)408 441 y Ff(j)r(j)442 434 y Fk(j)12 b(\025)h Fq(thr)q(esh)j Fs(and)g Fq(a)786 441 y Ff(j)r(j)833 434 y Fk(6)p Fr(=)d(0)i Fs(then)311 491 y Fr(piv)o(ot)g(ro)o(w)f(=)f Fq(j)s Fr(;)207 547 y Fs(else)311 604 y Fr(piv)o(ot)i(ro)o(w)f(=)f Fq(m)p Fr(;)207 660 y Fs(endif)p Fr(;)71 766 y(Tw)o(o)h(sp)q(ecial)j(v) m(alues)f(of)f Fq(u)g Fr(result)h(in)g(the)f(follo)o(wing)h(t)o(w)o(o)e (strategies:)68 860 y Fk(\017)23 b Fq(u)12 b Fr(=)h(0)p Fq(:)p Fr(0:)19 b(either)d(use)g(user-sp)q(eci\014ed)h(piv)o(ot)e (order)g(if)h(a)o(v)m(ailable,)h(or)d(else)i(use)g(diagonal)g(piv)o (ot;)68 954 y Fk(\017)23 b Fq(u)12 b Fr(=)h(1)p Fq(:)p Fr(0:)19 b(classical)e(partial)f(piv)o(oting.)0 1097 y Fu(4)69 b(User-callable)20 b(routines)0 1199 y Fr(The)g(naming)h(con) o(v)o(en)o(tions,)g(calling)h(sequences)f(and)g(functionalit)o(y)g(of)f (these)g(routines)h(mimic)g(the)f(corre-)0 1255 y(sp)q(onding)14 b(LAP)l(A)o(CK)g(soft)o(w)o(are)d([1].)19 b(In)13 b(the)h(routine)f (names,)g(suc)o(h)h(as)e Fm(xGSTRF)p Fr(,)g(w)o(e)h(use)h(the)f(t)o(w)o (o)f(letters)h Fm(GS)g Fr(to)0 1312 y(denote)j Fe(gener)n(al)g(sp)n (arse)f Fr(matrices.)21 b(The)16 b(leading)h(letter)f Fm(x)g Fr(stands)f(for)g Fm(S,)24 b(D,)g(C)p Fr(,)15 b(or)g Fm(Z)p Fr(,)g(sp)q(ecifying)j(the)e(data)0 1368 y(t)o(yp)q(e.)27 b(App)q(endix)19 b(A)f(con)o(tains,)g(for)e(eac)o(h)i (individual)j(routine,)d(the)f(leading)i(commen)o(ts)e(and)h(the)f (complete)0 1424 y(sp)q(eci\014cation)g(of)e(the)g(calling)i(sequence)f (and)g(argumen)o(ts.)0 1546 y Ft(4.1)56 b(Driv)n(er)17 b(routines)0 1632 y Fr(W)l(e)c(pro)o(vide)h(t)o(w)o(o)e(t)o(yp)q(es)h (of)g(driv)o(er)g(routines)h(for)e(solving)i(systems)f(of)g(linear)h (equations.)20 b(The)13 b(driv)o(er)h(routines)0 1688 y(can)h(handle)i(b)q(oth)e(column-)h(and)g(ro)o(w-orien)o(ted)f (storage)f(sc)o(hemes.)68 1782 y Fk(\017)23 b Fr(A)14 b(simple)i(driv)o(er)f Fm(xGSSV)p Fr(,)f(whic)o(h)h(solv)o(es)g(the)f (system)g Fq(AX)i Fr(=)d Fq(B)k Fr(b)o(y)e(factorizing)g Fq(A)f Fr(and)h(o)o(v)o(erwriting)f Fq(B)114 1839 y Fr(with)h(the)g (solution)h Fq(X)t Fr(.)68 1932 y Fk(\017)23 b Fr(An)10 b(exp)q(ert)h(driv)o(er)g Fm(xGSSVX)p Fr(,)e(whic)o(h,)j(in)f(addition) h(to)e(the)g(ab)q(o)o(v)o(e,)h(also)f(p)q(erforms)g(the)h(follo)o(wing) g(functions)114 1989 y(\(some)j(of)h(them)g(optionally\):)165 2083 y Fs({)23 b Fr(solv)o(e)15 b Fq(A)359 2066 y Ff(T)387 2083 y Fq(X)g Fr(=)e Fq(B)r Fr(;)165 2156 y Fs({)23 b Fr(equilibrate)d(the)e(system)g(\(scale)h Fq(A)p Fr('s)f(ro)o(ws)f(and) i(columns)g(to)f(ha)o(v)o(e)g(unit)h(norm\))e(if)i Fq(A)f Fr(is)h(p)q(o)q(orly)214 2212 y(scaled;)165 2285 y Fs({)k Fr(estimate)f(the)g(condition)i(n)o(um)o(b)q(er)e(of)g Fq(A)p Fr(,)i(c)o(hec)o(k)f(for)e(near-singularit)o(y)l(,)k(and)e(c)o (hec)o(k)f(for)g(piv)o(ot)214 2342 y(gro)o(wth;)165 2415 y Fs({)h Fr(re\014ne)16 b(the)f(solution)h(and)f(compute)g(forw)o(ard)f (and)i(bac)o(kw)o(ard)e(error)h(b)q(ounds.)71 2509 y(These)f(driv)o(er) h(routines)f(co)o(v)o(er)g(all)h(the)f(functionalit)o(y)i(of)e(the)g (computational)g(routines.)20 b(W)l(e)15 b(exp)q(ect)g(that)0 2565 y(most)h(users)i(can)f(simply)i(use)e(these)h(driv)o(er)f (routines)h(to)f(ful\014ll)i(their)f(tasks)f(with)g(no)g(need)i(to)d(b) q(other)i(with)0 2622 y(the)d(computational)h(routines.)952 2795 y(12)p eop %%Page: 13 13 13 12 bop 0 46 a Ft(4.2)56 b(Computational)17 b(routines)0 131 y Fr(The)12 b(users)f(can)h(in)o(v)o(ok)o(e)f(the)h(follo)o(wing)g (computational)g(routines,)g(instead)g(of)f(the)h(driv)o(er)g (routines,)g(to)f(directly)0 188 y(con)o(trol)19 b(the)g(b)q(eha)o (vior)h(of)f(Sup)q(erLU)r(.)32 b(The)19 b(computational)h(routines)g (can)f(only)h(handle)g(column-orien)o(ted)0 244 y(storage.)68 347 y Fk(\017)j Fm(xGSTRF)p Fr(:)14 b(F)l(actorize.)114 422 y(This)i(implemen)o(ts)i(the)e(\014rst-time)g(factorization,)g(or)f (later)h(re-factorization)g(with)h(the)f(same)g(nonzero)114 479 y(pattern.)27 b(In)18 b(re-factorizations,)g(the)g(co)q(de)g(has)f (the)h(abilit)o(y)h(to)e(use)h(the)g(same)f(column)i(p)q(erm)o(utation) 114 535 y Fq(P)143 542 y Ff(c)174 535 y Fr(and)c(ro)o(w)e(p)q(erm)o (utation)h Fq(P)636 542 y Ff(r)669 535 y Fr(obtained)h(from)f(a)g (previous)h(factorization.)k(Sev)o(eral)c(scalar)f(argumen)o(ts)114 591 y(con)o(trol)g(ho)o(w)g(the)h Fq(LU)k Fr(decomp)q(osition)d(and)f (the)f(n)o(umerical)i(piv)o(oting)f(should)h(b)q(e)f(p)q(erformed.)20 b Fm(xGSTRF)114 648 y Fr(can)15 b(handle)h(non-square)g(matrices.)68 741 y Fk(\017)23 b Fm(xGSTRS)p Fr(:)14 b(T)l(riangular)h(solv)o(e.)114 815 y(This)g(tak)o(es)e(the)i Fq(L)f Fr(and)g Fq(U)20 b Fr(triangular)14 b(factors,)f(the)i(ro)o(w)e(and)h(column)i(p)q(erm)o (utation)e(v)o(ectors,)f(and)i(the)114 872 y(righ)o(t-hand)g(side)h(to) f(compute)g(a)g(solution)h(matrix)f Fq(X)j Fr(of)d Fq(AX)h Fr(=)d Fq(B)18 b Fr(or)d Fq(A)1412 855 y Ff(T)1439 872 y Fq(X)h Fr(=)d Fq(B)r Fr(.)68 965 y Fk(\017)23 b Fm(xGSCON)p Fr(:)14 b(Estimate)g(condition)j(n)o(um)o(b)q(er.)114 1039 y(Giv)o(en)j(the)h(matrix)f Fq(A)g Fr(and)h(its)f(factors)f Fq(L)i Fr(and)f Fq(U)5 b Fr(,)21 b(this)g(estimates)f(the)g(condition)i (n)o(um)o(b)q(er)f(in)g(the)114 1096 y(one-norm)15 b(or)f(in\014nit)o (y-norm.)21 b(The)15 b(algorithm)g(is)h(due)f(to)g(Hager)f(and)h (Higham)g([10)o(],)g(and)g(is)g(the)g(same)114 1152 y(as)f Fm(CONDEST)h Fr(in)h(sparse)f(Matlab.)68 1245 y Fk(\017)23 b Fm(xGSEQU/xLAQGS)p Fr(:)13 b(Equilibrate.)114 1320 y Fm(xGSEQU)i Fr(\014rst)h(computes)g(the)h(ro)o(w)e(and)h(column)h (scalings)h Fq(D)1195 1327 y Ff(r)1229 1320 y Fr(and)f Fq(D)1357 1327 y Ff(c)1390 1320 y Fr(whic)o(h)g(w)o(ould)g(mak)o(e)f (eac)o(h)g(ro)o(w)114 1376 y(and)e(eac)o(h)g(column)h(of)e(the)h (scaled)h(matrix)f Fq(D)905 1383 y Ff(r)923 1376 y Fq(AD)995 1383 y Ff(c)1026 1376 y Fr(ha)o(v)o(e)g(equal)h(norm.)k Fm(xLAQGS)13 b Fr(then)h(applies)i(them)e(to)114 1433 y(the)h(original)i(matrix)e Fq(A)h Fr(if)g(it)f(is)h(indeed)i(badly)e (scaled.)22 b(The)15 b(equilibrated)j Fq(A)e Fr(o)o(v)o(erwrites)e(the) i(original)114 1489 y Fq(A)p Fr(.)68 1582 y Fk(\017)23 b Fm(xGSRFS)p Fr(:)14 b(Re\014ne)i(solution.)114 1657 y(Giv)o(en)f Fq(A)p Fr(,)g(its)g(factors)f Fq(L)h Fr(and)h Fq(U)5 b Fr(,)14 b(and)i(an)f(initial)i(solution)f Fq(X)t Fr(,)e(this)h(do)q(es)h(iterativ)o(e)f(re\014nemen)o(t,)g(using)114 1713 y(the)h(same)h(precision)h(as)e(the)h(input)g(data.)24 b(It)16 b(also)h(computes)f(forw)o(ard)g(and)g(bac)o(kw)o(ard)g(error)g (b)q(ounds)114 1770 y(for)e(the)h(re\014ned)i(solution.)0 1912 y Fu(5)69 b(Matlab)23 b(in)n(terface)0 2014 y Fr(In)c(the)f Fm(SuperLU/MATLAB)f Fr(sub)q(directory)l(,)j(w)o(e)e(ha)o(v)o(e)g(dev)o (elop)q(ed)i(a)e(set)g(of)g(MEX-\014les)h(in)o(terface)g(to)f(Matlab.)0 2070 y(Righ)o(t)j(no)o(w,)f(only)h(the)f(factor)f(routine)h Fm(DGSTRF)g Fr(and)g(the)g(simple)i(driv)o(er)e(routine)h Fm(DGSSV)e Fr(are)h(callable)i(b)o(y)0 2127 y(in)o(v)o(oking)c Fm(superlu)e Fr(and)h Fm(lusolve)f Fr(in)i(Matlab,)f(resp)q(ectiv)o (ely)l(.)27 b Fm(Superlu)17 b Fr(and)g Fm(lusolve)f Fr(corresp)q(ond)h (to)g(the)0 2183 y(t)o(w)o(o)d(Matlab)h(built-in)i(functions)f Fm(lu)f Fr(and)h Fk(n)c Fr(.)20 b(In)c(Matlab,)e(when)i(y)o(ou)f(t)o (yp)q(e)191 2240 y Fm(help)23 b(superlu)0 2296 y Fr(y)o(ou)15 b(will)i(\014nd)f(the)f(follo)o(wing)h(description)h(ab)q(out)e Fm(superlu)p Fr('s)e(functionalit)o(y)k(and)e(ho)o(w)g(to)f(use)i(it.) 48 2388 y Fm(SUPERLU)23 b(:)g(Supernodal)g(LU)g(factorization)48 2501 y(Executive)f(summary:)48 2614 y([L,U,p])h(=)g(superlu\(A\))238 b(is)23 b(like)h([L,U,P])e(=)i(lu\(A\),)f(but)h(faster.)48 2670 y([L,U,prow,pcol])e(=)h(superlu\(A\))47 b(preorders)22 b(the)i(columns)f(of)g(A)h(by)g(min)f(degree,)952 2795 y Fr(13)p eop %%Page: 14 14 14 13 bop 859 46 a Fm(yielding)23 b(A\(prow,pcol\))f(=)i(L*U.)48 159 y(Details)f(and)g(options:)48 271 y(With)g(one)g(input)h(and)f(two) h(or)f(three)g(outputs,)g(SUPERLU)g(has)g(the)h(same)f(effect)g(as)h (LU,)48 328 y(except)f(that)g(the)h(pivoting)e(permutation)h(is)g (returned)g(as)h(a)f(vector,)g(not)h(a)f(matrix:)48 441 y([L,U,p])g(=)g(superlu\(A\))g(returns)g(unit)g(lower)g(triangular)g (L,)g(upper)h(triangular)e(U,)286 497 y(and)i(permutation)e(vector)h(p) h(with)f(A\(p,:\))g(=)h(L*U.)48 554 y([L,U])f(=)h(superlu\(A\))e (returns)h(permuted)g(triangular)f(L)i(and)f(upper)h(triangular)e(U)286 610 y(with)i(A)f(=)h(L*U.)48 723 y(With)f(a)h(second)f(input,)g(the)g (columns)g(of)h(A)g(are)f(permuted)g(before)g(factoring:)48 836 y([L,U,prow])f(=)i(superlu\(A,psparse\))d(returns)i(triangular)g(L) g(and)h(U)g(and)f(permutation)286 892 y(prow)h(with)f (A\(prow,psparse\))f(=)i(L*U.)48 949 y([L,U])f(=)h (superlu\(A,psparse\))d(returns)i(permuted)g(triangular)f(L)i(and)f (triangular)g(U)286 1005 y(with)h(A\(:,psparse\))e(=)i(L*U.)48 1062 y(Here)f(psparse)g(will)g(normally)g(be)h(a)f(user-supplied)f (permutation)h(matrix)g(or)g(vector)48 1118 y(to)g(be)h(applied)f(to)g (the)h(columns)f(of)g(A)h(for)g(sparsity.)46 b(COLMMD)23 b(is)h(one)f(way)h(to)f(get)48 1175 y(such)g(a)h(permutation;)e(see)h (below)h(to)f(make)h(SUPERLU)e(compute)h(it)h(automatically.)48 1231 y(\(If)f(psparse)g(is)h(a)f(permutation)g(matrix,)g(the)g(matrix)g (factored)g(is)h(A*psparse'.\))48 1344 y(With)f(a)h(fourth)f(output,)g (a)g(column)g(permutation)g(is)g(computed)g(and)h(applied:)48 1457 y([L,U,prow,pcol])e(=)h(superlu\(A,psparse\))46 b(returns)22 b(triangular)h(L)h(and)f(U)h(and)286 1513 y(permutations)f(prow)g(and)g(pcol)h(with)f(A\(prow,pcol\))f(=)i(L*U.) 286 1570 y(Here)g(psparse)f(is)g(a)h(user-supplied)e(column)h (permutation)f(for)i(sparsity,)286 1626 y(and)g(the)f(matrix)g (factored)g(is)h(A\(:,psparse\))e(\(or)h(A*psparse')g(if)g(the)286 1683 y(input)h(is)f(a)h(permutation)e(matrix\).)47 b(Output)23 b(pcol)g(is)h(a)g(permutation)286 1739 y(that)g(first)f(performs)g (psparse,)f(then)i(postorders)e(the)i(etree)f(of)g(the)286 1796 y(column)g(intersection)g(graph)g(of)g(A.)48 b(The)23 b(postorder)g(does)g(not)h(affect)286 1852 y(sparsity,)f(but)g(makes)h (supernodes)e(in)i(L)f(consecutive.)48 1909 y([L,U,prow,pcol])f(=)h (superlu\(A,0\))f(is)i(the)g(same)f(as)g(...)h(=)g(superlu\(A,I\);)e (it)h(does)286 1965 y(not)h(permute)f(for)g(sparsity)g(but)g(it)h(does) f(postorder)g(the)g(etree.)48 2022 y([L,U,prow,pcol])f(=)h (superlu\(A\))g(is)g(the)h(same)f(as)h(...)f(=)h (superlu\(A,colmmd\(A\)\);)286 2078 y(it)g(uses)f(column)g(minimum)g (degree)g(to)h(permute)f(columns)g(for)g(sparsity,)286 2134 y(then)h(postorders)e(the)i(etree)f(and)g(factors.)0 2227 y Fr(F)l(or)15 b(a)f(description)j(ab)q(out)e Fm(lusolve)p Fr('s)f(functionalit)o(y)i(and)g(ho)o(w)e(to)h(use)h(it,)f(y)o(ou)f (can)i(t)o(yp)q(e)191 2283 y Fm(help)23 b(lusolve)48 2388 y(LUSOLVE)g(:)g(Solve)h(linear)f(systems)f(by)i(supernodal)f(LU)g (factorization.)48 2501 y(x)g(=)h(lusolve\(A,)f(b\))g(returns)g(the)h (solution)e(to)i(the)f(linear)g(system)h(A*x)f(=)h(b,)143 2557 y(using)f(a)h(supernodal)f(LU)g(factorization)f(that)i(is)f (faster)g(than)h(Matlab's)143 2614 y(builtin)f(LU.)47 b(This)24 b(m-file)f(just)g(calls)g(a)h(mex)f(routine)g(to)h(do)g(the)f (work.)952 2795 y Fr(14)p eop %%Page: 15 15 15 14 bop 48 46 a Fm(By)23 b(default,)g(A)h(is)f(preordered)g(by)g (column)h(minimum)e(degree)h(before)h(factorization.)48 102 y(Optionally,)e(the)i(user)f(can)g(supply)g(a)h(desired)f(column)g (ordering:)48 215 y(x)g(=)h(lusolve\(A,)f(b,)g(pcol\))g(uses)h(pcol)f (as)h(a)f(column)g(permutation.)143 271 y(It)h(still)f(returns)g(x)h(=) f(A\\b,)h(but)f(it)h(factors)f(A\(:,pcol\))f(\(if)i(pcol)f(is)h(a)143 328 y(permutation)f(vector\))f(or)i(A*Pcol)f(\(if)h(Pcol)f(is)g(a)h (permutation)f(matrix\).)48 441 y(x)g(=)h(lusolve\(A,)f(b,)g(0\))h (suppresses)e(the)i(default)f(minimum)g(degree)g(ordering;)143 497 y(that)g(is,)h(it)g(forces)f(the)g(identity)g(permutation)f(on)i (columns.)71 589 y Fr(Tw)o(o)16 b(M-\014les)j Fm(trysuperlu.m)c Fr(and)j Fm(trylusolve.m)e Fr(are)h(written)h(to)f(test)g(the)g (correctness)h(of)f Fm(superlu)0 646 y Fr(and)i Fm(lusolve)p Fr(.)31 b(In)19 b(addition)i(to)d(testing)h(the)g(residual)i(norms,)e (they)g(also)g(test)f(the)i(function)g(in)o(v)o(o)q(cations)0 702 y(with)c(v)m(arious)f(n)o(um)o(b)q(er)h(of)f(input/output)g (argumen)o(ts.)0 844 y Fu(6)69 b(Memory)23 b(managemen)n(t)f(for)i Fd(L)e Fu(and)i Fd(U)0 945 y Fr(In)18 b(the)f(sparse)g Fq(LU)22 b Fr(algorithm,)17 b(the)g(amoun)o(t)f(of)h(space)g(needed)i (to)d(hold)i(the)f(data)f(structures)h(of)g Fq(L)g Fr(and)g Fq(U)0 1002 y Fr(cannot)e(b)q(e)g(accurately)h(predicted)g(prior)f(to)f (the)h(factorization.)20 b(The)15 b(dynamically)i(gro)o(wing)d(arra)o (ys)g(include)0 1058 y(those)j(for)g(the)h(nonzero)g(v)m(alues)h(\()p Fm(nzval)p Fr(\))d(and)i(the)g(compressed)g(ro)o(w)e(indices)k(\()p Fm(rowind)p Fr(\))c(of)h Fq(L)p Fr(,)h(and)g(for)f(the)0 1114 y(nonzero)e(v)m(alues)i(\()p Fm(nzval)p Fr(\))c(and)j(the)f(ro)o (w)f(indices)k(\()p Fm(rowind)p Fr(\))13 b(of)i Fq(U)5 b Fr(.)71 1171 y(Tw)o(o)14 b(alternativ)o(e)h(memory)g(mo)q(dels)h(are) f(presen)o(ted)g(to)g(the)g(user:)68 1255 y Fk(\017)23 b Fr(system-lev)o(el)16 b({)f(based)g(on)g(C's)g(dynamic)h(allo)q (cation)g(capabilit)o(y)h(\()p Fm(malloc/free)p Fr(\);)68 1344 y Fk(\017)23 b Fr(user-lev)o(el)15 b({)f(based)g(on)g(a)g (user-supplied)i Fm(work[])e Fr(arra)o(y)e(of)i(size)h Fm(lwork)e Fr(\(in)i(b)o(ytes\).)j(This)d(is)f(similar)i(to)114 1401 y(F)l(ortran-77)e(st)o(yle)i(handling)i(of)d(w)o(ork)g(space.)23 b Fm(Work[])15 b Fr(is)h(organized)h(as)f(a)f(t)o(w)o(o-ended)h(stac)o (k,)f(one)h(end)114 1457 y(holding)k(the)e Fq(L)h Fr(and)g Fq(U)k Fr(data)18 b(structures,)h(the)g(other)f(end)h(holding)h(the)f (auxiliary)h(arra)o(ys)d(of)h(kno)o(wn)114 1514 y(size.)71 1597 y(Except)k(for)g(the)g(di\013eren)o(t)h(w)o(a)o(ys)e(to)h(allo)q (cate/deallo)q(cate)i(space,)g(the)f(logical)g(view)g(of)f(the)h (memory)0 1654 y(organization)15 b(is)h(the)f(same)g(for)g(b)q(oth)g (sc)o(hemes.)20 b(No)o(w)15 b(w)o(e)g(describ)q(e)i(the)e(p)q(olicies)i (in)f(the)g(memory)e(mo)q(dule.)71 1710 y(A)o(t)i(the)h(outset)f(of)h (the)g(factorization,)g(w)o(e)f(guess)h(there)g(will)i(b)q(e)e Fm(FILL*nnz\(A\))f Fr(\014lls)i(in)g(the)f(factors)f(and)0 1767 y(allo)q(cate)h(corresp)q(onding)f(storage)f(for)g(the)h(ab)q(o)o (v)o(e)f(four)h(arra)o(ys,)e(where)i Fm(nnz\(A\))f Fr(is)h(the)g(n)o (um)o(b)q(er)h(of)e(nonzeros)0 1823 y(in)i(original)h(matrix)e Fq(A)p Fr(,)h(and)g Fm(FILL)e Fr(is)j(an)e(in)o(teger,)h(sa)o(y)f(20.) 23 b(\(The)16 b(v)m(alue)i(of)e Fm(FILL)g Fr(can)h(b)q(e)g(set)g(in)g (an)f(inquiry)0 1880 y(function)d Fm(sp)p 226 1880 15 2 v 17 w(ienv\(\))p Fr(,)f(see)h(Section)h(7.3.\))j(If)c(this)g (initial)i(request)e(exceeds)g(the)g(ph)o(ysical)h(memory)e(constrain)o (t,)0 1936 y(the)j Fm(FILL)g Fr(factor)g(is)h(rep)q(eatedly)g(reduced,) g(and)g(attempts)e(are)h(made)h(to)e(allo)q(cate)i(smaller)h(arra)o (ys,)c(un)o(til)k(the)0 1993 y(initial)g(allo)q(cation)g(succeeds.)71 2049 y(During)d(the)f(factorization,)h(if)g(an)o(y)f(arra)o(y)g(size)h (exceeds)h(the)f(allo)q(cated)h(b)q(ound,)f(w)o(e)g(expand)g(it)g(as)f (follo)o(ws.)0 2105 y(W)l(e)j(\014rst)f(allo)q(cate)h(a)g(c)o(h)o(unk)f (of)h(new)f(memory)h(of)f(size)h Fm(EXPAND)f Fr(times)h(the)f(old)i (size,)f(then)g(cop)o(y)f(the)h(existing)0 2162 y(data)10 b(in)o(to)g(the)h(new)g(memory)l(,)f(and)h(then)g(free)g(the)f(old)h (storage.)17 b(The)11 b(extra)f(cop)o(ying)h(is)g(necessary)l(,)g(b)q (ecause)h(the)0 2218 y(factorization)h(algorithm)g(requires)i(that)d (eac)o(h)i(of)f(the)g(aforemen)o(tioned)g(four)g(data)g(structures)g(b) q(e)h Fe(c)n(ontiguous)0 2275 y Fr(in)22 b(memory)l(.)36 b(The)21 b(v)m(alues)h(of)f Fm(FILL)f Fr(and)h Fm(EXPAND)f Fr(are)g(normally)i(set)e(to)h(20)f(and)h(1.5,)g(resp)q(ectiv)o(ely)l (.)38 b(See)0 2331 y Fm(xmemory.c)14 b Fr(for)g(details.)71 2388 y(After)k(factorization,)h(w)o(e)f(do)h(not)f(garbage-collect)h (the)g(extra)f(space)h(that)e(ma)o(y)h(ha)o(v)o(e)h(b)q(een)g(allo)q (cated.)0 2444 y(Th)o(us,)12 b(there)g(will)h(b)q(e)f(external)g (fragmen)o(tation)f(in)h(the)g Fq(L)f Fr(and)h Fq(U)17 b Fr(data)11 b(structures.)18 b(The)12 b(settings)g(of)f Fm(FILL)g Fr(and)0 2501 y Fm(EXPAND)k Fr(should)i(tak)o(e)e(in)o(to)h (accoun)o(t)g(the)g(trade-o\013)f(b)q(et)o(w)o(een)h(the)g(n)o(um)o(b)q (er)g(of)g(expansions)h(and)f(the)g(amoun)o(t)0 2557 y(of)f(fragmen)o(tation.)71 2614 y(Arra)o(ys)h(of)h(kno)o(wn)h(size,)h (suc)o(h)f(as)f(v)m(arious)h(column)h(p)q(oin)o(ters)f(and)f(w)o (orking)h(arra)o(ys,)e(are)i(allo)q(cated)g(just)0 2670 y(once.)i(All)d(dynamically-allo)q(cated)h(w)o(orking)d(arra)o(ys)f (are)h(freed)g(after)f(factorization.)952 2795 y(15)p eop %%Page: 16 16 16 15 bop 0 46 a Fu(7)69 b(Installation)0 149 y Ft(7.1)56 b(File)17 b(structure)0 235 y Fr(The)e(top)g(lev)o(el)i(Sup)q(erLU/)f (directory)g(is)f(structured)h(as)e(follo)o(ws:)95 321 y Fm(SuperLU/README)94 b(instructions)22 b(on)i(installation)95 378 y(SuperLU/CBLAS/)94 b(needed)23 b(BLAS)g(routines)g(in)h(C,)f(not)h (necessarily)e(fast)95 434 y(SuperLU/EXAMPLE/)46 b(example)23 b(programs)95 491 y(SuperLU/INSTALL/)46 b(test)23 b(machine)g (dependent)g(parameters;)f(this)i(Users')f(Guide)95 547 y(SuperLU/MATLAB/)70 b(Matlab)23 b(mex-file)g(interface)95 604 y(SuperLU/SRC/)142 b(C)24 b(source)f(code,)g(to)h(be)f(compiled)g (into)g(the)h(superlu.a)e(library)95 660 y(SuperLU/TESTING/)46 b(driver)23 b(routines)g(to)g(test)h(correctness)95 717 y(SuperLU/Makefile)46 b(top)23 b(level)h(Makefile)e(that)i(does)f (installation)f(and)i(testing)95 773 y(SuperLU/make.inc)46 b(compiler,)23 b(compile)g(flags,)g(library)f(definitions)h(and)g(C)525 829 y(preprocessor)f(definitions,)g(included)h(in)h(all)f(Makefiles.)71 916 y Fr(Before)16 b(installing)i(the)e(pac)o(k)m(age,)g(y)o(ou)g(ma)o (y)g(need)h(to)f(edit)h Fm(SuperLU/make.inc)d Fr(for)h(y)o(our)h (system.)22 b(This)0 973 y(mak)o(e)c(include)k(\014le)e(is)f (referenced)h(inside)h(eac)o(h)e(of)g(the)g Fm(Makefiles)e Fr(in)j(the)f(v)m(arious)g(sub)q(directories.)33 b(As)19 b(a)0 1029 y(result,)13 b(there)g(is)g(no)f(need)h(to)f(edit)h(the)g Fm(Makefiles)e Fr(in)i(the)g(sub)q(directories.)20 b(All)14 b(information)e(that)g(is)h(mac)o(hine)0 1086 y(sp)q(eci\014c)k(has)e (b)q(een)h(de\014ned)h(in)f Fm(make.inc)p Fr(.)71 1142 y(Sample)f(mac)o(hine-sp)q(eci\014c)j Fm(make.inc)c Fr(are)g(pro)o (vided)i(in)g(the)f(top-lev)o(el)h Fm(SuperLU/)d Fr(directory)j(for)e (sev)o(eral)0 1199 y(systems,)i(including)k(IBM)d(RS/6000,)f(DEC)g (Alpha,)i(SunOS)g(4.x,)e(SunOS)j(5.x)d(\(Solaris\),)g(HP-P)l(A)i(and)f (SGI)0 1255 y(Iris)d(4.x.)19 b(When)14 b(y)o(ou)f(ha)o(v)o(e)g (selected)i(the)f(mac)o(hine)g(on)g(whic)o(h)g(y)o(ou)f(wish)h(to)f (install)i(Sup)q(erLU,)g(y)o(ou)e(ma)o(y)g(cop)o(y)0 1311 y(the)j(appropriate)h(sample)g(include)h(\014le)g(\(if)e(one)h(is) g(presen)o(t\))f(in)o(to)g Fm(make.inc)p Fr(.)22 b(F)l(or)16 b(example,)h(if)g(y)o(ou)f(wish)h(to)0 1368 y(run)e(Sup)q(erLU)i(on)e (an)g(IBM)h(RS/6000,)e(y)o(ou)h(can)g(do:)191 1424 y Fm(cp)23 b(make.rs6k)g(make.inc)71 1481 y Fr(F)l(or)16 b(systems)h(other)g(than)g(those)g(listed)i(ab)q(o)o(v)o(e,)e(sligh)o (t)h(mo)q(di\014cations)g(to)f(the)h Fm(make.inc)e Fr(\014le)i(will)h (need)0 1537 y(to)c(b)q(e)g(made.)20 b(In)c(particular,)g(the)f(follo)o (wing)h(three)f(items)h(should)g(b)q(e)g(examined:)56 1624 y(1.)22 b(The)15 b(BLAS)h(library)l(.)114 1680 y(If)10 b(there)g(is)h(a)f(BLAS)h(library)g(a)o(v)m(ailable)h(on)e(y)o(our)g (mac)o(hine,)h(y)o(ou)f(ma)o(y)g(de\014ne)h(the)f(follo)o(wing)h(in)g Fm(make.inc)p Fr(:)234 1754 y Fm(BLASDEF)23 b(=)g(-DUSE)p 595 1754 15 2 v 17 w(VENDOR)p 756 1754 V 16 w(BLAS)234 1803 y(BLASLIB)g(=)g() 114 1877 y Fr(The)15 b Fm(CBLAS/)g Fr(sub)q(directory)h(con)o(tains)f (the)g(part)g(of)g(the)g(C)g(BLAS)h(needed)h(b)o(y)e(the)h(Sup)q(erLU)g (pac)o(k)m(age.)114 1933 y(Ho)o(w)o(ev)o(er,)i(these)i(co)q(des)g(are)e (in)o(tended)j(for)d(use)i(only)g(if)f(there)h(is)f(no)g(faster)g (implemen)o(tation)h(of)f(the)114 1990 y(BLAS)d(already)f(a)o(v)m (ailable)i(on)e(y)o(our)g(mac)o(hine.)21 b(In)15 b(this)h(case,)f(y)o (ou)g(should)h(do)f(the)g(follo)o(wing:)151 2081 y(1\))22 b(In)15 b Fm(make.inc)p Fr(,)f(de\014ne:)334 2144 y Fm(BLASLIB)23 b(=)g(../blas$\(PLAT\).a)151 2214 y Fr(2\))f(In)15 b(the)h(Sup)q(erLU)q (/)f(directory)l(,)g(t)o(yp)q(e:)334 2278 y Fm(make)23 b(blaslib)214 2341 y Fr(to)14 b(mak)o(e)h(the)g(BLAS)h(library)g(from)f (the)g(routines)h(in)g(the)f Fm(CBLAS/)f Fr(sub)q(directory)l(.)56 2432 y(2.)22 b(C)15 b(prepro)q(cessor)g(de\014nition)i Fm(CDEFS)p Fr(.)114 2488 y(In)12 b(the)f(header)h(\014le)h Fm(SRC/Cnames.h)p Fr(,)d(w)o(e)h(use)h(macros)f(to)f(determine)j(ho)o (w)e(C)g(routines)h(should)h(b)q(e)f(named)114 2545 y(so)i(that)h(they) g(are)g(callable)i(b)o(y)e(F)l(ortran.)837 2528 y Fi(3)876 2545 y Fr(The)g(p)q(ossible)i(options)f(for)e Fm(CDEFS)h Fr(are:)p 0 2582 780 2 v 52 2608 a Fh(3)69 2624 y Fo(Some)j(v)o (endor-supplied)i(BLAS)e(libraries)h(do)f(not)f(ha)o(v)o(e)h(C)e(in)o (terfaces.)30 b(So)18 b(the)f(re-naming)i(is)e(needed)h(in)g(order)g (for)f(the)0 2670 y(Sup)q(erLU)d(BLAS)f(calls)h(\(in)g(C\))f(to)g(in)o (terface)g(with)h(the)f(F)m(ortran-st)o(yle)h(BLAS.)952 2795 y Fr(16)p eop %%Page: 17 17 17 16 bop 168 46 a Fk(\017)23 b Fm(-DAdd)p 337 46 15 2 v 16 w Fr(:)d(F)l(ortran)14 b(exp)q(ects)i(a)f(C)g(routine)g(to)g(ha) o(v)o(e)g(an)g(underscore)h(p)q(ost\014xed)f(to)g(the)g(name;)168 118 y Fk(\017)23 b Fm(-DNoChange)p Fr(:)18 b(F)l(ortran)c(exp)q(ects)i (a)f(C)g(routine)h(name)f(to)f(b)q(e)i(iden)o(tical)h(to)e(that)f (compiled)j(b)o(y)e(C;)168 191 y Fk(\017)23 b Fm(-DUpCase)p Fr(:)18 b(F)l(ortran)c(exp)q(ects)i(a)f(C)g(routine)h(name)f(to)g(b)q (e)g(all)i(upp)q(ercase.)56 284 y(3.)22 b(The)15 b(Matlab)g(MEX-\014le) h(in)o(terface.)114 341 y(The)c Fm(MATLAB/)g Fr(sub)q(directory)i (includes)h(Matlab)d(C)g(MEX-\014les,)i(so)e(that)g(our)g(factor)g(and) h(solv)o(e)g(routines)114 397 y(can)g(b)q(e)h(called)h(as)e(alternativ) o(es)h(to)f(those)g(built)h(in)o(to)g(Matlab.)19 b(In)14 b(the)f(\014le)i Fm(SuperLU/make.inc)p Fr(,)c(de\014ne)114 453 y(MA)l(TLAB)k(to)g(b)q(e)h(the)f(directory)g(in)h(whic)o(h)h (Matlab)d(is)i(installed)h(on)e(y)o(our)g(system,)f(for)h(example:)234 528 y Fm(MATLAB)23 b(=)g(/usr/local/matlab)114 603 y Fr(A)o(t)14 b(the)i(Sup)q(erLU/)g(directory)l(,)f(t)o(yp)q(e:)249 678 y Fm(make)23 b(matlabmex)114 753 y Fr(to)11 b(build)j(the)e (MEX-\014le)g(in)o(terface.)20 b(After)11 b(y)o(ou)h(ha)o(v)o(e)f (built)i(the)f(in)o(terface,)h(y)o(ou)e(ma)o(y)g(go)h(to)f(the)h Fm(MATLAB/)114 809 y Fr(sub)q(directory)k(to)e(test)h(the)g (correctness)g(b)o(y)g(t)o(yping)h(\(in)g(Matlab\):)234 884 y Fm(trysuperlu)234 959 y(trylusolve)71 1052 y Fr(A)i Fm(Makefile)e Fr(is)j(pro)o(vided)g(in)g(eac)o(h)f(sub)q(directory)l(.) 29 b(The)18 b(installation)i(can)e(b)q(e)h(done)f(completely)h(auto-)0 1108 y(matically)d(b)o(y)f(simply)i(t)o(yping)e Fm(make)g Fr(at)f(the)i(top)e(lev)o(el.)0 1230 y Ft(7.2)56 b(T)-5 b(esting)0 1316 y Fr(The)15 b(test)g(programs)f(in)i Fm(SuperLU)o(/INSTALL)e Fr(sub)q(directory)i(test)f(t)o(w)o(o)f (routines:)68 1408 y Fk(\017)23 b Fm(SLAMCH/DLAMCH)9 b Fr(determines)i(prop)q(erties)h(of)e(the)h(\015oating-p)q(oin)o(t)g (arithmetic)g(at)g(run-time)g(\(b)q(oth)g(single)114 1465 y(and)16 b(double)h(precision\),)g(suc)o(h)f(as)f(the)h(mac)o (hine)h(epsilon,)g(under\015o)o(w)f(threshold,)g(o)o(v)o(er\015o)o(w)f (threshold,)114 1521 y(and)g(related)h(parameters;)68 1614 y Fk(\017)23 b Fm(SuperLU)p 285 1614 V 16 w(timer)p 421 1614 V 16 w(\(\))15 b Fr(returns)h(the)f(time)h(in)g(seconds)g (used)g(b)o(y)g(the)f(pro)q(cess.)21 b(This)16 b(function)g(ma)o(y)f (need)114 1671 y(to)f(b)q(e)i(mo)q(di\014ed)h(to)d(run)i(on)f(y)o(our)f (mac)o(hine.)71 1763 y(The)e(test)f(programs)f(in)j(the)f Fm(SuperLU)o(/TESTING)e Fr(sub)q(directory)j(are)e(designed)i(to)e (test)g(all)i(the)f(functions)g(of)0 1820 y(the)i(driv)o(er)h (routines,)f(esp)q(ecially)j(the)d(exp)q(ert)h(driv)o(ers.)k(The)c (Unix)g(shell)h(script)e(\014les)h Fm(xtest.csh)e Fr(are)h(used)h(to)0 1876 y(in)o(v)o(ok)o(e)h(tests)f(with)i(v)m(arying)f(parameter)g (settings.)22 b(The)17 b(input)g(matrices)f(include)i(an)e(actual)g (sparse)g(matrix)0 1933 y Fm(SuperLU)o(/EXAMPLE/g10)i Fr(of)h(dimension)j(100)12 b Fk(\002)i Fr(100,)961 1916 y Fi(4)1000 1933 y Fr(and)20 b(n)o(umerous)g(matrices)g(with)g(sp)q (ecial)h(prop)q(erties)0 1989 y(from)14 b(the)i(LAP)l(A)o(CK)g(test)e (suite.)21 b(T)l(able)16 b(1)f(describ)q(es)h(the)g(prop)q(erties)g(of) e(the)i(test)e(matrices.)71 2046 y(F)l(or)19 b(eac)o(h)g(command)h (line)h(option)f(sp)q(eci\014ed)h(in)g Fm(xtest.csh)p Fr(,)e(the)g(test)g(program)g Fm(xDRIVE)g Fr(reads)g(in)h(or)0 2102 y(generates)d(an)h(appropriate)g(matrix,)g(calls)g(the)g(driv)o (er)g(routines,)h(and)f(computes)f(a)h(n)o(um)o(b)q(er)g(of)f(test)h (ratios)0 2158 y(to)h(v)o(erify)g(that)g(eac)o(h)h(op)q(eration)f(has)h (p)q(erformed)f(correctly)l(.)33 b(If)20 b(the)g(test)e(ratio)h(is)h (smaller)h(than)e(a)g(preset)0 2215 y(threshold,)d(the)f(op)q(eration)g (is)h(considered)h(to)d(b)q(e)i(correct.)k(Eac)o(h)15 b(test)f(matrix)h(is)h(sub)s(ject)f(to)g(the)g(tests)g(listed)0 2271 y(in)h(T)l(able)g(2.)71 2328 y(Let)h Fq(r)g Fr(b)q(e)h(the)f (residual)h Fq(r)f Fr(=)e Fq(b)c Fk(\000)h Fq(Ax)p Fr(,)17 b(and)g(let)g Fq(m)960 2335 y Ff(i)991 2328 y Fr(b)q(e)h(the)f(n)o(um)o (b)q(er)g(of)g(nonzeros)g(in)g(ro)o(w)f Fq(i)h Fr(of)f Fq(A)p Fr(.)25 b(Then)0 2384 y(the)15 b(comp)q(onen)o(t)o(wise)h(bac)o (kw)o(ard)e(error)h Fm(BERR)f Fr(and)i(forw)o(ard)e(error)g Fm(FERR)h Fr([1)o(])g(are)g(calculated)h(b)o(y:)694 2509 y Fm(BERR)c Fr(=)h(max)887 2538 y Ff(i)1055 2478 y Fk(j)p Fq(r)q Fk(j)1103 2485 y Ff(i)p 947 2498 276 2 v 947 2540 a Fr(\()p Fk(j)p Fq(A)p Fk(j)i(j)p Fq(x)p Fk(j)9 b Fr(+)h Fk(j)p Fq(b)p Fk(j)p Fr(\))1210 2547 y Ff(i)1243 2509 y Fq(:)p 0 2582 780 2 v 52 2608 a Fh(4)69 2624 y Fo(Matrix)17 b Fg(g10)d Fo(is)i(\014rst)g(generated)g(with)g(the)g(structure)g(of)f (the)h(10-b)o(y-10)g(\014v)o(e-p)q(oin)o(t)h(grid,)g(and)f(random)g(n)o (umerical)i(v)n(alues.)0 2670 y(The)13 b(columns)h(are)g(then)f(p)q (erm)o(uted)h(b)o(y)f(COLMMD)g(ordering)i(from)e(Matlab.)952 2795 y Fr(17)p eop %%Page: 18 18 18 17 bop 95 28 771 2 v 94 85 2 57 v 120 68 a Fr(Matrix)14 b(t)o(yp)q(e)p 383 85 V 50 w(Description)p 864 85 V 95 86 771 2 v 94 143 2 57 v 120 126 a(0)p 383 143 V 265 w(sparse)h(matrix)g Fm(g10)p 864 143 V 94 199 V 120 182 a Fr(1)p 383 199 V 265 w(diagonal)p 864 199 V 94 256 V 120 239 a(2)p 383 256 V 265 w(upp)q(er)h(triangular)p 864 256 V 94 312 V 120 295 a(3)p 383 312 V 265 w(lo)o(w)o(er)f (triangular)p 864 312 V 94 369 V 120 352 a(4)p 383 369 V 265 w(random,)g Fq(\024)e Fr(=)g(2)p 864 369 V 94 425 V 120 408 a(5)p 383 425 V 265 w(\014rst)i(column)h(zero)p 864 425 V 94 482 V 120 465 a(6)p 383 482 V 265 w(last)f(column)i(zero)p 864 482 V 94 538 V 120 521 a(7)p 383 538 V 265 w(last)e Fq(n=)p Fr(2)g(columns)h(zero)p 864 538 V 94 595 V 120 578 a(8)p 383 595 V 265 w(random,)f Fq(\024)e Fr(=)675 541 y Fj(p)p 716 541 103 2 v 716 578 a Fr(0)p Fq(:)p Fr(1)p Fq(=")p 864 595 2 57 v 94 651 V 120 634 a Fr(9)p 383 651 V 265 w(random,)i Fq(\024)e Fr(=)g(0)p Fq(:)p Fr(1)p Fq(=")p 864 651 V 94 708 V 120 691 a Fr(10)p 383 708 V 242 w(scaled)j(near)g(under\015o)o(w)p 864 708 V 94 764 V 120 747 a(11)p 383 764 V 242 w(scaled)g(near)g(o)o(v)o (er\015o)o(w)p 864 764 V 95 766 771 2 v 0 893 a(T)l(able)23 b(1:)33 b(Prop)q(erties)22 b(of)g(the)g(test)f(matrices.)40 b Fq(")22 b Fr(is)0 949 y(the)15 b(mac)o(hine)g(epsilon)i(and)e Fq(\024)g Fr(is)g(the)g(condition)h(n)o(um-)0 1006 y(b)q(er)g(of)f (matrix)g Fq(A)p Fr(.)20 b(Matrix)14 b(t)o(yp)q(es)i(with)f(one)h(or)e (more)0 1062 y(columns)23 b(set)f(to)f(zero)h(are)g(used)h(to)e(test)h (the)g(error)0 1119 y(return)15 b(co)q(des.)p 1040 2 830 2 v 1039 58 2 57 v 1065 41 a(T)l(est)g(ratio)p 1529 58 V 296 w(Routines)p 1869 58 V 1040 60 830 2 v 1039 116 2 57 v 1065 99 a Fk(jj)p Fq(LU)f Fk(\000)d Fq(A)p Fk(jj)p Fq(=)p Fr(\()p Fq(n)p Fk(jj)p Fq(A)p Fk(jj)p Fq(")p Fr(\))p 1529 116 V 89 w Fm(xGSTRF)p 1869 116 V 1039 173 V 1065 156 a Fk(jj)p Fq(b)e Fk(\000)h Fq(Ax)p Fk(jj)p Fq(=)p Fr(\()p Fk(jj)p Fq(A)p Fk(jj)g(jj)p Fq(x)p Fk(jj)p Fq(")p Fr(\))p 1529 173 V 50 w Fm(xGSSV)p Fr(,)k Fm(xGSSVX)p 1869 173 V 1039 229 V 1065 212 a Fk(jj)p Fq(x)9 b Fk(\000)i Fq(x)1198 196 y Fv(\003)1218 212 y Fk(jj)p Fq(=)p Fr(\()p Fk(jj)p Fq(x)1337 196 y Fv(\003)1354 212 y Fk(jj)p Fq(\024")p Fr(\))p 1529 229 V 110 w Fm(xGSSVX)p 1869 229 V 1039 286 V 1065 269 a Fk(jj)p Fq(x)e Fk(\000)i Fq(x)1198 252 y Fv(\003)1218 269 y Fk(jj)p Fq(=)p Fr(\()p Fk(jj)p Fq(x)1337 252 y Fv(\003)1354 269 y Fk(jj)h Fm(FERR)o Fr(\))p 1529 286 V 50 w Fm(xGSSVX)p 1869 286 V 1039 342 V 1065 325 a(BERR)p Fq(=")p 1529 342 V 350 w Fm(xGSSVX)p 1869 342 V 1040 344 830 2 v 975 471 a Fr(T)l(able)18 b(2:)k(T)o(yp)q(es)17 b(of)f(tests.)24 b Fq(x)1505 455 y Fv(\003)1541 471 y Fr(is)17 b(the)g(true)g(solution,)975 528 y Fm(FERR)h Fr(is)h(the)g(error)f(b)q(ound,)i(and)f Fm(BERR)f Fr(is)h(the)g(bac)o(k-)975 584 y(w)o(ard)c(error.)745 1268 y Fm(FERR)d Fr(=)906 1237 y Fk(jj)i(j)p Fq(A)993 1221 y Fv(\000)p Fi(1)1040 1237 y Fk(j)h Fq(f)20 b Fk(jj)1136 1244 y Fv(1)p 906 1258 267 2 v 982 1299 a Fk(jj)p Fq(x)p Fk(jj)1060 1306 y Fv(1)1193 1268 y Fq(:)0 1374 y Fr(Here,)14 b Fq(f)20 b Fr(is)15 b(a)f(nonnegativ)o(e)h(v)o(ector)e(whose)i(comp)q (onen)o(ts)f(are)g(computed)h(as)f Fq(f)1374 1381 y Ff(i)1401 1374 y Fr(=)f Fk(j)p Fq(r)q Fk(j)1497 1381 y Ff(i)1518 1374 y Fr(+)c Fq(m)1602 1381 y Ff(i)1630 1374 y Fq(")15 b Fr(\()p Fk(j)p Fq(A)p Fk(j)e(j)p Fq(x)p Fk(j)8 b Fr(+)h Fk(j)p Fq(b)p Fk(j)p Fr(\))1925 1381 y Ff(i)1937 1374 y Fr(,)0 1431 y(and)20 b(the)f(norm)g(in)i(the)e(n)o(umerator)g(is)g (estimated)h(using)g(the)g(same)f(subroutine)h(used)g(for)f(estimating) h(the)0 1487 y(condition)f(n)o(um)o(b)q(er.)27 b Fm(BERR)16 b Fr(measures)i(the)f(smallest)h(relativ)o(e)g(p)q(erturbation)g(one)g (can)f(mak)o(e)g(to)g(eac)o(h)g(en)o(try)0 1544 y(of)f(A)g(and)h(of)e (b)i(so)f(that)f(the)i(computed)f(solution)h(is)g(an)f(exact)g (solution)h(of)f(the)g(p)q(erturb)q(ed)i(problem.)24 b Fm(FERR)0 1600 y Fr(is)18 b(an)g(estimated)g(b)q(ound)h(on)f(the)g (error)f Fk(k)p Fq(x)777 1584 y Fv(\003)808 1600 y Fk(\000)c Fq(x)p Fk(k)905 1607 y Fv(1)942 1600 y Fq(=)p Fk(k)p Fq(x)p Fk(k)1037 1607 y Fv(1)1073 1600 y Fr(,)18 b(where)g Fq(x)1264 1584 y Fv(\003)1302 1600 y Fr(is)g(the)g(true)g(solution.)29 b(F)l(or)17 b(further)0 1656 y(details)f(on)f(error)g(analysis)h(and)f (error)g(b)q(ounds)h(estimation,)f(see)g([1,)f(Chapter)h(4])g(and)30 b([2].)0 1778 y Ft(7.3)56 b(P)n(erformance-tuning)17 b(parameters)0 1863 y Fr(Sup)q(erLU)g(c)o(ho)q(oses)f(suc)o(h)g(mac)o (hine-dep)q(enden)o(t)j(parameters)c(as)g(blo)q(c)o(k)i(size)g(b)o(y)e (calling)j(an)e(inquiry)h(function)0 1920 y Fm(sp)p 51 1920 15 2 v 17 w(ienv\(\))p Fr(,)f(whic)o(h)h(ma)o(y)f(b)q(e)h(set)f (to)g(return)h(di\013eren)o(t)g(v)m(alues)g(on)g(di\013eren)o(t)g(mac)o (hines.)24 b(The)17 b(declaration)g(of)0 1976 y(this)f(function)g(is)71 2063 y Fm(int)23 b(sp)p 217 2063 V 17 w(ienv\(int)g(ispec\);)71 2149 y(Ispec)14 b Fr(sp)q(eci\014es)j(the)e(parameter)g(to)f(b)q(e)i (returned,)f(\(See)h(reference)g([4)o(])f(for)f(their)i (de\014nitions.\))159 2240 y(isp)q(ec)f(=)h(1:)j(the)d(panel)g(size)g (\()p Fq(w)q Fr(\))270 2297 y(=)g(2:)j(the)d(relaxation)f(parameter)f (to)h(con)o(trol)g(sup)q(erno)q(de)h(amalgamation)f(\()p Fq(r)q(el)q(ax)p Fr(\))270 2353 y(=)h(3:)j(the)d(maxim)o(um)f(allo)o(w) o(able)h(size)g(for)e(a)h(sup)q(erno)q(de)i(\()p Fq(maxsup)p Fr(\))270 2410 y(=)f(4:)j(the)d(minim)o(um)g(ro)o(w)e(dimension)j(for)e (2-D)f(blo)q(c)o(king)j(to)d(b)q(e)i(used)g(\()p Fq(r)q(ow)q(bl)q(k)q Fr(\))270 2466 y(=)g(5:)j(the)d(minim)o(um)g(column)g(dimension)h(for)d (2-D)h(blo)q(c)o(king)i(to)d(b)q(e)i(used)g(\()p Fq(col)q(bl)q(k)q Fr(\))270 2523 y(=)g(6:)j(the)d(estimated)f(\014lls)h(factor)f(for)f(L) i(and)f(U,)g(compared)g(with)h(A)71 2614 y(Users)d(are)g(encouraged)g (to)g(mo)q(dify)h(this)g(subroutine)g(to)f(set)g(the)g(tuning)h (parameters)f(for)f(their)i(o)o(wn)f(lo)q(cal)0 2670 y(en)o(vironmen)o(t.)26 b(The)18 b(optimal)f(v)m(alues)i(dep)q(end)g (mainly)f(on)f(the)g(cac)o(he)h(size)g(and)g(the)f(BLAS)h(sp)q(eed.)27 b(If)17 b(y)o(our)952 2795 y(18)p eop %%Page: 19 19 19 18 bop 308 51 1334 2 v 307 101 2 50 v 591 101 V 650 86 a Fc(On-c)o(hip)50 b(External)p 1641 101 V 307 151 V 374 136 a(Mac)o(hine)p 591 151 V 158 w(Cac)o(he)97 b(Cac)o(he)62 b Fb(w)50 b(maxsup)g(r)q(ow)q(bl)q(k)h(col)q(bl)q(k)p 1641 151 V 308 153 1334 2 v 307 203 2 50 v 333 188 a Fc(RS/6000-590)p 591 203 V 87 w(256)13 b(KB)186 b({)71 b(8)133 b(100)112 b(200)h(40)p 1641 203 V 307 252 V 333 237 a(MIPS)14 b(R8000)p 591 252 V 111 w(16)f(KB)105 b(4)14 b(MB)50 b(20)133 b(100)112 b(800)92 b(100)p 1641 252 V 307 302 V 333 287 a(Alpha)13 b(21064)p 591 302 V 137 w(8)g(KB)69 b(512)13 b(KB)72 b(8)133 b(100)112 b(400)h(40)p 1641 302 V 307 352 V 333 337 a(Alpha)13 b(21164)p 591 352 V 76 w(8)h(KB-L1)104 b(4)14 b(MB)50 b(16)154 b(50)112 b(100)h(40)p 1641 352 V 307 402 V 591 402 V 616 387 a(96)14 b(KB-L2)p 1641 402 V 307 452 V 333 437 a(Sparc)g(20)p 591 452 V 187 w(16)f(KB)105 b(1)14 b(MB)71 b(8)133 b(100)112 b(400)h(50)p 1641 452 V 307 501 V 333 487 a(UltraSparc-I)p 591 501 V 118 w(16)13 b(KB)69 b(512)13 b(KB)72 b(8)133 b(100)112 b(400)h(40)p 1641 501 V 307 551 V 333 536 a(Cra)o(y)14 b(J90)p 591 551 V 275 w({)185 b({)71 b(1)133 b(100)91 b(1000)h(100)p 1641 551 V 308 553 1334 2 v 330 650 a Fr(T)l(able)16 b(3:)j(T)o(ypical)d(blo)q(c)o(king)h(parameter)d(v)m (alues)j(for)d(sev)o(eral)i(mac)o(hines.)0 787 y(system)f(has)h(a)f(v)o (ery)g(small)h(cac)o(he,)g(or)f(if)h(y)o(ou)f(w)o(an)o(t)f(to)h (e\016cien)o(tly)i(utilize)h(the)e(closest)f(cac)o(he)h(in)h(a)e(m)o (ultilev)o(el)0 844 y(cac)o(he)h(organization,)f(y)o(ou)h(should)g(pa)o (y)g(sp)q(ecial)h(atten)o(tion)f(to)f(these)g(parameter)g(settings.)22 b(In)16 b(our)f(tec)o(hnical)0 900 y(pap)q(er)h([4)o(],)e(w)o(e)h (describ)q(ed)i(a)e(detailed)i(metho)q(dology)e(for)g(setting)g(these)g (parameters)g(for)f(high)i(p)q(erformance.)71 957 y(The)i Fq(r)q(el)q(ax)f Fr(parameter)g(is)h(usually)h(set)e(b)q(et)o(w)o(een)h (4)g(and)g(8.)27 b(The)18 b(other)f(parameter)g(v)m(alues)i(whic)o(h)g (giv)o(e)0 1013 y(go)q(o)q(d)e(p)q(erformance)h(on)f(sev)o(eral)g(mac)o (hines)h(are)f(listed)i(in)f(T)l(able)g(3.)26 b(In)17 b(a)g(sup)q(erno)q(de-panel)j(up)q(date,)e(if)g(the)0 1070 y(up)q(dating)g(sup)q(erno)q(de)f(is)h(to)q(o)d(large)i(to)f (\014t)g(in)i(cac)o(he,)f(then)g(a)f(2-D)g(blo)q(c)o(k)h(partitioning)h (of)e(the)h(sup)q(erno)q(de)g(is)0 1126 y(used,)f(in)h(whic)o(h)f Fq(r)q(ow)q(bl)q(k)f Fr(and)h Fq(col)q(bl)q(k)f Fr(determine)i(that)e (a)g(blo)q(c)o(k)h(of)g(size)g Fq(r)q(ow)q(bl)q(k)10 b Fk(\002)h Fq(col)q(bl)q(k)k Fr(is)h(used)g(to)f(up)q(date)0 1183 y(curren)o(t)g(panel.)71 1239 y(If)c Fq(col)q(bl)q(k)g Fr(is)h(set)g(greater)f(than)g Fq(maxsup)p Fr(,)h(then)g(the)g(program) e(will)k(nev)o(er)d(use)h(2-D)f(blo)q(c)o(king.)20 b(F)l(or)11 b(example,)0 1296 y(for)18 b(the)h(Cra)o(y)f(J90)g(\(whic)o(h)i(do)q (es)f(not)f(ha)o(v)o(e)h(cac)o(he\),)g Fq(w)g Fr(=)g(1)g(and)g(1-D)f (blo)q(c)o(king)i(giv)o(e)f(go)q(o)q(d)g(p)q(erformance;)0 1352 y(more)c(lev)o(els)h(of)f(blo)q(c)o(king)i(only)e(increase)h(o)o (v)o(erhead.)0 1474 y Ft(7.4)56 b(Error)18 b(handling)0 1560 y Fr(A)e(macro)g Fm(ABORT)f Fr(is)i(de\014ned)h(in)f Fm(SRC/util.h)e Fr(to)g(handle)j(unreco)o(v)o(erable)f(errors)e(that)h (o)q(ccur)h(in)g(the)f(middle)0 1616 y(of)f(the)g(computation,)g(suc)o (h)g(as)g Fm(malloc)f Fr(failure.)21 b(The)16 b(default)g(action)f(of)g Fm(ABORT)f Fr(is)i(to)f(call)71 1672 y Fm(superlu)p 242 1672 15 2 v 16 w(abort)p 378 1672 V 16 w(and)p 466 1672 V 17 w(exit\(char)23 b(*msg\))0 1729 y Fr(whic)o(h)18 b(prin)o(ts)f(an)h(error)e(message,)h(the)g(line)i(n)o(um)o(b)q(er)f (and)f(the)g(\014le)i(name)e(at)f(whic)o(h)i(the)g(error)e(o)q(ccurs,)i (and)0 1785 y(calls)e Fm(exit)f Fr(function)h(to)e(terminate)i(the)f (program.)71 1842 y(If)h(this)g(t)o(yp)q(e)h(of)e(termination)i(is)f (not)g(appropriate)g(in)h(some)f(en)o(vironmen)o(t,)g(users)g(can)h (de\014ne)g(their)f(o)o(wn)0 1898 y(ab)q(ort)f(function.)20 b(When)c(compiling)h(the)e(Sup)q(erLU)i(library)l(,)f(users)f(c)o(ho)q (ose)g(the)g(C)g(prepro)q(cessor)h(de\014nition)71 1955 y Fm(-DUSER)p 218 1955 V 16 w(ABORT)23 b(=)h(my)p 473 1955 V 17 w(abort)0 2011 y Fr(A)o(t)15 b(the)g(same)g(time,)g(users)g (supply)i(the)e(follo)o(wing)h Fm(my)p 955 2011 V 17 w(abort)e Fr(function)71 2068 y Fm(my)p 122 2068 V 16 w(abort\(char)23 b(*msg\))0 2124 y Fr(whic)o(h)16 b(o)o(v)o(errides)f (the)g(b)q(eha)o(vior)h(of)f Fm(superlu)p 808 2124 V 16 w(abort)p 944 2124 V 17 w(and)p 1033 2124 V 16 w(exit)p Fr(.)0 2267 y Fu(8)69 b(Statistics)0 2369 y Fr(Sup)q(erLU)21 b(in)o(ternally)g(records)f(some)f(p)q(erformance)h(statistics,)h(suc)o (h)f(as)f(\015oating-p)q(oin)o(t)h(op)q(eration)g(coun)o(ts)0 2425 y(and)15 b(the)h(time)f(tak)o(en)g(b)o(y)g(factorization.)20 b(A)15 b(v)m(ariable)i Fm(SuperLUStat)c Fr(is)j(declared)g(with)g(the)f (follo)o(wing)h(t)o(yp)q(e.)95 2519 y Fm(typedef)23 b(struct)g({)191 2576 y(int)119 b(*panel_histo;)22 b(/*)h(histogram)g(of)h(panel)f(size) g(distribution)f(*/)191 2632 y(double)47 b(*utime;)166 b(/*)23 b(time)h(spent)f(in)h(various)e(phases)i(*/)952 2795 y Fr(19)p eop %%Page: 20 20 20 19 bop 191 46 a Fm(float)71 b(*ops;)214 b(/*)23 b(float-point)g (operation)f(count)i(in)f(various)g(phases)g(*/)95 102 y(})h(SuperLUStat_t;)71 179 y Fr(In)18 b(the)f(b)q(eginning)j(of)d(b)q (oth)g(driv)o(er)h(routines)g Fm(xGSSV)e Fr(and)i Fm(xGSSVX)p Fr(,)e(subroutine)i Fm(StatInit)f Fr(is)h(called)h(to)0 235 y(allo)q(cate)c(storage)e(and)i(p)q(erform)f(initialization)j(for)c (the)i(\014elds)g Fm(panel)p 1230 235 15 2 v 17 w(histo)p Fr(,)e Fm(utime)p Fr(,)h(and)g Fm(ops)p Fr(.)19 b(The)c(phases)0 292 y(are)i(de\014ned)j(b)o(y)d(the)h(en)o(umerate)g(t)o(yp)q(e)g Fm(PhaseType)e Fr(in)j Fm(SRC/util.h)p Fr(.)26 b(In)18 b(the)g(end)h(of)e(the)h(driv)o(er)g(routines,)0 348 y(subroutine)13 b Fm(StatFree)f Fr(is)g(called)i(to)e(deallo)q(cate)i (storage)d(of)h(the)g(ab)q(o)o(v)o(e)g(statistics)h(\014elds.)20 b(After)12 b(deallo)q(cation,)0 405 y(the)17 b(statistics)h(are)f(no)g (longer)h(accessible.)28 b(Therefore,)17 b(users)h(should)g(extract)f (the)g(information)h(they)f(need)0 461 y(b)q(efore)e(calling)i Fm(StatFree)p Fr(.)71 518 y(An)12 b(inquiry)i(function)f Fm(xQuerySpace)e Fr(is)i(pro)o(vided)g(to)e(compute)i(memory)f(usage)g (statistics.)19 b(This)12 b(routine)0 574 y(should)j(b)q(e)g(called)g (after)e(the)h Fq(LU)19 b Fr(factorization.)g(It)14 b(calculates)i(the) e(storage)e(requiremen)o(t)j(based)f(on)g(the)g(size)0 630 y(of)h(the)g Fq(L)g Fr(and)h Fq(U)k Fr(data)14 b(structures)h(and)g (w)o(orking)g(arra)o(ys.)0 770 y Fu(9)69 b(Example)22 b(programs)0 872 y Fr(In)c(the)e Fm(SuperLU/EXAMPLE/)f Fr(sub)q(directory)l(,)j(w)o(e)f(presen)o(t)g(a)f(few)h(sample)g (programs,)f(suc)o(h)h(as)g Fm(xLINSOL)f Fr(and)0 928 y Fm(xLINSOLX)p Fr(,)g(to)h(illustrate)h(the)g(complete)g(calling)h (sequences)g(used)f(to)f(solv)o(e)h(systems)e(of)i(equations.)27 b(These)0 985 y(include)16 b(ho)o(w)d(to)h(set)f(up)h(the)g(matrix)g (structures,)f(ho)o(w)g(to)g(obtain)h(a)g(\014ll-reducing)i(ordering,)e (and)g(ho)o(w)g(to)f(call)0 1041 y(driv)o(er)g(routines.)19 b(A)13 b Fm(Makefile)e Fr(is)i(pro)o(vided)g(to)f(generate)g(the)h (executables.)20 b(A)12 b Fm(README)g Fr(\014le)i(in)f(this)g (directory)0 1098 y(sho)o(ws)i(ho)o(w)f(to)h(run)g(these)h(examples.)71 1154 y(Based)i(on)g(these)h(sample)f(programs,)g(w)o(e)g(no)o(w)g (illustrate)h(ho)o(w)f(w)o(e)g(ma)o(y)f(use)i(Sup)q(erLU)g(in)g(some)f (other)0 1211 y(w)o(a)o(ys.)0 1329 y Ft(9.1)56 b(Rep)r(eated)17 b(factorizations)71 1415 y Fr(In)i(man)o(y)f(iterativ)o(e)h(pro)q (cesses,)h(matrices)f(with)g(the)g(same)g(sparsit)o(y)f(pattern)h(but)g (di\013eren)o(t)g(n)o(umerical)0 1471 y(v)m(alues)f(m)o(ust)d(b)q(e)i (factored)f(rep)q(eatedly)l(.)25 b(Th)o(us,)16 b(computing)h(a)f (\014ll-reducing)j(ordering)e(and)g(p)q(erforming)f(col-)0 1528 y(umn)j(p)q(erm)o(utation)f(are)g(needed)i(only)e(once.)30 b(In)19 b(addition,)h(the)e(memory)g(for)g Fq(L)g Fr(and)g Fq(U)24 b Fr(can)18 b(b)q(e)h(allo)q(cated)0 1584 y(only)e(once,)f(and) g(re-used)h(in)g(the)g(subsequen)o(t)f(factorizations.)23 b(If)16 b(there)h(is)f(not)g(enough)h(space)f(for)g Fq(L)g Fr(and)g Fq(U)0 1641 y Fr(from)11 b(the)h(previous)h(factorization)e (\(due)i(to)e(di\013eren)o(t)h(piv)o(oting\),)g(the)g(factor)f (routines)i Fm(xGSTRF)e Fr(automatically)0 1697 y(expand)16 b(memory)e(as)h(needed.)21 b(Figure)16 b(4)f(sho)o(ws)f(the)i(co)q(de)f (segmen)o(t)g(for)g(this)g(purp)q(ose.)0 1816 y Ft(9.2)56 b(Calling)18 b(from)f(F)-5 b(ortran)71 1902 y Fr(General)15 b(rules)h(for)f(mixing)h(F)l(ortran)e(and)h(C)g(programs)f(are)h(as)g (follo)o(ws.)68 1984 y Fk(\017)23 b Fr(Argumen)o(ts)14 b(in)i(C)f(are)g(passed)h(b)o(y)f(v)m(alue,)h(while)h(in)f(F)l(ortran)e (are)g(passed)i(b)o(y)f(reference.)21 b(So)15 b(w)o(e)g(alw)o(a)o(ys) 114 2040 y(pass)c(the)h(address)f(\(as)g(a)h(p)q(oin)o(ter\))f(in)i (the)f(C)f(calling)i(routine.)20 b(\(Y)l(ou)11 b(cannot)h(mak)o(e)f(a)g (call)i(with)f(n)o(um)o(b)q(ers)114 2097 y(directly)k(in)g(the)f (parameters.\))68 2184 y Fk(\017)23 b Fr(F)l(ortran)d(uses)i(1-based)g (arra)o(y)e(addressing,)j(while)h(C)d(uses)h(0-based.)39 b(Therefore,)23 b(the)e(ro)o(w)g(indices)114 2240 y(\()p Fm(rowind)p Fr(\))14 b(and)i(in)o(teger)g(p)q(oin)o(ters)h(to)e(arra)o (ys)g(\()p Fm(colptr)p Fr(\))f(should)j(b)q(e)g(adjusted)f(b)q(efore)g (they)g(are)g(passed)114 2297 y(in)o(to)f(a)g(C)g(routine.)71 2379 y(Because)c(of)g(the)g(ab)q(o)o(v)o(e)g(language)g(di\013erences,) i(in)f(order)f(to)g(em)o(b)q(ed)h(Sup)q(erLU)g(in)g(a)f(F)l(ortran)f (en)o(vironmen)o(t,)0 2435 y(users)16 b(are)f(required)i(to)e(supply)i (\\bridge")f(routines)g(\(in)g(C\))f(for)g(all)i(the)e(Sup)q(erLU)j (subroutines)e(that)f(will)i(b)q(e)0 2492 y(called)i(from)f(F)l(ortran) e(programs.)27 b(Figure)18 b(5)f(is)i(an)f(example)g(sho)o(wing)g(ho)o (w)g(a)f(bridge)i(program)d(should)j(b)q(e)0 2548 y(written.)h(See)c (the)f(\014les)h Fm(f77)p 502 2548 V 17 w(main.f)e Fr(and)i Fm(c)p 790 2548 V 17 w(bridge)p 951 2548 V 16 w(dgssv.c)e Fr(for)h(complete)h(descriptions.)71 2605 y(In)i(the)g(future,)g(w)o(e) g(will)h(pro)o(vide)f(complete)h(F)l(ortran)e(in)o(terfaces)h(to)f(the) h(user-callable)i(routines)e(in)h(the)0 2661 y(Sup)q(erLU)e(library)l (.)952 2795 y(20)p eop %%Page: 21 21 21 20 bop 0 115 a Fm(main\(\))0 172 y({)95 228 y(/*)24 b(Declare)f(variables)g(*/)95 285 y(SuperMatrix)g(A;)47 b(/*)24 b(original)f(matrix)g(*/)95 341 y(SuperMatrix)g(AC;)g(/*)h(A)g (postmultiplied)e(by)h(a)h(permutation)e(matrix)h(Q)h(*/)95 397 y(char)71 b(refact[1];)95 454 y(......)23 b(/*)h(declarations)e(of) i(other)f(variables)g(*/)95 567 y(/*)h(Initialization)e(*/)95 623 y({)191 680 y(StatInit\(panel_size,)f(relax\);)191 736 y(......)95 793 y(})95 906 y(/*)j(First-time)f(factorization)f(*/) 95 962 y(*refact)h(=)h('N';)95 1075 y(/*)g(Obtain)f(and)h(apply)f (column)g(permutation)f(*/)95 1131 y(get_perm_c\(1,)h(&A,)g(perm_c\);) 95 1188 y(sp_preorder\(refact,)f(&A,)h(perm_c,)g(etree,)g(&AC\);)95 1301 y(/*)h(Factorization)e(*/)95 1357 y(dgstrf\(refact,)g(&AC,)i(1.0,) f(0.0,)g(relax,)g(panel_size,)262 1414 y(etree,)h(NULL,)f(0,)g(perm_r,) g(&L,)h(&U,)f(&info\);)95 1470 y(......)g(/*)h(solve)f(first)g(system)g (*/)95 1583 y(/*)h(Subsequent)f(factorizations)e(*/)95 1639 y(*refact)i(=)h('Y';)95 1752 y(for)g(\()g(i)f(=)h(1;)g(i)f(<=)h (niter;)f(++i)g(\))h({)191 1809 y(dgstrf\(refact,)e(&AC,)h(1.0,)g(0.0,) h(relax,)f(panel_size,)358 1865 y(etree,)g(NULL,)g(0,)h(perm_r,)f(&L,)g (&U,)h(&info\);)191 1922 y(/*)f(Numerical)g(values)g(of)h(matrix)f(AC)g (may)h(change)f(across)g(iterations.)262 1978 y(The)h(factors)f(L)h (and)f(U)h(are)f(overwritten)g(in)g(each)g(iteration.)g(*/)191 2035 y({)358 2091 y(......)g(/*)h(solve)f(later)g(system)g(*/)191 2148 y(})95 2204 y(})95 2317 y(StatFree\(\);)0 2430 y(})383 2578 y Fr(Figure)15 b(4:)20 b(Co)q(de)15 b(segmen)o(t)g(to)f(p)q (erform)h(rep)q(eated)h(factorizations.)952 2795 y(21)p eop %%Page: 22 22 22 21 bop 0 143 a Fm(Fortran)23 b(program)g(\(f77_main.f\))0 200 y(~~~~~~~~~~~~~~~)95 313 y(program)g(f77_main)95 369 y(integer)g(maxn,)h(maxnz)95 426 y(parameter)f(\()h(maxn)f(=)h (10000,)f(maxnz)g(=)h(100000)f(\))95 482 y(integer)g(rowind\(maxnz\),)f (colptr\(maxn\))95 539 y(real*8)47 b(values\(maxnz\),)22 b(b\(maxn\))95 595 y(......)95 708 y(call)i(c_bridge_dgssv\()e(n,)h (nnz,)g(nrhs,)h(values,)f(rowind,)f(colptr,)h(b,)h(ldb,)f(info)h(\))95 764 y(......)95 877 y(stop)95 934 y(end)0 1103 y(The)f(bridge)g (program)g(in)h(C)g(\(c_bridge_dgssv.c\))0 1160 y (~~~~~~~~~~~~~~~~~~~~~~~)95 1272 y(int)g(c_bridge_dgssv\(int)d(*n,)j (int)f(*nnz,)g(int)h(*nrhs,)f(double)g(*values,)g(int)g(*rowind,)549 1329 y(int)g(*colptr,)g(double)g(*b,)h(int)f(*ldb,)g(int)h(*info\))95 1385 y({)191 1442 y(SuperMatrix)e(A,)i(B,)f(L,)h(U;)191 1498 y(int)f(*perm_c,)g(*perm_r;)191 1555 y(......)191 1668 y(/*)g(Adjust)h(to)f(0-based)g(indexing)g(*/)191 1724 y(for)g(\(i)h(=)g(0;)f(i)h(<)g(*nnz;)f(++i\))g(--rowind[i];)191 1781 y(for)g(\(i)h(=)g(0;)f(i)h(<=)g(*n;)f(++i\))g(--colptr[i];)191 1893 y(/*)g(Construct)g(Matrix)g(structures)g(A)g(and)h(B)g(*/)191 1950 y(dCreate_CompCol_Matrix\(&A)o(,)d(*n,)j(*n,)f(*nnz,)g(values,)g (rowind,)g(colptr,)740 2006 y(NC,)g(_D,)h(GE\);)191 2063 y(dCreate_Dense_Matrix\(&B,)c(*n,)k(*nrhs,)f(b,)h(*ldb,)f(DN,)g(_D,)h (GE\);)191 2119 y(......)191 2232 y(/*)f(B)h(is)g(overwritten)e(by)i (the)f(solution)g(vector)g(*/)191 2289 y(dgssv\(&A,)g(perm_c,)f (perm_r,)h(&L,)h(&U,)f(&B,)h(info\);)191 2345 y(......)95 2402 y(})655 2549 y Fr(Figure)15 b(5:)20 b(In)o(terface)15 b(with)g(F)l(ortran)952 2795 y(22)p eop %%Page: 23 23 23 22 bop 0 46 a Fu(P)n(art)23 b(I)r(I)0 149 y Fl(Multithreading)36 b(Sup)s(erLU)952 2795 y Fr(23)p eop %%Page: 24 24 24 23 bop 0 46 a Fr(When)15 b(solving)h(a)e(large)h(sparse)f(linear)i (system)e(of)g(equations)h(using)h(direct)f(metho)q(ds,)g(the)g Fq(LU)k Fr(factorization)0 102 y(dominates)f(the)g(computation;)g(it)g (usually)i(tak)o(es)d(more)g(than)g(95\045)g(of)h(the)g(sequen)o(tial)h (run)o(time.)28 b(W)l(e)17 b(ha)o(v)o(e)0 159 y(designed)d(and)f (implemen)o(ted)i(an)e(algorithm)g(to)f(p)q(erform)h(the)g (factorization)f(in)i(parallel)h(on)d(mac)o(hines)i(with)f(a)0 215 y(shared)g(address)f(space)h(and)f(m)o(ultithreading.)20 b(The)13 b(parallel)h(algorithm)e(is)h(based)g(on)f(the)h(e\016cien)o (t)g(sequen)o(tial)0 271 y(algorithm)18 b(implemen)o(ted)h(in)g(Sup)q (erLU.)f(Although)h(w)o(e)e(attempted)g(to)g(minimize)j(the)e(amoun)o (t)f(of)g(c)o(hanges)0 328 y(to)e(the)g(sequen)o(tial)i(co)q(de,)f (there)f(are)h(still)h(a)e(n)o(um)o(b)q(er)h(of)f(non-trivial)h(mo)q (di\014cations)h(to)e(the)g(serial)i(Sup)q(erLU,)0 384 y(mostly)k(related)h(to)e(the)i(matrix)e(data)h(structures)g(and)g (memory)g(organization.)38 b(All)23 b(these)e(c)o(hanges)g(are)0 441 y(summarized)15 b(in)g(T)l(able)g(4)g(and)f(their)h(impacts)g(on)f (p)q(erformance)g(are)g(studied)i(thoroughly)e(in)i([5)o(,)e(11)o(].)20 b(In)15 b(this)0 497 y(part)j(of)f(the)h(Users')g(Guide,)h(w)o(e)f (describ)q(e)i(only)f(the)f(c)o(hanges)g(that)f(the)i(user)f(should)h (b)q(e)g(a)o(w)o(are)e(of.)28 b(Other)0 554 y(than)15 b(these)g(di\013erences,)h(most)f(of)g(the)g(material)g(in)h(P)o(art)e (I)i(is)g(still)g(applicable.)p 85 661 1780 2 v 84 717 2 57 v 110 700 a(Construct)p 493 717 V 211 w(P)o(arallel)g(algorithm)p 1864 717 V 85 719 1780 2 v 84 775 2 57 v 110 758 a(panel)p 493 775 V 304 w(restricted)g(so)e(it)i(do)q(es)f(not)g(con)o(tain)h (branc)o(hings)f(in)i(the)e(elimination)i(tree)p 1864 775 V 84 832 V 110 815 a(sup)q(erno)q(de)p 493 832 V 208 w(restricted)f(to)e(b)q(e)i(a)f(fundamen)o(tal)h(sup)q(erno)q(de)g (in)g(the)f(elimination)j(tree)p 1864 832 V 84 888 V 110 871 a(sup)q(erno)q(de)e(storage)p 493 888 V 49 w(use)g(either)g (static)f(or)f(dynamic)i(upp)q(er)g(b)q(ound)h(\(Section)e(12.3.1\))p 1864 888 V 84 945 V 110 928 a(pruning)h(&)g(DFS)p 493 945 V 99 w(use)g(b)q(oth)f Fq(G)p Fr(\()p Fq(L)790 911 y Ff(T)817 928 y Fr(\))g(and)g(pruned)h Fq(G)p Fr(\()p Fq(L)1177 911 y Ff(T)1204 928 y Fr(\))f(to)f(a)o(v)o(oid)h(lo)q(c)o (king)p 1864 945 V 85 946 1780 2 v 219 1043 a(T)l(able)h(4:)j(The)d (di\013erences)g(b)q(et)o(w)o(een)g(the)f(parallel)i(and)e(the)g (sequen)o(tial)i(algorithms.)0 1232 y Fu(10)69 b(Storage)24 b(t)n(yp)r(es)f(for)h Fd(L)e Fu(and)i Fd(U)0 1333 y Fr(As)16 b(in)h(the)f(sequen)o(tial)h(co)q(de,)f(the)g(t)o(yp)q(e)g(for)f(the)h (factored)g(matrices)g Fq(L)f Fr(and)h Fq(U)21 b Fr(is)c Fm(SuperMatrix)d Fr(\(Figure)i(2\),)0 1389 y(ho)o(w)o(ev)o(er,)22 b(their)g(storage)e(formats)h(\(stored)f(in)j Fm(*Store)p Fr(\))d(are)i(c)o(hanged.)39 b(In)22 b(the)g(parallel)h(algorithm,)g (the)0 1446 y(adjacen)o(t)17 b(panels)i(of)e(the)g(columns)h(ma)o(y)f (b)q(e)h(assigned)g(to)f(di\013eren)o(t)h(pro)q(cesses,)g(and)g(they)f (ma)o(y)g(b)q(e)h(\014nished)0 1502 y(and)13 b(put)g(in)h(global)f (memory)f(out)h(of)f(order.)19 b(That)12 b(is,)i(the)f(consecutiv)o(e)h (columns)f(or)g(sup)q(erno)q(des)h(ma)o(y)e(not)g(b)q(e)0 1559 y(stored)j(con)o(tiguously)g(in)h(memory)l(.)k(Th)o(us,)15 b(in)h(addition)g(to)e(the)i(p)q(oin)o(ters)f(to)g(the)g(b)q(eginning)i (of)e(eac)o(h)g(column)0 1615 y(or)h(sup)q(erno)q(de,)h(w)o(e)f(need)h (p)q(oin)o(ters)f(to)g(the)g(end)h(of)f(the)g(column)h(or)f(sup)q(erno) q(de.)24 b(In)16 b(particular,)h(the)f(storage)0 1672 y(t)o(yp)q(e)f(for)g Fq(L)g Fr(is)h Fm(SCP)e Fr(\(Sup)q(erno)q(de,)j (Column-wise)f(and)f(P)o(erm)o(uted\),)g(de\014ned)h(as:)95 1767 y Fm(typedef)23 b(struct)g({)191 1823 y(int)47 b(nnz;)238 b(/*)24 b(number)f(of)h(nonzeros)e(in)i(the)f(matrix)g(*/)191 1880 y(int)47 b(nsuper;)166 b(/*)24 b(number)f(of)h(supernodes)e(*/)191 1936 y(void)h(*nzval;)166 b(/*)24 b(pointer)f(to)g(array)h(of)f (nonzero)g(values,)716 1993 y(packed)g(by)h(column)f(*/)191 2049 y(int)g(*nzval_colbeg;)f(/*)i(nzval_colbeg[j])e(points)h(to)g (beginning)g(of)h(column)f(j)716 2105 y(in)g(nzval[])g(*/)191 2162 y(int)g(*nzval_colend;)f(/*)i(nzval_colend[j])e(points)h(to)g(one) h(past)f(the)h(last)716 2218 y(element)f(of)g(column)g(j)h(in)g (nzval[])f(*/)191 2275 y(int)g(*rowind;)166 b(/*)24 b(pointer)f(to)g (array)h(of)f(compressed)g(row)g(indices)g(of)716 2331 y(the)g(supernodes)g(*/)191 2388 y(int)g(*rowind_colbeg;/*)f (rowind_colbeg[j])g(points)h(to)g(beginning)g(of)g(column)g(j)716 2444 y(in)g(rowind[])g(*/)191 2501 y(int)g(*rowind_colend;/*)f (rowind_colend[j])g(points)h(to)g(one)h(past)f(the)g(last)716 2557 y(element)g(of)g(column)g(j)h(in)g(rowind[])f(*/)191 2614 y(int)g(*col_to_sup;)70 b(/*)24 b(col_to_sup[j])e(is)i(the)f (supernode)g(number)g(to)g(which)716 2670 y(column)g(j)h(belongs)f(*/) 952 2795 y Fr(24)p eop %%Page: 25 25 25 24 bop 191 46 a Fm(int)23 b(*sup_to_colbeg;/*)f(sup_to_colbeg[s])g (points)h(to)g(the)h(first)f(column)716 102 y(of)g(the)h(s-th)f (supernode)g(/)191 159 y(int)g(*sup_to_colend;/*)f(sup_to_colend[s])g (points)h(to)g(one)h(past)f(the)g(last)716 215 y(column)g(of)h(the)f (s-th)g(supernode)g(*/)95 271 y(})h(SCPformat;)71 378 y Fr(The)15 b(storage)f(t)o(yp)q(e)h(for)g Fq(U)20 b Fr(is)c Fm(NCP)p Fr(,)e(de\014ned)j(as:)95 472 y Fm(typedef)23 b(struct)g({)191 528 y(int)47 b(nnz;)119 b(/*)24 b(number)f(of)g (nonzeros)g(in)h(the)f(matrix)g(*/)191 584 y(void)g(*nzval;)47 b(/*)24 b(pointer)e(to)i(array)f(of)h(nonzero)f(values,)g(packed)g(by)g (column)g(*/)191 641 y(int)47 b(*rowind;)23 b(/*)h(pointer)e(to)i (array)f(of)h(row)f(indices)g(of)h(the)f(nonzeros)g(*/)191 697 y(int)47 b(*colbeg;)23 b(/*)h(colbeg[j])e(points)h(to)h(the)f (location)g(in)h(nzval[])f(and)g(rowind[])597 754 y(which)g(starts)g (column)g(j)h(*/)191 810 y(int)47 b(*colend;)23 b(/*)h(colend[j])e (points)h(to)h(one)f(past)h(the)f(location)g(in)g(nzval[])597 867 y(and)g(rowind[])g(which)g(ends)g(column)g(j)h(*/)95 923 y(})g(NCPformat;)71 1017 y Fr(The)c(table)h(b)q(elo)o(w)h (summarizes)f(the)f(data)g(and)h(storage)e(t)o(yp)q(es)i(of)f(all)i (the)e(matrices)h(in)o(v)o(olv)o(ed)g(in)h(the)0 1073 y(parallel)17 b(routines:)p 552 1138 847 2 v 551 1194 2 57 v 720 1194 V 812 1177 a Fq(A)p 936 1194 V 148 w(L)p 1081 1194 V 100 w(U)p 1203 1194 V 78 w(B)p 1300 1194 V 61 w(X)p 1398 1194 V 552 1196 847 2 v 551 1253 2 57 v 576 1236 a Fm(Stype)p 720 1253 V 50 w(NC)d Fr(or)h Fm(NR)p 936 1253 V 62 w(SCP)p 1081 1253 V 61 w(NCP)p 1203 1253 V 49 w(DN)p 1300 1253 V 50 w(DN)p 1398 1253 V 551 1309 V 576 1292 a(Dtype)p 720 1309 V 811 1292 15 2 v 129 w(D)p 936 1309 2 57 v 992 1292 15 2 v 157 w(D)p 1081 1309 2 57 v 1125 1292 15 2 v 109 w(D)p 1203 1309 2 57 v 1235 1292 15 2 v 86 w(D)p 1300 1309 2 57 v 1332 1292 15 2 v 73 w(D)p 1398 1309 2 57 v 551 1365 V 576 1348 a(Mtype)p 720 1365 V 109 w(GE)p 936 1365 V 109 w(TRLU)p 1081 1365 V 49 w(TRU)p 1203 1365 V 49 w(GE)p 1300 1365 V 50 w(GE)p 1398 1365 V 552 1367 847 2 v 0 1481 a Fu(11)69 b(User-callable)20 b(routines)0 1583 y Fr(As)f(in)h(the)f(sequen)o (tial)i(Sup)q(erLU,)f(w)o(e)f(pro)o(vide)g(b)q(oth)g(computational)h (routines)f(and)h(driv)o(er)f(routines.)32 b(T)l(o)0 1639 y(name)20 b(those)g(routines)g(that)f(in)o(v)o(olv)o(e)i (parallelization)h(in)f(the)f(call-graph,)i(w)o(e)e(prep)q(end)h(a)f (letter)g Fm(P)g Fr(to)f(the)0 1696 y(names)f(of)f(their)i(sequen)o (tial)g(coun)o(terparts,)f(for)f(example)i Fm(PDGSTRF)p Fr(.)d(F)l(or)i(the)g(purely)h(sequen)o(tial)g(routines,)0 1752 y(w)o(e)e(use)h(the)g(same)f(names)h(as)f(b)q(efore.)28 b(App)q(endix)19 b(B)f(con)o(tains,)g(for)f(eac)o(h)h(individual)j (routine,)d(the)g(leading)0 1809 y(commen)o(ts)13 b(and)h(the)g (complete)h(sp)q(eci\014cation)g(of)f(the)f(calling)j(sequence)f(and)f (argumen)o(ts.)k(Here,)c(w)o(e)g(only)g(list)0 1865 y(the)h(routines)h (that)e(are)h(di\013eren)o(t)h(from)e(the)h(sequen)o(tial)i(ones.)0 1987 y Ft(11.1)56 b(Driv)n(er)17 b(routines)0 2073 y Fr(W)l(e)c(pro)o(vide)h(t)o(w)o(o)e(t)o(yp)q(es)h(of)g(driv)o(er)g (routines)h(for)e(solving)i(systems)f(of)g(linear)h(equations.)20 b(The)13 b(driv)o(er)h(routines)0 2129 y(can)h(handle)i(b)q(oth)e (column-)h(and)g(ro)o(w-orien)o(ted)f(storage)f(sc)o(hemes.)68 2223 y Fk(\017)23 b Fr(A)16 b(simple)i(driv)o(er)f Fm(PDGSSV)p Fr(,)e(whic)o(h)i(solv)o(es)f(the)h(system)f Fq(AX)h Fr(=)e Fq(B)k Fr(b)o(y)e(factorizing)f Fq(A)h Fr(and)f(o)o(v)o (erwriting)114 2279 y Fq(B)i Fr(with)d(the)g(solution)h Fq(X)t Fr(.)68 2373 y Fk(\017)23 b Fr(An)15 b(exp)q(ert)g(driv)o(er)g Fm(PDGSSVX)p Fr(,)e(whic)o(h,)i(in)h(addition)f(to)f(the)h(ab)q(o)o(v)o (e,)f(also)h(p)q(erforms)f(the)h(follo)o(wing)g(func-)114 2430 y(tions)g(\(some)g(of)f(them)h(optionally\):)165 2523 y Fs({)23 b Fr(solv)o(e)15 b Fq(A)359 2507 y Ff(T)387 2523 y Fq(X)g Fr(=)e Fq(B)r Fr(;)165 2596 y Fs({)23 b Fr(equilibrate)d(the)e(system)g(\(scale)h Fq(A)p Fr('s)f(ro)o(ws)f(and) i(columns)g(to)f(ha)o(v)o(e)g(unit)h(norm\))e(if)i Fq(A)f Fr(is)h(p)q(o)q(orly)214 2653 y(scaled;)952 2795 y(25)p eop %%Page: 26 26 26 25 bop 165 46 a Fs({)23 b Fr(estimate)f(the)g(condition)i(n)o(um)o (b)q(er)e(of)g Fq(A)p Fr(,)i(c)o(hec)o(k)f(for)e(near-singularit)o(y)l (,)k(and)e(c)o(hec)o(k)f(for)g(piv)o(ot)214 102 y(gro)o(wth;)165 169 y Fs({)h Fr(re\014ne)16 b(the)f(solution)h(and)f(compute)g(forw)o (ard)f(and)i(bac)o(kw)o(ard)e(error)h(b)q(ounds.)0 288 y Ft(11.2)56 b(Computational)17 b(routines)0 374 y Fr(The)h(user)g(can) g(in)o(v)o(ok)o(e)g(the)f(follo)o(wing)i(computational)f(routines)g(to) f(directly)i(con)o(trol)f(the)g(b)q(eha)o(vior)g(of)f(Su-)0 430 y(p)q(erLU.)f(The)g(computational)g(routines)g(can)g(only)g(handle) h(column-orien)o(ted)g(storage.)j(Except)15 b(for)g(the)h(par-)0 487 y(allel)21 b(factorization)e(routine)h Fm(PDGSTRF)p Fr(,)e(all)i(the)g(other)f(routines)h(are)f(iden)o(tical)i(to)e(those)g (app)q(eared)h(in)g(the)0 543 y(sequen)o(tial)c(Sup)q(erLU.)68 629 y Fk(\017)23 b Fm(PDGSTRF)p Fr(:)13 b(F)l(actorize)j(\(in)f (parallel\).)114 701 y(This)h(implemen)o(ts)i(the)e(\014rst-time)g (factorization,)g(or)f(later)h(re-factorization)g(with)h(the)f(same)g (nonzero)114 758 y(pattern.)27 b(In)18 b(re-factorizations,)g(the)g(co) q(de)g(has)f(the)h(abilit)o(y)h(to)e(use)h(the)g(same)f(column)i(p)q (erm)o(utation)114 814 y Fq(P)143 821 y Ff(c)174 814 y Fr(and)c(ro)o(w)e(p)q(erm)o(utation)h Fq(P)636 821 y Ff(r)669 814 y Fr(obtained)h(from)f(a)g(previous)h(factorization.)k (Sev)o(eral)c(scalar)f(argumen)o(ts)114 871 y(con)o(trol)e(ho)o(w)g (the)g Fq(LU)18 b Fr(decomp)q(osition)13 b(and)g(the)f(n)o(umerical)i (piv)o(oting)f(should)h(b)q(e)f(p)q(erformed.)19 b Fm(PDGSTRF)114 927 y Fr(can)c(handle)h(non-square)g(matrices.)68 1015 y Fk(\017)23 b Fm(DGSTRS)p Fr(:)14 b(T)l(riangular)h(solv)o(e.)114 1087 y(This)g(tak)o(es)e(the)i Fq(L)f Fr(and)g Fq(U)20 b Fr(triangular)14 b(factors,)f(the)i(ro)o(w)e(and)h(column)i(p)q(erm)o (utation)e(v)o(ectors,)f(and)i(the)114 1144 y(righ)o(t-hand)g(side)h (to)f(compute)g(a)g(solution)h(matrix)f Fq(X)j Fr(of)d Fq(AX)h Fr(=)d Fq(B)18 b Fr(or)d Fq(A)1412 1127 y Ff(T)1439 1144 y Fq(X)h Fr(=)d Fq(B)r Fr(.)68 1232 y Fk(\017)23 b Fm(DGSCON)p Fr(:)14 b(Estimate)g(condition)j(n)o(um)o(b)q(er.)114 1304 y(Giv)o(en)j(the)h(matrix)f Fq(A)g Fr(and)h(its)f(factors)f Fq(L)i Fr(and)f Fq(U)5 b Fr(,)21 b(this)g(estimates)f(the)g(condition)i (n)o(um)o(b)q(er)f(in)g(the)114 1360 y(one-norm)15 b(or)f(in\014nit)o (y-norm.)21 b(The)15 b(algorithm)g(is)h(due)f(to)g(Hager)f(and)h (Higham)g([10)o(],)g(and)g(is)g(the)g(same)114 1417 y(as)f Fm(CONDEST)h Fr(in)h(sparse)f(Matlab.)68 1505 y Fk(\017)23 b Fm(DGSEQU/DLAQGS)p Fr(:)13 b(Equilibrate.)114 1577 y Fm(DGSEQU)i Fr(\014rst)h(computes)g(the)h(ro)o(w)e(and)h(column)h (scalings)h Fq(D)1195 1584 y Ff(r)1229 1577 y Fr(and)f Fq(D)1357 1584 y Ff(c)1390 1577 y Fr(whic)o(h)g(w)o(ould)g(mak)o(e)f (eac)o(h)g(ro)o(w)114 1633 y(and)e(eac)o(h)g(column)h(of)e(the)h (scaled)h(matrix)f Fq(D)905 1640 y Ff(r)923 1633 y Fq(AD)995 1640 y Ff(c)1026 1633 y Fr(ha)o(v)o(e)g(equal)h(norm.)k Fm(DLAQGS)13 b Fr(then)h(applies)i(them)e(to)114 1690 y(the)h(original)i(matrix)e Fq(A)h Fr(if)g(it)f(is)h(indeed)i(badly)e (scaled.)22 b(The)15 b(equilibrated)j Fq(A)e Fr(o)o(v)o(erwrites)e(the) i(original)114 1746 y Fq(A)p Fr(.)68 1834 y Fk(\017)23 b Fm(DGSRFS)p Fr(:)14 b(Re\014ne)i(solution.)114 1906 y(Giv)o(en)f Fq(A)p Fr(,)g(its)g(factors)f Fq(L)h Fr(and)h Fq(U)5 b Fr(,)14 b(and)i(an)f(initial)i(solution)f Fq(X)t Fr(,)e(this)h(do)q(es)h(iterativ)o(e)f(re\014nemen)o(t,)g(using)114 1963 y(the)h(same)h(precision)h(as)e(the)h(input)g(data.)24 b(It)16 b(also)h(computes)f(forw)o(ard)g(and)g(bac)o(kw)o(ard)g(error)g (b)q(ounds)114 2019 y(for)e(the)h(re\014ned)i(solution.)0 2160 y Fu(12)69 b(Installation)22 b(and)i(troublesho)r(oting)0 2263 y Ft(12.1)56 b(Av)m(ailabilit)n(y)0 2348 y Fr(The)15 b(pac)o(k)m(age)h(is)f(a)o(v)m(ailable)i(on)e(the)h(FTP)e(serv)o(er)h (at)g(UC)g(Berk)o(eley:)95 2434 y Fm(ftp)24 b(ftp.cs.berkeley.edu)95 2491 y(login:)f(anonymous)95 2547 y(ftp>)h(cd)f (/pub/src/lapack/SuperLU)95 2603 y(ftp>)h(binary)95 2660 y(ftp>)g(get)f(superlu_mt.tar.gz)952 2795 y Fr(26)p eop %%Page: 27 27 27 26 bop 0 46 a Ft(12.2)56 b(File)17 b(structure)0 131 y Fr(The)e(top)g(lev)o(el)i(Sup)q(erLU)p 457 131 14 2 v 18 w(MT/)d(directory)h(is)h(structured)f(as)g(follo)o(ws:)95 225 y Fm(SuperLU_MT/README)94 b(instructions)22 b(on)h(installation)95 282 y(SuperLU_MT/CBLAS/)94 b(needed)23 b(BLAS)g(routines)g(in)g(C,)h (not)f(necessarily)g(fast)95 338 y(SuperLU_MT/EXAMPLE/)46 b(example)22 b(programs)95 395 y(SuperLU_MT/INSTALL/)46 b(test)23 b(machine)g(dependent)f(parameters;)h(the)g(Users')g(Guide)95 451 y(SuperLU_MT/SRC/)142 b(C)23 b(source)g(code,)h(to)f(be)h(compiled) e(into)i(superlu_mt.a)e(library)95 508 y(SuperLU_MT/TESTING/)46 b(driver)23 b(routines)f(to)i(test)f(correctness)95 564 y(SuperLU_MT/Makefile)46 b(top)23 b(level)g(Makefile)g(that)g(does)h (installation)e(and)h(testing)95 620 y(SuperLU_MT/make.inc)46 b(compiler,)22 b(compile)h(flags,)g(library)g(definitions)f(and)i(C)597 677 y(preprocessor)e(definitions,)g(included)h(in)g(all)h(Makefiles.)71 771 y Fr(W)l(e)12 b(ha)o(v)o(e)h(p)q(orted)g(the)f(parallel)j(programs) c(to)h(a)h(n)o(um)o(b)q(er)g(of)f(platforms,)h(whic)o(h)g(are)g (re\015ected)g(in)h(the)e(mak)o(e)0 827 y(include)22 b(\014les)e(pro)o(vided)h(in)f(the)g(top)f(lev)o(el)h(directory)l(,)h (for)e(example,)i Fm(make.sun,)i(make.sgi,)f(make.cray)0 884 y(and)h(make.pthreads)p Fr(.)f(If)16 b(y)o(ou)g(are)g(using)h(one)g (of)e(these)i(mac)o(hines,)g(suc)o(h)f(as)g(a)g(Sun,)h(y)o(ou)f(can)h (simply)g(cop)o(y)0 940 y Fm(make.sun)f Fr(in)o(to)g Fm(make.inc)g Fr(b)q(efore)h(compiling.)27 b(If)17 b(y)o(ou)f(are)g (not)h(using)g(an)o(y)g(of)f(the)h(mac)o(hines)g(to)g(whic)o(h)g(w)o(e) 0 997 y(ha)o(v)o(e)e(p)q(orted,)g(y)o(ou)g(will)h(need)h(to)d(read)h (Section)h(13)f(ab)q(out)g(the)g(p)q(orting)h(instructions.)71 1053 y(The)h(rest)f(of)g(the)h(installation)i(and)e(testing)g(pro)q (cedure)g(is)h(similar)g(to)e(that)g(describ)q(ed)j(in)e(Section)h(7)f (for)0 1109 y(the)h(serial)h(Sup)q(erLU.)g(Then,)f(y)o(ou)g(can)g(t)o (yp)q(e)g Fm(make)f Fr(at)g(the)h(top)f(lev)o(el)j(directory)e(to)f (\014nish)i(installation.)29 b(In)0 1166 y(the)15 b Fm(SuperLU)p 249 1166 15 2 v 17 w(MT/TESTING)e Fr(sub)q(directory)l(,)j(y)o(ou)f (can)g(t)o(yp)q(e)h Fm(pdtest.csh)e Fr(to)g(p)q(erform)h(testings.)0 1288 y Ft(12.3)56 b(P)n(erformance)17 b(issues)0 1373 y Fs(12.3.1)52 b(Memory)16 b(managemen)o(t)h(for)g Fq(L)g Fs(and)h Fq(U)0 1459 y Fr(In)e(the)f(sequen)o(tial)h(Sup)q(erLU,)g (four)f(data)f(arra)o(ys)g(asso)q(ciated)h(with)g(the)g Fq(L)g Fr(and)g Fq(U)20 b Fr(factors)14 b(can)h(b)q(e)h(expanded)0 1516 y(dynamically)l(,)k(as)d(describ)q(ed)j(in)f(Section)f(6.)27 b(In)19 b(the)f(parallel)h(co)q(de,)f(the)g(expansion)h(is)f(hard)g (and)g(costly)g(to)0 1572 y(implemen)o(t,)d(b)q(ecause)f(when)g(a)f (pro)q(cess)g(detects)h(that)e(an)i(arra)o(y)e(b)q(ound)i(is)g (exceeded,)h(it)e(has)g(to)g(send)h(a)f(signal)0 1629 y(to)h(and)h(susp)q(end)i(the)e(execution)g(of)g(the)g(other)f(pro)q (cesses.)21 b(Then)15 b(the)g(detecting)h(pro)q(cess)f(can)g(pro)q (ceed)h(with)0 1685 y(the)f(arra)o(y)f(expansion.)21 b(After)15 b(the)g(expansion,)h(this)f(pro)q(cess)h(m)o(ust)f(w)o(ak)o (e)f(up)i(all)g(the)f(susp)q(ended)i(pro)q(cesses.)71 1742 y(In)f(this)g(\\alpha")g(release)g(of)g(the)f(parallel)j(co)q(de,) e(w)o(e)f(ha)o(v)o(e)h(not)f(y)o(et)g(implemen)o(ted)j(the)e(ab)q(o)o (v)o(e)f(expansion)0 1798 y(mec)o(hanism.)30 b(F)l(or)18 b(no)o(w,)h(the)f(user)h(m)o(ust)f(pre-determine)i(an)e(estimated)h (size)g(for)f(eac)o(h)h(of)f(the)g(four)g(arra)o(ys)0 1854 y(through)c(the)g(inquiry)i(function)f Fm(sp)p 632 1854 V 17 w(ienv\(\))p Fr(.)k(There)14 b(are)g(t)o(w)o(o)f(in)o (terpretations)i(for)e(eac)o(h)i(in)o(teger)f(v)m(alue)i Fm(FILL)0 1911 y Fr(returned)21 b(b)o(y)f(calling)i(this)f(function)g (with)g Fm(ispec)i(=)h(6,)f(7,)h(or)g(8)p Fr(.)35 b(A)20 b(negativ)o(e)h(n)o(um)o(b)q(er)f(is)h(in)o(terpreted)0 1967 y(as)f(the)g(\014lls)h(gro)o(wth)e(factor.)33 b(That)19 b(is,)j(the)e(program)f(will)i(allo)q(cate)g Fm(\(-FILL\)*nnz\(A\))d Fr(elemen)o(ts)j(for)e(the)0 2024 y(corresp)q(onding)12 b(arra)o(y)l(.)18 b(A)11 b(p)q(ositiv)o(e)h(n)o(um)o(b)q(er)g(is)f(in)o (terpreted)h(as)f(the)g(true)g(amoun)o(t)f(the)i(user)f(w)o(an)o(ts)f (to)h(allo)q(cate.)71 2110 y Fm(int)23 b(sp)p 217 2110 V 17 w(ienv\(int)g(ispec\);)71 2197 y(Ispec)14 b Fr(sp)q(eci\014es)j (the)e(parameter)g(to)f(b)q(e)i(returned:)159 2291 y(isp)q(ec)f(=)h Fq(:)8 b(:)g(:)270 2347 y Fr(=)16 b(6:)j(size)d(of)f(the)g(arra)o(y)f (to)h(store)f(the)i(v)m(alues)g(of)f(the)g Fq(L)g Fr(sup)q(erno)q(des)i (\()p Fm(nzval)p Fr(\))270 2403 y(=)f(7:)j(size)d(of)f(the)g(arra)o(y)f (to)h(store)f(the)i(columns)g(in)g(U)f(\()p Fm(nzval/rowind)p Fr(\))270 2460 y(=)h(8:)j(size)d(of)f(the)g(arra)o(y)f(to)h(store)f (the)i(subscripts)g(of)e(the)i Fq(L)f Fr(sup)q(erno)q(des)h(\()p Fm(rowind)p Fr(\);)71 2554 y(If)k(the)f(actual)h(\014ll)h(exceeds)g (the)f(arra)o(y)e(size,)k(the)d(program)g(will)i(ab)q(ort)e(with)h(a)g (message)f(sho)o(wing)h(the)0 2610 y(curren)o(t)i(column)h(when)g (failure)g(o)q(ccurs,)h(and)e(indicating)i(ho)o(w)e(m)o(uc)o(h)g(space) h(has)f(b)q(een)h(used)g(up)f(to)g(the)0 2667 y(curren)o(t)15 b(column.)952 2795 y(27)p eop %%Page: 28 28 28 27 bop 71 46 a Fr(T)l(o)19 b(mak)o(e)h(the)g(storage)f(allo)q (cation)i(more)f(e\016cien)o(t)h(for)e(the)i(sup)q(erno)q(des)g(in)g Fq(L)p Fr(,)g(w)o(e)f(devised)h(a)f(sp)q(ecial)0 102 y(storage)15 b(sc)o(heme.)23 b(The)17 b(need)g(for)e(this)i(sp)q(ecial) h(treatmen)o(t)d(and)h(ho)o(w)g(w)o(e)g(implemen)o(t)h(it)f(are)g (fully)i(explained)0 159 y(and)12 b(studied)h(in)f([5)o(,)g(11)o(].)18 b(Here,)13 b(w)o(e)e(only)h(sk)o(etc)o(h)g(the)f(main)h(idea.)20 b(Recall)13 b(that)e(the)h(parallel)h(algorithm)f(assigns)0 215 y(one)20 b(panel)g(of)f(columns)i(to)e(one)g(pro)q(cess.)34 b(Tw)o(o)18 b(consecutiv)o(e)j(panels)f(ma)o(y)f(b)q(e)h(assigned)h(to) e(t)o(w)o(o)f(di\013eren)o(t)0 271 y(pro)q(cesses,)c(ev)o(en)g(though)g (they)f(ma)o(y)g(b)q(elong)i(to)e(the)h(same)f(sup)q(erno)q(de)i(disco) o(v)o(ered)g(later.)k(Moreo)o(v)o(er,)12 b(a)h(third)0 328 y(panel)18 b(ma)o(y)e(b)q(e)h(\014nished)i(b)o(y)e(a)f(third)i(pro) q(cess)f(and)g(put)g(in)g(memory)f(b)q(et)o(w)o(een)i(these)f(t)o(w)o (o)e(panels,)j(resulting)0 384 y(in)f(the)f(columns)g(of)g(a)f(sup)q (erno)q(de)j(b)q(eing)f(noncon)o(tiguous)f(in)h(memory)l(.)k(This)c(is) f(undesirable,)i(b)q(ecause)f(then)0 441 y(w)o(e)f(cannot)f(directly)i (call)g(BLAS)g(routines)f(using)h(this)f(sup)q(erno)q(de)h(unless)g(w)o (e)f(pa)o(y)f(the)h(cost)f(of)h(cop)o(ying)g(the)0 497 y(columns)d(in)o(to)e(con)o(tiguous)h(memory)f(\014rst.)19 b(T)l(o)11 b(o)o(v)o(ercome)g(this)h(problem,)h(w)o(e)e(exploited)j (the)e(observ)m(ation)g(that)0 554 y(the)h(nonzero)g(structure)g(for)f Fq(L)h Fr(is)h(con)o(tained)g(in)f(that)g(of)f(the)h(Householder)h (matrix)f Fq(H)k Fr(from)12 b(the)h(Householder)0 610 y(sparse)k Fq(QR)f Fr(transformation)g([7)o(,)h(8].)24 b(F)l(urthermore,)17 b(it)g(can)g(b)q(e)g(sho)o(wn)g(that)f(a)h (fundamen)o(tal)g(sup)q(erno)q(de)h(of)0 667 y Fq(L)d Fr(is)g(alw)o(a)o(ys)f(con)o(tained)i(in)f(a)g(fundamen)o(tal)g(sup)q (erno)q(de)h(of)f Fq(H)t Fr(.)k(This)c(con)o(tainmen)o(t)g(prop)q(ert)o (y)f(is)i(true)e(for)h(for)0 723 y(an)o(y)e(ro)o(w)f(p)q(erm)o(utation) h Fq(P)456 730 y Ff(r)488 723 y Fr(in)h Fq(P)568 730 y Ff(r)587 723 y Fq(A)f Fr(=)g Fq(LU)5 b Fr(.)19 b(Therefore,)13 b(w)o(e)f(can)h(pre-allo)q(cate)i(storage)c(for)i(the)g Fq(L)g Fr(sup)q(erno)q(des)0 780 y(based)i(on)g(the)g(size)h(of)f Fq(H)j Fr(sup)q(erno)q(des.)k(F)l(ortunately)l(,)14 b(there)h(exists)h (a)e(fast)h(algorithm)g(\(almost)f(linear)i(in)g(the)0 836 y(n)o(um)o(b)q(er)g(of)e(nonzeros)i(of)e Fq(A)p Fr(\))h(to)g (compute)g(the)g(size)i(of)d Fq(H)19 b Fr(and)c(the)h(sup)q(erno)q(des) g(partition)g(in)g Fq(H)i Fr([9].)71 892 y(In)h(practice,)h(the)f(ab)q (o)o(v)o(e)f(static)h(prediction)i(is)e(fairly)g(tigh)o(t)g(for)f(most) g(problems.)32 b(Ho)o(w)o(ev)o(er,)18 b(for)g(some)0 949 y(others,)j(the)f(n)o(um)o(b)q(er)h(of)f(nonzeros)g(in)i Fq(H)h Fr(greatly)d(exceeds)i(the)e(n)o(um)o(b)q(er)h(of)f(nonzeros)g (in)h Fq(L)p Fr(.)36 b(T)l(o)20 b(handle)0 1005 y(this)h(situation,)h (w)o(e)e(implemen)o(ted)i(an)e(algorithm)h(that)e(still)j(uses)f(the)f (sup)q(erno)q(des)i(partition)f(in)g Fq(H)t Fr(,)g(but)0 1062 y(dynamically)e(searc)o(hes)f(the)f(sup)q(erno)q(dal)i(graph)f(of) f Fq(L)g Fr(to)g(obtain)h(a)f(m)o(uc)o(h)g(tigh)o(ter)h(b)q(ound)g(for) f(the)h(storage.)0 1118 y(T)l(able)e(6)f(in)h([5)o(])f(demonstrates)f (the)i(storage)e(e\016ciency)i(ac)o(hiev)o(ed)g(b)o(y)g(b)q(oth)f (static)g(and)g(dynamic)h(approac)o(h.)71 1175 y(In)h(summary)l(,)f (our)h(program)e(tries)i(to)g(use)g(the)f(static)h(prediction)h (\014rst)f(for)f(the)h Fq(L)f Fr(sup)q(erno)q(des.)26 b(In)18 b(this)0 1231 y(case,)i(w)o(e)e(ignore)i(the)f(in)o(teger)g(v)m (alue)h(giv)o(en)g(in)f(the)h(function)f Fm(sp)p 1176 1231 15 2 v 17 w(ienv\(6\))p Fr(,)g(and)g(simply)h(use)g(the)f(nonzero) 0 1288 y(coun)o(t)d(of)f Fq(H)t Fr(.)21 b(If)16 b(the)g(user)g(\014nds) g(that)f(the)h(size)g(of)g Fq(H)j Fr(is)d(to)q(o)f(large,)h(he)g(can)g (in)o(v)o(ok)o(e)g(the)f(dynamic)i(algorithm)0 1344 y(at)e(run)o(time)g (b)o(y)g(setting)h(the)f(follo)o(wing)h(UNIX)g(shell)g(en)o(vironmen)o (t)g(v)m(ariable:)71 1431 y Fm(setenv)23 b(SuperLU)p 409 1431 V 16 w(DYNAMIC)p 593 1431 V 16 w(SNODE)p 729 1431 V 17 w(STORE)g(1)0 1517 y Fr(The)18 b(dynamic)h(algorithm)f (incurs)h(run)o(time)f(o)o(v)o(erhead.)28 b(F)l(or)18 b(example,)h(this)f(o)o(v)o(erhead)g(is)g(usually)i(b)q(et)o(w)o(een)0 1573 y(2\045)15 b(and)g(15\045)g(on)g(a)g(single)h(pro)q(cessor)f (RS/6000-590)f(for)h(a)f(range)h(of)g(test)g(matrices.)0 1694 y Fs(12.3.2)52 b(Symmetric)17 b(structure)g(pruning)0 1779 y Fr(In)c(b)q(oth)g(serial)g(and)f(parallel)i(algorithms,)f(w)o(e) f(ha)o(v)o(e)g(implemen)o(ted)i(Eisenstat)e(and)h(Liu's)g(symmetric)g (pruning)0 1836 y(idea)e(of)g(represen)o(ting)g(the)g(graph)f Fq(G)p Fr(\()p Fq(L)674 1819 y Ff(T)701 1836 y Fr(\))g(b)o(y)h(a)f (reduced)i(graph)e Fq(G)1146 1819 y Fv(0)1157 1836 y Fr(,)i(and)e(thereb)o(y)h(reducing)h(the)f(DFS)f(tra)o(v)o(ersal)0 1892 y(time.)20 b(A)15 b(subtle)i(di\016cult)o(y)f(arises)f(in)h(the)g (parallel)g(implemen)o(tation.)71 1949 y(When)22 b(the)g(o)o(wning)h (pro)q(cess)f(of)g(a)g(panel)h(starts)e(DFS)h(\(depth-\014rst)g(searc)o (h\))g(on)g Fq(G)1617 1932 y Fv(0)1650 1949 y Fr(built)i(so)e(far,)h (it)0 2005 y(only)e(sees)f(the)g(partial)g(graph,)h(b)q(ecause)f(the)g (part)g(of)f Fq(G)1034 1989 y Fv(0)1066 2005 y Fr(corresp)q(onding)i (to)e(the)h(busy)g(panels)h(do)o(wn)f(the)0 2062 y(elimination)j(tree)e (is)h(not)e(y)o(et)h(complete.)38 b(So)21 b(the)g(structural)g (prediction)i(at)d(this)h(stage)g(can)g(miss)g(some)0 2118 y(nonzeros.)33 b(After)19 b(p)q(erforming)h(the)g(up)q(dates)g (from)f(the)h(\014nished)h(sup)q(erno)q(des,)h(the)d(pro)q(cess)h(will) h(w)o(ait)f(for)0 2175 y(all)h(the)e(busy)i(descendan)o(t)f(panels)h (to)e(\014nish)i(and)f(p)q(erform)f(more)g(up)q(dates)i(from)e(them.)33 b(No)o(w,)20 b(w)o(e)f(mak)o(e)0 2231 y(a)f(conserv)m(ativ)o(e)h (assumption)f(that)g(all)h(these)f(busy)h(panels)g(will)h(up)q(date)f (the)g(curren)o(t)f(panel)h(so)f(that)f(their)0 2287 y(nonzero)e(structures)g(are)g(included)j(in)e(the)f(curren)o(t)g (panel.)71 2344 y(This)i(appro)o(ximate)g(sc)o(heme)h(w)o(orks)e (\014ne)i(for)f(most)f(problems.)27 b(Ho)o(w)o(ev)o(er,)17 b(w)o(e)g(found)g(that)g(this)h(conser-)0 2400 y(v)m(atism)d(ma)o(y)f (sometimes)g(cause)h(a)f(large)h(n)o(um)o(b)q(er)g(of)f(structural)g (zeros)h(\(they)f(are)g(related)h(to)f(the)h(sup)q(erno)q(de)0 2457 y(amalgamation)i(p)q(erformed)h(at)f(the)h(b)q(ottom)f(of)g(the)h (elimination)i(tree\))d(to)g(b)q(e)h(included)j(and)d(they)f(in)i(turn) 0 2513 y(are)c(propagated)f(through)h(the)h(rest)e(of)h(the)g (factorization.)71 2570 y(W)l(e)g(ha)o(v)o(e)f(implemen)o(ted)j(an)e (exact)f(structural)h(prediction)i(sc)o(heme)e(to)f(o)o(v)o(ercome)g (this)i(problem.)k(In)c(this)0 2626 y(sc)o(heme,)j(when)g(eac)o(h)g(n)o (umerical)g(nonzero)g(is)g(scattered)f(in)o(to)h(the)f(sparse)g(accum)o (ulator)h(arra)o(y)l(,)e(w)o(e)i(set)f(the)952 2795 y(28)p eop %%Page: 29 29 29 28 bop 0 46 a Fr(o)q(ccupied)16 b(\015ag)e(as)g(w)o(ell.)20 b(Later)14 b(when)g(w)o(e)g(accum)o(ulate)h(the)f(up)q(dates)h(from)e (the)h(busy)h(descendan)o(t)f(panels,)h(w)o(e)0 102 y(c)o(hec)o(k)e (the)h(o)q(ccupied)h(\015ags)e(to)f(determine)j(the)e(exact)g(nonzero)g (structure.)19 b(This)14 b(sc)o(heme)f(a)o(v)o(oids)g(unnecessary)0 159 y(zero)k(propagation)f(at)h(the)g(exp)q(ense)h(of)e(run)o(time)i(o) o(v)o(erhead,)e(b)q(ecause)i(setting)f(the)g(o)q(ccupied)i(\015ags)e(m) o(ust)f(b)q(e)0 215 y(done)g(in)g(the)f(inner)h(lo)q(op)g(of)f(the)g(n) o(umeric)h(up)q(dates.)71 271 y(W)l(e)h(recommend)g(that)g(the)g(user)g (use)h(the)f(appro)o(ximate)g(sc)o(heme)h(\(b)o(y)e(default\))i (\014rst.)25 b(If)18 b(the)f(user)g(\014nds)0 328 y(that)g(the)h(amoun) o(t)e(of)h(\014ll)i(from)e(the)h(parallel)h(factorization)e(is)i (substan)o(tially)f(greater)f(than)g(that)g(from)g(the)0 384 y(sequen)o(tial)i(factorization,)e(he)h(can)g(then)g(use)f(the)h (accurate)f(sc)o(heme.)27 b(T)l(o)18 b(in)o(v)o(ok)o(e)f(the)h(second)g (sc)o(heme,)g(the)0 441 y(user)d(should)i(recompile)f(the)f(co)q(de)h (b)o(y)f(de\014ning)i(the)e(macro,)g Fm(-D)23 b(SCATTER)p 1333 441 15 2 v 16 w(FOUND)p Fr(,)14 b(for)h(the)g(C)g(prepro)q (cessor.)0 561 y Fs(12.3.3)52 b(The)18 b(inquiry)f(function)i Fm(sp)p 730 561 V 17 w(ienv\(\))0 647 y Fr(F)l(or)e(some)h(user)g(con)o (trollable)i(constan)o(ts,)d(suc)o(h)i(as)e(the)h(blo)q(c)o(king)i (parameters)d(and)h(the)h(size)g(of)e(the)h(global)0 703 y(storage)f(for)h Fq(L)g Fr(and)g Fq(U)5 b Fr(,)18 b(Sup)q(erLU)p 619 703 14 2 v 18 w(MT)g(calls)h(the)g(inquiry)g (function)g Fm(sp)p 1304 703 15 2 v 17 w(ienv\(\))f Fr(to)f(retriev)o (e)h(their)h(v)m(alues.)0 760 y(The)c(declaration)h(of)f(this)h (function)g(is)71 846 y Fm(int)23 b(sp)p 217 846 V 17 w(ienv\(int)g(ispec\).)71 933 y Fr(The)15 b(full)i(meanings)e(of)g(the) g(returned)h(v)m(alues)g(are)f(as)g(follo)o(ws:)159 1026 y(isp)q(ec)g(=)h(1:)j(the)d(panel)g(size)g Fq(w)270 1083 y Fr(=)g(2:)j(the)d(relaxation)f(parameter)f(to)h(con)o(trol)g(sup)q (erno)q(de)h(amalgamation)f(\()p Fq(r)q(el)q(ax)p Fr(\))270 1139 y(=)h(3:)j(the)d(maxim)o(um)f(allo)o(w)o(able)h(size)g(for)e(a)h (sup)q(erno)q(de)i(\()p Fq(maxsup)p Fr(\))270 1196 y(=)f(4:)j(the)d (minim)o(um)g(ro)o(w)e(dimension)j(for)e(2-D)f(blo)q(c)o(king)j(to)d(b) q(e)i(used)g(\()p Fq(r)q(ow)q(bl)q(k)q Fr(\))270 1252 y(=)g(5:)j(the)d(minim)o(um)g(column)g(dimension)h(for)d(2-D)h(blo)q(c) o(king)i(to)d(b)q(e)i(used)g(\()p Fq(col)q(bl)q(k)q Fr(\))270 1309 y(=)g(6:)j(size)d(of)f(the)g(arra)o(y)f(to)h(store)f(the)i(v)m (alues)g(of)f(the)g(L)h(sup)q(erno)q(des)g(\()p Fq(nz)r(v)r(al)q Fr(\))270 1365 y(=)g(7:)j(size)d(of)f(the)g(arra)o(y)f(to)h(store)f (the)i(columns)g(in)g(U)f(\()p Fq(nz)r(v)r(al)q(=r)q(ow)q(ind)p Fr(\))270 1422 y(=)h(8:)j(size)d(of)f(the)g(arra)o(y)f(to)h(store)f (the)i(subscripts)g(of)e(the)i(L)f(sup)q(erno)q(des)i(\()p Fq(r)q(ow)q(ind)p Fr(\))71 1515 y(W)l(e)10 b(should)i(tak)o(e)d(in)o (to)i(accoun)o(t)f(the)h(trade-o\013)e(b)q(et)o(w)o(een)i(cac)o(he)g (reuse)g(and)g(amoun)o(t)e(of)h(parallelism)j(in)e(order)0 1572 y(to)g(set)g(the)g(appropriate)g Fq(w)h Fr(and)f Fq(maxsup)p Fr(.)19 b(Since)13 b(the)e(parallel)i(algorithm)e(assigns)g (one)g(panel)i(factorization)e(to)0 1628 y(one)g(pro)q(cess,)h(large)f (v)m(alues)h(ma)o(y)e(constrain)h(concurrency)l(,)i(ev)o(en)e(though)g (they)g(ma)o(y)f(b)q(e)i(go)q(o)q(d)f(for)f(unipro)q(cessor)0 1685 y(p)q(erformance.)20 b(W)l(e)14 b(recommend)g(that)g Fq(w)h Fr(and)f Fq(maxsup)g Fr(b)q(e)h(set)f(a)g(bit)h(smaller)f(than)g (the)h(b)q(est)f(v)m(alues)h(used)g(in)0 1741 y(the)g(sequen)o(tial)i (co)q(de.)71 1798 y(The)i(settings)g(for)f(parameters)g(2,)i(4)f(and)g (5)f(are)h(the)g(same)g(as)g(those)f(describ)q(ed)j(in)f(Section)g (7.3.)31 b(The)0 1854 y(settings)15 b(for)g(parameters)f(6,)h(7)f(and)i (8)f(are)g(discussed)h(in)g(Section)g(12.3.1.)71 1911 y(In)e(the)f(\014le)h Fm(SRC/sp)p 420 1911 V 17 w(ienv.c)p Fr(,)e(w)o(e)h(pro)o(vide)h(sample)g(settings)f(of)g(these)h (parameters)e(for)h(sev)o(eral)h(mac)o(hines.)0 2054 y Fu(13)69 b(P)n(orting)24 b(to)f(other)g(platforms)0 2155 y Fr(W)l(e)17 b(ha)o(v)o(e)g(pro)o(vided)i(the)e(parallel)i(in)o (terfaces)f(for)f(a)g(n)o(um)o(b)q(er)g(of)g(shared)h(memory)f(mac)o (hines.)27 b(T)l(able)18 b(5)f(lists)0 2212 y(the)h(platforms)g(on)g (whic)o(h)h(w)o(e)f(ha)o(v)o(e)g(tested)g(the)g(library)l(,)i(and)e (the)g(resp)q(ectiv)o(e)i Fm(make.inc)d Fr(\014les.)29 b(The)19 b(most)0 2268 y(p)q(ortable)f(in)o(terface)g(for)e(shared)i (memory)f(programming)f(is)i(POSIX)h(threads)e([13)o(],)g(since)h(no)o (w)o(ada)o(ys)e(man)o(y)0 2325 y(commercial)f(UNIX)g(op)q(erating)g (systems)f(ha)o(v)o(e)g(supp)q(ort)g(for)g(it.)20 b(W)l(e)14 b(call)i(our)e(POSIX)h(threads)f(in)o(terface)h(the)0 2381 y Fm(Pthreads)h Fr(in)o(terface.)27 b(T)l(o)18 b(use)f(this)h(in)o (terface,)g(y)o(ou)f(can)h(cop)o(y)f Fm(make.pthreads)f Fr(in)o(to)i Fm(make.inc)e Fr(and)i(then)0 2438 y(compile)f(the)f (library)l(.)22 b(In)17 b(the)e(last)h(column)h(of)e(T)l(able)h(5,)f(w) o(e)h(list)g(the)g(run)o(time)g(en)o(vironmen)o(t)g(v)m(ariable)h(to)e (b)q(e)0 2494 y(set)f(in)h(order)f(to)f(use)i(m)o(ultiple)h(CPUs.)j(F)l (or)14 b(example,)g(to)g(use)g(4)g(CPUs)g(on)g(the)h(Origin2000,)f(y)o (ou)g(need)h(to)e(set)0 2550 y(the)i(follo)o(wing)h(b)q(efore)g (running)g(the)f(program:)71 2637 y Fm(setenv)23 b(MP)p 289 2637 V 17 w(SET)p 378 2637 V 16 w(NUMTHREADS)g(4)952 2795 y Fr(29)p eop %%Page: 30 30 30 29 bop 85 51 1781 2 v 84 108 2 57 v 422 108 V 1079 108 V 1105 91 a Fr(Programming)p 1422 108 V 71 w(En)o(vironmen)o(t)p 1865 108 V 84 164 V 109 147 a(mak)o(e.inc)p 422 164 V 165 w(Platforms)p 1079 164 V 462 w(Mo)q(del)p 1422 164 V 220 w(V)l(ariable)p 1865 164 V 85 166 1781 2 v 84 222 2 57 v 109 206 a(mak)o(e.pthreads)p 422 222 V 50 w(Mac)o(hines)15 b(with)h(POSIX)g(threads)p 1079 222 V 50 w(pthreads)p 1422 222 V 1865 222 V 84 279 V 109 262 a(mak)o(e.sun)p 422 279 V 154 w(Sun)f(Ultra)h(En)o(terprise)p 1079 279 V 242 w(Solaris)g(threads)p 1422 279 V 1865 279 V 84 335 V 109 318 a(mak)o(e.alpha)p 422 335 V 114 w(DEC)e(Alpha)i(Serv)o (ers)p 1079 335 V 267 w(DECthreads)p 1422 335 V 1865 335 V 84 392 V 109 375 a(mak)o(e.sgi)p 422 392 V 169 w(SGI)f(P)o(o)o(w)o(er)f(Challenge)p 1079 392 V 236 w(parallel)i(C)p 1422 392 V 149 w Fm(MPC)p 1523 375 15 2 v 17 w(NUM)p 1612 375 V 17 w(THREADS)p 1865 392 2 57 v 84 448 V 109 431 a Fr(mak)o(e.origin)p 422 448 V 109 w(SGI/Cra)o(y)e(Origin2000)p 1079 448 V 229 w(parallel)i(C)p 1422 448 V 149 w Fm(MP)p 1499 431 15 2 v 17 w(SET)p 1588 431 V 17 w(NUMTHREADS)p 1865 448 2 57 v 84 505 V 109 488 a Fr(mak)o(e.cra)o(y)p 422 505 V 138 w(Cra)o(y)e(C90/J90)p 1079 505 V 375 w(microtasking)p 1422 505 V 89 w Fm(NCPUS)p 1865 505 V 85 506 1781 2 v 432 603 a Fr(T)l(able)i(5:)k(Platforms)14 b(on)h(whic)o(h)h(Sup)q(erLU) p 1194 603 14 2 v 18 w(MT)f(w)o(as)f(tested.)p 225 714 1501 2 v 224 770 2 57 v 250 753 a(Mutex)p 529 770 V 176 w(Critical)i(region)p 1725 770 V 225 772 1501 2 v 224 828 2 57 v 250 811 a Fm(ULOCK)p 529 828 V 185 w Fr(allo)q(cate)g (storage)e(for)h(a)f(column)j(of)d(matrix)h Fq(U)p 1725 828 V 224 885 V 250 868 a Fm(LLOCK)p 529 885 V 185 w Fr(allo)q(cate)h(storage)e(for)h(ro)o(w)f(subscripts)i(of)f(matrix)f Fq(L)p 1725 885 V 224 941 V 250 924 a Fm(LULOCK)p 529 941 V 161 w Fr(allo)q(cate)i(storage)e(for)h(the)g(v)m(alues)h(of)f (the)g(sup)q(erno)q(des)p 1725 941 V 224 998 V 250 981 a Fm(NSUPER)p 397 981 15 2 v 16 w(LOCK)p 529 998 2 57 v 49 w Fr(incremen)o(t)h(sup)q(erno)q(de)h(n)o(um)o(b)q(er)e Fm(nsuper)p 1725 998 V 224 1054 V 250 1037 a(SCHED)p 373 1037 15 2 v 16 w(LOCK)p 529 1054 2 57 v 73 w Fr(in)o(v)o(ok)o(e)g Fm(Scheduler\(\))f Fr(whic)o(h)i(ma)o(y)e(up)q(date)i(global)g(task)f (queue)p 1725 1054 V 225 1056 1501 2 v 672 1153 a(T)l(able)h(6:)k(Fiv)o (e)15 b(m)o(utex)g(v)m(ariables.)71 1281 y(In)d(the)f(source)h(co)q (de,)g(all)g(the)g(platform)f(sp)q(eci\014c)i(constructs)e(are)h (enclosed)g(in)h(the)e(C)g Fm(#ifdef)g Fr(prepro)q(cessor)0 1338 y(statemen)o(t.)18 b(If)12 b(y)o(our)f(platform)g(is)h(di\013eren) o(t)g(from)f(an)o(y)g(one)h(listed)h(in)f(T)l(able)h(5,)e(y)o(ou)h (need)g(to)f(go)g(to)g(these)h(places)0 1394 y(and)j(create)f(the)h (parallel)i(constructs)d(suitable)i(for)e(y)o(our)g(mac)o(hine.)21 b(The)15 b(t)o(w)o(o)e(constructs,)h(concurrency)i(and)0 1451 y(sync)o(hronization,)g(are)f(explained)i(in)f(the)f(follo)o(wing) h(t)o(w)o(o)e(subsections,)i(resp)q(ectiv)o(ely)l(.)0 1572 y Ft(13.1)56 b(Creating)18 b(m)n(ultiple)e(threads)0 1658 y Fr(Righ)o(t)22 b(no)o(w,)h(only)g(the)f(factorization)g(routine) g Fm(PDGSTRF)f Fr(is)i(parallelized,)j(since)d(this)g(is)f(the)g(most)f (time-)0 1715 y(consuming)14 b(part)f(in)h(the)f(whole)h(solution)g (pro)q(cess.)20 b(There)13 b(is)h(one)f(single)i(thread)e(of)g(con)o (trol)g(on)g(en)o(tering)h(and)0 1771 y(exiting)i Fm(PDGSTRF)p Fr(.)e(Inside)j(this)f(routine,)g(more)f(than)g(one)g(thread)h(ma)o(y)e (b)q(e)i(created.)21 b(All)16 b(the)g(newly)g(created)0 1828 y(threads)g(b)q(egin)i(b)o(y)e(calling)i(the)e(thread)g(function)i Fm(PDGSTRF)p 1071 1828 15 2 v 16 w(THREAD)d Fr(and)i(they)f(are)g (concurren)o(tly)h(executed)0 1884 y(on)i(m)o(ultiple)h(pro)q(cessors.) 30 b(The)19 b(thread)f(function)h Fm(PDGSTRF)p 1089 1884 V 17 w(THREAD)e Fr(exp)q(ects)j(a)e(single)i(argumen)o(t)e(of)g(t)o(yp) q(e)0 1941 y Fm(void*)p Fr(,)c(whic)o(h)i(is)g(a)f(p)q(oin)o(ter)g(to)g (the)g(structure)g(con)o(taining)h(all)g(the)g(shared)f(data)f(ob)s (jects.)0 2062 y Ft(13.2)56 b(Use)18 b(of)h(m)n(utexes)0 2148 y Fr(Although)f(the)f(threads)g Fm(PDGSTRF)p 618 2148 V 17 w(THREAD)f Fr(execute)i(indep)q(enden)o(tly)i(of)d(eac)o(h)g (other,)g(they)h(share)f(the)g(same)0 2205 y(address)i(space)h(and)g (can)f(comm)o(unicate)h(e\016cien)o(tly)h(through)e(shared)g(v)m (ariables.)34 b(Problems)20 b(ma)o(y)f(arise)g(if)0 2261 y(t)o(w)o(o)14 b(threads)h(try)g(to)g(access)g(\(at)g(least)g(one)h(is) g(to)f(mo)q(dify\))g(the)h(shared)f(data)g(at)g(the)g(same)h(time.)k (Therefore,)0 2317 y(w)o(e)c(m)o(ust)f(ensure)i(that)e(all)i(memory)f (accesses)g(to)g(the)g(same)g(data)f(are)h(m)o(utually)h(exclusiv)o(e.) 24 b(There)16 b(are)g(\014v)o(e)0 2374 y(critical)f(regions)e(in)h(the) f(program)f(that)h(m)o(ust)f(b)q(e)i(protected)f(b)o(y)g(m)o(utual)h (exclusion.)21 b(Since)14 b(w)o(e)f(w)o(an)o(t)f(to)h(allo)o(w)0 2430 y(di\013eren)o(t)h(pro)q(cessors)g(to)f(en)o(ter)h(di\013eren)o(t) g(critical)h(regions)f(sim)o(ultaneously)l(,)i(w)o(e)d(use)i(\014v)o(e) f(m)o(utex)f(v)m(ariables)i(as)0 2487 y(listed)j(in)f(T)l(able)h(6.)23 b(The)17 b(user)g(should)g(prop)q(erly)h(initialize)h(them)e(in)g (routine)g Fm(ParallelInit)p Fr(,)e(and)i(destro)o(y)0 2543 y(them)e(in)h(routine)g Fm(ParallelFinalize)p Fr(.)i(Both)d(these) g(routines)h(are)e(in)i(\014le)h Fm(pxgstrf)p 1518 2543 V 16 w(synch.c)p Fr(.)952 2795 y(30)p eop %%Page: 31 31 31 30 bop 0 46 a Fu(Ac)n(kno)n(wledgemen)n(t)0 147 y Fr(W)l(e)14 b(w)o(ould)g(lik)o(e)h(to)f(thank)f(Jinqc)o(hong)i(T)l(eo)f (for)g(helping)h(generate)f(the)g(co)q(de)h(in)f(Sup)q(erLU)i(to)d(w)o (ork)g(with)h(four)0 204 y(\015oating-p)q(oin)o(t)g(data)f(t)o(yp)q (es.)19 b(W)l(e)14 b(thank)f(Ed)h(Roth)o(b)q(erg)g(of)f(Silicon)i (Graphics)f(for)f(discussions)i(and)f(pro)o(viding)0 260 y(us)j(access)g(to)f(the)h(SGI)g(P)o(o)o(w)o(er)f(Challenge.)26 b(W)l(e)17 b(also)g(thank)f(Siv)m(an)i(T)l(oledo)g(for)e(suggestions)h (on)f(impro)o(ving)0 316 y(the)f(routines')h(in)o(terfaces.)0 459 y Fu(References)23 561 y Fr([1])21 b(E.)13 b(Anderson,)g(Z.)f(Bai,) h(C.)f(Bisc)o(hof,)h(J.)g(Demmel,)g(J.)f(Dongarra,)g(J.)g(Du)h(Croz,)f (A.)g(Green)o(baum,)h(S.)f(Ham-)93 617 y(marling,)j(A.)e(McKenney)l(,)i (S.)f(Ostrouc)o(ho)o(v,)f(and)h(D.)f(Sorensen.)19 b Fe(LAP)m(A)o(CK)12 b(Users')i(Guide,)i(R)n(ele)n(ase)e(2.0)p Fr(.)93 673 y(SIAM,)i(Philadelphia,)i(1995.)g(324)d(pages.)23 766 y([2])21 b(M.)15 b(Arioli,)i(J.)e(W.)g(Demmel,)g(and)h(I.)f(S.)h (Du\013.)j(Solving)e(sparse)e(linear)i(systems)e(with)h(sparse)f(bac)o (kw)o(ard)93 822 y(error.)20 b Fe(SIAM)14 b(J.)j(Matrix)f(A)o(nal.)f (Appl.)p Fr(,)g(10\(2\):165{19)o(0,)d(April)k(1989.)23 915 y([3])21 b(Timoth)o(y)16 b(A.)g(Da)o(vis,)g(John)g(R.)g(Gilb)q (ert,)h(Esmond)f(Ng,)g(and)g(Barry)g(P)o(eyton.)22 b(Appro)o(ximate)16 b(minim)o(um)93 971 y(degree)e(ordering)g(for)e(unsymmetric)i (matrices.)j(T)l(alk)d(presen)o(ted)g(at)e(XI)q(I)q(I)j(Householder)g (Symp)q(osium)f(on)93 1028 y(Numerical)j(Algebra,)e(June)h(1996.)e (Journal)i(v)o(ersion)f(in)h(preparation.)23 1120 y([4])21 b(James)f(W.)e(Demmel,)j(Stanley)e(C.)g(Eisenstat,)h(John)g(R.)f(Gilb)q (ert,)i(Xiao)o(y)o(e)e(S.)g(Li,)i(and)e(Joseph)h(W.H.)93 1176 y(Liu.)38 b(A)21 b(sup)q(erno)q(dal)h(approac)o(h)e(to)h(sparse)f (partial)h(piv)o(oting.)37 b(T)l(ec)o(hnical)23 b(Rep)q(ort)e (UCB//CSD-95-)93 1233 y(883,)16 b(Computer)h(Science)h(Division,)g (U.C.)e(Berk)o(eley)l(,)i(July)g(1995.)23 b(\(Xero)o(x)16 b(P)l(AR)o(C)h(rep)q(ort)g(CSL-95-03,)93 1289 y(LAP)l(A)o(CK)f(W)l (orking)f(Note)g(#103\).)f(T)l(o)h(app)q(ear)g(in)h Fe(SIAM)f(J.)h (Matrix)h(A)o(nalysis)d(and)i(Applic)n(ations.)23 1382 y Fr([5])21 b(James)16 b(W.)g(Demmel,)g(John)g(R.)g(Gilb)q(ert,)h(and)f (Xiao)o(y)o(e)g(S.)f(Li.)23 b(An)16 b(async)o(hronous)g(parallel)h(sup) q(erno)q(dal)93 1438 y(algorithm)j(for)e(sparse)h(gaussian)h (elimination.)34 b(T)l(ec)o(hnical)21 b(Rep)q(ort)e(UCB//CSD-97-943,)f (Computer)93 1495 y(Science)f(Division,)f(U.C.)d(Berk)o(eley)l(,)j(F)l (eburary)e(1997.)k(LAP)l(A)o(CK)d(W)l(orking)g(Note)f(#124,)f (Submitted)j(to)93 1551 y(SIAM)g(J.)f(Matrix)g(Anal.)g(Appl.)23 1643 y([6])21 b(I.S)14 b(Du\013,)e(R.G)h(Grimes,)g(and)g(J.G)g(Lewis.)k (Users')12 b(guide)i(for)f(the)g(harw)o(ell-b)q(o)q(eing)i(sparse)e (matrix)f(collec-)93 1700 y(tion)18 b(\(release)g(1\).)26 b(T)l(ec)o(hnical)19 b(Rep)q(ort)f(RAL-92-086,)f(Rutherford)h(Appleton) h(Lab)q(oratory)l(,)e(Decem)o(b)q(er)93 1756 y(1992.)23 1849 y([7])k(Alan)16 b(George,)e(Joseph)h(Liu,)h(and)e(Esmond)h(Ng.)k (A)c(data)f(structure)g(for)g(sparse)h(QR)g(and)g(LU)g(factoriza-)93 1905 y(tions.)20 b Fe(SIAM)15 b(J.)h(Sci.)g(Stat.)g(Comput.)p Fr(,)g(9:100{121,)c(1988.)23 1998 y([8])21 b(Alan)f(George)f(and)g (Esmond)g(Ng.)32 b(Sym)o(b)q(olic)20 b(factorization)f(for)g(sparse)g (Gaussian)g(elimination)j(with)93 2054 y(partial)16 b(piv)o(oting.)k Fe(SIAM)15 b(J.)h(Sci.)g(Stat.)g(Comput.)p Fr(,)g(8\(6\):877{89)o(8,)c (1987.)23 2146 y([9])21 b(John)14 b(R.)g(Gilb)q(ert,)g(Xiao)o(y)o(e)f (S.)g(Li,)i(Esmond)e(G.)g(Ng,)g(and)g(Barry)g(W.)g(P)o(eyton.)j (Computing)d(ro)o(w)g(and)g(col-)93 2203 y(umn)h(coun)o(ts)g(for)f (sparse)g(QR)i(factorization.)i(In)d(preparation.)f(\(T)l(alk)h(presen) o(ted)g(at)f(SIAM)h(Symp)q(osium)93 2259 y(on)i(Applied)h(Linear)f (Algebra,)f(June)i(1994\).)0 2352 y([10])k(N.)f(J.)g(Higham.)34 b(Algorithm)20 b(674:)28 b(F)o(OR)l(TRAN)21 b(co)q(des)f(for)g (estimating)g(the)g(one-norm)f(of)h(a)f(real)h(or)93 2408 y(complex)c(matrix,)f(with)g(applications)i(to)e(condition)h (estimation.)k Fe(A)o(CM)c(T)m(r)n(ans.)e(Math.)i(Soft.)p Fr(,)f(14:381{)93 2465 y(396,)f(1988.)0 2557 y([11])21 b(Xiao)o(y)o(e)f(S.)g(Li.)35 b(Sparse)20 b(Gaussian)g(elimination)i(on) e(high)h(p)q(erformance)f(computers.)33 b(T)l(ec)o(hnical)22 b(Re-)93 2614 y(p)q(ort)c(UCB//CSD-96-919,)e(Computer)i(Science)h (Division,)h(U.C.)d(Berk)o(eley)l(,)i(Septem)o(b)q(er)f(1996.)26 b(Ph.D)93 2670 y(dissertation.)952 2795 y(31)p eop %%Page: 32 32 32 31 bop 0 46 a Fr([12])21 b(Joseph)g(W.H.)e(Liu.)36 b(Mo)q(di\014cation)21 b(of)e(the)i(minim)o(um)g(degree)f(algorithm)g (b)o(y)g(m)o(ultiple)i(elimination.)93 102 y Fe(A)o(CM)16 b(T)m(r)n(ans.)e(Math.)j(Softwar)n(e)p Fr(,)d(11:141{153,)e(1985.)0 196 y([13])21 b(POSIX)k(System)f(Application)i(Program)d(In)o(terface:) 37 b(Threads)24 b(extension)h([C)f(Language],)h(POSIX)93 252 y(1003.1c)14 b(draft)h(4.)k(IEEE)c(Standards)g(Departmen)o(t.)952 2795 y(32)p eop %%Page: 33 33 33 32 bop 0 46 a Fu(A)69 b(Sp)r(eci\014cations)21 b(of)i(routines)f(in) h(sequen)n(tial)e(Sup)r(erLU)0 149 y Ft(A.1)56 b Fa(SGSEQU)0 235 y Fm(void)0 291 y(sgsequ\(SuperMatrix)21 b(*A,)j(float)f(*r,)g (float)h(*c,)f(float)g(*rowcnd,)167 348 y(float)g(*colcnd,)g(float)g (*amax,)g(int)h(*info\))95 460 y(Purpose)95 517 y(=======)95 630 y(SGSEQU)f(computes)g(row)h(and)f(column)g(scalings)g(intended)g (to)g(equilibrate)g(an)95 686 y(M-by-N)g(sparse)h(matrix)f(A)g(and)h (reduce)f(its)g(condition)g(number.)g(R)h(returns)e(the)95 743 y(row)i(scale)f(factors)g(and)g(C)h(the)g(column)f(scale)g (factors,)g(chosen)g(to)g(try)h(to)f(make)95 799 y(the)h(largest)f (element)g(in)g(each)h(row)f(and)h(column)f(of)g(the)h(matrix)f(B)g (with)95 856 y(elements)g(B\(i,j\)=R\(i\)*A\(i,j\)*C\(j\))e(have)i (absolute)g(value)g(1.)95 969 y(R\(i\))h(and)f(C\(j\))h(are)f (restricted)f(to)i(be)g(between)f(SMLNUM)g(=)g(smallest)g(safe)95 1025 y(number)g(and)h(BIGNUM)f(=)h(largest)f(safe)g(number.)47 b(Use)23 b(of)h(these)f(scaling)95 1081 y(factors)g(is)h(not)f (guaranteed)g(to)g(reduce)h(the)f(condition)g(number)g(of)g(A)h(but)95 1138 y(works)g(well)f(in)h(practice.)95 1251 y(See)g(supermatrix.h)e (for)h(the)h(definition)e(of)i('SuperMatrix')e(structure.)95 1364 y(Arguments)95 1420 y(=========)95 1533 y(A)167 b(\(input\))23 b(SuperMatrix*)286 1590 y(The)h(matrix)f(of)g(dimension) g(\(A->nrow,)g(A->ncol\))f(whose)i(equilibration)286 1646 y(factors)f(are)h(to)f(be)h(computed.)f(The)g(type)g(of)h(A)g(can) f(be:)286 1702 y(Stype)h(=)f(NC;)h(Dtype)f(=)h(_S;)f(Mtype)g(=)h(GE.)95 1815 y(R)167 b(\(output\))23 b(float*,)g(dimension)g(\(A->nrow\))286 1872 y(If)h(INFO)f(=)h(0)g(or)f(INFO)h(>)f(M,)h(R)g(contains)e(the)i (row)f(scale)h(factors)286 1928 y(for)g(A.)95 2041 y(C)167 b(\(output\))23 b(float*,)g(dimension)g(\(A->ncol\))286 2098 y(If)h(INFO)f(=)h(0,)47 b(C)24 b(contains)f(the)g(column)g(scale)h (factors)f(for)g(A.)95 2211 y(rowcnd)47 b(\(output\))23 b(float*)286 2267 y(If)h(INFO)f(=)h(0)g(or)f(INFO)h(>)f(M,)h(ROWCND)f (contains)g(the)g(ratio)g(of)h(the)286 2323 y(smallest)f(R\(i\))g(to)h (the)f(largest)g(R\(i\).)47 b(If)24 b(ROWCND)f(>=)h(0.1)f(and)286 2380 y(AMAX)h(is)f(neither)g(too)h(large)f(nor)g(too)h(small,)f(it)g (is)h(not)f(worth)286 2436 y(scaling)g(by)h(R.)95 2549 y(colcnd)47 b(\(output\))23 b(float*)286 2606 y(If)h(INFO)f(=)h(0,)g (COLCND)f(contains)f(the)i(ratio)f(of)h(the)f(smallest)286 2662 y(C\(i\))h(to)f(the)h(largest)f(C\(i\).)47 b(If)23 b(COLCND)g(>=)h(0.1,)f(it)h(is)f(not)952 2795 y Fr(33)p eop %%Page: 34 34 34 33 bop 286 46 a Fm(worth)24 b(scaling)e(by)i(C.)95 159 y(amax)95 b(\(output\))23 b(float*)286 215 y(Absolute)g(value)g(of) h(largest)f(matrix)g(element.)46 b(If)24 b(AMAX)f(is)h(very)286 271 y(close)g(to)f(overflow)g(or)g(very)h(close)f(to)h(underflow,)e (the)i(matrix)286 328 y(should)f(be)h(scaled.)95 441 y(info)95 b(\(output\))23 b(int*)286 497 y(=)h(0:)48 b(successful)22 b(exit)286 554 y(<)i(0:)48 b(if)23 b(INFO)g(=)h(-i,)g (the)f(i-th)g(argument)g(had)h(an)f(illegal)g(value)286 610 y(>)h(0:)48 b(if)23 b(INFO)g(=)h(i,)48 b(and)23 b(i)h(is)430 667 y(<=)f(M:)48 b(the)23 b(i-th)g(row)h(of)f(A)h(is)g(exactly)f(zero) 430 723 y(>)47 b(M:)h(the)23 b(\(i-M\)-th)g(column)g(of)g(A)h(is)g (exactly)f(zero)0 845 y Ft(A.2)56 b Fa(SGSCON)0 931 y Fm(void)0 987 y(sgscon\(char)22 b(*norm,)h(SuperMatrix)g(*L,)g (SuperMatrix)g(*U,)167 1044 y(float)g(anorm,)g(float)g(*rcond,)g(int)h (*info\))95 1156 y(Purpose)95 1213 y(=======)95 1326 y(SGSCON)f(estimates)g(the)h(reciprocal)e(of)i(the)f(condition)g (number)g(of)g(a)h(general)95 1382 y(real)g(matrix)f(A,)g(in)h(either)f (the)g(1-norm)h(or)f(the)h(infinity-norm,)e(using)95 1439 y(the)i(LU)f(factorization)g(computed)f(by)i(SGETRF.)95 1552 y(An)g(estimate)f(is)g(obtained)g(for)h(norm\(inv\(A\)\),)e(and)h (the)h(reciprocal)e(of)i(the)95 1608 y(condition)f(number)g(is)h (computed)e(as)167 1665 y(RCOND)h(=)h(1)g(/)f(\()h(norm\(A\))f(*)h (norm\(inv\(A\)\))e(\).)95 1777 y(See)i(supermatrix.h)e(for)h(the)h (definition)e(of)i('SuperMatrix')e(structure.)95 1890 y(Arguments)95 1947 y(=========)95 2060 y(NORM)95 b(\(input\))23 b(char*)286 2116 y(Specifies)g(whether)g(the)g(1-norm)g(condition)g (number)g(or)h(the)286 2173 y(infinity-norm)e(condition)h(number)g(is)h (required:)286 2229 y(=)g('1')g(or)f('O':)47 b(1-norm;)286 2286 y(=)24 b('I':)214 b(Infinity-norm.)95 2398 y(A)167 b(\(input\))23 b(SuperMatrix*)286 2455 y(The)h(original)f(matrix,)f(or) i(equilibrated)e(matrix.)95 2568 y(L)167 b(\(input\))23 b(SuperMatrix*)286 2624 y(The)h(factor)f(L)h(from)f(the)g (factorization)f(Pr*A*Pc=L*U)h(as)g(computed)g(by)952 2795 y Fr(34)p eop %%Page: 35 35 35 34 bop 286 46 a Fm(SGSTRF.)23 b(Use)h(compressed)e(row)i(subscripts) e(storage)h(for)h(supernodes,)286 102 y(i.e.,)g(L)f(has)h(types:)f (Stype)g(=)h(SC,)f(Dtype)g(=)h(_S,)f(Mtype)h(=)f(TRLU.)95 215 y(U)167 b(\(input\))23 b(SuperMatrix*)286 271 y(The)h(factor)f(U)h (from)f(the)g(factorization)f(Pr*A*Pc=L*U)h(as)g(computed)g(by)286 328 y(SGSTRF.)g(Use)h(column-wise)e(storage)h(scheme,)g(i.e.,)g(U)h (has)f(types:)286 384 y(Stype)h(=)f(NC,)h(Dtype)f(=)h(_S,)f(Mtype)g(=)h (TRU.)95 497 y(anorm)71 b(\(input\))23 b(float)286 554 y(If)h(NORM)f(=)h('1')f(or)h('O',)f(the)h(1-norm)f(of)g(the)h(original) f(matrix)g(A.)286 610 y(If)h(NORM)f(=)h('I',)f(the)h(infinity-norm)e (of)h(the)h(original)f(matrix)g(A.)95 723 y(rcond)71 b(\(output\))23 b(float*)286 780 y(The)h(reciprocal)e(of)i(the)f (condition)g(number)g(of)h(the)f(matrix)g(A,)286 836 y(computed)g(as)h(RCOND)f(=)h(1/\(norm\(A\))e(*)i(norm\(inv\(A\)\)\).) 95 949 y(info)95 b(\(output\))23 b(int*)286 1005 y(=)h(0:)48 b(successful)22 b(exit)286 1062 y(<)i(0:)48 b(if)23 b(INFO)g(=)h(-i,)g (the)f(i-th)g(argument)g(had)h(an)f(illegal)g(value)0 1240 y Ft(A.3)56 b Fa(SGSRFS)0 1326 y Fm(void)0 1382 y(sgsrfs\(char)22 b(*trans,)h(SuperMatrix)g(*A,)g(SuperMatrix)f(*L,)i (SuperMatrix)e(*U,)167 1439 y(int)h(*perm_r,)g(int)h(*perm_c,)e(char)i (*equed,)f(float)g(*R,)g(float)h(*C,)167 1495 y(SuperMatrix)e(*B,)i (SuperMatrix)e(*X,)i(float)f(*ferr,)g(float)g(*berr,)g(int)h(*info\))95 1608 y(Purpose)95 1665 y(=======)95 1777 y(SGSRFS)f(improves)g(the)h (computed)e(solution)h(to)h(a)g(system)f(of)g(linear)95 1834 y(equations)g(and)h(provides)e(error)h(bounds)h(and)f(backward)g (error)g(estimates)g(for)95 1890 y(the)h(solution.)95 2003 y(See)g(supermatrix.h)e(for)h(the)h(definition)e(of)i ('SuperMatrix')e(structure.)95 2116 y(Arguments)95 2173 y(=========)95 2286 y(trans)71 b(\(input\))23 b(char*)286 2342 y(Specifies)g(the)g(form)h(of)f(the)h(system)f(of)g(equations:)286 2398 y(=)h('N':)47 b(A)24 b(*)g(X)f(=)h(B)119 b(\(No)24 b(transpose\))286 2455 y(=)g('T':)47 b(A**T)24 b(*)f(X)h(=)g(B)47 b(\(Transpose\))286 2511 y(=)24 b('C':)47 b(A**H)24 b(*)f(X)h(=)g(B)47 b(\(Conjugate)23 b(transpose)f(=)i(Transpose\))95 2624 y(A)167 b(\(input\))23 b(SuperMatrix*)952 2795 y Fr(35)p eop %%Page: 36 36 36 35 bop 286 46 a Fm(The)24 b(original)f(matrix)g(A)g(in)h(the)f (system,)g(or)h(the)f(scaled)g(A)h(if)286 102 y(equilibration)e(was)i (done.)95 215 y(L)167 b(\(input\))23 b(SuperMatrix*)286 271 y(The)h(factor)f(L)h(from)f(the)g(factorization)f(Pr*A*Pc=L*U.)h (Use)286 328 y(compressed)g(row)g(subscripts)g(storage)g(for)g (supernodes,)286 384 y(i.e.,)h(L)f(has)h(types:)f(Stype)g(=)h(SC,)f (Dtype)g(=)h(_S,)f(Mtype)h(=)f(TRLU.)95 497 y(U)167 b(\(input\))23 b(SuperMatrix*)286 554 y(The)h(factor)f(U)h(from)f(the)g(factorization) f(Pr*A*Pc=L*U)h(as)g(computed)g(by)286 610 y(SGSTRF.)g(Use)h (column-wise)e(storage)h(scheme,)286 667 y(i.e.,)h(U)f(has)h(types:)f (Stype)g(=)h(NC,)f(Dtype)g(=)h(_S,)f(Mtype)h(=)f(TRU.)95 780 y(perm_r)47 b(\(input\))23 b(int*,)g(dimension)g(\(A->nrow\))286 836 y(Row)h(permutation)e(vector,)h(which)g(defines)g(the)h (permutation)e(matrix)h(Pr;)286 892 y(perm_r[i])g(=)h(j)f(means)h(row)f (i)h(of)f(A)h(is)g(in)f(position)g(j)h(in)f(Pr*A.)95 1005 y(perm_c)47 b(\(input\))23 b(int*,)g(dimension)g(\(A->ncol\))286 1062 y(Column)g(permutation)g(vector,)g(which)g(defines)g(the)286 1118 y(permutation)g(matrix)g(Pc;)g(perm_c[i])g(=)h(j)f(means)g(column) h(i)f(of)h(A)g(is)286 1175 y(in)g(position)f(j)g(in)h(A*Pc.)95 1288 y(equed)71 b(\(input\))23 b(Specifies)g(the)g(form)h(of)f (equilibration)f(that)i(was)f(done.)286 1344 y(=)h('N':)f(No)h (equilibration.)286 1401 y(=)g('R':)f(Row)h(equilibration,)e(i.e.,)h(A) h(was)f(premultiplied)f(by)i(diag\(R\).)286 1457 y(=)g('C':)f(Column)g (equilibration,)f(i.e.,)i(A)f(was)h(postmultiplied)e(by)453 1513 y(diag\(C\).)286 1570 y(=)i('B':)f(Both)h(row)f(and)h(column)f (equilibration,)f(i.e.,)h(A)h(was)f(replaced)453 1626 y(by)h(diag\(R\)*A*diag\(C\).)95 1739 y(R)167 b(\(input\))23 b(float*,)g(dimension)g(\(A->nrow\))286 1796 y(The)h(row)f(scale)g (factors)g(for)h(A.)286 1852 y(If)g(equed)f(=)h('R')f(or)h('B',)f(A)h (is)g(premultiplied)e(by)h(diag\(R\).)286 1909 y(If)h(equed)f(=)h('N')f (or)h('C',)f(R)h(is)g(not)f(accessed.)95 2022 y(C)167 b(\(input\))23 b(float*,)g(dimension)g(\(A->ncol\))286 2078 y(The)h(column)f(scale)g(factors)g(for)g(A.)286 2134 y(If)h(equed)f(=)h('C')f(or)h('B',)f(A)h(is)g(postmultiplied)d(by) j(diag\(C\).)286 2191 y(If)g(equed)f(=)h('N')f(or)h('R',)f(C)h(is)g (not)f(accessed.)95 2304 y(B)167 b(\(input\))23 b(SuperMatrix*)286 2360 y(B)h(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_S,)f(Mtype)g (=)h(GE.)286 2417 y(The)g(right)f(hand)g(side)h(matrix)f(B.)95 2530 y(X)167 b(\(input/output\))22 b(SuperMatrix*)286 2586 y(X)i(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_S,)f(Mtype)g (=)h(GE.)286 2643 y(On)g(entry,)f(the)g(solution)g(matrix)g(X,)h(as)f (computed)g(by)h(sgstrs\(\).)952 2795 y Fr(36)p eop %%Page: 37 37 37 36 bop 286 46 a Fm(On)24 b(exit,)f(the)h(improved)e(solution)h (matrix)g(X.)95 159 y(FERR)95 b(\(output\))23 b(float*,)g(dimension)g (\(B->ncol\))286 215 y(The)h(estimated)e(forward)h(error)h(bound)f(for) g(each)g(solution)g(vector)286 271 y(X\(j\))h(\(the)f(j-th)g(column)g (of)h(the)f(solution)g(matrix)g(X\).)286 328 y(If)h(XTRUE)f(is)h(the)f (true)g(solution)g(corresponding)f(to)i(X\(j\),)f(FERR\(j\))286 384 y(is)h(an)g(estimated)e(upper)h(bound)h(for)f(the)g(magnitude)g(of) h(the)f(largest)286 441 y(element)g(in)h(\(X\(j\))f(-)h(XTRUE\))f (divided)g(by)g(the)h(magnitude)e(of)i(the)286 497 y(largest)f(element) g(in)h(X\(j\).)47 b(The)23 b(estimate)g(is)h(as)f(reliable)g(as)286 554 y(the)h(estimate)f(for)g(RCOND,)g(and)h(is)f(almost)g(always)g(a)h (slight)286 610 y(overestimate)f(of)g(the)h(true)f(error.)95 723 y(BERR)95 b(\(output\))23 b(float*,)g(dimension)g(\(B->ncol\))286 780 y(The)h(componentwise)e(relative)h(backward)f(error)i(of)f(each)h (solution)286 836 y(vector)f(X\(j\))h(\(i.e.,)f(the)g(smallest)g (relative)g(change)g(in)286 892 y(any)h(element)f(of)g(A)h(or)g(B)f (that)h(makes)f(X\(j\))g(an)h(exact)f(solution\).)95 1005 y(info)95 b(\(output\))23 b(int*)286 1062 y(=)h(0:)48 b(successful)22 b(exit)310 1118 y(<)i(0:)47 b(if)24 b(INFO)f(=)h(-i,)f (the)h(i-th)f(argument)g(had)g(an)h(illegal)f(value)0 1296 y Ft(A.4)56 b Fa(SGSSV)0 1382 y Fm(void)0 1439 y (sgssv\(SuperMatrix)22 b(*A,)h(int)g(*perm_c,)g(int)h(*perm_r,)e (SuperMatrix)h(*L,)143 1495 y(SuperMatrix)g(*U,)g(SuperMatrix)f(*B,)i (int)f(*info)g(\))0 1552 y({)95 1665 y(Purpose)95 1721 y(=======)95 1834 y(SGSSV)h(solves)f(the)g(system)g(of)h(linear)f (equations)f(A*X=B,)h(using)h(the)95 1890 y(LU)g(factorization)e(from)h (SGSTRF.)g(It)h(performs)f(the)g(following)g(steps:)143 2003 y(1.)h(If)f(A)h(is)g(stored)f(column-wise)f(\(A->Stype)h(=)g (NC\):)215 2116 y(1.1.)g(Permute)g(the)g(columns)g(of)h(A,)g(forming)e (A*Pc,)i(where)f(Pc)334 2173 y(is)h(a)f(permutation)g(matrix.)g(For)g (more)g(details)g(of)h(this)f(step,)310 2229 y(see)h(sp_preorder.c.)215 2342 y(1.2.)f(Factor)g(A)h(as)f(Pr*A*Pc=L*U)g(with)g(the)h(permutation) e(Pr)i(determined)334 2398 y(by)g(Gaussian)e(elimination)h(with)g (partial)g(pivoting.)334 2455 y(L)h(is)f(unit)h(lower)f(triangular)f (with)i(offdiagonal)e(entries)334 2511 y(bounded)h(by)h(1)f(in)h (magnitude,)e(and)i(U)g(is)f(upper)g(triangular.)215 2624 y(1.3.)g(Solve)g(the)h(system)f(of)g(equations)g(A*X=B)g(using)g (the)h(factored)952 2795 y Fr(37)p eop %%Page: 38 38 38 37 bop 334 46 a Fm(form)23 b(of)h(A.)143 159 y(2.)g(If)f(A)h(is)g (stored)f(row-wise)f(\(A->Stype)h(=)h(NR\),)f(apply)g(the)215 215 y(above)g(algorithm)g(to)g(the)h(tranpose)e(of)i(A:)215 328 y(2.1.)f(Permute)g(columns)g(of)g(tranpose\(A\))g(\(rows)g(of)h (A\),)334 384 y(forming)f(transpose\(A\)*Pc,)f(where)h(Pc)g(is)h(a)g (permutation)e(matrix.)334 441 y(For)i(more)f(details)g(of)g(this)h (step,)f(see)g(sp_preorder.c.)215 554 y(2.2.)g(Factor)g(A)h(as)f (Pr*transpose\(A\)*Pc=L*U)e(with)j(the)f(permutation)f(Pr)334 610 y(determined)h(by)g(Gaussian)g(elimination)f(with)i(partial)f (pivoting.)334 667 y(L)h(is)f(unit)h(lower)f(triangular)f(with)i (offdiagonal)e(entries)334 723 y(bounded)h(by)h(1)f(in)h(magnitude,)e (and)i(U)g(is)f(upper)g(triangular.)215 836 y(2.3.)g(Solve)g(the)h (system)f(of)g(equations)g(A*X=B)g(using)g(the)h(factored)334 892 y(form)f(of)h(A.)143 1005 y(See)g(supermatrix.h)e(for)h(the)h (definition)e(of)i('SuperMatrix')e(structure.)95 1118 y(Arguments)95 1175 y(=========)95 1288 y(A)167 b(\(input\))23 b(SuperMatrix*)286 1344 y(Matrix)g(A)h(in)g(A*X=B,)f(of)g(dimension)g (\(A->nrow,)g(A->ncol\).)f(The)i(number)286 1401 y(of)g(linear)f (equations)g(is)g(A->nrow.)g(Currently,)f(the)i(type)f(of)h(A)g(can)f (be:)286 1457 y(Stype)h(=)f(NC)h(or)f(NR;)h(Dtype)f(=)h(_S;)f(Mtype)g (=)h(GE.)g(In)f(the)h(future,)f(more)286 1513 y(general)g(A)h(will)f (be)h(handled.)95 1626 y(perm_c)47 b(\(input/output\))22 b(int*)286 1683 y(If)i(A->Stype)f(=)g(NC,)h(column)f(permutation)f (vector)h(of)h(size)f(A->ncol)286 1739 y(which)h(defines)e(the)i (permutation)e(matrix)h(Pc;)h(perm_c[i])e(=)i(j)g(means)286 1796 y(column)f(i)h(of)g(A)f(is)h(in)g(position)e(j)i(in)g(A*Pc.)286 1852 y(On)g(exit,)f(perm_c)g(may)h(be)f(overwritten)g(by)g(the)h (product)f(of)g(the)h(input)286 1909 y(perm_c)f(and)h(a)g(permutation)e (that)h(postorders)g(the)g(elimination)g(tree)286 1965 y(of)h(Pc'*A'*A*Pc;)e(perm_c)h(is)h(not)f(changed)g(if)h(the)f (elimination)g(tree)286 2022 y(is)h(already)f(in)g(postorder.)286 2134 y(If)h(A->Stype)f(=)g(NR,)h(column)f(permutation)f(vector)h(of)h (size)f(A->nrow)286 2191 y(which)h(describes)e(permutation)h(of)g (columns)g(of)h(tranpose\(A\))286 2247 y(\(rows)g(of)f(A\))h(as)f (described)g(above.)95 2360 y(perm_r)47 b(\(output\))23 b(int*)286 2417 y(If)h(A->Stype)f(=)g(NC,)h(row)f(permutation)g(vector) g(of)g(size)h(A->nrow,)286 2473 y(which)g(defines)e(the)i(permutation)e (matrix)h(Pr,)h(and)f(is)h(determined)286 2530 y(by)g(partial)f (pivoting.)46 b(perm_r[i])23 b(=)h(j)f(means)h(row)f(i)h(of)f(A)h(is)g (in)286 2586 y(position)f(j)h(in)f(Pr*A.)952 2795 y Fr(38)p eop %%Page: 39 39 39 38 bop 286 46 a Fm(If)24 b(A->Stype)f(=)g(NR,)h(permutation)e (vector)h(of)h(size)f(A->ncol,)g(which)286 102 y(determines)g (permutation)f(of)i(rows)f(of)h(transpose\(A\))286 159 y(\(columns)f(of)h(A\))f(as)h(described)f(above.)95 271 y(L)167 b(\(output\))23 b(SuperMatrix*)286 328 y(The)h(factor)f(L)h (from)f(the)g(factorization)382 384 y(Pr*A*Pc=L*U)332 b(\(if)24 b(A->Stype)f(=)g(NC\))h(or)382 441 y (Pr*transpose\(A\)*Pc=L*U)68 b(\(if)24 b(A->Stype)f(=)g(NR\).)286 497 y(Uses)h(compressed)e(row)i(subscripts)e(storage)h(for)g (supernodes,)g(i.e.,)286 554 y(L)h(has)g(types:)f(Stype)g(=)g(SC,)h (Dtype)f(=)h(_S,)f(Mtype)g(=)h(TRLU.)95 667 y(U)167 b(\(output\))23 b(SuperMatrix*)286 723 y(The)h(factor)f(U)h(from)f(the)g(factorization) 382 780 y(Pr*A*Pc=L*U)332 b(\(if)24 b(A->Stype)f(=)g(NC\))h(or)382 836 y(Pr*transpose\(A\)*Pc=L*U)68 b(\(if)24 b(A->Stype)f(=)g(NR\).)286 892 y(Uses)h(column-wise)e(storage)h(scheme,)g(i.e.,)g(U)h(has)f (types:)286 949 y(Stype)h(=)f(NC,)h(Dtype)f(=)h(_S,)f(Mtype)g(=)h(TRU.) 95 1062 y(B)167 b(\(input/output\))22 b(SuperMatrix*)286 1118 y(B)i(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_S,)f(Mtype)g (=)h(GE.)286 1175 y(On)g(entry,)f(the)g(right)h(hand)f(side)g(matrix.) 286 1231 y(On)h(exit,)f(the)h(solution)e(matrix)h(if)h(info)f(=)h(0;)95 1344 y(info)95 b(\(output\))23 b(int*)286 1401 y(=)h(0:)g(successful)e (exit)286 1457 y(>)i(0:)g(if)f(info)h(=)f(i,)h(and)f(i)h(is)382 1513 y(<=)f(A->ncol:)g(U\(i,i\))g(is)h(exactly)f(zero.)g(The)g (factorization)f(has)453 1570 y(been)i(completed,)e(but)i(the)f(factor) g(U)h(is)f(exactly)g(singular,)453 1626 y(so)h(the)f(solution)g(could)g (not)h(be)f(computed.)382 1683 y(>)h(A->ncol:)e(number)h(of)h(bytes)f (allocated)g(when)g(memory)g(allocation)453 1739 y(failure)g(occurred,) g(plus)g(A->ncol.)0 1861 y Ft(A.5)56 b Fa(SGSSVX)0 1947 y Fm(void)0 2003 y(sgssvx\(char)22 b(*fact,)h(char)h(*trans,)f(char)g (*refact,)167 2060 y(SuperMatrix)f(*A,)i(factor_param_t)e (*factor_params,)g(int)h(*perm_c,)167 2116 y(int)g(*perm_r,)g(int)h (*etree,)f(char)g(*equed,)g(float)g(*R,)g(float)h(*C,)167 2173 y(SuperMatrix)e(*L,)i(SuperMatrix)e(*U,)i(void)f(*work,)g(int)g (lwork,)167 2229 y(SuperMatrix)f(*B,)i(SuperMatrix)e(*X,)i(float)f (*recip_pivot_growth,)167 2286 y(float)g(*rcond,)g(float)g(*ferr,)g (float)h(*berr,)167 2342 y(mem_usage_t)e(*mem_usage,)h(int)g(*info)g (\))0 2398 y({)95 2511 y(Purpose)95 2568 y(=======)952 2795 y Fr(39)p eop %%Page: 40 40 40 39 bop 95 46 a Fm(SGSSVX)23 b(solves)h(the)f(system)g(of)h(linear)f (equations)f(A*X=B)h(or)h(A'*X=B,)f(using)95 102 y(the)h(LU)f (factorization)g(from)g(sgstrf\(\).)g(Error)g(bounds)g(on)g(the)h (solution)f(and)95 159 y(a)h(condition)f(estimate)g(are)g(also)g (provided.)g(It)h(performs)e(the)i(following)e(steps:)143 271 y(1.)i(If)f(A)h(is)g(stored)f(column-wise)f(\(A->Stype)h(=)g(NC\):) 215 384 y(1.1.)g(If)h(fact)f(=)h('E',)f(scaling)g(factors)g(are)g (computed)g(to)h(equilibrate)e(the)334 441 y(system:)382 497 y(trans)h(=)h('N':)47 b(diag\(R\)*A*diag\(C\))117 b(*inv\(diag\(C\)\)*X)22 b(=)h(diag\(R\)*B)382 554 y(trans)g(=)h('T':)f (\(diag\(R\)*A*diag\(C\)\)**T)e(*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B) 382 610 y(trans)g(=)h('C':)f(\(diag\(R\)*A*diag\(C\)\)**H)e (*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B)334 667 y(Whether)g(or)h(not)f (the)g(system)h(will)f(be)g(equilibrated)g(depends)g(on)g(the)334 723 y(scaling)g(of)h(the)f(matrix)g(A,)h(but)f(if)h(equilibration)e(is) h(used,)h(A)f(is)334 780 y(overwritten)f(by)i(diag\(R\)*A*diag\(C\))e (and)h(B)h(by)f(diag\(R\)*B)g(\(if)g(trans='N'\))334 836 y(or)h(diag\(C\)*B)e(\(if)i(trans)f(=)h('T')f(or)h('C'\).)215 949 y(1.2.)f(Permute)g(columns)g(of)g(A,)h(forming)f(A*Pc,)g(where)g (Pc)h(is)g(a)f(permutation)334 1005 y(matrix)g(that)g(usually)g (preserves)g(sparsity.)334 1062 y(For)h(more)f(details)g(of)g(this)h (step,)f(see)g(sp_preorder.c.)215 1175 y(1.3.)g(If)h(fact)f(=)h('N')f (or)h('E',)f(the)h(LU)f(decomposition)f(is)i(used)f(to)h(factor)f(the) 334 1231 y(matrix)g(A)h(\(after)f(equilibration)f(if)i(fact)f(=)h ('E'\))f(as)h(Pr*A*Pc)e(=)i(L*U,)334 1288 y(with)f(Pr)h(determined)e (by)i(partial)f(pivoting.)215 1401 y(1.4.)g(Compute)g(the)g(reciprocal) g(pivot)g(growth)g(factor.)215 1513 y(1.5.)g(If)h(some)f(U\(i,i\))g(=)h (0,)f(so)h(that)f(U)h(is)g(exactly)e(singular,)h(then)g(the)334 1570 y(routine)g(returns)g(with)g(info)h(=)f(i.)h(Otherwise,)e(the)i (factored)f(form)g(of)334 1626 y(A)h(is)f(used)h(to)f(estimate)g(the)h (condition)e(number)h(of)h(the)f(matrix)g(A.)h(If)334 1683 y(the)g(reciprocal)e(of)i(the)f(condition)g(number)g(is)g(less)h (than)f(machine)334 1739 y(precision,)g(info)g(=)h(A->ncol+1)e(is)i (returned)f(as)g(a)h(warning,)f(but)g(the)334 1796 y(routine)g(still)g (goes)g(on)h(to)g(solve)f(for)g(X)h(and)f(computes)g(error)g(bounds)334 1852 y(as)h(described)e(below.)215 1965 y(1.6.)h(The)h(system)f(of)g (equations)g(is)g(solved)g(for)h(X)g(using)f(the)g(factored)g(form)334 2022 y(of)h(A.)215 2134 y(1.7.)f(Iterative)g(refinement)f(is)i(applied) f(to)g(improve)g(the)h(computed)e(solution)334 2191 y(matrix)h(and)h (calculate)e(error)h(bounds)g(and)h(backward)f(error)g(estimates)334 2247 y(for)h(it.)215 2360 y(1.8.)f(If)h(equilibration)e(was)h(used,)g (the)h(matrix)f(X)h(is)f(premultiplied)f(by)334 2417 y(diag\(C\))h(\(if)g(trans)h(=)f('N'\))h(or)f(diag\(R\))g(\(if)h(trans) f(=)h('T')f(or)h('C'\))f(so)334 2473 y(that)g(it)h(solves)f(the)g (original)g(system)g(before)g(equilibration.)143 2586 y(2.)h(If)f(A)h(is)g(stored)f(row-wise)f(\(A->Stype)h(=)h(NR\),)f (apply)g(the)h(above)f(algorithm)215 2643 y(to)g(the)h(tranpose)f(of)g (A:)952 2795 y Fr(40)p eop %%Page: 41 41 41 40 bop 215 102 a Fm(2.1.)23 b(If)h(fact)f(=)h('E',)f(scaling)g (factors)g(are)g(computed)g(to)h(equilibrate)e(the)334 159 y(system:)382 215 y(trans)h(=)h('N':)47 b(diag\(R\)*A'*diag\(C\)) 117 b(*inv\(diag\(C\)\)*X)22 b(=)h(diag\(R\)*B)382 271 y(trans)g(=)h('T':)f(\(diag\(R\)*A'*diag\(C\)\)**T)e (*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B)382 328 y(trans)g(=)h('C':)f (\(diag\(R\)*A'*diag\(C\)\)**H)e(*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B) 334 384 y(Whether)g(or)h(not)f(the)g(system)h(will)f(be)g(equilibrated) g(depends)g(on)g(the)334 441 y(scaling)g(of)h(the)f(matrix)g(A,)h(but)f (if)h(equilibration)e(is)h(used,)h(A')f(is)334 497 y(overwritten)f(by)i (diag\(R\)*A'*diag\(C\))d(and)j(B)g(by)f(diag\(R\)*B)334 554 y(\(if)h(trans='N'\))e(or)i(diag\(C\)*B)e(\(if)i(trans)f(=)h('T')f (or)h('C'\).)215 667 y(2.2.)f(Permute)g(columns)g(of)g(transpose\(A\))g (\(rows)g(of)g(A\),)334 723 y(forming)g(transpose\(A\)*Pc,)f(where)h (Pc)g(is)h(a)g(permutation)e(matrix)h(that)334 780 y(usually)g (preserves)g(sparsity.)334 836 y(For)h(more)f(details)g(of)g(this)h (step,)f(see)g(sp_preorder.c.)215 949 y(2.3.)g(If)h(fact)f(=)h('N')f (or)h('E',)f(the)h(LU)f(decomposition)f(is)i(used)f(to)h(factor)f(the) 334 1005 y(transpose\(A\))f(\(after)h(equilibration)f(if)i(fact)f(=)h ('E'\))f(as)334 1062 y(Pr*transpose\(A\)*Pc)e(=)j(L*U)g(with)f(the)g (permutation)g(Pr)g(determined)g(by)334 1118 y(partial)g(pivoting.)215 1231 y(2.4.)g(Compute)g(the)g(reciprocal)g(pivot)g(growth)g(factor.)215 1344 y(2.5.)g(If)h(some)f(U\(i,i\))g(=)h(0,)f(so)h(that)f(U)h(is)g (exactly)e(singular,)h(then)g(the)334 1401 y(routine)g(returns)g(with)g (info)h(=)f(i.)h(Otherwise,)e(the)i(factored)f(form)334 1457 y(of)h(transpose\(A\))e(is)h(used)h(to)f(estimate)g(the)h (condition)e(number)h(of)h(the)334 1513 y(matrix)f(A.)h(If)f(the)h (reciprocal)e(of)i(the)f(condition)g(number)334 1570 y(is)h(less)f(than)g(machine)g(precision,)g(info)g(=)h(A->nrow+1)e(is)i (returned)f(as)334 1626 y(a)h(warning,)f(but)g(the)g(routine)g(still)h (goes)f(on)g(to)h(solve)f(for)h(X)f(and)334 1683 y(computes)g(error)g (bounds)g(as)h(described)e(below.)215 1796 y(2.6.)h(The)h(system)f(of)g (equations)g(is)g(solved)g(for)h(X)g(using)f(the)g(factored)g(form)334 1852 y(of)h(transpose\(A\).)215 1965 y(2.7.)f(Iterative)g(refinement)f (is)i(applied)f(to)g(improve)g(the)h(computed)e(solution)334 2022 y(matrix)h(and)h(calculate)e(error)h(bounds)g(and)h(backward)f (error)g(estimates)334 2078 y(for)h(it.)215 2191 y(2.8.)f(If)h (equilibration)e(was)h(used,)g(the)h(matrix)f(X)h(is)f(premultiplied)f (by)334 2247 y(diag\(C\))h(\(if)g(trans)h(=)f('N'\))h(or)f(diag\(R\))g (\(if)h(trans)f(=)h('T')f(or)h('C'\))f(so)334 2304 y(that)g(it)h (solves)f(the)g(original)g(system)g(before)g(equilibration.)143 2417 y(See)h(supermatrix.h)e(for)h(the)h(definition)e(of)i ('SuperMatrix')e(structure.)95 2530 y(Arguments)95 2586 y(=========)952 2795 y Fr(41)p eop %%Page: 42 42 42 41 bop 95 46 a Fm(fact)95 b(\(input\))23 b(char*)286 102 y(Specifies)g(whether)g(or)g(not)h(the)f(factored)g(form)g(of)h (the)g(matrix)286 159 y(A)g(is)g(supplied)e(on)i(entry,)f(and)h(if)f (not,)g(whether)g(the)h(matrix)f(A)h(should)286 215 y(be)g (equilibrated)e(before)h(it)h(is)f(factored.)286 271 y(=)h('F':)f(On)h(entry,)f(L,)h(U,)f(perm_r)g(and)h(perm_c)f(contain)g (the)g(factored)453 328 y(form)h(of)f(A.)h(If)f(equed)h(is)f(not)h ('N',)f(the)g(matrix)h(A)f(has)h(been)453 384 y(equilibrated)f(with)g (scaling)g(factors)g(R)g(and)h(C.)453 441 y(A,)g(L,)g(U,)f(perm_r)g (are)h(not)f(modified.)286 497 y(=)h('N':)f(The)h(matrix)f(A)h(will)f (be)h(factored,)e(and)i(the)f(factors)g(will)g(be)453 554 y(stored)g(in)h(L)g(and)f(U.)286 610 y(=)h('E':)f(The)h(matrix)f(A) h(will)f(be)h(equilibrated)e(if)h(necessary,)g(then)453 667 y(factored)g(into)g(L)h(and)g(U.)95 780 y(trans)71 b(\(input\))23 b(char*)286 836 y(Specifies)g(the)g(form)h(of)f(the)h (system)f(of)g(equations:)286 892 y(=)h('N':)f(A)h(*)g(X)g(=)f(B)191 b(\(No)24 b(transpose\))286 949 y(=)g('T':)f(A**T)h(*)f(X)h(=)g(B)119 b(\(Transpose\))286 1005 y(=)24 b('C':)f(A**H)h(*)f(X)h(=)g(B)119 b(\(Transpose\))95 1118 y(refact)47 b(\(input\))23 b(char*)286 1175 y(Specifies)g(whether)g(we)g(want)h(to)f(re-factor)g(the)g (matrix.)286 1231 y(=)h('N':)f(Factor)g(the)h(matrix)f(A.)286 1288 y(=)h('Y':)f(Matrix)g(A)h(was)g(factored)e(before,)h(now)h(we)f (want)h(to)f(re-factor)453 1344 y(matrix)g(A)h(with)f(perm_r)h(and)f (etree)g(as)h(inputs.)f(Use)453 1401 y(the)h(same)f(storage)g(for)h (the)f(L\\U)g(factors)g(previously)g(allocated,)453 1457 y(expand)g(it)h(if)g(necessary.)e(User)h(should)g(insure)h(to)f(use)h (the)f(same)453 1513 y(memory)g(model.)286 1570 y(If)h(fact)f(=)h('F',) f(then)h(refact)f(is)g(not)h(accessed.)95 1683 y(A)167 b(\(input/output\))22 b(SuperMatrix*)286 1739 y(Matrix)h(A)h(in)g (A*X=B,)f(of)g(dimension)g(\(A->nrow,)g(A->ncol\).)f(The)i(number)286 1796 y(of)g(the)f(linear)g(equations)g(is)h(A->nrow.)e(Currently,)h (the)g(type)h(of)f(A)h(can)f(be:)286 1852 y(Stype)h(=)f(NC)h(or)f(NR,)h (Dtype)f(=)h(_S,)f(Mtype)g(=)h(GE.)g(In)f(the)h(future,)286 1909 y(more)g(general)f(A)g(can)h(be)f(handled.)286 2022 y(On)h(entry,)f(If)h(fact)f(=)h('F')f(and)h(equed)f(is)g(not)h('N',)f (then)g(A)h(must)f(have)286 2078 y(been)h(equilibrated)e(by)h(the)h (scaling)f(factors)g(in)g(R)h(and/or)f(C.)286 2134 y(A)h(is)g(not)f (modified)g(if)g(fact)h(=)g('F')f(or)h('N',)f(or)g(if)h(fact)f(=)h('E') g(and)286 2191 y(equed)g(=)f('N')h(on)f(exit.)286 2304 y(On)h(exit,)f(if)h(fact)f(=)h('E')f(and)h(equed)f(is)g(not)h('N',)f(A) h(is)g(scaled)f(as)g(follows:)286 2360 y(If)h(A->Stype)f(=)g(NC:)334 2417 y(equed)g(=)h('R':)47 b(A)24 b(:=)f(diag\(R\))g(*)h(A)334 2473 y(equed)f(=)h('C':)47 b(A)24 b(:=)f(A)h(*)g(diag\(C\))334 2530 y(equed)f(=)h('B':)47 b(A)24 b(:=)f(diag\(R\))g(*)h(A)g(*)g (diag\(C\).)286 2586 y(If)g(A->Stype)f(=)g(NR:)334 2643 y(equed)g(=)h('R':)47 b(transpose\(A\))22 b(:=)i(diag\(R\))f(*)h (transpose\(A\))952 2795 y Fr(42)p eop %%Page: 43 43 43 42 bop 334 46 a Fm(equed)23 b(=)h('C':)47 b(transpose\(A\))22 b(:=)i(transpose\(A\))e(*)i(diag\(C\))334 102 y(equed)f(=)h('B':)47 b(transpose\(A\))22 b(:=)i(diag\(R\))f(*)h(transpose\(A\))e(*)i (diag\(C\).)95 215 y(factor_params)f(\(input\))f(factor_param_t*)286 271 y(The)i(structure)e(defines)h(the)h(input)f(scalar)g(parameters,)f (consisting)h(of)286 328 y(the)h(following)e(fields.)h(If)h (factor_params)e(=)i(NULL,)f(the)g(default)286 384 y(values)g(are)h (used)f(for)h(all)f(the)h(fields;)e(otherwise,)h(the)g(values)286 441 y(are)h(given)f(by)h(the)f(user.)286 497 y(-)h(panel_size)f (\(int\):)g(Panel)g(size.)g(A)h(panel)f(consists)g(of)g(at)h(most)382 554 y(panel_size)e(consecutive)h(columns.)f(If)i(panel_size)f(=)g(-1,)h (use)382 610 y(default)f(value)g(8.)286 667 y(-)h(relax)f(\(int\):)g (To)h(control)f(degree)g(of)g(relaxing)g(supernodes.)g(If)g(the)382 723 y(number)g(of)g(nodes)h(\(columns\))e(in)i(a)g(subtree)e(of)i(the)g (elimination)382 780 y(tree)f(is)h(less)f(than)g(relax,)g(this)h (subtree)f(is)g(considered)g(as)g(one)382 836 y(supernode,)f (regardless)h(of)g(the)h(row)f(structures)g(of)g(those)h(columns.)382 892 y(If)f(relax)h(=)f(-1,)h(use)f(default)g(value)g(8.)286 949 y(-)h(diag_pivot_thresh)e(\(float\):)g(Diagonal)h(pivoting)g (threshold.)382 1005 y(At)g(step)h(j)f(of)h(the)f(Gaussian)g (elimination,)f(if)477 1062 y(abs\(A_jj\))h(>=)g(diag_pivot_thresh)f(*) i(\(max_\(i>=j\))e(abs\(A_ij\)\),)382 1118 y(then)h(use)h(A_jj)f(as)g (pivot.)h(0)f(<=)h(diag_pivot_thresh)d(<=)j(1.)382 1175 y(If)f(diag_pivot_thresh)f(=)i(-1,)f(use)h(default)e(value)i(1.0,)382 1231 y(which)f(corresponds)f(to)i(standard)f(partial)g(pivoting.)286 1288 y(-)h(drop_tol)f(\(double\):)f(Drop)i(tolerance)e(threshold.)h (\(NOT)g(IMPLEMENTED\))382 1344 y(At)g(step)h(j)f(of)h(the)f(Gaussian)g (elimination,)f(if)477 1401 y(abs\(A_ij\)/\(max_i)g(abs\(A_ij\)\))g(<)i (drop_tol,)382 1457 y(then)f(drop)g(entry)h(A_ij.)f(0)h(<=)f(drop_tol)g (<=)g(1.)382 1513 y(If)g(drop_tol)g(=)h(-1,)f(use)h(default)f(value)g (0.0,)g(which)g(corresponds)g(to)382 1570 y(standard)g(Gaussian)f (elimination.)95 1683 y(perm_c)47 b(\(input/output\))22 b(int*)286 1739 y(If)i(A->Stype)f(=)g(NC,)h(Column)f(permutation)f (vector)h(of)h(size)f(A->ncol,)286 1796 y(which)h(defines)e(the)i (permutation)e(matrix)h(Pc;)h(perm_c[i])e(=)i(j)g(means)286 1852 y(column)f(i)h(of)g(A)f(is)h(in)g(position)e(j)i(in)g(A*Pc.)286 1909 y(On)g(exit,)f(perm_c)g(may)h(be)f(overwritten)g(by)g(the)h (product)f(of)g(the)h(input)286 1965 y(perm_c)f(and)h(a)g(permutation)e (that)h(postorders)g(the)g(elimination)g(tree)286 2022 y(of)h(Pc'*A'*A*Pc;)e(perm_c)h(is)h(not)f(changed)g(if)h(the)f (elimination)g(tree)286 2078 y(is)h(already)f(in)g(postorder.)286 2191 y(If)h(A->Stype)f(=)g(NR,)h(column)f(permutation)f(vector)h(of)h (size)f(A->nrow,)286 2247 y(which)h(describes)e(permutation)h(of)g (columns)g(of)h(tranpose\(A\))286 2304 y(\(rows)g(of)f(A\))h(as)f (described)g(above.)95 2417 y(perm_r)47 b(\(input/output\))22 b(int*)286 2473 y(If)i(A->Stype)f(=)g(NC,)h(row)f(permutation)g(vector) g(of)g(size)h(A->nrow,)286 2530 y(which)g(defines)e(the)i(permutation)e (matrix)h(Pr,)h(and)f(is)h(determined)286 2586 y(by)g(partial)f (pivoting.)46 b(perm_r[i])23 b(=)h(j)f(means)h(row)f(i)h(of)f(A)h(is)g (in)286 2643 y(position)f(j)h(in)f(Pr*A.)952 2795 y Fr(43)p eop %%Page: 44 44 44 43 bop 286 102 a Fm(If)24 b(A->Stype)f(=)g(NR,)h(permutation)e (vector)h(of)h(size)f(A->ncol,)g(which)286 159 y(determines)g (permutation)f(of)i(rows)f(of)h(transpose\(A\))286 215 y(\(columns)f(of)h(A\))f(as)h(described)f(above.)286 328 y(If)h(refact)f(is)h(not)f('Y',)g(perm_r)g(is)h(output)f(argument;) 286 384 y(If)h(refact)f(=)h('Y',)f(the)g(pivoting)g(routine)g(will)g (try)h(to)g(use)f(the)g(input)286 441 y(perm_r,)g(unless)g(a)h(certain) f(threshold)g(criterion)f(is)i(violated.)286 497 y(In)g(that)f(case,)g (perm_r)g(is)h(overwritten)e(by)i(a)g(new)f(permutation)286 554 y(determined)g(by)g(partial)g(pivoting)g(or)h(diagonal)e(threshold) h(pivoting.)95 667 y(etree)71 b(\(input/output\))22 b(int*,)47 b(dimension)23 b(\(A->ncol\))286 723 y(Elimination)g(tree)g(of)h (Pc'*A'*A*Pc.)286 780 y(If)g(fact)f(is)h(not)f('F')h(and)f(refact)g(=)h ('Y',)f(etree)g(is)h(an)g(input)f(argument,)286 836 y(otherwise)g(it)h (is)f(an)h(output)f(argument.)286 892 y(Note:)h(etree)f(is)g(a)h (vector)f(of)h(parent)f(pointers)f(for)i(a)g(forest)f(whose)286 949 y(vertices)g(are)h(the)f(integers)g(0)h(to)f(A->ncol-1;)g (etree[root]==A->ncol.)95 1062 y(equed)71 b(\(input/output\))22 b(char*)286 1118 y(Specifies)h(the)g(form)h(of)f(equilibration)f(that)i (was)f(done.)286 1175 y(=)h('N':)f(No)h(equilibration.)286 1231 y(=)g('R':)f(Row)h(equilibration,)e(i.e.,)h(A)h(was)f (premultiplied)f(by)i(diag\(R\).)286 1288 y(=)g('C':)f(Column)g (equilibration,)f(i.e.,)i(A)f(was)h(postmultiplied)e(by)h(diag\(C\).) 286 1344 y(=)h('B':)f(Both)h(row)f(and)h(column)f(equilibration,)f (i.e.,)h(A)h(was)f(replaced)453 1401 y(by)h(diag\(R\)*A*diag\(C\).)286 1457 y(If)g(fact)f(=)h('F',)f(equed)g(is)h(an)g(input)f(argument,)f (otherwise)h(it)h(is)286 1513 y(an)g(output)f(argument.)95 1626 y(R)167 b(\(input/output\))22 b(float*,)h(dimension)g(\(A->nrow\)) 286 1683 y(The)h(row)f(scale)g(factors)g(for)h(A)g(or)f (transpose\(A\).)286 1739 y(If)h(equed)f(=)h('R')f(or)h('B',)f(A)h (\(if)f(A->Stype)g(=)h(NC\))f(or)h(transpose\(A\))e(\(if)382 1796 y(A->Stype)h(=)g(NR\))h(is)f(multiplied)g(on)g(the)h(left)f(by)h (diag\(R\).)286 1852 y(If)g(equed)f(=)h('N')f(or)h('C',)f(R)h(is)g(not) f(accessed.)286 1909 y(If)h(fact)f(=)h('F',)f(R)h(is)g(an)f(input)g (argument;)g(otherwise,)g(R)g(is)h(output.)286 1965 y(If)g(fact)f(=)h ('F')f(and)h(equed)f(=)h('R')f(or)h('B',)f(each)g(element)g(of)h(R)g (must)358 2022 y(be)g(positive.)95 2134 y(C)167 b(\(input/output\))22 b(float*,)h(dimension)g(\(A->ncol\))286 2191 y(The)h(column)f(scale)g (factors)g(for)g(A)h(or)g(transpose\(A\).)286 2247 y(If)g(equed)f(=)h ('C')f(or)h('B',)f(A)h(\(if)f(A->Stype)g(=)h(NC\))f(or)h (transpose\(A\))e(\(if)382 2304 y(A->Stype)h(=)g(NR\))h(is)f (multiplied)g(on)g(the)h(right)f(by)h(diag\(C\).)286 2360 y(If)g(equed)f(=)h('N')f(or)h('R',)f(C)h(is)g(not)f(accessed.)286 2417 y(If)h(fact)f(=)h('F',)f(C)h(is)g(an)f(input)g(argument;)g (otherwise,)g(C)g(is)h(output.)286 2473 y(If)g(fact)f(=)h('F')f(and)h (equed)f(=)h('C')f(or)h('B',)f(each)g(element)g(of)h(C)g(must)358 2530 y(be)g(positive.)95 2643 y(L)167 b(\(output\))23 b(SuperMatrix*)952 2795 y Fr(44)p eop %%Page: 45 45 45 44 bop 286 46 a Fm(The)24 b(factor)f(L)h(from)f(the)g(factorization) 382 102 y(Pr*A*Pc=L*U)332 b(\(if)24 b(A->Stype)f(=)g(NC\))h(or)382 159 y(Pr*transpose\(A\)*Pc=L*U)68 b(\(if)24 b(A->Stype)f(=)g(NR\).)286 215 y(Uses)h(compressed)e(row)i(subscripts)e(storage)h(for)g (supernodes,)g(i.e.,)286 271 y(L)h(has)g(types:)f(Stype)g(=)g(SC,)h (Dtype)f(=)h(_S,)f(Mtype)g(=)h(TRLU.)95 384 y(U)167 b(\(output\))23 b(SuperMatrix*)286 441 y(The)h(factor)f(U)h(from)f(the)g(factorization) 382 497 y(Pr*A*Pc=L*U)332 b(\(if)24 b(A->Stype)f(=)g(NC\))h(or)382 554 y(Pr*transpose\(A\)*Pc=L*U)68 b(\(if)24 b(A->Stype)f(=)g(NR\).)286 610 y(Uses)h(column-wise)e(storage)h(scheme,)g(i.e.,)g(U)h(has)f (types:)286 667 y(Stype)h(=)f(NC,)h(Dtype)f(=)h(_S,)f(Mtype)g(=)h(TRU.) 95 780 y(work)95 b(\(workspace/output\))22 b(void*,)h(size)g(\(lwork\)) g(\(in)g(bytes\))286 836 y(User)h(supplied)e(workspace,)h(should)g(be)h (large)f(enough)286 892 y(to)h(hold)f(data)h(structures)e(for)i (factors)e(L)i(and)g(U.)286 949 y(On)g(exit,)f(if)h(fact)f(is)h(not)f ('F',)g(L)h(and)g(U)f(point)g(to)h(this)f(array.)95 1062 y(lwork)71 b(\(input\))23 b(int)286 1118 y(Specifies)g(the)g(size)h(of) f(work)h(array)f(in)g(bytes.)286 1175 y(=)h(0:)48 b(allocate)22 b(space)h(internally)g(by)h(system)f(malloc;)286 1231 y(>)h(0:)48 b(use)23 b(user-supplied)f(work)h(array)h(of)f(length)g (lwork)g(in)h(bytes,)430 1288 y(returns)e(error)i(if)f(space)g(runs)h (out.)286 1344 y(=)g(-1:)g(the)f(routine)g(guesses)g(the)g(amount)g(of) h(space)f(needed)g(without)430 1401 y(performing)f(the)h (factorization,)f(and)i(returns)f(it)g(in)430 1457 y (mem_usage->total_needed)o(;)e(no)j(other)f(side)g(effects.)286 1570 y(See)h(argument)f('mem_usage')f(for)h(memory)g(usage)h (statistics.)95 1683 y(B)167 b(\(input/output\))22 b(SuperMatrix*)286 1739 y(B)i(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_S,)f(Mtype)g (=)h(GE.)286 1796 y(On)g(entry,)f(the)g(right)h(hand)f(side)g(matrix.) 286 1852 y(On)h(exit,)358 1909 y(if)g(equed)f(=)g('N',)h(B)f(is)h(not)g (modified;)e(otherwise)358 1965 y(if)i(A->Stype)e(=)i(NC:)430 2022 y(if)f(trans)g(=)h('N')f(and)h(equed)f(=)h('R')f(or)h('B',)f(B)h (is)g(overwritten)e(by)501 2078 y(diag\(R\)*B;)430 2134 y(if)h(trans)g(=)h('T')f(or)h('C')g(and)f(equed)g(=)h('C')f(of)h('B',)f (B)h(is)501 2191 y(overwritten)e(by)i(diag\(C\)*B;)358 2247 y(if)g(A->Stype)e(=)i(NR:)430 2304 y(if)f(trans)g(=)h('N')f(and)h (equed)f(=)h('C')f(or)h('B',)f(B)h(is)g(overwritten)e(by)501 2360 y(diag\(C\)*B;)430 2417 y(if)h(trans)g(=)h('T')f(or)h('C')g(and)f (equed)g(=)h('R')f(of)h('B',)f(B)h(is)501 2473 y(overwritten)e(by)i (diag\(R\)*B.)95 2586 y(X)167 b(\(output\))23 b(SuperMatrix*)286 2643 y(X)h(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_S,)f(Mtype)g (=)h(GE.)952 2795 y Fr(45)p eop %%Page: 46 46 46 45 bop 286 46 a Fm(If)24 b(info)f(=)h(0)g(or)f(info)h(=)f (A->ncol+1,)g(X)h(contains)e(the)i(solution)f(matrix)286 102 y(to)h(the)f(original)g(system)g(of)h(equations.)e(Note)i(that)f(A) h(and)f(B)h(are)f(modified)286 159 y(on)h(exit)f(if)h(equed)f(is)h(not) f('N',)g(and)h(the)f(solution)g(to)h(the)f(equilibrated)286 215 y(system)g(is)h(inv\(diag\(C\)\)*X)e(if)i(trans)f(=)g('N')h(and)f (equed)h(=)f('C')h(or)f('B',)286 271 y(or)h(inv\(diag\(R\)\)*X)e(if)h (trans)h(=)f('T')h(or)f('C')h(and)f(equed)h(=)f('R')h(or)f('B'.)95 384 y(recip_pivot_growth)f(\(output\))h(float*)286 441 y(The)h(reciprocal)e(pivot)h(growth)h(factor)f(max_j\()g (norm\(A_j\)/norm\(U_j\))e(\).)286 497 y(The)j(infinity)f(norm)g(is)g (used.)h(If)f(recip_pivot_growth)f(is)h(much)h(less)286 554 y(than)g(1,)f(the)h(stability)e(of)i(the)f(LU)h(factorization)e (could)h(be)h(poor.)95 667 y(rcond)71 b(\(output\))23 b(float*)286 723 y(The)h(estimate)f(of)g(the)h(reciprocal)e(condition)h (number)g(of)g(the)h(matrix)f(A)286 780 y(after)h(equilibration)e(\(if) h(done\).)g(If)h(rcond)f(is)g(less)h(than)f(the)h(machine)286 836 y(precision)f(\(in)g(particular,)g(if)g(rcond)h(=)f(0\),)h(the)f (matrix)g(is)h(singular)286 892 y(to)g(working)f(precision.)f(This)i (condition)e(is)i(indicated)f(by)g(a)h(return)286 949 y(code)g(of)f(info)h(>)f(0.)95 1062 y(FERR)95 b(\(output\))23 b(float*,)g(dimension)g(\(B->ncol\))286 1118 y(The)h(estimated)e (forward)h(error)h(bound)f(for)g(each)g(solution)g(vector)286 1175 y(X\(j\))h(\(the)f(j-th)g(column)g(of)h(the)f(solution)g(matrix)g (X\).)286 1231 y(If)h(XTRUE)f(is)h(the)f(true)g(solution)g (corresponding)f(to)i(X\(j\),)f(FERR\(j\))286 1288 y(is)h(an)g (estimated)e(upper)h(bound)h(for)f(the)g(magnitude)g(of)h(the)f (largest)286 1344 y(element)g(in)h(\(X\(j\))f(-)h(XTRUE\))f(divided)g (by)g(the)h(magnitude)e(of)i(the)286 1401 y(largest)f(element)g(in)h (X\(j\).)47 b(The)23 b(estimate)g(is)h(as)f(reliable)g(as)286 1457 y(the)h(estimate)f(for)g(RCOND,)g(and)h(is)f(almost)g(always)g(a)h (slight)286 1513 y(overestimate)f(of)g(the)h(true)f(error.)95 1626 y(BERR)95 b(\(output\))23 b(float*,)g(dimension)g(\(B->ncol\))286 1683 y(The)h(componentwise)e(relative)h(backward)f(error)i(of)f(each)h (solution)286 1739 y(vector)f(X\(j\))h(\(i.e.,)f(the)g(smallest)g (relative)g(change)g(in)286 1796 y(any)h(element)f(of)g(A)h(or)g(B)f (that)h(makes)f(X\(j\))g(an)h(exact)f(solution\).)95 1909 y(mem_usage)g(\(output\))g(mem_usage_t*)286 1965 y(Record)g(the)h(memory)f(usage)g(statistics,)f(consisting)h(of)h (following)e(fields:)286 2022 y(-)i(for_lu)f(\(float\))334 2078 y(The)h(amount)f(of)g(space)g(used)h(in)f(bytes)g(for)h(L\\U)f (data)h(structures.)286 2134 y(-)g(total_needed)e(\(float\))334 2191 y(The)i(amount)f(of)g(space)g(needed)g(in)h(bytes)f(to)h(perform)f (factorization.)286 2247 y(-)h(expansions)f(\(int\))334 2304 y(The)h(number)f(of)g(memory)g(expansions)g(during)g(the)g(LU)h (factorization.)95 2417 y(info)95 b(\(output\))23 b(int*)286 2473 y(=)h(0:)g(successful)e(exit)286 2530 y(<)i(0:)g(if)f(info)h(=)f (-i,)h(the)f(i-th)h(argument)e(had)i(an)f(illegal)g(value)286 2586 y(>)h(0:)g(if)f(info)h(=)f(i,)h(and)f(i)h(is)406 2643 y(<=)f(A->ncol:)g(U\(i,i\))g(is)h(exactly)f(zero.)g(The)g (factorization)f(has)952 2795 y Fr(46)p eop %%Page: 47 47 47 46 bop 549 46 a Fm(been)23 b(completed,)g(but)g(the)h(factor)f(U)g (is)h(exactly)549 102 y(singular,)e(so)i(the)g(solution)e(and)i(error)f (bounds)549 159 y(could)g(not)g(be)h(computed.)406 215 y(=)f(A->ncol+1:)g(U)h(is)f(nonsingular,)f(but)i(RCOND)f(is)h(less)f (than)g(machine)549 271 y(precision,)f(meaning)h(that)h(the)f(matrix)g (is)h(singular)e(to)549 328 y(working)h(precision.)f(Nevertheless,)g (the)i(solution)f(and)549 384 y(error)g(bounds)g(are)h(computed)e (because)h(there)g(are)h(a)g(number)549 441 y(of)f(situations)g(where)g (the)h(computed)e(solution)h(can)h(be)f(more)549 497 y(accurate)g(than)g(the)g(value)h(of)f(RCOND)g(would)h(suggest.)406 554 y(>)f(A->ncol+1:)g(number)g(of)h(bytes)f(allocated)f(when)i(memory) f(allocation)549 610 y(failure)g(occurred,)f(plus)i(A->ncol.)0 732 y Ft(A.6)56 b Fa(SGSTRF)0 818 y Fm(void)0 874 y(sgstrf\(char)22 b(*refact,)h(SuperMatrix)f(*A,)i(float)f(diag_pivot_thresh,)f(float)h (drop_tol,)167 931 y(int)g(relax,)h(int)f(panel_size,)f(int)i(*etree,)f (void)g(*work,)g(int)h(lwork,)167 987 y(int)f(*perm_r,)g(int)h (*perm_c,)e(SuperMatrix)h(*L,)g(SuperMatrix)g(*U,)g(int)h(*info\))95 1100 y(Purpose)95 1156 y(=======)95 1269 y(SGSTRF)f(computes)g(an)h(LU) f(factorization)g(of)g(a)h(general)f(sparse)g(m-by-n)95 1326 y(matrix)g(A)h(using)f(partial)g(pivoting)g(with)g(row)h (interchanges.)95 1382 y(The)g(factorization)e(has)h(the)h(form)191 1439 y(Pr)f(*)h(A)g(=)g(L)f(*)h(U)95 1495 y(where)g(Pr)f(is)h(a)g(row)f (permutation)f(matrix,)h(L)h(is)g(lower)f(triangular)f(with)i(unit)95 1552 y(diagonal)f(elements)g(\(lower)g(trapezoidal)f(if)i(A->nrow)f(>)h (A->ncol\),)e(and)i(U)f(is)h(upper)95 1608 y(triangular)f(\(upper)g (trapezoidal)f(if)i(A->nrow)f(<)h(A->ncol\).)95 1721 y(See)g(supermatrix.h)e(for)h(the)h(definition)e(of)i('SuperMatrix')e (structure.)95 1834 y(Arguments)95 1890 y(=========)95 2003 y(refact)h(\(input\))g(char*)310 2060 y(Specifies)g(whether)g(we)g (want)h(to)f(use)h(perm_r)f(from)g(a)h(previous)f(factor.)310 2116 y(=)h('Y':)f(re-use)g(perm_r;)g(perm_r)g(is)h(input,)f(unchanged)g (on)g(exit.)310 2173 y(=)h('N':)f(perm_r)g(is)h(determined)e(by)i (partial)f(pivoting,)g(and)g(output.)95 2286 y(A)191 b(\(input\))23 b(SuperMatrix*)310 2342 y(Original)g(matrix)g(A,)h (permuted)e(by)i(columns,)f(of)g(dimension)310 2398 y(\(A->nrow,)g (A->ncol\).)f(The)i(type)f(of)h(A)g(can)f(be:)310 2455 y(Stype)g(=)h(NCP;)f(Dtype)h(=)f(D;)h(Mtype)f(=)h(GE.)95 2568 y(diag_pivot_thresh)e(\(input\))h(float)310 2624 y(Diagonal)g(pivoting)g(threshold.)f(At)i(step)f(j)h(of)f(the)h (Gaussian)f(elimination,)952 2795 y Fr(47)p eop %%Page: 48 48 48 47 bop 310 46 a Fm(if)24 b(abs\(A_jj\))e(>=)i(thresh)f(*)h (\(max_\(i>=j\))e(abs\(A_ij\)\),)h(use)g(A_jj)g(as)h(pivot.)310 102 y(0)g(<=)g(thresh)f(<=)g(1.)h(The)f(default)g(value)g(of)h(thresh)f (is)h(1,)f(corresponding)310 159 y(to)h(partial)f(pivoting.)95 271 y(drop_tol)g(\(input\))g(float)g(\(NOT)h(IMPLEMENTED\))310 328 y(Drop)g(tolerance)e(parameter.)h(At)g(step)h(j)f(of)h(the)f (Gaussian)g(elimination,)310 384 y(if)h(abs\(A_ij\)/\(max_i)d (abs\(A_ij\)\))i(<)h(drop_tol,)e(drop)i(entry)f(A_ij.)310 441 y(0)h(<=)g(drop_tol)e(<=)i(1.)f(The)h(default)f(value)g(of)h (drop_tol)e(is)i(0.)95 554 y(relax)95 b(\(input\))23 b(int)310 610 y(To)h(control)f(degree)g(of)g(relaxing)g(supernodes.)f (If)i(the)g(number)310 667 y(of)g(nodes)f(\(columns\))g(in)g(a)h (subtree)f(of)g(the)h(elimination)e(tree)i(is)f(less)310 723 y(than)h(relax,)f(this)g(subtree)g(is)g(considered)g(as)g(one)h (supernode,)310 780 y(regardless)f(of)g(the)h(row)f(structures)g(of)g (those)g(columns.)95 892 y(panel_size)g(\(input\))g(int)310 949 y(A)h(panel)f(consists)g(of)g(at)h(most)f(panel_size)g(consecutive) f(columns.)95 1062 y(etree)95 b(\(input\))23 b(int*,)g(dimension)g (\(A->ncol\))310 1118 y(Elimination)g(tree)g(of)g(A'*A)310 1175 y(Note:)g(etree)h(is)f(a)h(vector)f(of)h(parent)f(pointers)f(for)i (a)g(forest)f(whose)310 1231 y(vertices)g(are)g(the)h(integers)f(0)g (to)h(A->ncol-1;)e(etree[root]==A->ncol.)310 1288 y(On)i(input,)f(the)g (columns)g(of)h(A)g(should)f(be)g(permuted)g(so)h(that)f(the)310 1344 y(etree)g(is)h(in)g(a)f(certain)g(postorder.)95 1457 y(work)119 b(\(input/output\))22 b(void*,)h(size)h(\(lwork\))e (\(in)i(bytes\))310 1513 y(User-supplied)e(work)i(space)f(and)g(space)g (for)h(the)f(output)g(data)h(structures.)310 1570 y(Not)g(referenced)e (if)i(lwork)f(=)h(0;)95 1683 y(lwork)95 b(\(input\))23 b(int)310 1739 y(Specifies)g(the)g(size)h(of)f(work)h(array)f(in)g (bytes.)310 1796 y(=)h(0:)47 b(allocate)23 b(space)g(internally)g(by)g (system)g(malloc;)310 1852 y(>)h(0:)47 b(use)24 b(user-supplied)e(work) h(array)g(of)h(length)f(lwork)g(in)h(bytes,)453 1909 y(returns)f(error)g(if)h(space)f(runs)h(out.)310 1965 y(=)g(-1:)f(the)h(routine)f(guesses)g(the)g(amount)g(of)h(space)f (needed)g(without)453 2022 y(performing)g(the)g(factorization,)f(and)i (returns)f(it)g(in)453 2078 y(*info;)g(no)h(other)f(side)h(effects.)95 2191 y(perm_r)71 b(\(input/output\))22 b(int*,)h(dimension)g (\(A->nrow\))310 2247 y(Row)h(permutation)e(vector)h(which)g(defines)g (the)h(permutation)e(matrix)h(Pr;)310 2304 y(perm_r[i])g(=)h(j)f(means) g(row)h(i)g(of)f(A)h(is)g(in)f(position)g(j)h(in)f(Pr*A.)310 2360 y(If)h(refact)f(is)g(not)h('Y',)f(perm_r)g(is)h(output)f (argument;)310 2417 y(If)h(refact)f(=)h('Y',)f(the)g(pivoting)g (routine)g(will)g(try)h(to)f(use)h(the)f(input)310 2473 y(perm_r,)g(unless)g(a)h(certain)f(threshold)f(criterion)h(is)h (violated.)310 2530 y(In)g(that)f(case,)g(perm_r)g(is)h(overwritten)e (by)i(a)g(new)f(permutation)310 2586 y(determined)g(by)g(partial)g (pivoting)g(or)h(diagonal)e(threshold)h(pivoting.)952 2795 y Fr(48)p eop %%Page: 49 49 49 48 bop 95 46 a Fm(perm_c)71 b(\(input\))23 b(int*,)g(dimension)g (\(A->ncol\))310 102 y(Column)g(permutation)g(vector,)g(which)g (defines)g(the)310 159 y(permutation)g(matrix)g(Pc;)g(perm_c[i])g(=)g (j)h(means)f(column)g(i)h(of)g(A)f(is)310 215 y(in)h(position)f(j)g(in) h(A*Pc.)310 271 y(When)g(searching)e(for)i(diagonal,)e(perm_c[*])h(is)g (applied)g(to)h(the)310 328 y(row)g(subscripts)e(of)i(A,)f(so)h(that)f (diagonal)g(threshold)g(pivoting)310 384 y(can)h(find)f(the)g(diagonal) g(of)h(A,)f(rather)g(than)h(that)f(of)h(A*Pc.)95 497 y(L)191 b(\(output\))23 b(SuperMatrix*)310 554 y(The)h(factor)f(L)g (from)h(the)f(factorization)f(Pr*A=L*U;)h(use)g(compressed)g(row)310 610 y(subscripts)g(storage)g(for)g(supernodes,)f(i.e.,)i(L)f(has)h (type:)310 667 y(Stype)f(=)h(SC,)g(Dtype)f(=)g(_S,)h(Mtype)f(=)h(TRLU.) 95 780 y(U)191 b(\(output\))23 b(SuperMatrix*)310 836 y(The)h(factor)f(U)g(from)h(the)f(factorization)f(Pr*A*Pc=L*U.)h(Use)g (column-wise)310 892 y(storage)g(scheme,)g(i.e.,)g(U)h(has)f(types:)g (Stype)h(=)f(NC,)h(Dtype)f(=)h(_S,)310 949 y(Mtype)f(=)h(TRU.)95 1062 y(info)119 b(\(output\))23 b(int*)310 1118 y(=)h(0:)g(successful)e (exit)310 1175 y(<)i(0:)g(if)f(info)g(=)h(-i,)g(the)f(i-th)g(argument)g (had)h(an)f(illegal)g(value)310 1231 y(>)h(0:)g(if)f(info)g(=)h(i,)g (and)f(i)h(is)382 1288 y(<=)f(A->ncol:)g(U\(i,i\))g(is)h(exactly)f (zero.)g(The)g(factorization)f(has)453 1344 y(been)i(completed,)e(but)i (the)f(factor)g(U)h(is)f(exactly)g(singular,)453 1401 y(and)h(division)f(by)g(zero)h(will)f(occur)g(if)h(it)f(is)h(used)f(to) h(solve)f(a)453 1457 y(system)g(of)h(equations.)382 1513 y(>)g(A->ncol:)e(number)h(of)h(bytes)f(allocated)g(when)g(memory)g (allocation)453 1570 y(failure)g(occurred,)g(plus)g(A->ncol.)g(If)h (lwork)f(=)h(-1,)f(it)h(is)453 1626 y(the)g(estimated)e(amount)i(of)f (space)g(needed,)g(plus)h(A->ncol.)0 1805 y Ft(A.7)56 b Fa(SGSTRS)0 1890 y Fm(void)0 1947 y(sgstrs\(char)22 b(*trans,)h(SuperMatrix)g(*L,)g(SuperMatrix)f(*U,)167 2003 y(int)h(*perm_r,)g(int)h(*perm_c,)e(SuperMatrix)h(*B,)g(int)h (*info\))95 2116 y(Purpose)95 2173 y(=======)95 2286 y(SGSTRS)f(solves)h(a)f(system)g(of)h(linear)f(equations)g(A*X=B)g(or)g (A'*X=B)95 2342 y(with)h(A)f(sparse)h(and)f(B)h(dense,)f(using)g(the)g (LU)h(factorization)e(computed)h(by)95 2398 y(sgstrf\(\).)95 2511 y(See)h(supermatrix.h)e(for)h(the)h(definition)e(of)i ('SuperMatrix')e(structure.)95 2624 y(Arguments)952 2795 y Fr(49)p eop %%Page: 50 50 50 49 bop 95 46 a Fm(=========)95 159 y(trans)71 b(\(input\))23 b(Specifies)g(the)g(form)h(of)f(the)h(system)f(of)g(equations:)310 215 y(=)h('N':)47 b(A)24 b(*)g(X)f(=)h(B)48 b(\(No)23 b(transpose\))310 271 y(=)h('T':)47 b(A'*)24 b(X)f(=)h(B)48 b(\(Transpose\))95 384 y(L)167 b(\(input\))23 b(SuperMatrix*)286 441 y(The)h(factor)f(L)h(from)f(the)g(factorization)f(Pr*A*Pc=L*U)h(as) g(computed)g(by)286 497 y(sgstrf\(\).)g(Use)g(compressed)g(row)g (subscripts)g(storage)g(for)g(supernodes,)286 554 y(i.e.,)h(L)f(has)h (types:)f(Stype)g(=)h(SC,)f(Dtype)g(=)h(_S,)f(Mtype)h(=)f(TRLU.)95 667 y(U)167 b(\(input\))23 b(SuperMatrix*)286 723 y(The)h(factor)f(U)h (from)f(the)g(factorization)f(Pr*A*Pc=L*U)h(as)g(computed)g(by)286 780 y(sgstrf\(\).)g(Use)g(column-wise)g(storage)g(scheme,)g(i.e.,)g(U)h (has)f(types:)286 836 y(Stype)h(=)f(NC,)h(Dtype)f(=)h(_S,)f(Mtype)g(=)h (TRU.)95 949 y(perm_r)47 b(\(input\))23 b(int*,)g(dimension)g (\(L->nrow\))286 1005 y(Row)h(permutation)e(vector,)h(which)g(defines)g (the)h(permutation)e(matrix)h(Pr;)286 1062 y(perm_r[i])g(=)h(j)f(means) h(row)f(i)h(of)f(A)h(is)g(in)f(position)g(j)h(in)f(PrA.)95 1175 y(perm_c)47 b(\(input\))23 b(int*,)g(dimension)g(\(L->ncol\))286 1231 y(Column)g(permutation)g(vector,)g(which)g(defines)g(the)286 1288 y(permutation)g(matrix)g(Pc;)g(perm_c[i])g(=)h(j)f(means)g(column) h(i)f(of)h(A)g(is)286 1344 y(in)g(position)f(j)g(in)h(A*Pc.)95 1457 y(B)167 b(\(input/output\))22 b(SuperMatrix*)286 1513 y(B)i(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_S,)f(Mtype)g (=)h(GE.)286 1570 y(On)g(entry,)f(the)g(right)h(hand)f(side)g(matrix.) 286 1626 y(On)h(exit,)f(the)h(solution)e(matrix)h(if)h(info)f(=)h(0;)95 1739 y(info)95 b(\(output\))23 b(int*)286 1796 y(=)h(0:)g(successful)e (exit)286 1852 y(<)i(0:)g(if)f(info)h(=)f(-i,)h(the)f(i-th)h(argument)e (had)i(an)f(illegal)g(value)0 2030 y Ft(A.8)56 b Fa(SLAQGS)0 2116 y Fm(void)0 2173 y(slaqgs\(SuperMatrix)21 b(*A,)j(float)f(*r,)g (float)h(*c,)f(float)g(rowcnd,)g(float)g(colcnd,)167 2229 y(float)g(amax,)g(char)h(*equed\))95 2342 y(Purpose)95 2398 y(=======)95 2511 y(SLAQGS)f(equilibrates)g(a)g(general)g(sparse)g (M)h(by)g(N)f(matrix)g(A)h(using)f(the)h(row)f(and)95 2568 y(scaling)g(factors)g(in)h(the)f(vectors)g(R)h(and)f(C.)952 2795 y Fr(50)p eop %%Page: 51 51 51 50 bop 95 46 a Fm(See)24 b(supermatrix.h)e(for)h(the)h(definition)e (of)i('SuperMatrix')e(structure.)95 159 y(Arguments)95 215 y(=========)95 328 y(A)167 b(\(input/output\))22 b(SuperMatrix*)286 384 y(On)i(exit,)f(the)h(equilibrated)e(matrix.)47 b(See)23 b(EQUED)g(for)h(the)f(form)g(of)286 441 y(the)h(equilibrated)e (matrix.)h(The)g(type)h(of)f(A)h(can)f(be:)286 497 y(Stype)h(=)f(NC;)h (Dtype)f(=)h(_S;)f(Mtype)g(=)h(GE.)95 610 y(R)167 b(\(input\))23 b(float*,)g(dimension)g(\(A->nrow\))286 667 y(The)h(row)f(scale)g (factors)g(for)h(A.)95 780 y(C)167 b(\(input\))23 b(float*,)g (dimension)g(\(A->ncol\))286 836 y(The)h(column)f(scale)g(factors)g (for)g(A.)95 949 y(rowcnd)47 b(\(input\))23 b(float)286 1005 y(Ratio)h(of)f(the)h(smallest)e(R\(i\))i(to)f(the)h(largest)f (R\(i\).)95 1118 y(colcnd)47 b(\(input\))23 b(float)286 1175 y(Ratio)h(of)f(the)h(smallest)e(C\(i\))i(to)f(the)h(largest)f (C\(i\).)95 1288 y(amax)95 b(\(input\))23 b(float)286 1344 y(Absolute)g(value)g(of)h(largest)f(matrix)g(entry.)95 1457 y(equed)71 b(\(output\))23 b(char*)286 1513 y(Specifies)g(the)g (form)h(of)f(equilibration)f(that)i(was)f(done.)286 1570 y(=)h('N':)47 b(No)24 b(equilibration)286 1626 y(=)g('R':)47 b(Row)24 b(equilibration,)e(i.e.,)h(A)h(has)f(been)g(premultiplied)f (by)477 1683 y(diag\(R\).)286 1739 y(=)i('C':)47 b(Column)23 b(equilibration,)f(i.e.,)h(A)h(has)g(been)f(postmultiplied)477 1796 y(by)h(diag\(C\).)286 1852 y(=)g('B':)47 b(Both)24 b(row)f(and)g(column)h(equilibration,)d(i.e.,)j(A)f(has)h(been)477 1909 y(replaced)f(by)h(diag\(R\))f(*)g(A)h(*)g(diag\(C\).)0 2165 y Fu(B)69 b(Sp)r(eci\014cations)21 b(of)i(routines)f(in)h (parallel)e(Sup)r(erLU)0 2268 y Ft(B.1)55 b Fa(PDGSSV)0 2354 y Fm(void)0 2410 y(pdgssv\(int)22 b(nprocs,)h(SuperMatrix)g(*A,)g (int)h(*perm_c,)e(int)i(*perm_r,)167 2467 y(SuperMatrix)e(*L,)i (SuperMatrix)e(*U,)i(SuperMatrix)e(*B,)h(int)h(*info)f(\))0 2523 y({)95 2636 y(Purpose)952 2795 y Fr(51)p eop %%Page: 52 52 52 51 bop 95 46 a Fm(=======)95 159 y(pdgssv\(\))23 b(solves)g(the)h (system)f(of)g(linear)g(equations)g(A*X=B,)g(using)g(the)h(parallel)95 215 y(LU)g(factorization)e(routine)h(pdgstrf\(\).)g(It)g(performs)g (the)g(following)g(steps:)143 328 y(1.)h(If)f(A)h(is)g(stored)f (column-wise)f(\(A->Stype)h(=)g(NC\):)215 441 y(1.1.)g(Permute)g(the)g (columns)g(of)h(A,)g(forming)e(A*Pc,)i(where)f(Pc)g(is)h(a)334 497 y(permutation)e(matrix.)334 554 y(For)i(more)f(details)g(of)g(this) h(step,)f(see)g(sp_preorder.c.)215 667 y(1.2.)g(Factor)g(A)h(as)f (Pr*A*Pc=L*U)g(with)g(the)h(permutation)e(Pr)i(determined)334 723 y(by)g(Gaussian)e(elimination)h(with)g(partial)g(pivoting.)334 780 y(L)h(is)f(unit)h(lower)f(triangular)f(with)i(offdiagonal)e (entries)334 836 y(bounded)h(by)h(1)f(in)h(magnitude,)e(and)i(U)g(is)f (upper)g(triangular.)215 949 y(1.3.)g(Solve)g(the)h(system)f(of)g (equations)g(A*X=B)g(using)g(the)h(factored)334 1005 y(form)f(of)h(A.)143 1118 y(2.)g(If)f(A)h(is)g(stored)f(row-wise)f (\(A->Stype)h(=)h(NR\),)f(apply)g(the)h(above)f(algorithm)215 1175 y(to)g(the)h(tranpose)f(of)g(A:)215 1288 y(2.1.)g(Permute)g (columns)g(of)g(tranpose\(A\))g(\(rows)g(of)h(A\),)334 1344 y(forming)f(transpose\(A\)*Pc,)f(where)h(Pc)g(is)h(a)g (permutation)e(matrix.)334 1401 y(For)i(more)f(details)g(of)g(this)h (step,)f(see)g(sp_preorder.c.)215 1513 y(2.2.)g(Factor)g(A)h(as)f (Pr*transpose\(A\)*Pc=L*U)e(with)j(the)f(permutation)f(Pr)334 1570 y(determined)h(by)g(Gaussian)g(elimination)f(with)i(partial)f (pivoting.)334 1626 y(L)h(is)f(unit)h(lower)f(triangular)f(with)i (offdiagonal)e(entries)334 1683 y(bounded)h(by)h(1)f(in)h(magnitude,)e (and)i(U)g(is)f(upper)g(triangular.)215 1796 y(2.3.)g(Solve)g(the)h (system)f(of)g(equations)g(A*X=B)g(using)g(the)h(factored)143 1965 y(See)g(supermatrix.h)e(for)h(the)h(definition)e(of)i ("SuperMatrix")e(structure.)95 2078 y(Arguments)95 2134 y(=========)95 2247 y(nprocs)h(\(input\))g(int)262 2304 y(Number)h(of)f(processes)g(\(or)g(threads\))g(to)h(be)f(spawned)g(and) h(used)f(to)g(perform)262 2360 y(the)h(LU)g(factorization)e(by)h (pdgstrf\(\).)g(There)g(is)g(a)h(single)f(thread)g(of)262 2417 y(control)g(to)h(call)f(pdgstrf\(\),)g(and)g(all)h(threads)f (spawned)g(by)g(pdgstrf\(\))262 2473 y(are)h(terminated)e(before)h (returning)g(from)g(pdgstrf\(\).)95 2586 y(A)143 b(\(input\))23 b(SuperMatrix*)262 2643 y(Matrix)h(A)f(in)h(A*X=B,)f(of)g(dimension)g (\(A->nrow,)g(A->ncol\),)f(where)952 2795 y Fr(52)p eop %%Page: 53 53 53 52 bop 262 46 a Fm(A->nrow)23 b(=)h(A->ncol.)f(Currently,)f(the)i (type)f(of)h(A)f(can)h(be:)262 102 y(Stype)g(=)f(NC)h(or)g(NR;)f(Dtype) g(=)h(_D;)f(Mtype)h(=)f(GE.)h(In)f(the)h(future,)262 159 y(more)g(general)f(A)g(will)h(be)f(handled.)95 271 y(perm_c)g(\(input/output\))f(int*)262 328 y(If)i(A->Stype=NC,)e (column)h(permutation)g(vector)g(of)g(size)h(A->ncol,)262 384 y(which)g(defines)f(the)g(permutation)f(matrix)h(Pc;)h(perm_c[i])f (=)g(j)h(means)262 441 y(column)g(i)f(of)h(A)g(is)f(in)h(position)f(j)g (in)h(A*Pc.)262 497 y(On)g(exit,)f(perm_c)g(may)h(be)f(overwritten)g (by)g(the)h(product)f(of)g(the)h(input)262 554 y(perm_c)g(and)f(a)h (permutation)e(that)h(postorders)g(the)g(elimination)g(tree)262 610 y(of)h(Pc'*A'*A*Pc;)e(perm_c)h(is)h(not)f(changed)g(if)h(the)f (elimination)g(tree)262 667 y(is)h(already)f(in)h(postorder.)262 780 y(If)g(A->Stype=NR,)e(column)h(permutation)g(vector)g(of)g(size)h (A->nrow)262 836 y(which)g(describes)e(permutation)h(of)g(columns)g(of) h(tranpose\(A\))262 892 y(\(rows)g(of)f(A\))h(as)f(described)g(above.) 95 1005 y(perm_r)g(\(output\))g(int*,)262 1062 y(If)h(A->Stype=NR,)e (row)i(permutation)e(vector)h(of)h(size)f(A->nrow,)262 1118 y(which)h(defines)f(the)g(permutation)f(matrix)h(Pr,)h(and)f(is)h (determined)262 1175 y(by)g(partial)f(pivoting.)46 b(perm_r[i])23 b(=)h(j)g(means)f(row)g(i)h(of)g(A)f(is)h(in)262 1231 y(position)f(j)h(in)g(Pr*A.)262 1344 y(If)g(A->Stype=NR,)e(permutation) h(vector)g(of)g(size)h(A->ncol,)e(which)262 1401 y(determines)h (permutation)f(of)i(rows)f(of)h(transpose\(A\))262 1457 y(\(columns)f(of)h(A\))f(as)h(described)f(above.)95 1570 y(L)143 b(\(output\))23 b(SuperMatrix*)262 1626 y(The)h(factor)f(L)h (from)f(the)g(factorization)358 1683 y(Pr*A*Pc=L*U)333 b(\(if)23 b(A->Stype=NC\))f(or)358 1739 y(Pr*transpose\(A\)*Pc=L*U)69 b(\(if)23 b(A->Stype=NR\).)262 1796 y(Uses)h(compressed)e(row)i (subscripts)e(storage)h(for)h(supernodes,)e(i.e.,)262 1852 y(L)i(has)g(types:)f(Stype)g(=)h(SCP,)f(Dtype)g(=)h(_D,)f(Mtype)g (=)h(TRLU.)95 1965 y(U)143 b(\(output\))23 b(SuperMatrix*)262 2022 y(The)h(factor)f(U)h(from)f(the)g(factorization)358 2078 y(Pr*A*Pc=L*U)333 b(\(if)23 b(A->Stype=NC\))f(or)358 2134 y(Pr*transpose\(A\)*Pc=L*U)69 b(\(if)23 b(A->Stype=NR\).)262 2191 y(Use)h(column-wise)e(storage)h(scheme,)g(i.e.,)g(U)h(has)f (types:)262 2247 y(Stype)h(=)f(NCP,)h(Dtype)f(=)h(_D,)f(Mtype)g(=)h (TRU.)95 2360 y(B)143 b(\(input/output\))22 b(SuperMatrix*)262 2417 y(B)i(has)g(types:)f(Stype)g(=)h(DN,)f(Dtype)g(=)h(_D,)f(Mtype)h (=)f(GE.)262 2473 y(On)h(entry,)f(the)h(right)f(hand)g(side)g(matrix.) 262 2530 y(On)h(exit,)f(the)h(solution)e(matrix)i(if)f(info)g(=)h(0;)95 2643 y(info)71 b(\(output\))23 b(int*)952 2795 y Fr(53)p eop %%Page: 54 54 54 53 bop 262 46 a Fm(=)24 b(0:)g(successful)e(exit)262 102 y(>)i(0:)g(if)f(info)h(=)f(i,)h(and)f(i)h(is)382 159 y(<=)f(A->ncol:)g(U\(i,i\))g(is)h(exactly)f(zero.)g(The)g (factorization)f(has)453 215 y(been)i(completed,)e(but)i(the)f(factor)g (U)h(is)f(exactly)g(singular,)453 271 y(so)h(the)f(solution)g(could)g (not)h(be)f(computed.)382 328 y(>)h(A->ncol:)e(number)h(of)h(bytes)f (allocated)g(when)g(memory)g(allocation)453 384 y(failure)g(occurred,)g (plus)g(A->ncol.)0 506 y Ft(B.2)55 b Fa(PDGSSVX)0 592 y Fm(void)0 648 y(pdgssvx\(int)22 b(nprocs,)h(pdgstrf_options_t)f (*pdgstrf_options,)f(SuperMatrix)i(*A,)191 705 y(int)g(*perm_c,)g(int)h (*perm_r,)e(equed_t)h(*equed,)g(double)g(*R,)h(double)f(*C,)191 761 y(SuperMatrix)f(*L,)i(SuperMatrix)e(*U,)191 818 y(SuperMatrix)g (*B,)i(SuperMatrix)e(*X,)i(double)f(*recip_pivot_growth,)191 874 y(double)g(*rcond,)g(double)g(*ferr,)g(double)g(*berr,)191 931 y(superlu_memusage_t)e(*superlu_memusage,)h(int)h(*info\))0 987 y({)95 1100 y(Purpose)95 1156 y(=======)95 1269 y(PDGSSVX)g(solves) g(the)h(system)f(of)g(linear)h(equations)e(A*X=B)h(or)h(A'*X=B,)f (using)95 1326 y(the)h(LU)f(factorization)g(from)g(dgstrf\(\).)g(Error) g(bounds)g(on)g(the)h(solution)f(and)95 1382 y(a)h(condition)f (estimate)g(are)g(also)g(provided.)g(It)h(performs)e(the)i(following)e (steps:)95 1495 y(1.)i(If)g(A)f(is)h(stored)f(column-wise)f(\(A->Stype) h(=)h(NC\):)167 1608 y(1.1.)f(If)h(fact)f(=)h(EQUILIBRATE,)e(scaling)h (factors)g(are)g(computed)g(to)h(equilibrate)286 1665 y(the)g(system:)334 1721 y(trans)f(=)h(NOTRANS:)f (diag\(R\)*A*diag\(C\)*inv\(di)o(ag\(C\)\)*X)d(=)k(diag\(R\)*B)334 1777 y(trans)f(=)h(TRANS:)47 b(\(diag\(R\)*A*diag\(C\)\)**T)21 b(*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B)334 1834 y(trans)g(=)h(CONJ:)71 b(\(diag\(R\)*A*diag\(C\)\)**H)21 b(*inv\(diag\(R\)\)*X)h(=)h (diag\(C\)*B)286 1890 y(Whether)g(or)h(not)f(the)h(system)f(will)g(be)h (equilibrated)e(depends)h(on)g(the)286 1947 y(scaling)g(of)h(the)f (matrix)g(A,)h(but)f(if)h(equilibration)e(is)i(used,)f(A)h(is)286 2003 y(overwritten)f(by)g(diag\(R\)*A*diag\(C\))f(and)h(B)h(by)g (diag\(R\)*B)286 2060 y(\(if)g(trans)f(=)h(NOTRANS\))e(or)i (diag\(C\)*B)f(\(if)g(trans)g(=)h(TRANS)f(or)h(CONJ\).)167 2173 y(1.2.)f(Permute)g(columns)g(of)h(A,)f(forming)g(A*Pc,)g(where)h (Pc)f(is)h(a)g(permutation)e(matrix)286 2229 y(that)i(usually)f (preserves)f(sparsity.)286 2286 y(For)i(more)f(details)g(of)h(this)f (step,)g(see)h(sp_colorder.c.)167 2398 y(1.3.)f(If)h(fact)f(=)h(DOFACT) f(or)h(EQUILIBRATE,)e(the)h(LU)h(decomposition)e(is)i(used)f(to)286 2455 y(factor)g(the)h(matrix)f(A)h(\(after)f(equilibration)f(if)h(fact) h(=)f(EQUILIBRATE\))g(as)286 2511 y(Pr*A*Pc)g(=)h(L*U,)f(with)h(Pr)f (determined)g(by)g(partial)g(pivoting.)167 2624 y(1.4.)g(Compute)g(the) h(reciprocal)e(pivot)h(growth)g(factor.)952 2795 y Fr(54)p eop %%Page: 55 55 55 54 bop 167 102 a Fm(1.5.)23 b(If)h(some)f(U\(i,i\))g(=)h(0,)g(so)f (that)h(U)f(is)h(exactly)f(singular,)f(then)i(the)f(routine)286 159 y(returns)g(with)h(info)f(=)h(i.)f(Otherwise,)g(the)g(factored)g (form)g(of)h(A)g(is)f(used)g(to)286 215 y(estimate)g(the)h(condition)e (number)h(of)h(the)f(matrix)g(A.)h(If)g(the)f(reciprocal)f(of)286 271 y(the)i(condition)e(number)h(is)h(less)f(than)h(machine)f (precision,)286 328 y(info)h(=)f(A->ncol+1)g(is)h(returned)e(as)i(a)g (warning,)e(but)i(the)f(routine)g(still)286 384 y(goes)h(on)f(to)h (solve)f(for)g(X)h(and)g(computes)e(error)i(bounds)f(as)g(described)g (below.)167 497 y(1.6.)g(The)h(system)f(of)g(equations)g(is)h(solved)f (for)g(X)h(using)f(the)h(factored)e(form)286 554 y(of)i(A.)167 667 y(1.7.)f(Iterative)g(refinement)f(is)i(applied)f(to)h(improve)e (the)i(computed)f(solution)286 723 y(matrix)g(and)h(calculate)e(error)i (bounds)f(and)g(backward)g(error)g(estimates)286 780 y(for)h(it.)167 892 y(1.8.)f(If)h(equilibration)e(was)h(used,)h(the)f (matrix)g(X)h(is)f(premultiplied)g(by)286 949 y(diag\(C\))g(\(if)h (trans)f(=)h(NOTRANS\))e(or)i(diag\(R\))f(\(if)g(trans)h(=)f(TRANS)g (or)h(CONJ\))286 1005 y(so)g(that)f(it)h(solves)f(the)g(original)g (system)g(before)g(equilibration.)95 1118 y(2.)h(If)g(A)f(is)h(stored)f (row-wise)g(\(A->Stype)f(=)i(NR\),)f(apply)h(the)f(above)g(algorithm) 167 1175 y(to)h(the)f(tranpose)g(of)g(A:)167 1288 y(2.1.)g(If)h(fact)f (=)h(EQUILIBRATE,)e(scaling)h(factors)g(are)g(computed)g(to)h (equilibrate)286 1344 y(the)g(system:)334 1401 y(trans)f(=)h (NOTRANS:diag\(R\)*A'*diag\(C\))o(*inv\(di)o(ag\(C\)\)*X)c(=)k (diag\(R\)*B)334 1457 y(trans)f(=)h(TRANS:)f (\(diag\(R\)*A'*diag\(C\)\)**T)e(*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B) 334 1513 y(trans)g(=)h(CONJ:)47 b(\(diag\(R\)*A'*diag\(C\)\)**H)21 b(*inv\(diag\(R\)\)*X)h(=)h(diag\(C\)*B)286 1570 y(Whether)g(or)h(not)f (the)h(system)f(will)g(be)h(equilibrated)e(depends)h(on)g(the)286 1626 y(scaling)g(of)h(the)f(matrix)g(A,)h(but)f(if)h(equilibration)e (is)i(used,)f(A')g(is)286 1683 y(overwritten)g(by)g (diag\(R\)*A'*diag\(C\))f(and)h(B)h(by)f(diag\(R\)*B)286 1739 y(\(if)h(trans)f(=)h(NOTRANS\))e(or)i(diag\(C\)*B)f(\(if)g(trans)g (=)h(TRANS)f(or)h(CONJ\).)167 1852 y(2.2.)f(Permute)g(columns)g(of)h (transpose\(A\))e(\(rows)h(of)h(A\),)286 1909 y(forming)f (transpose\(A\)*Pc,)f(where)h(Pc)h(is)f(a)h(permutation)e(matrix)h (that)286 1965 y(usually)g(preserves)g(sparsity.)286 2022 y(For)h(more)f(details)g(of)h(this)f(step,)g(see)h(sp_colorder.c.) 167 2134 y(2.3.)f(If)h(fact)f(=)h(DOFACT)f(or)h(EQUILIBRATE,)e(the)h (LU)h(decomposition)e(is)i(used)f(to)286 2191 y(factor)g(the)h(matrix)f (A)h(\(after)f(equilibration)f(if)h(fact)h(=)f(EQUILIBRATE\))g(as)286 2247 y(Pr*transpose\(A\)*Pc)f(=)h(L*U,)h(with)f(the)h(permutation)e(Pr) i(determined)e(by)286 2304 y(partial)h(pivoting.)167 2417 y(2.4.)g(Compute)g(the)h(reciprocal)e(pivot)h(growth)g(factor.)167 2530 y(2.5.)g(If)h(some)f(U\(i,i\))g(=)h(0,)g(so)f(that)h(U)f(is)h (exactly)f(singular,)f(then)i(the)f(routine)286 2586 y(returns)g(with)h(info)f(=)h(i.)f(Otherwise,)g(the)g(factored)g(form)g (of)h(transpose\(A\))286 2643 y(is)g(used)f(to)h(estimate)f(the)g (condition)g(number)g(of)g(the)h(matrix)f(A.)952 2795 y Fr(55)p eop %%Page: 56 56 56 55 bop 286 46 a Fm(If)24 b(the)f(reciprocal)g(of)g(the)h(condition)f (number)g(is)g(less)h(than)f(machine)286 102 y(precision,)g(info)g(=)h (A->nrow+1)f(is)g(returned)g(as)g(a)h(warning,)f(but)g(the)286 159 y(routine)g(still)g(goes)h(on)f(to)h(solve)f(for)h(X)f(and)h (computes)f(error)g(bounds)286 215 y(as)h(described)f(below.)167 328 y(2.6.)g(The)h(system)f(of)g(equations)g(is)h(solved)f(for)g(X)h (using)f(the)h(factored)e(form)286 384 y(of)i(transpose\(A\).)167 497 y(2.7.)f(Iterative)g(refinement)f(is)i(applied)f(to)h(improve)e (the)i(computed)f(solution)286 554 y(matrix)g(and)h(calculate)e(error)i (bounds)f(and)g(backward)g(error)g(estimates)286 610 y(for)h(it.)167 723 y(2.8.)f(If)h(equilibration)e(was)h(used,)h(the)f (matrix)g(X)h(is)f(premultiplied)g(by)286 780 y(diag\(C\))g(\(if)h (trans)f(=)h(NOTRANS\))e(or)i(diag\(R\))f(\(if)g(trans)h(=)f(TRANS)g (or)h(CONJ\))286 836 y(so)g(that)f(it)h(solves)f(the)g(original)g (system)g(before)g(equilibration.)143 949 y(See)h(supermatrix.h)e(for)h (the)h(definition)e(of)i('SuperMatrix')e(structure.)95 1062 y(Arguments)95 1118 y(=========)95 1231 y(procs)i(\(input\))f(int) 286 1288 y(Number)g(of)h(processes)f(\(or)g(threads\))g(to)g(be)h (spawned)f(and)g(used)h(to)f(perform)286 1344 y(the)h(LU)f (factorization)f(by)i(pdgstrf\(\).)f(There)g(is)g(a)h(single)f(thread)g (of)286 1401 y(control)g(to)h(call)f(pdgstrf\(\),)g(and)g(all)h (threads)e(spawned)h(by)h(pdgstrf\(\))286 1457 y(are)g(terminated)e (before)h(returning)g(from)g(pdgstrf\(\).)95 1570 y(pdgstrf_options)f (\(input\))h(pdgstrf_options_t*)286 1626 y(The)h(structure)e(defines)h (the)h(input)f(parameters)f(and)i(data)f(structure)286 1683 y(to)h(control)f(how)g(the)h(LU)f(factorization)f(will)i(be)f (performed.)286 1739 y(The)h(following)e(fields)h(should)h(be)f (defined)g(for)g(this)h(structure:)286 1852 y(o)g(fact)f(\(fact_t\))334 1909 y(Specifies)g(whether)g(or)g(not)h(the)f(factored)g(form)g(of)h (the)f(matrix)334 1965 y(A)h(is)f(supplied)g(on)h(entry,)f(and)g(if)h (not,)f(whether)g(the)h(matrix)f(A)g(should)334 2022 y(be)h(equilibrated)e(before)h(it)h(is)f(factored.)334 2078 y(=)h(FACTORED:)e(On)i(entry,)f(L,)h(U,)f(perm_r)g(and)h(perm_c)f (contain)g(the)382 2134 y(factored)g(form)g(of)g(A.)h(If)g(equed)f(is)g (not)h(NOEQUIL,)f(the)g(matrix)g(A)h(has)382 2191 y(been)f (equilibrated)f(with)i(scaling)f(factors)f(R)i(and)g(C.)382 2247 y(A,)f(L,)h(U,)g(perm_r)f(are)g(not)h(modified.)334 2304 y(=)g(DOFACT:)f(The)g(matrix)g(A)h(will)f(be)h(factored,)e(and)i (the)f(factors)g(will)h(be)382 2360 y(stored)f(in)g(L)h(and)g(U.)334 2417 y(=)g(EQUILIBRATE:)e(The)h(matrix)h(A)f(will)h(be)f(equilibrated)f (if)i(necessary,)382 2473 y(then)f(factored)g(into)g(L)h(and)f(U.)286 2586 y(o)h(trans)f(\(trans_t\))334 2643 y(Specifies)g(the)g(form)g(of)h (the)g(system)f(of)g(equations:)952 2795 y Fr(56)p eop %%Page: 57 57 57 56 bop 334 46 a Fm(=)24 b(NOTRANS:)f(A)g(*)h(X)g(=)f(B)191 b(\(No)24 b(transpose\))334 102 y(=)g(TRANS:)71 b(A**T)23 b(*)h(X)f(=)h(B)119 b(\(Transpose\))334 159 y(=)24 b(CONJ:)95 b(A**H)23 b(*)h(X)f(=)h(B)119 b(\(Transpose\))286 271 y(o)24 b(refact)f(\(yes_no_t\))334 328 y(Specifies)g(whether)g(this)g (is)h(first)f(time)g(or)h(subsequent)e(factorization.)334 384 y(=)i(NO:)47 b(this)23 b(factorization)g(is)g(treated)g(as)h(the)f (first)g(one;)334 441 y(=)h(YES:)f(it)h(means)f(that)g(a)h (factorization)e(was)h(performed)g(prior)g(to)h(this)430 497 y(one.)f(Therefore,)f(this)i(factorization)e(will)h(re-use)g(some) 430 554 y(existing)f(data)i(structures,)e(such)h(as)h(L)g(and)f(U)h (storage,)f(column)430 610 y(elimination)f(tree,)h(and)h(the)f (symbolic)g(information)f(of)i(the)430 667 y(Householder)e(matrix.)286 780 y(o)i(panel_size)f(\(int\))334 836 y(A)h(panel)f(consists)g(of)g (at)h(most)f(panel_size)g(consecutive)f(columns.)286 949 y(o)i(relax)f(\(int\))334 1005 y(To)h(control)f(degree)g(of)g (relaxing)g(supernodes.)f(If)i(the)f(number)334 1062 y(of)h(nodes)f(\(columns\))f(in)i(a)g(subtree)f(of)g(the)h(elimination) e(tree)h(is)h(less)334 1118 y(than)f(relax,)g(this)h(subtree)f(is)g (considered)g(as)g(one)h(supernode,)334 1175 y(regardless)f(of)g(the)h (row)f(structures)g(of)g(those)g(columns.)286 1288 y(o)h (diag_pivot_thresh)e(\(double\))334 1344 y(Diagonal)h(pivoting)g (threshold.)f(At)i(step)f(j)h(of)f(the)h(Gaussian)334 1401 y(elimination,)e(if)430 1457 y(abs\(A_jj\))g(>=)i (diag_pivot_thresh)d(*)j(\(max_\(i>=j\))e(abs\(A_ij\)\),)334 1513 y(use)i(A_jj)f(as)g(pivot,)g(else)h(use)f(A_ij)h(with)f(maximum)g (magnitude.)334 1570 y(0)h(<=)f(diag_pivot_thresh)f(<=)i(1.)f(The)h (default)e(value)i(is)f(1,)334 1626 y(corresponding)f(to)i(partial)f (pivoting.)286 1739 y(o)h(usepr)f(\(yes_no_t\))334 1796 y(Whether)g(the)g(pivoting)g(will)h(use)f(perm_r)g(specified)g(by)g (the)h(user.)334 1852 y(=)g(YES:)f(use)h(perm_r;)e(perm_r)i(is)f (input,)g(unchanged)g(on)g(exit.)334 1909 y(=)h(NO:)47 b(perm_r)23 b(is)h(determined)e(by)i(partial)f(pivoting,)f(and)i(is)f (output.)286 2022 y(o)h(drop_tol)f(\(double\))g(\(NOT)g(IMPLEMENTED\)) 334 2078 y(Drop)g(tolerance)g(parameter.)g(At)g(step)g(j)h(of)g(the)f (Gaussian)g(elimination,)334 2134 y(if)h(abs\(A_ij\)/\(max_i)d (abs\(A_ij\)\))i(<)h(drop_tol,)e(drop)i(entry)f(A_ij.)334 2191 y(0)h(<=)f(drop_tol)g(<=)h(1.)f(The)h(default)f(value)g(of)g (drop_tol)g(is)h(0,)334 2247 y(corresponding)e(to)i(not)f(dropping)g (any)g(entry.)286 2360 y(o)h(work)f(\(void*\))g(of)h(size)f(lwork)334 2417 y(User-supplied)f(work)h(space)h(and)f(space)g(for)h(the)f(output) g(data)h(structures.)334 2473 y(Not)g(referenced)e(if)i(lwork)f(=)h(0;) 286 2586 y(o)g(lwork)f(\(int\))334 2643 y(Specifies)g(the)g(length)g (of)h(work)f(array.)952 2795 y Fr(57)p eop %%Page: 58 58 58 57 bop 334 46 a Fm(=)24 b(0:)47 b(allocate)23 b(space)g(internally)g (by)g(system)g(malloc;)334 102 y(>)h(0:)47 b(use)24 b(user-supplied)e (work)h(array)g(of)h(length)f(lwork)g(in)h(bytes,)477 159 y(returns)f(error)g(if)h(space)f(runs)g(out.)334 215 y(=)h(-1:)f(the)h(routine)f(guesses)g(the)g(amount)g(of)h(space)f (needed)g(without)477 271 y(performing)g(the)g(factorization,)f(and)i (returns)f(it)g(in)477 328 y(superlu_memusage->total_need)o(ed;)e(no)i (other)h(side)f(effects.)95 441 y(A)167 b(\(input/output\))22 b(SuperMatrix*)286 497 y(Matrix)h(A)h(in)g(A*X=B,)f(of)g(dimension)g (\(A->nrow,)g(A->ncol\),)f(where)286 554 y(A->nrow)h(=)h(A->ncol.)f (Currently,)f(the)i(type)f(of)h(A)f(can)h(be:)286 610 y(Stype)g(=)f(NC)h(or)f(NR,)h(Dtype)f(=)h(_D,)f(Mtype)g(=)h(GE.)g(In)f (the)h(future,)286 667 y(more)g(general)f(A)g(will)h(be)f(handled.)286 780 y(On)h(entry,)f(If)h(pdgstrf_options->fact)d(=)i(FACTORED)g(and)h (equed)f(is)g(not)286 836 y(NOEQUIL,)g(then)g(A)h(must)f(have)h(been)f (equilibrated)f(by)i(the)f(scaling)g(factors)286 892 y(in)h(R)g(and/or)f(C.)47 b(On)24 b(exit,)f(A)h(is)f(not)h(modified)286 949 y(if)g(pdgstrf_options->fact)d(=)j(FACTORED)e(or)i(DOFACT,)f(or)286 1005 y(if)h(pdgstrf_options->fact)d(=)j(EQUILIBRATE)e(and)h(equed)h(=)f (NOEQUIL.)286 1118 y(On)h(exit,)f(if)h(pdgstrf_options->fact)d(=)i (EQUILIBRATE)g(and)g(equed)g(is)h(not)286 1175 y(NOEQUIL,)f(A)h(is)f (scaled)g(as)h(follows:)286 1231 y(If)g(A->Stype)f(=)g(NC:)334 1288 y(equed)g(=)h(ROW:)47 b(A)24 b(:=)f(diag\(R\))g(*)h(A)334 1344 y(equed)f(=)h(COL:)47 b(A)24 b(:=)f(A)h(*)g(diag\(C\))334 1401 y(equed)f(=)h(BOTH:)f(A)h(:=)f(diag\(R\))g(*)h(A)g(*)g(diag\(C\).) 286 1457 y(If)g(A->Stype)f(=)g(NR:)334 1513 y(equed)g(=)h(ROW:)47 b(transpose\(A\))22 b(:=)i(diag\(R\))f(*)h(transpose\(A\))334 1570 y(equed)f(=)h(COL:)47 b(transpose\(A\))22 b(:=)i(transpose\(A\))e (*)i(diag\(C\))334 1626 y(equed)f(=)h(BOTH:)f(transpose\(A\))f(:=)i (diag\(R\))f(*)h(transpose\(A\))e(*)i(diag\(C\).)95 1739 y(perm_c)47 b(\(input/output\))22 b(int*)286 1796 y(If)i(A->Stype)f(=)g (NC,)h(Column)f(permutation)f(vector)h(of)h(size)f(A->ncol,)286 1852 y(which)h(defines)e(the)i(permutation)e(matrix)h(Pc;)h(perm_c[i])e (=)i(j)g(means)286 1909 y(column)f(i)h(of)g(A)f(is)h(in)g(position)e(j) i(in)g(A*Pc.)286 1965 y(On)g(exit,)f(perm_c)g(may)h(be)f(overwritten)g (by)g(the)h(product)f(of)g(the)h(input)286 2022 y(perm_c)f(and)h(a)g (permutation)e(that)h(postorders)g(the)g(elimination)g(tree)286 2078 y(of)h(Pc'*A'*A*Pc;)e(perm_c)h(is)h(not)f(changed)g(if)h(the)f (elimination)g(tree)286 2134 y(is)h(already)f(in)g(postorder.)286 2247 y(If)h(A->Stype)f(=)g(NR,)h(column)f(permutation)f(vector)h(of)h (size)f(A->nrow,)286 2304 y(which)h(describes)e(permutation)h(of)g (columns)g(of)h(tranpose\(A\))286 2360 y(\(rows)g(of)f(A\))h(as)f (described)g(above.)95 2473 y(perm_r)47 b(\(input/output\))22 b(int*)286 2530 y(If)i(A->Stype)f(=)g(NC,)h(row)f(permutation)g(vector) g(of)g(size)h(A->nrow,)286 2586 y(which)g(defines)e(the)i(permutation)e (matrix)h(Pr,)h(and)f(is)h(determined)286 2643 y(by)g(partial)f (pivoting.)46 b(perm_r[i])23 b(=)h(j)f(means)h(row)f(i)h(of)f(A)h(is)g (in)952 2795 y Fr(58)p eop %%Page: 59 59 59 58 bop 286 46 a Fm(position)23 b(j)h(in)f(Pr*A.)286 159 y(If)h(A->Stype)f(=)g(NR,)h(permutation)e(vector)h(of)h(size)f (A->ncol,)g(which)286 215 y(determines)g(permutation)f(of)i(rows)f(of)h (transpose\(A\))286 271 y(\(columns)f(of)h(A\))f(as)h(described)f (above.)286 384 y(If)h(pdgstrf_options->usepr)d(=)j(NO,)f(perm_r)g(is)h (output)f(argument;)286 441 y(If)h(pdgstrf_options->usepr)d(=)j(YES,)f (the)g(pivoting)g(routine)g(will)g(try)358 497 y(to)h(use)f(the)g (input)h(perm_r,)f(unless)g(a)g(certain)g(threshold)g(criterion)358 554 y(is)h(violated.)e(In)i(that)f(case,)g(perm_r)g(is)h(overwritten)e (by)i(a)g(new)358 610 y(permutation)e(determined)h(by)g(partial)g (pivoting)g(or)h(diagonal)358 667 y(threshold)f(pivoting.)95 780 y(equed)71 b(\(input/output\))22 b(equed_t*)286 836 y(Specifies)h(the)g(form)h(of)f(equilibration)f(that)i(was)f(done.)286 892 y(=)h(NOEQUIL:)f(No)g(equilibration.)286 949 y(=)h(ROW:)47 b(Row)24 b(equilibration,)e(i.e.,)h(A)h(was)f(premultiplied)f(by)i (diag\(R\).)286 1005 y(=)g(COL:)47 b(Column)23 b(equilibration,)f (i.e.,)h(A)h(was)g(postmultiplied)e(by)h(diag\(C\).)286 1062 y(=)h(BOTH:)f(Both)h(row)f(and)g(column)h(equilibration,)d(i.e.,)j (A)f(was)h(replaced)477 1118 y(by)g(diag\(R\)*A*diag\(C\).)286 1175 y(If)g(pdgstrf_options->fact)d(=)j(FACTORED,)e(equed)h(is)h(an)g (input)f(argument,)286 1231 y(otherwise)g(it)h(is)f(an)h(output)f (argument.)95 1344 y(R)167 b(\(input/output\))22 b(double*,)h (dimension)g(\(A->nrow\))286 1401 y(The)h(row)f(scale)g(factors)g(for)h (A)g(or)f(transpose\(A\).)286 1457 y(If)h(equed)f(=)h(ROW)f(or)h(BOTH,) f(A)h(\(if)f(A->Stype)g(=)h(NC\))f(or)h(transpose\(A\))358 1513 y(\(if)f(A->Stype)g(=)h(NR\))f(is)h(multiplied)e(on)i(the)f(left)h (by)f(diag\(R\).)286 1570 y(If)h(equed)f(=)h(NOEQUIL)f(or)g(COL,)h(R)f (is)h(not)f(accessed.)286 1626 y(If)h(fact)f(=)h(FACTORED,)f(R)g(is)h (an)g(input)f(argument;)f(otherwise,)h(R)h(is)f(output.)286 1683 y(If)h(fact)f(=)h(FACTORED)f(and)g(equed)g(=)h(ROW)g(or)f(BOTH,)g (each)h(element)f(of)g(R)h(must)358 1739 y(be)g(positive.)95 1852 y(C)167 b(\(input/output\))22 b(double*,)h(dimension)g (\(A->ncol\))286 1909 y(The)h(column)f(scale)g(factors)g(for)g(A)h(or)g (transpose\(A\).)286 1965 y(If)g(equed)f(=)h(COL)f(or)h(BOTH,)f(A)h (\(if)f(A->Stype)g(=)h(NC\))f(or)h(trnspose\(A\))358 2022 y(\(if)f(A->Stype)g(=)h(NR\))f(is)h(multiplied)e(on)i(the)f(right) h(by)f(diag\(C\).)286 2078 y(If)h(equed)f(=)h(NOEQUIL)f(or)g(ROW,)h(C)f (is)h(not)f(accessed.)286 2134 y(If)h(fact)f(=)h(FACTORED,)f(C)g(is)h (an)g(input)f(argument;)f(otherwise,)h(C)h(is)f(output.)286 2191 y(If)h(fact)f(=)h(FACTORED)f(and)g(equed)g(=)h(COL)g(or)f(BOTH,)g (each)h(element)f(of)g(C)h(must)358 2247 y(be)g(positive.)95 2360 y(L)167 b(\(output\))23 b(SuperMatrix*)286 2417 y(The)h(factor)f(L)h(from)f(the)g(factorization)382 2473 y(Pr*A*Pc=L*U)332 b(\(if)24 b(A->Stype)f(=)g(NC\))h(or)382 2530 y(Pr*transpose\(A\)*Pc=L*U)68 b(\(if)24 b(A->Stype)f(=)g(NR\).)286 2586 y(Uses)h(compressed)e(row)i(subscripts)e(storage)h(for)g (supernodes,)g(i.e.,)286 2643 y(L)h(has)g(types:)f(Stype)g(=)g(SCP,)h (Dtype)f(=)h(_D,)f(Mtype)g(=)h(TRLU.)952 2795 y Fr(59)p eop %%Page: 60 60 60 59 bop 95 102 a Fm(U)167 b(\(output\))23 b(SuperMatrix*)286 159 y(The)h(factor)f(U)h(from)f(the)g(factorization)382 215 y(Pr*A*Pc=L*U)332 b(\(if)24 b(A->Stype)f(=)g(NC\))h(or)382 271 y(Pr*transpose\(A\)*Pc=L*U)68 b(\(if)24 b(A->Stype)f(=)g(NR\).)286 328 y(Uses)h(column-wise)e(storage)h(scheme,)g(i.e.,)g(U)h(has)f (types:)286 384 y(Stype)h(=)f(NCP,)h(Dtype)f(=)g(_D,)h(Mtype)f(=)h (TRU.)95 497 y(B)167 b(\(input/output\))22 b(SuperMatrix*)286 554 y(B)i(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f(=)h(_D,)f(Mtype)g(=) h(GE.)286 610 y(On)g(entry,)f(the)g(right)h(hand)f(side)g(matrix.)286 667 y(On)h(exit,)358 723 y(if)g(equed)f(=)g(NOEQUIL,)g(B)h(is)g(not)f (modified;)g(otherwise)358 780 y(if)h(A->Stype)e(=)i(NC:)430 836 y(if)f(trans)g(=)h(NOTRANS)f(and)g(equed)h(=)f(ROW)h(or)f(BOTH,)h (B)f(is)h(overwritten)501 892 y(by)g(diag\(R\)*B;)430 949 y(if)f(trans)g(=)h(TRANS)f(or)h(CONJ)f(and)h(equed)f(=)g(COL)h(of)g (BOTH,)f(B)g(is)501 1005 y(overwritten)f(by)i(diag\(C\)*B;)358 1062 y(if)g(A->Stype)e(=)i(NR:)430 1118 y(if)f(trans)g(=)h(NOTRANS)f (and)g(equed)h(=)f(COL)h(or)f(BOTH,)h(B)f(is)h(overwritten)501 1175 y(by)g(diag\(C\)*B;)430 1231 y(if)f(trans)g(=)h(TRANS)f(or)h(CONJ) f(and)h(equed)f(=)g(ROW)h(of)g(BOTH,)f(B)g(is)501 1288 y(overwritten)f(by)i(diag\(R\)*B.)95 1401 y(X)167 b(\(output\))23 b(SuperMatrix*)286 1457 y(X)h(has)g(types:)f(Stype)g(=)g(DN,)h(Dtype)f (=)h(_D,)f(Mtype)g(=)h(GE.)286 1513 y(If)g(info)f(=)h(0)g(or)f(info)h (=)f(A->ncol+1,)g(X)h(contains)e(the)i(solution)f(matrix)286 1570 y(to)h(the)f(original)g(system)g(of)h(equations.)e(Note)i(that)f (A)h(and)f(B)h(are)f(modified)286 1626 y(on)h(exit)f(if)h(equed)f(is)h (not)f(NOEQUIL,)g(and)g(the)h(solution)f(to)g(the)286 1683 y(equilibrated)g(system)g(is)g(inv\(diag\(C\)\)*X)f(if)i(trans)f (=)h(NOTRANS)f(and)286 1739 y(equed)h(=)f(COL)h(or)f(BOTH,)g(or)h (inv\(diag\(R\)\)*X)e(if)i(trans)f(=)h(TRANS)f(or)g(CONJ)286 1796 y(and)h(equed)f(=)h(ROW)f(or)h(BOTH.)95 1909 y(recip_pivot_growth) e(\(output\))h(double*)286 1965 y(The)h(reciprocal)e(pivot)h(growth)h (factor)f(computed)f(as)382 2022 y(max_j)h(\()h(max_i\(abs\(A_ij\)\))d (/)j(max_i\(abs\(U_ij\)\))e(\).)286 2078 y(If)i(recip_pivot_growth)d (is)j(much)f(less)h(than)f(1,)g(the)h(stability)f(of)g(the)286 2134 y(LU)h(factorization)e(could)h(be)h(poor.)95 2247 y(rcond)71 b(\(output\))23 b(double*)286 2304 y(The)h(estimate)f(of)g (the)h(reciprocal)e(condition)h(number)g(of)g(the)h(matrix)f(A)286 2360 y(after)h(equilibration)e(\(if)h(done\).)g(If)h(rcond)f(is)g(less) h(than)f(the)h(machine)286 2417 y(precision)f(\(in)g(particular,)g(if)g (rcond)h(=)f(0\),)h(the)f(matrix)g(is)h(singular)286 2473 y(to)g(working)f(precision.)f(This)i(condition)e(is)i(indicated)f (by)g(a)h(return)286 2530 y(code)g(of)f(info)h(>)f(0.)95 2643 y(ferr)95 b(\(output\))23 b(double*,)g(dimension)g(\(B->ncol\))952 2795 y Fr(60)p eop %%Page: 61 61 61 60 bop 286 46 a Fm(The)24 b(estimated)e(forward)h(error)h(bound)f (for)g(each)g(solution)g(vector)286 102 y(X\(j\))h(\(the)f(j-th)g (column)g(of)h(the)f(solution)g(matrix)g(X\).)286 159 y(If)h(XTRUE)f(is)h(the)f(true)g(solution)g(corresponding)f(to)i (X\(j\),)f(FERR\(j\))286 215 y(is)h(an)g(estimated)e(upper)h(bound)h (for)f(the)g(magnitude)g(of)h(the)f(largest)286 271 y(element)g(in)h (\(X\(j\))f(-)h(XTRUE\))f(divided)g(by)g(the)h(magnitude)e(of)i(the)286 328 y(largest)f(element)g(in)h(X\(j\).)47 b(The)23 b(estimate)g(is)h (as)f(reliable)g(as)286 384 y(the)h(estimate)f(for)g(RCOND,)g(and)h(is) f(almost)g(always)g(a)h(slight)286 441 y(overestimate)f(of)g(the)h (true)f(error.)95 554 y(berr)95 b(\(output\))23 b(double*,)g(dimension) g(\(B->ncol\))286 610 y(The)h(componentwise)e(relative)h(backward)f (error)i(of)f(each)h(solution)286 667 y(vector)f(X\(j\))h(\(i.e.,)f (the)g(smallest)g(relative)g(change)g(in)286 723 y(any)h(element)f(of)g (A)h(or)g(B)f(that)h(makes)f(X\(j\))g(an)h(exact)f(solution\).)95 836 y(superlu_memusage)f(\(output\))h(superlu_memusage_t*)286 892 y(Record)g(the)h(memory)f(usage)g(statistics,)f(consisting)h(of)h (following)e(fields:)286 949 y(-)i(for_lu)f(\(float\))334 1005 y(The)h(amount)f(of)g(space)g(used)h(in)f(bytes)g(for)h(L\\U)f (data)h(structures.)286 1062 y(-)g(total_needed)e(\(float\))334 1118 y(The)i(amount)f(of)g(space)g(needed)g(in)h(bytes)f(to)h(perform)f (factorization.)286 1175 y(-)h(expansions)f(\(int\))334 1231 y(The)h(number)f(of)g(memory)g(expansions)g(during)g(the)g(LU)h (factorization.)95 1344 y(info)95 b(\(output\))23 b(int*)286 1401 y(=)h(0:)g(successful)e(exit)286 1457 y(<)i(0:)g(if)f(info)h(=)f (-i,)h(the)f(i-th)h(argument)e(had)i(an)f(illegal)g(value)286 1513 y(>)h(0:)g(if)f(info)h(=)f(i,)h(and)f(i)h(is)406 1570 y(<=)f(A->ncol:)g(U\(i,i\))g(is)h(exactly)f(zero.)g(The)g (factorization)f(has)549 1626 y(been)h(completed,)g(but)g(the)h(factor) f(U)g(is)h(exactly)549 1683 y(singular,)e(so)i(the)g(solution)e(and)i (error)f(bounds)549 1739 y(could)g(not)g(be)h(computed.)406 1796 y(=)f(A->ncol+1:)g(U)h(is)f(nonsingular,)f(but)i(RCOND)f(is)h (less)f(than)g(machine)549 1852 y(precision,)f(meaning)h(that)h(the)f (matrix)g(is)h(singular)e(to)549 1909 y(working)h(precision.)f (Nevertheless,)g(the)i(solution)f(and)549 1965 y(error)g(bounds)g(are)h (computed)e(because)h(there)g(are)h(a)g(number)549 2022 y(of)f(situations)g(where)g(the)h(computed)e(solution)h(can)h(be)f (more)549 2078 y(accurate)g(than)g(the)g(value)h(of)f(RCOND)g(would)h (suggest.)406 2134 y(>)f(A->ncol+1:)g(number)g(of)h(bytes)f(allocated)f (when)i(memory)f(allocation)549 2191 y(failure)g(occurred,)f(plus)i (A->ncol.)0 2369 y Ft(B.3)55 b Fa(PDGSTRF)0 2455 y Fm(void)0 2511 y(pdgstrf\(pdgstrf_options_t)20 b(*pdgstrf_options,)i(SuperMatrix) g(*A,)i(int)f(*perm_r,)191 2568 y(SuperMatrix)f(*L,)i(SuperMatrix)e (*U,)i(Gstat_t)e(*Gstat,)h(int)h(*info\))952 2795 y Fr(61)p eop %%Page: 62 62 62 61 bop 72 46 a Fm(Purpose)72 102 y(=======)72 215 y(PDGSTRF)22 b(computes)h(an)h(LU)f(factorization)g(of)g(a)h(general)f (sparse)g(nrow-by-ncol)72 271 y(matrix)g(A)g(using)h(partial)e (pivoting)h(with)h(row)f(interchanges.)f(The)i(factorization)72 328 y(has)f(the)g(form)167 384 y(Pr)h(*)f(A)h(=)g(L)g(*)f(U)72 441 y(where)g(Pr)g(is)h(a)g(row)f(permutation)f(matrix,)h(L)h(is)g (lower)f(triangular)f(with)i(unit)72 497 y(diagonal)e(elements)h (\(lower)g(trapezoidal)g(if)g(A->nrow)g(>)h(A->ncol\),)e(and)i(U)g(is) 72 554 y(upper)f(triangular)f(\(upper)h(trapezoidal)g(if)g(A->nrow)g(<) h(A->ncol\).)72 667 y(Arguments)72 723 y(=========)72 836 y(pdgstrf_options)d(\(input\))i(pdgstrf_options_t*)239 892 y(The)g(structure)g(defines)g(the)g(parameters)g(to)g(control)g (how)h(the)f(sparse)239 949 y(LU)g(factorization)f(is)i(performed.)e (The)i(following)e(fields)i(must)f(be)g(set)239 1005 y(by)g(the)h(user:)239 1118 y(o)f(nprocs)g(\(int\))286 1175 y(Number)g(of)h(processes)f(to)g(be)h(spawned)f(and)g(used)g(for)h (factorization.)239 1288 y(o)f(refact)g(\(yes_no_t\))286 1344 y(Specifies)g(whether)g(this)g(is)h(first)f(time)g(or)h (subsequent)e(factorization.)286 1401 y(=)i(NO:)47 b(this)24 b(factorization)e(is)h(treated)g(as)h(the)f(first)h(one;)286 1457 y(=)g(YES:)f(it)h(means)f(that)g(a)h(factorization)e(was)i (performed)e(prior)i(to)f(this)453 1513 y(one.)h(Therefore,)e(this)i (factorization)e(will)h(re-use)g(some)453 1570 y(existing)g(data)g (structures,)g(such)g(as)h(L)f(and)h(U)g(storage,)e(column)453 1626 y(elimination)h(tree,)g(and)g(the)h(symbolic)f(information)f(of)i (the)453 1683 y(Householder)f(matrix.)239 1796 y(o)g(panel_size)g (\(int\))286 1852 y(A)h(panel)f(consists)g(of)h(at)f(most)h(panel_size) e(consecutive)g(columns.)239 1965 y(o)h(relax)h(\(int\))286 2022 y(Degree)f(of)h(relaxing)f(supernodes.)f(If)i(the)f(number)g(of)h (nodes)f(\(columns\))286 2078 y(in)h(a)g(subtree)f(of)g(the)h (elimination)e(tree)h(is)h(less)f(than)h(relax,)f(this)286 2134 y(subtree)g(is)h(considered)e(as)i(one)f(supernode,)g(regardless)f (of)i(the)f(row)286 2191 y(structures)g(of)g(those)h(columns.)239 2304 y(o)f(diag_pivot_thresh)f(\(double\))286 2360 y(Diagonal)h (pivoting)g(threshold.)f(At)i(step)f(j)h(of)g(Gaussian)e(elimination,) 286 2417 y(if)i(abs\(A_jj\))f(>=)g(diag_pivot_thresh)f(*)h (\(max_\(i>=j\))g(abs\(A_ij\)\),)286 2473 y(use)h(A_jj)f(as)h(pivot.)f (0)g(<=)h(diag_pivot_thresh)e(<=)h(1.)h(The)f(default)286 2530 y(value)h(is)f(1.0,)g(corresponding)g(to)g(partial)g(pivoting.)239 2643 y(o)g(usepr)h(\(yes_no_t\))952 2795 y Fr(62)p eop %%Page: 63 63 63 62 bop 286 46 a Fm(Whether)23 b(the)h(pivoting)e(will)i(use)f (perm_r)g(specified)g(by)h(the)f(user.)286 102 y(=)h(YES:)f(use)h (perm_r;)f(perm_r)g(is)g(input,)g(unchanged)g(on)h(exit.)286 159 y(=)g(NO:)47 b(perm_r)23 b(is)h(determined)f(by)g(partial)g (pivoting,)g(and)g(is)h(output.)239 271 y(o)f(drop_tol)g(\(double\))g (\(NOT)g(IMPLEMENTED\))286 328 y(Drop)h(tolerance)e(parameter.)h(At)g (step)h(j)f(of)h(the)f(Gaussian)g(elimination,)286 384 y(if)h(abs\(A_ij\)/\(max_i)e(abs\(A_ij\)\))g(<)i(drop_tol,)e(drop)i (entry)f(A_ij.)286 441 y(0)h(<=)g(drop_tol)e(<=)i(1.)g(The)f(default)g (value)g(of)h(drop_tol)f(is)g(0,)286 497 y(corresponding)f(to)i(not)f (dropping)g(any)h(entry.)239 610 y(o)f(perm_c)g(\(int*\))286 667 y(Column)g(permutation)g(vector)g(of)g(size)h(A->ncol,)e(which)i (defines)f(the)286 723 y(permutation)g(matrix)g(Pc;)g(perm_c[i])g(=)h (j)f(means)g(column)h(i)f(of)h(A)g(is)286 780 y(in)g(position)f(j)g(in) h(A*Pc.)239 892 y(o)f(perm_r)g(\(int*\))286 949 y(Column)g(permutation) g(vector)g(of)g(size)h(A->nrow.)286 1005 y(If)g(pdgstrf_options->usepr) d(=)j(NO,)f(this)g(is)h(an)f(output)h(argument.)239 1118 y(o)f(work)h(\(void*\))f(of)g(size)g(lwork)286 1175 y(User-supplied)f (work)i(space)f(and)g(space)h(for)f(the)g(output)h(data)f(structures.) 286 1231 y(Not)h(referenced)e(if)i(lwork)f(=)h(0;)239 1344 y(o)f(lwork)h(\(int\))286 1401 y(Specifies)f(the)g(length)g(of)h (work)f(array.)334 1457 y(=)h(0:)47 b(allocate)23 b(space)g(internally) g(by)g(system)g(malloc;)334 1513 y(>)h(0:)47 b(use)24 b(user-supplied)e(work)h(array)g(of)h(length)f(lwork)g(in)h(bytes,)477 1570 y(returns)f(error)g(if)h(space)f(runs)g(out.)334 1626 y(=)h(-1:)f(the)h(routine)f(guesses)g(the)g(amount)g(of)h(space)f (needed)g(without)477 1683 y(performing)g(the)g(factorization,)f(and)i (returns)f(it)g(in)477 1739 y(superlu_memusage->total_need)o(ed;)e(no)i (other)h(side)f(effects.)72 1852 y(A)143 b(\(input\))23 b(SuperMatrix*)239 1909 y(Original)f(matrix)h(A,)h(permuted)f(by)g (columns,)g(of)h(dimension)239 1965 y(\(A->nrow,)e(A->ncol\).)h(The)g (type)h(of)f(A)h(can)f(be:)239 2022 y(Stype)g(=)h(NCP;)f(Dtype)g(=)h (_D;)f(Mtype)g(=)h(GE.)72 2134 y(perm_r)f(\(input/output\))f(int*,)h (dimension)f(A->nrow)239 2191 y(Row)h(permutation)f(vector)h(which)h (defines)f(the)g(permutation)f(matrix)h(Pr,)239 2247 y(perm_r[i])f(=)i(j)g(means)f(row)g(i)h(of)g(A)f(is)h(in)g(position)e (j)i(in)g(Pr*A.)239 2304 y(If)f(pdgstrf_options->usepr)e(=)j(NO,)f (perm_r)g(is)h(output)f(argument;)239 2360 y(If)g (pdgstrf_options->usepr)e(=)j(YES,)f(the)h(pivoting)e(routine)h(will)h (try)310 2417 y(to)g(use)f(the)h(input)f(perm_r,)g(unless)g(a)h (certain)e(threshold)h(criterion)310 2473 y(is)h(violated.)e(In)i(that) f(case,)h(perm_r)f(is)g(overwritten)g(by)g(a)h(new)310 2530 y(permutation)f(determined)f(by)i(partial)f(pivoting)f(or)i (diagonal)310 2586 y(threshold)f(pivoting.)952 2795 y Fr(63)p eop %%Page: 64 64 64 63 bop 72 46 a Fm(L)143 b(\(output\))22 b(SuperMatrix*)239 102 y(The)h(factor)g(L)h(from)f(the)h(factorization)e(Pr*A=L*U;)g(use)i (compressed)e(row)239 159 y(subscripts)g(storage)h(for)g(supernodes,)g (i.e.,)g(L)h(has)f(type:)239 215 y(Stype)g(=)h(SCP,)f(Dtype)g(=)h(_D,)f (Mtype)g(=)h(TRLU.)72 328 y(U)143 b(\(output\))22 b(SuperMatrix*)239 384 y(The)h(factor)g(U)h(from)f(the)h(factorization)e(Pr*A*Pc=L*U.)g (Use)h(column-wise)239 441 y(storage)g(scheme,)f(i.e.,)i(U)f(has)h (types:)f(Stype)g(=)h(NCP,)f(Dtype)g(=)h(_D,)239 497 y(Mtype)f(=)h(TRU.)72 610 y(Gstat)47 b(\(output\))22 b(Gstat_t*)239 667 y(Record)h(all)g(the)h(statistics)e(about)h(the)h (factorization;)239 723 y(See)f(Gstat_t)g(structure)g(defined)g(in)g (util.h.)72 836 y(info)71 b(\(output\))22 b(int*)239 892 y(=)h(0:)h(successful)e(exit)239 949 y(<)h(0:)h(if)g(info)f(=)h (-i,)f(the)g(i-th)h(argument)f(had)g(an)h(illegal)f(value)239 1005 y(>)g(0:)h(if)g(info)f(=)h(i,)f(and)h(i)f(is)358 1062 y(<=)h(A->ncol:)e(U\(i,i\))h(is)h(exactly)f(zero.)g(The)g (factorization)g(has)430 1118 y(been)g(completed,)f(but)i(the)f(factor) g(U)h(is)g(exactly)f(singular,)430 1175 y(and)g(division)g(by)g(zero)h (will)f(occur)g(if)h(it)f(is)h(used)f(to)h(solve)f(a)430 1231 y(system)g(of)g(equations.)358 1288 y(>)h(A->ncol:)e(number)h(of)h (bytes)f(allocated)g(when)g(memory)g(allocation)430 1344 y(failure)f(occurred,)h(plus)g(A->ncol.)952 2795 y Fr(64)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .