\contentsline {part}{\uppercase {i}\hspace {1em}Introduction}{15}
\contentsline {chapter}{\numberline {1}Introduction}{17}
\contentsline {section}{\numberline {1.1}Software Design}{18}
\contentsline {section}{\numberline {1.2}Changes from Release 1.0}{21}
\contentsline {section}{\numberline {1.3}Changes from Release 2.0}{21}
\contentsline {part}{\uppercase {ii}\hspace {1em}Utility Objects and Methods}{23}
\contentsline {chapter}{\numberline {2}{\tt A2}: Real or complex 2-D array}{25}
\contentsline {section}{\numberline {2.1}Data Structure}{25}
\contentsline {section}{\numberline {2.2}Prototypes and descriptions of {\tt A2} methods}{25}
\contentsline {subsection}{\numberline {2.2.1}Basic methods}{26}
\contentsline {subsection}{\numberline {2.2.2}Instance methods}{26}
\contentsline {subsection}{\numberline {2.2.3}Initialize methods}{28}
\contentsline {subsection}{\numberline {2.2.4}Methods used in the $QR$ factorization}{28}
\contentsline {subsection}{\numberline {2.2.5}Norm methods}{29}
\contentsline {subsection}{\numberline {2.2.6}Sort methods}{30}
\contentsline {subsection}{\numberline {2.2.7}Utility methods}{30}
\contentsline {subsection}{\numberline {2.2.8}IO methods}{33}
\contentsline {section}{\numberline {2.3}Driver programs for the {\tt A2 object}}{34}
\contentsline {chapter}{\numberline {3}{\tt Coords}: Coordinates Object}{36}
\contentsline {section}{\numberline {3.1}Data Structure}{36}
\contentsline {section}{\numberline {3.2}Prototypes and descriptions of {\tt Coords} methods}{36}
\contentsline {subsection}{\numberline {3.2.1}Basic methods}{36}
\contentsline {subsection}{\numberline {3.2.2}Initializer methods}{37}
\contentsline {subsection}{\numberline {3.2.3}Utility methods}{38}
\contentsline {subsection}{\numberline {3.2.4}IO methods}{38}
\contentsline {section}{\numberline {3.3}Driver programs for the {\tt Coords} object}{39}
\contentsline {chapter}{\numberline {4}{\tt DV}: Double Vector Object}{41}
\contentsline {section}{\numberline {4.1}Data Structure}{41}
\contentsline {section}{\numberline {4.2}Prototypes and descriptions of {\tt DV} methods}{42}
\contentsline {subsection}{\numberline {4.2.1}Basic methods}{42}
\contentsline {subsection}{\numberline {4.2.2}Instance methods}{42}
\contentsline {subsection}{\numberline {4.2.3}Initializer methods}{43}
\contentsline {subsection}{\numberline {4.2.4}Utility methods}{44}
\contentsline {subsection}{\numberline {4.2.5}IO methods}{45}
\contentsline {section}{\numberline {4.3}Driver programs for the {\tt DV object}}{47}
\contentsline {chapter}{\numberline {5}{\tt Drand}: \penalty -\@M Simple Random Number Generator}{48}
\contentsline {section}{\numberline {5.1}Data Structure}{48}
\contentsline {section}{\numberline {5.2}Prototypes and descriptions of {\tt Drand} methods}{48}
\contentsline {subsection}{\numberline {5.2.1}Basic methods}{49}
\contentsline {subsection}{\numberline {5.2.2}Initializer methods}{49}
\contentsline {subsection}{\numberline {5.2.3}Utility methods}{50}
\contentsline {section}{\numberline {5.3}Driver programs for the {\tt Drand} object}{50}
\contentsline {chapter}{\numberline {6}{\tt I2Ohash}: Two Key Hash Table}{52}
\contentsline {section}{\numberline {6.1}Data Structure}{52}
\contentsline {section}{\numberline {6.2}Prototypes and descriptions of {\tt I2Ohash} methods}{53}
\contentsline {subsection}{\numberline {6.2.1}Basic methods}{53}
\contentsline {subsection}{\numberline {6.2.2}Initializer methods}{53}
\contentsline {subsection}{\numberline {6.2.3}Utility methods}{54}
\contentsline {subsection}{\numberline {6.2.4}IO methods}{54}
\contentsline {section}{\numberline {6.3}Driver programs for the {\tt I2Ohash object}}{54}
\contentsline {chapter}{\numberline {7}{\tt IIheap}: (Key, Value) Heap}{56}
\contentsline {section}{\numberline {7.1}Data Structure}{56}
\contentsline {section}{\numberline {7.2}Prototypes and descriptions of {\tt IIheap} methods}{56}
\contentsline {subsection}{\numberline {7.2.1}Basic methods}{56}
\contentsline {subsection}{\numberline {7.2.2}Initializer methods}{57}
\contentsline {subsection}{\numberline {7.2.3}Utility methods}{57}
\contentsline {chapter}{\numberline {8}{\tt IV}: Integer Vector Object}{58}
\contentsline {section}{\numberline {8.1}Data Structure}{58}
\contentsline {section}{\numberline {8.2}Prototypes and descriptions of {\tt IV} methods}{59}
\contentsline {subsection}{\numberline {8.2.1}Basic methods}{59}
\contentsline {subsection}{\numberline {8.2.2}Instance methods}{59}
\contentsline {subsection}{\numberline {8.2.3}Initializer methods}{60}
\contentsline {subsection}{\numberline {8.2.4}Utility methods}{61}
\contentsline {subsection}{\numberline {8.2.5}IO methods}{63}
\contentsline {section}{\numberline {8.3}Driver programs for the {\tt IV object}}{65}
\contentsline {chapter}{\numberline {9}{\tt IVL}: Integer Vector List Object}{66}
\contentsline {section}{\numberline {9.1}Data Structure}{66}
\contentsline {section}{\numberline {9.2}Prototypes and descriptions of {\tt IVL} methods}{67}
\contentsline {subsection}{\numberline {9.2.1}Basic methods}{67}
\contentsline {subsection}{\numberline {9.2.2}Instance methods}{68}
\contentsline {subsection}{\numberline {9.2.3}Initialization and resizing methods}{68}
\contentsline {subsection}{\numberline {9.2.4}List manipulation methods}{69}
\contentsline {subsection}{\numberline {9.2.5}Utility methods}{70}
\contentsline {subsection}{\numberline {9.2.6}Miscellaneous methods}{71}
\contentsline {subsection}{\numberline {9.2.7}IO methods}{72}
\contentsline {section}{\numberline {9.3}Driver programs for the {\tt IVL} object}{73}
\contentsline {chapter}{\numberline {10}{\tt Ideq}: Integer Dequeue}{74}
\contentsline {section}{\numberline {10.1}Data Structure}{74}
\contentsline {section}{\numberline {10.2}Prototypes and descriptions of {\tt Ideq} methods}{74}
\contentsline {subsection}{\numberline {10.2.1}Basic methods}{74}
\contentsline {subsection}{\numberline {10.2.2}Initializer methods}{75}
\contentsline {subsection}{\numberline {10.2.3}Utility methods}{75}
\contentsline {subsection}{\numberline {10.2.4}IO methods}{76}
\contentsline {chapter}{\numberline {11}{\tt Lock}: Mutual Exclusion Lock object}{77}
\contentsline {section}{\numberline {11.1}Data Structure}{77}
\contentsline {section}{\numberline {11.2}Prototypes and descriptions of {\tt Lock} methods}{77}
\contentsline {subsection}{\numberline {11.2.1}Basic methods}{77}
\contentsline {subsection}{\numberline {11.2.2}Initializer method}{78}
\contentsline {subsection}{\numberline {11.2.3}Utility methods}{78}
\contentsline {chapter}{\numberline {12}{\tt Perm}: Permutation Object}{79}
\contentsline {section}{\numberline {12.1}Data Structure}{79}
\contentsline {section}{\numberline {12.2}Prototypes and descriptions of {\tt Perm} methods}{79}
\contentsline {subsection}{\numberline {12.2.1}Basic methods}{79}
\contentsline {subsection}{\numberline {12.2.2}Initializer methods}{80}
\contentsline {subsection}{\numberline {12.2.3}Utility methods}{80}
\contentsline {subsection}{\numberline {12.2.4}IO methods}{81}
\contentsline {chapter}{\numberline {13}{\tt Utilities } directory }{83}
\contentsline {section}{\numberline {13.1}Data Structures}{83}
\contentsline {section}{\numberline {13.2}Prototypes and descriptions of {\tt Utilities} methods}{83}
\contentsline {subsection}{\numberline {13.2.1}{\tt CV} : {\tt char} vector methods}{84}
\contentsline {subsection}{\numberline {13.2.2}{\tt DV} : {\tt double} vector methods}{84}
\contentsline {subsection}{\numberline {13.2.3}{\tt ZV} : {\tt double complex } vector methods}{90}
\contentsline {subsection}{\numberline {13.2.4}{\tt IV} : {\tt int} vector methods}{96}
\contentsline {subsection}{\numberline {13.2.5}{\tt FV} : {\tt float} vector methods}{98}
\contentsline {subsection}{\numberline {13.2.6}{\tt PCV} : {\tt char *} vector methods}{101}
\contentsline {subsection}{\numberline {13.2.7}{\tt PDV} : {\tt double *} vector methods}{101}
\contentsline {subsubsection}{{\tt PIV} : {\tt int *} vector methods}{101}
\contentsline {subsection}{\numberline {13.2.8}{\tt PFV} : {\tt float *} vector methods}{102}
\contentsline {subsection}{\numberline {13.2.9}Sorting routines}{102}
\contentsline {subsubsection}{Validation routines}{102}
\contentsline {subsubsection}{Insert sort routines}{102}
\contentsline {subsubsection}{Quicksort routines}{103}
\contentsline {subsection}{\numberline {13.2.10}Sort and compress routines}{104}
\contentsline {subsection}{\numberline {13.2.11}{\tt IP} : {\tt (int, pointer)} singly linked-list methods}{105}
\contentsline {subsection}{\numberline {13.2.12}{\tt I2OP} : {\tt (int, int, void*, pointer)} singly linked-list methods}{106}
\contentsline {section}{\numberline {13.3}Driver programs }{107}
\contentsline {chapter}{\numberline {14}{\tt ZV}: Double Complex Vector Object}{108}
\contentsline {section}{\numberline {14.1}Data Structure}{108}
\contentsline {section}{\numberline {14.2}Prototypes and descriptions of {\tt ZV} methods}{109}
\contentsline {subsection}{\numberline {14.2.1}Basic methods}{109}
\contentsline {subsection}{\numberline {14.2.2}Instance methods}{109}
\contentsline {subsection}{\numberline {14.2.3}Initializer methods}{110}
\contentsline {subsection}{\numberline {14.2.4}Utility methods}{111}
\contentsline {subsection}{\numberline {14.2.5}IO methods}{112}
\contentsline {section}{\numberline {14.3}Driver programs for the {\tt ZV object}}{113}
\contentsline {part}{\uppercase {iii}\hspace {1em}Ordering Objects and Methods}{115}
\contentsline {chapter}{\numberline {15}{\tt BKL}: Block Kernighan-Lin Object}{117}
\contentsline {section}{\numberline {15.1}Data Structure}{117}
\contentsline {section}{\numberline {15.2}Prototypes and descriptions of {\tt BKL} methods}{118}
\contentsline {section}{\numberline {15.3}Basic methods}{118}
\contentsline {subsection}{\numberline {15.3.1}Initializer methods}{118}
\contentsline {subsection}{\numberline {15.3.2}Utility methods}{119}
\contentsline {subsection}{\numberline {15.3.3}Partition evaluation methods}{120}
\contentsline {subsection}{\numberline {15.3.4}Partition improvement methods}{120}
\contentsline {chapter}{\numberline {16}{\tt BPG}: Bipartite Graph Object}{122}
\contentsline {section}{\numberline {16.1}Data Structure}{124}
\contentsline {section}{\numberline {16.2}Prototypes and descriptions of {\tt BPG} methods}{124}
\contentsline {subsection}{\numberline {16.2.1}Basic methods}{124}
\contentsline {subsection}{\numberline {16.2.2}Initializer methods}{125}
\contentsline {subsection}{\numberline {16.2.3}Generate induced graphs}{125}
\contentsline {subsection}{\numberline {16.2.4}Utility methods}{125}
\contentsline {subsection}{\numberline {16.2.5}Dulmage-Mendelsohn decomposition method}{126}
\contentsline {subsection}{\numberline {16.2.6}IO methods}{126}
\contentsline {section}{\numberline {16.3}Driver programs for the {\tt BPG} object}{127}
\contentsline {chapter}{\numberline {17}{\tt DSTree}: \penalty -\@M A Domain/Separator Tree Object}{129}
\contentsline {section}{\numberline {17.1}Data Structure}{129}
\contentsline {section}{\numberline {17.2}Prototypes and descriptions of {\tt DSTree} methods}{129}
\contentsline {subsection}{\numberline {17.2.1}Basic methods}{130}
\contentsline {subsection}{\numberline {17.2.2}Instance methods}{130}
\contentsline {subsection}{\numberline {17.2.3}Initializer methods}{130}
\contentsline {subsection}{\numberline {17.2.4}Stage methods}{131}
\contentsline {subsection}{\numberline {17.2.5}Utility methods}{132}
\contentsline {subsection}{\numberline {17.2.6}IO methods}{132}
\contentsline {section}{\numberline {17.3}Driver programs for the {\tt DSTree} object}{133}
\contentsline {chapter}{\numberline {18}{\tt EGraph}: Element Graph Object}{135}
\contentsline {section}{\numberline {18.1}Data Structure}{135}
\contentsline {section}{\numberline {18.2}Prototypes and descriptions of {\tt EGraph} methods}{135}
\contentsline {subsection}{\numberline {18.2.1}Basic methods}{136}
\contentsline {subsection}{\numberline {18.2.2}Initializer methods}{136}
\contentsline {subsection}{\numberline {18.2.3}Utility methods}{136}
\contentsline {subsection}{\numberline {18.2.4}IO methods}{137}
\contentsline {section}{\numberline {18.3}Driver programs for the {\tt EGraph} object}{138}
\contentsline {chapter}{\numberline {19}{\tt ETree}: Elimination and Front Trees}{140}
\contentsline {section}{\numberline {19.1}Data Structure}{140}
\contentsline {section}{\numberline {19.2}Prototypes and descriptions of {\tt ETree} methods}{141}
\contentsline {subsection}{\numberline {19.2.1}Basic methods}{141}
\contentsline {subsection}{\numberline {19.2.2}Instance methods}{141}
\contentsline {subsection}{\numberline {19.2.3}Initializer methods}{143}
\contentsline {subsection}{\numberline {19.2.4}Utility methods}{144}
\contentsline {subsection}{\numberline {19.2.5}Metrics methods}{146}
\contentsline {subsection}{\numberline {19.2.6}Compression methods}{146}
\contentsline {subsection}{\numberline {19.2.7}Justification methods}{147}
\contentsline {subsection}{\numberline {19.2.8}Permutation methods}{148}
\contentsline {subsection}{\numberline {19.2.9}Multisector methods}{148}
\contentsline {subsection}{\numberline {19.2.10}Transformation methods}{150}
\contentsline {subsection}{\numberline {19.2.11}Parallel factorization map methods}{151}
\contentsline {subsection}{\numberline {19.2.12}Storage profile methods}{152}
\contentsline {subsection}{\numberline {19.2.13}IO methods}{153}
\contentsline {section}{\numberline {19.3}Driver programs for the {\tt ETree} object}{154}
\contentsline {chapter}{\numberline {20}{\tt GPart}: Graph Partitioning Object}{165}
\contentsline {section}{\numberline {20.1}Data Structures}{166}
\contentsline {section}{\numberline {20.2}Prototypes and descriptions of {\tt GPart} methods}{167}
\contentsline {subsection}{\numberline {20.2.1}Basic methods}{167}
\contentsline {subsection}{\numberline {20.2.2}Initializer methods}{168}
\contentsline {subsection}{\numberline {20.2.3}Utility methods}{168}
\contentsline {subsection}{\numberline {20.2.4}Domain decomposition methods}{169}
\contentsline {subsection}{\numberline {20.2.5}Methods to generate a 2-set partition}{170}
\contentsline {subsection}{\numberline {20.2.6}Methods to improve a 2-set partition}{170}
\contentsline {subsection}{\numberline {20.2.7}Recursive Bisection method}{172}
\contentsline {subsection}{\numberline {20.2.8}{\tt DDsepInfo} methods}{172}
\contentsline {section}{\numberline {20.3}Driver programs for the {\tt GPart} object}{173}
\contentsline {chapter}{\numberline {21}{\tt Graph}: A Graph object}{177}
\contentsline {section}{\numberline {21.1}Data Structure}{178}
\contentsline {section}{\numberline {21.2}Prototypes and descriptions of {\tt Graph} methods}{178}
\contentsline {subsection}{\numberline {21.2.1}Basic methods}{178}
\contentsline {subsection}{\numberline {21.2.2}Initializer methods}{179}
\contentsline {subsection}{\numberline {21.2.3}Compress and Expand methods}{180}
\contentsline {subsection}{\numberline {21.2.4}Wirebasket domain decomposition ordering}{180}
\contentsline {subsection}{\numberline {21.2.5}Utility methods}{181}
\contentsline {subsection}{\numberline {21.2.6}IO methods}{182}
\contentsline {section}{\numberline {21.3}Driver programs for the {\tt Graph} object}{183}
\contentsline {chapter}{\numberline {22}{\tt MSMD}: \penalty -\@M {\tt M}ulti-{\tt S}tage {\tt M}inimum {\tt D}egree Object}{187}
\contentsline {section}{\numberline {22.1}Data Structure}{188}
\contentsline {subsection}{\numberline {22.1.1}{\tt MSMDinfo} : define your algorithm}{189}
\contentsline {subsection}{\numberline {22.1.2}{\tt MSMD} : driver object}{190}
\contentsline {subsection}{\numberline {22.1.3}{\tt MSMDstageInfo} : statistics object for a stage of the elimination}{190}
\contentsline {subsection}{\numberline {22.1.4}{\tt MSMDvtx} : vertex object}{191}
\contentsline {section}{\numberline {22.2}Prototypes and descriptions of {\tt MSMDinfo} methods}{191}
\contentsline {subsection}{\numberline {22.2.1}Basic methods}{191}
\contentsline {subsection}{\numberline {22.2.2}Utility methods}{192}
\contentsline {section}{\numberline {22.3}Prototypes and descriptions of {\tt MSMD} methods}{192}
\contentsline {subsection}{\numberline {22.3.1}Basic methods --- public}{192}
\contentsline {subsection}{\numberline {22.3.2}Initialization methods --- public}{193}
\contentsline {subsection}{\numberline {22.3.3}Ordering methods --- public}{193}
\contentsline {subsection}{\numberline {22.3.4}Extraction methods --- public}{193}
\contentsline {subsection}{\numberline {22.3.5}Internal methods --- private}{194}
\contentsline {section}{\numberline {22.4}Prototypes and descriptions of {\tt MSMDvtx} methods}{195}
\contentsline {section}{\numberline {22.5}Driver programs for the {\tt MSMD} object}{195}
\contentsline {chapter}{\numberline {23}{\tt Network}: Simple Max-flow solver}{198}
\contentsline {section}{\numberline {23.1}Data Structure}{199}
\contentsline {section}{\numberline {23.2}Prototypes and descriptions of {\tt Network} methods}{200}
\contentsline {subsection}{\numberline {23.2.1}Basic methods}{200}
\contentsline {subsection}{\numberline {23.2.2}Initializer methods}{201}
\contentsline {subsection}{\numberline {23.2.3}Utility methods}{201}
\contentsline {subsection}{\numberline {23.2.4}IO methods}{202}
\contentsline {chapter}{\numberline {24}{\tt SolveMap}: Forward and Backsolve Map}{203}
\contentsline {section}{\numberline {24.1}Data Structure}{203}
\contentsline {section}{\numberline {24.2}Prototypes and descriptions of {\tt SolveMap} methods}{204}
\contentsline {subsection}{\numberline {24.2.1}Basic methods}{204}
\contentsline {subsection}{\numberline {24.2.2}Instance methods}{204}
\contentsline {subsection}{\numberline {24.2.3}Initialization method}{205}
\contentsline {subsection}{\numberline {24.2.4}Map creation methods}{206}
\contentsline {subsection}{\numberline {24.2.5}Solve setup methods}{206}
\contentsline {subsection}{\numberline {24.2.6}Utility methods}{206}
\contentsline {subsection}{\numberline {24.2.7}IO methods}{207}
\contentsline {chapter}{\numberline {25}{\tt Tree}: A Tree Object}{209}
\contentsline {section}{\numberline {25.1}Data Structure}{209}
\contentsline {section}{\numberline {25.2}Prototypes and descriptions of {\tt Tree} methods}{209}
\contentsline {subsection}{\numberline {25.2.1}Basic methods}{210}
\contentsline {subsection}{\numberline {25.2.2}Instance methods}{210}
\contentsline {subsection}{\numberline {25.2.3}Initializer methods}{211}
\contentsline {subsection}{\numberline {25.2.4}Utility methods}{211}
\contentsline {subsection}{\numberline {25.2.5}Metrics methods}{213}
\contentsline {subsection}{\numberline {25.2.6}Compression methods}{214}
\contentsline {subsection}{\numberline {25.2.7}Justification methods}{214}
\contentsline {subsection}{\numberline {25.2.8}Permutation methods}{214}
\contentsline {subsection}{\numberline {25.2.9}Drawing method}{215}
\contentsline {subsection}{\numberline {25.2.10}IO methods}{216}
\contentsline {section}{\numberline {25.3}Driver programs for the {\tt Tree} object}{217}
\contentsline {part}{\uppercase {iv}\hspace {1em}Numeric Objects and Methods}{219}
\contentsline {chapter}{\numberline {26}{\tt Chv}: Block chevron}{221}
\contentsline {section}{\numberline {26.1}Data Structure}{223}
\contentsline {section}{\numberline {26.2}Prototypes and descriptions of {\tt Chv} methods}{223}
\contentsline {subsection}{\numberline {26.2.1}Basic methods}{224}
\contentsline {subsection}{\numberline {26.2.2}Instance methods}{224}
\contentsline {subsection}{\numberline {26.2.3}Initialization methods}{226}
\contentsline {subsection}{\numberline {26.2.4}Search methods}{227}
\contentsline {subsection}{\numberline {26.2.5}Pivot methods}{228}
\contentsline {subsection}{\numberline {26.2.6}Update methods}{228}
\contentsline {subsection}{\numberline {26.2.7}Assembly methods}{229}
\contentsline {subsection}{\numberline {26.2.8}Factorization methods}{229}
\contentsline {subsection}{\numberline {26.2.9}Copy methods}{230}
\contentsline {subsection}{\numberline {26.2.10}Swap methods}{232}
\contentsline {subsection}{\numberline {26.2.11}Utility methods}{233}
\contentsline {subsection}{\numberline {26.2.12}IO methods}{234}
\contentsline {section}{\numberline {26.3}Driver programs for the {\tt Chv object}}{235}
\contentsline {chapter}{\numberline {27}{\tt ChvList}: {\tt Chv} list object }{240}
\contentsline {section}{\numberline {27.1}Data Structure}{241}
\contentsline {section}{\numberline {27.2}Prototypes and descriptions of {\tt ChvList} methods}{241}
\contentsline {subsection}{\numberline {27.2.1}Basic methods}{241}
\contentsline {subsection}{\numberline {27.2.2}Initialization methods}{242}
\contentsline {subsection}{\numberline {27.2.3}Utility methods}{242}
\contentsline {subsection}{\numberline {27.2.4}IO methods}{242}
\contentsline {chapter}{\numberline {28}{\tt ChvManager}: {\tt Chv} manager object }{243}
\contentsline {section}{\numberline {28.1}Data Structure}{244}
\contentsline {section}{\numberline {28.2}Prototypes and descriptions of {\tt ChvManager} methods}{244}
\contentsline {subsection}{\numberline {28.2.1}Basic methods}{244}
\contentsline {subsection}{\numberline {28.2.2}Initialization methods}{245}
\contentsline {subsection}{\numberline {28.2.3}Utility methods}{245}
\contentsline {subsection}{\numberline {28.2.4}IO methods}{245}
\contentsline {chapter}{\numberline {29}{\tt DenseMtx}: Dense matrix object}{246}
\contentsline {section}{\numberline {29.1}Data Structure}{246}
\contentsline {section}{\numberline {29.2}Prototypes and descriptions of {\tt DenseMtx} methods}{247}
\contentsline {subsection}{\numberline {29.2.1}Basic methods}{247}
\contentsline {subsection}{\numberline {29.2.2}Instance methods}{247}
\contentsline {subsection}{\numberline {29.2.3}Initialization methods}{249}
\contentsline {subsection}{\numberline {29.2.4}Utility methods}{250}
\contentsline {subsection}{\numberline {29.2.5}IO methods}{252}
\contentsline {chapter}{\numberline {30}{\tt FrontMtx}: Front matrix}{254}
\contentsline {section}{\numberline {30.1}Data Structures}{257}
\contentsline {section}{\numberline {30.2}Prototypes and descriptions of {\tt FrontMtx} methods}{259}
\contentsline {subsection}{\numberline {30.2.1}Basic methods}{259}
\contentsline {subsection}{\numberline {30.2.2}Instance methods}{259}
\contentsline {subsection}{\numberline {30.2.3}Initialization methods}{261}
\contentsline {subsection}{\numberline {30.2.4}Utility Factorization methods}{262}
\contentsline {subsection}{\numberline {30.2.5}Serial Factorization method}{264}
\contentsline {subsection}{\numberline {30.2.6}QR factorization utility methods}{265}
\contentsline {subsection}{\numberline {30.2.7}Serial $QR$ Factorization method}{266}
\contentsline {subsection}{\numberline {30.2.8}Postprocessing methods}{266}
\contentsline {subsection}{\numberline {30.2.9}Utility Solve methods}{267}
\contentsline {subsection}{\numberline {30.2.10}Serial Solve method}{268}
\contentsline {subsection}{\numberline {30.2.11}Serial $QR$ Solve method}{269}
\contentsline {subsection}{\numberline {30.2.12}Utility methods}{269}
\contentsline {subsection}{\numberline {30.2.13}IO methods}{270}
\contentsline {section}{\numberline {30.3}Driver programs for the {\tt DFrontMtx} object}{271}
\contentsline {chapter}{\numberline {31}{\tt ILUMtx}: Incomplete $LU$ Matrix Object}{273}
\contentsline {section}{\numberline {31.1}Data Structure}{273}
\contentsline {section}{\numberline {31.2}Prototypes and descriptions of {\tt ILUMtx} methods}{274}
\contentsline {subsection}{\numberline {31.2.1}Basic methods}{274}
\contentsline {subsection}{\numberline {31.2.2}Initialization Methods}{275}
\contentsline {subsection}{\numberline {31.2.3}Factorization Methods}{275}
\contentsline {subsection}{\numberline {31.2.4}Solve Methods}{275}
\contentsline {subsection}{\numberline {31.2.5}Utility methods}{276}
\contentsline {subsection}{\numberline {31.2.6}IO methods}{276}
\contentsline {section}{\numberline {31.3}Driver programs for the {\tt ILUMtx} object}{277}
\contentsline {chapter}{\numberline {32}{\tt InpMtx}: Input Matrix Object}{278}
\contentsline {section}{\numberline {32.1}Data Structure}{279}
\contentsline {section}{\numberline {32.2}Prototypes and descriptions of {\tt InpMtx} methods}{281}
\contentsline {subsection}{\numberline {32.2.1}Basic methods}{281}
\contentsline {subsection}{\numberline {32.2.2}Instance Methods}{281}
\contentsline {subsection}{\numberline {32.2.3}Methods to initialize and change state}{284}
\contentsline {subsection}{\numberline {32.2.4}Input methods}{285}
\contentsline {subsection}{\numberline {32.2.5}Permutation, map and support methods}{286}
\contentsline {subsection}{\numberline {32.2.6}Matrix-matrix multiply methods}{287}
\contentsline {subsection}{\numberline {32.2.7}Graph construction methods}{289}
\contentsline {subsection}{\numberline {32.2.8}Submatrix extraction method}{290}
\contentsline {subsection}{\numberline {32.2.9}Utility methods}{290}
\contentsline {subsection}{\numberline {32.2.10}IO methods}{292}
\contentsline {section}{\numberline {32.3}Driver programs for the {\tt InpMtx} object}{293}
\contentsline {chapter}{\numberline {33}{\tt Iter}: Iterative Methods}{301}
\contentsline {section}{\numberline {33.1}Data Structure}{301}
\contentsline {section}{\numberline {33.2}Prototypes and descriptions of {\tt Iter} methods}{301}
\contentsline {subsection}{\numberline {33.2.1}Utility methods}{301}
\contentsline {subsection}{\numberline {33.2.2}Iterative methods}{303}
\contentsline {section}{\numberline {33.3}Driver programs}{306}
\contentsline {chapter}{\numberline {34}{\tt PatchAndGoInfo}: Pivot Modification Object}{311}
\contentsline {section}{\numberline {34.1}Data Structure}{312}
\contentsline {section}{\numberline {34.2}Prototypes and descriptions of {\tt PatchAndGoInfo} methods}{312}
\contentsline {subsection}{\numberline {34.2.1}Basic methods}{312}
\contentsline {subsection}{\numberline {34.2.2}Initializer methods}{313}
\contentsline {chapter}{\numberline {35}{\tt Pencil}: Matrix pencil}{314}
\contentsline {section}{\numberline {35.1}Data Structure}{314}
\contentsline {section}{\numberline {35.2}Prototypes and descriptions of {\tt Pencil} methods}{314}
\contentsline {subsection}{\numberline {35.2.1}Basic methods}{314}
\contentsline {subsection}{\numberline {35.2.2}Initialization methods}{315}
\contentsline {subsection}{\numberline {35.2.3}Utility methods}{315}
\contentsline {subsection}{\numberline {35.2.4}IO methods}{316}
\contentsline {chapter}{\numberline {36}{\tt SemiImplMtx}: Semi-Implicit Factorization}{317}
\contentsline {section}{\numberline {36.1}Data Structure}{318}
\contentsline {section}{\numberline {36.2}Prototypes and descriptions of {\tt SemiImplMtx} methods}{318}
\contentsline {subsection}{\numberline {36.2.1}Basic methods}{318}
\contentsline {subsection}{\numberline {36.2.2}Initialization Methods}{319}
\contentsline {subsection}{\numberline {36.2.3}Solve Methods}{319}
\contentsline {subsection}{\numberline {36.2.4}Utility methods}{320}
\contentsline {subsection}{\numberline {36.2.5}IO methods}{320}
\contentsline {section}{\numberline {36.3}Driver programs for the {\tt SemiImplMtx} object}{320}
\contentsline {chapter}{\numberline {37}{\tt SubMtx}: Submatrix object}{322}
\contentsline {section}{\numberline {37.1}Data Structure}{323}
\contentsline {section}{\numberline {37.2}Prototypes and descriptions of {\tt SubMtx} methods}{324}
\contentsline {subsection}{\numberline {37.2.1}Basic methods}{325}
\contentsline {subsection}{\numberline {37.2.2}Instance methods}{325}
\contentsline {subsection}{\numberline {37.2.3}Initialization methods}{328}
\contentsline {subsection}{\numberline {37.2.4}Vector scaling methods}{329}
\contentsline {subsection}{\numberline {37.2.5}Solve methods}{329}
\contentsline {subsection}{\numberline {37.2.6}Utility methods}{330}
\contentsline {subsection}{\numberline {37.2.7}IO methods}{331}
\contentsline {section}{\numberline {37.3}Driver programs for the {\tt SubMtx object}}{333}
\contentsline {chapter}{\numberline {38}{\tt SubMtxList}: {\tt SubMtx} list object }{337}
\contentsline {section}{\numberline {38.1}Data Structure}{338}
\contentsline {section}{\numberline {38.2}Prototypes and descriptions of {\tt SubMtxList} methods}{338}
\contentsline {subsection}{\numberline {38.2.1}Basic methods}{338}
\contentsline {subsection}{\numberline {38.2.2}Initialization methods}{339}
\contentsline {subsection}{\numberline {38.2.3}Utility methods}{339}
\contentsline {subsection}{\numberline {38.2.4}IO methods}{339}
\contentsline {chapter}{\numberline {39}{\tt SubMtxManager}: {\tt SubMtx} object manager}{340}
\contentsline {section}{\numberline {39.1}Data Structure}{341}
\contentsline {section}{\numberline {39.2}Prototypes and descriptions of {\tt SubMtxManager} methods}{341}
\contentsline {subsection}{\numberline {39.2.1}Basic methods}{341}
\contentsline {subsection}{\numberline {39.2.2}Initialization methods}{342}
\contentsline {subsection}{\numberline {39.2.3}Utility methods}{342}
\contentsline {subsection}{\numberline {39.2.4}IO methods}{342}
\contentsline {chapter}{\numberline {40}{\tt SymbFac}: Symbolic Factorization}{343}
\contentsline {section}{\numberline {40.1}Data Structure}{343}
\contentsline {section}{\numberline {40.2}Prototypes and descriptions of {\tt SymbFac} methods}{343}
\contentsline {subsection}{\numberline {40.2.1}Symbolic factorization methods}{343}
\contentsline {section}{\numberline {40.3}Driver programs }{344}
\contentsline {part}{\uppercase {v}\hspace {1em}Miscellaneous Methods}{346}
\contentsline {chapter}{\numberline {41}{\tt Misc} directory}{348}
\contentsline {section}{\numberline {41.1}Prototypes and descriptions of methods in the {\tt Misc} directory}{348}
\contentsline {subsection}{\numberline {41.1.1}Theoretical nested dissection methods}{348}
\contentsline {subsection}{\numberline {41.1.2}Multiple minimum degree, Nested dissection and multisection wrapper methods}{350}
\contentsline {subsection}{\numberline {41.1.3}Graph drawing method}{351}
\contentsline {subsection}{\numberline {41.1.4}Linear system construction}{351}
\contentsline {section}{\numberline {41.2}Driver programs found in the {\tt Misc} directory}{352}
\contentsline {part}{\uppercase {vi}\hspace {1em}Multithreaded Methods}{361}
\contentsline {chapter}{\numberline {42}{\tt MT} directory}{363}
\contentsline {section}{\numberline {42.1}Data Structure}{364}
\contentsline {section}{\numberline {42.2}Prototypes and descriptions of {\tt MT} methods}{364}
\contentsline {subsection}{\numberline {42.2.1}Matrix-matrix multiply methods}{364}
\contentsline {subsection}{\numberline {42.2.2}Multithreaded Factorization methods}{365}
\contentsline {subsection}{\numberline {42.2.3}Multithreaded $QR$ Factorization method}{366}
\contentsline {subsection}{\numberline {42.2.4}Multithreaded Solve method}{366}
\contentsline {subsection}{\numberline {42.2.5}Multithreaded $QR$ Solve method}{367}
\contentsline {section}{\numberline {42.3}Driver programs for the multithreaded functions}{367}
\contentsline {part}{\uppercase {vii}\hspace {1em}MPI Methods}{373}
\contentsline {chapter}{\numberline {43}{\tt MPI} directory}{375}
\contentsline {section}{\numberline {43.1}Data Structure}{375}
\contentsline {subsection}{\numberline {43.1.1}{\tt MatMulInfo} : Matrix-matrix multiply information object}{375}
\contentsline {section}{\numberline {43.2}Prototypes and descriptions of {\tt MPI} methods}{376}
\contentsline {subsection}{\numberline {43.2.1}Split and redistribution methods}{376}
\contentsline {subsection}{\numberline {43.2.2}Gather and scatter methods}{379}
\contentsline {subsection}{\numberline {43.2.3}Symbolic Factorization methods}{379}
\contentsline {subsection}{\numberline {43.2.4}Numeric Factorization methods}{380}
\contentsline {subsection}{\numberline {43.2.5}Post-processing methods}{381}
\contentsline {subsection}{\numberline {43.2.6}Numeric Solve methods}{382}
\contentsline {subsection}{\numberline {43.2.7}Matrix-matrix multiply methods}{383}
\contentsline {subsection}{\numberline {43.2.8}Broadcast methods}{384}
\contentsline {subsection}{\numberline {43.2.9}Utility methods}{385}
\contentsline {section}{\numberline {43.3}Driver programs}{386}
