--- /tmp/spooles-2.2-146bt9czd3/debian/spooles-doc_2.2-14_all.deb +++ spooles-doc_2.2-14_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2018-12-19 22:56:58.000000 debian-binary │ --rw-r--r-- 0 0 0 1948 2018-12-19 22:56:58.000000 control.tar.xz │ --rw-r--r-- 0 0 0 8161136 2018-12-19 22:56:58.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1944 2018-12-19 22:56:58.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 8141868 2018-12-19 22:56:58.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: spooles-doc │ │ │ Source: spooles │ │ │ Version: 2.2-14 │ │ │ Architecture: all │ │ │ Maintainer: Debian Science Maintainers │ │ │ -Installed-Size: 8098 │ │ │ +Installed-Size: 8078 │ │ │ Suggests: libspooles2.2-dev │ │ │ Section: doc │ │ │ Priority: optional │ │ │ Homepage: http://www.netlib.org/linalg/spooles/ │ │ │ Description: SPOOLES numerical simulation pre- and post-processor documentation │ │ │ SPOOLES is a library for solving sparse real and complex linear systems of │ │ │ equations, written in the C language using object oriented design. │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── file list │ │ │ @@ -1,56 +1,56 @@ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/doc/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ │ │ │ --rw-r--r-- 0 root (0) root (0) 148890 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 148445 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 596035 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ASHCRAFC.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 323484 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124423 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 152460 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 188758 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 97466 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 98472 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 118019 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 112995 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 130731 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 114955 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 103911 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 118685 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 219434 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 251248 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 176848 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 280782 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 181185 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 188321 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 128553 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 106760 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 118708 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121510 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 99177 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 203167 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 280115 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 93187 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 172683 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 173233 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 159813 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 143066 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 139815 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121626 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 103419 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 910197 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 149684 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 130911 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 172693 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 98131 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 114603 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117544 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 165375 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 186719 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124703 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 323469 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124030 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 152106 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 188290 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 97021 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 98044 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117596 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 112553 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 130304 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 114461 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 103505 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 118230 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 218979 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 250613 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 176501 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 279521 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 180705 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 187904 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 128134 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 106331 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 118277 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121098 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 98846 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 202681 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 279225 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 92738 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 172291 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 172787 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 159373 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 142648 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 139403 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121224 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 103042 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 909234 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 149303 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 130462 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 172227 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 97696 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 114190 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117141 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 165020 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 186304 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124283 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 1881 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/changelog.Debian.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 378 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/copyright │ │ │ --rw-r--r-- 0 root (0) root (0) 187241 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 186817 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 9600 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/spooles.2.2.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/doc-base/ │ │ │ -rw-r--r-- 0 root (0) root (0) 430 2018-12-19 22:56:58.000000 ./usr/share/doc-base/spooles │ │ ├── ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ ├── A2.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMSY10 CMTI10 CMSL10 │ │ │ │ %%+ CMMI12 CMMI7 CMR7 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o A2.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1367,22 +1367,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1556,88 +1556,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4167,16 +4156,16 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 205[33 33 49[{}2 58.1154 /CMR7 rf /Fb 149[27 │ │ │ │ 21[39 11[54 72[{}3 58.1154 /CMMI7 rf /Fc 173[74 77 81[{}2 │ │ │ │ 99.6264 /CMMI12 rf /Fd 133[50 59 3[62 44 44 46 2[56 62 │ │ │ │ 93 31 2[31 62 1[34 51 62 50 1[54 11[86 1[62 3[84 88 106 │ │ │ │ 3[42 6[80 9[56 56 56 56 56 56 56 56 2[31 46[{}33 99.6264 │ │ │ │ -/CMBX12 rf /Fe 141[33 4[69 7[37 1[37 46 29[63 9[23 1[42 │ │ │ │ -5[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Ff 139[62 │ │ │ │ +/CMBX12 rf /Fe 139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 │ │ │ │ +7[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Ff 139[62 │ │ │ │ 4[62 4[62 4[62 1[62 62 32[62 14[62 50[{}8 119.552 /CMTT12 │ │ │ │ rf /Fg 136[55 1[45 28 34 35 1[42 42 47 68 21 38 1[25 │ │ │ │ 42 38 1[38 42 38 38 42 12[59 1[61 11[54 56 63 2[62 6[25 │ │ │ │ 58[{}26 83.022 /CMTI10 rf /Fh 240[42 14[65{}2 83.022 │ │ │ │ /CMSY10 rf /Fi 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ 3[37 75 67 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 │ │ │ │ 67 2[37 46[{}25 119.552 /CMBX12 rf /Fj 137[40 48 2[37 │ │ │ │ @@ -4268,17 +4257,17 @@ │ │ │ │ 2397 4912 V 31 w(BY)p 2516 4912 V 31 w(COLUMNS)p Fl(.)0 │ │ │ │ 5204 y Fi(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Ff(A2)f Fi(metho)t(ds)0 5407 y Fl(This)28 b(section)f(con)n(tains)f │ │ │ │ (brief)i(descriptions)f(including)h(protot)n(yp)r(es)e(of)i(all)f │ │ │ │ (metho)r(ds)h(that)g(b)r(elong)f(to)g(the)h Fk(A2)f Fl(ob)5 │ │ │ │ b(ject.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 125 100 1212 4 v │ │ │ │ -1377 w Fk(A2)26 b Fe(:)37 b Fg(DRAFT)28 b Fe(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2689 100 V 0 390 a Fd(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 125 100 1244 4 v │ │ │ │ +1409 w Fk(A2)27 b Fe(:)37 b Fg(DRAFT)27 b Fe(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2656 100 V 0 390 a Fd(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 573 y Fl(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g(to) │ │ │ │ h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ (\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 672 y(data,)27 │ │ │ │ b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 889 y(1.)42 │ │ │ │ b Fk(A2)g(*)h(A2_new)f(\()h(void)f(\))h(;)208 1027 y │ │ │ │ Fl(This)28 b(metho)r(d)g(simply)h(allo)r(cates)e(storage)f(for)h(the)i │ │ │ │ Fk(A2)e Fl(structure)h(and)g(then)h(sets)f(the)g(default)h(\014elds)f │ │ │ │ @@ -4337,17 +4326,17 @@ │ │ │ │ b Fk(double)f(*)i(A2_entries)c(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ 5270 y Fl(This)27 b(metho)r(d)h(returns)f(a)g(p)r(oin)n(ter)g(to)h(the) │ │ │ │ g(base)f(address)f(of)i(the)g(en)n(tries.)208 5407 y │ │ │ │ Fg(Err)l(or)i(che)l(cking:)38 b Fl(If)28 b Fk(mtx)f Fl(is)g │ │ │ │ Fk(NULL)p Fl(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f(the)h │ │ │ │ (program)e(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1212 4 v 1377 100 a Fk(A2)27 │ │ │ │ -b Fe(:)37 b Fg(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -2649 100 V 1212 w Fl(3)101 390 y(6.)42 b Fk(double)f(*)i(A2_row)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 83 100 1244 4 v 1410 100 a Fk(A2)27 │ │ │ │ +b Fe(:)37 b Fg(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2617 100 V 1244 w Fl(3)101 390 y(6.)42 b Fk(double)f(*)i(A2_row)e(\()i │ │ │ │ (A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 541 y Fl(This)27 │ │ │ │ b(metho)r(d)h(returns)f(a)g(p)r(oin)n(ter)g(to)h(the)g(leading)f │ │ │ │ (elemen)n(t)h(of)f(ro)n(w)g Fk(irow)p Fl(.)208 691 y │ │ │ │ Fg(Err)l(or)k(che)l(cking:)41 b Fl(If)29 b Fk(mtx)f Fl(or)g │ │ │ │ Fk(entries)e Fl(is)j Fk(NULL)p Fl(,)e(or)h(if)i Fk(irow)d │ │ │ │ Fl(is)i(not)f(in)i Fk([0,n1-1])p Fl(,)c(an)i(error)f(message)g(is)i │ │ │ │ (prin)n(ted)208 791 y(and)e(the)h(program)e(exits.)101 │ │ │ │ @@ -4418,51 +4407,51 @@ │ │ │ │ Fl(,)e Fk(ppReal)f Fl(or)i Fk(ppImag)e Fl(is)i Fk(NULL)p │ │ │ │ Fl(,)f(or)h(if)g(the)h(matrix)f(is)g(not)h(complex,)f(or)f(if)i │ │ │ │ Fk(irow)e Fl(is)h(not)h(in)208 5407 y Fk([0,n1-1])p Fl(,)c(or)j(if)h │ │ │ │ Fk(jcol)e Fl(is)h(not)h(in)g Fk([0,n2-1])p Fl(,)c(an)j(error)f(message) │ │ │ │ g(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 125 100 1212 4 v │ │ │ │ -1377 w Fk(A2)26 b Fe(:)37 b Fg(DRAFT)28 b Fe(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2689 100 V 0 390 a Fd(1.2.3)112 b(Initialize)38 │ │ │ │ -b(metho)s(ds)101 574 y Fl(1.)k Fk(void)f(A2_init)g(\()i(A2)g(*mtx,)f │ │ │ │ -(int)g(type,)f(int)i(n1,)f(int)h(n2,)f(int)g(inc1,)g(int)g(inc2,)861 │ │ │ │ -674 y(double)f(*entries)g(\))i(;)208 812 y Fl(This)30 │ │ │ │ -b(is)h(the)g(basic)f(initializer)h(metho)r(d.)47 b(W)-7 │ │ │ │ -b(e)31 b(require)e(that)i Fk(mtx)f Fl(not)h(b)r(e)g Fk(NULL)p │ │ │ │ -Fl(,)e Fk(type)g Fl(b)r(e)j(either)e Fk(SPOOLES)p 3702 │ │ │ │ -812 27 4 v 29 w(REAL)208 912 y Fl(or)d Fk(SPOOLES)p 623 │ │ │ │ -912 V 29 w(COMPLEX)p Fl(,)e Fk(n1)j Fl(and)g Fk(n2)g │ │ │ │ -Fl(b)r(oth)h(b)r(e)g(p)r(ositiv)n(e,)f(and)h(b)r(oth)f │ │ │ │ -Fk(inc1)f Fl(and)i Fk(inc2)e Fl(b)r(oth)i(b)r(e)f(p)r(ositiv)n(e)g(and) │ │ │ │ -h(that)208 1012 y(one)g(of)h(them)h(b)r(e)f(equal)g(to)g(one.)44 │ │ │ │ -b(Also,)30 b(w)n(e)g(only)f(initialize)i(a)e(full)i(matrix,)f(i.e.,)h │ │ │ │ -(one)f(of)g Fk(inc1)42 b(=)h(1)30 b Fl(and)f Fk(inc2)42 │ │ │ │ -b(=)208 1111 y(nrow)26 b Fl(or)g Fk(inc1)42 b(=)h(ncol)26 │ │ │ │ -b Fl(and)i Fk(inc2)42 b(=)h(1)27 b Fl(m)n(ust)h(hold.)208 │ │ │ │ -1250 y(The)g(ob)5 b(ject)29 b(is)f(\014rst)g(cleared)g(with)h(a)f(call) │ │ │ │ -h(to)f Fk(A2)p 1780 1250 V 31 w(clearData\(\))p Fl(.)35 │ │ │ │ -b(If)29 b Fk(entries)d Fl(is)i Fk(NULL)f Fl(then)i Fk(n1*n2)e │ │ │ │ -Fl(new)i(en)n(tries)208 1350 y(are)h(found,)k Fk(mtx->entries)27 │ │ │ │ -b Fl(is)32 b(set)f(to)h(this)g(address)f(and)h Fk(nowned)d │ │ │ │ -Fl(is)j(set)g(to)g Fk(n1*n2)p Fl(.)48 b(If)32 b Fk(entries)d │ │ │ │ -Fl(is)j(not)g Fk(NULL)p Fl(,)208 1449 y(then)c Fk(mtx->entries)22 │ │ │ │ -b Fl(is)28 b(set)f(to)h Fk(entries)d Fl(and)i Fk(nowned)e │ │ │ │ -Fl(is)j(set)f(to)h(zero.)208 1588 y Fg(Err)l(or)e(che)l(cking:)37 │ │ │ │ -b Fl(If)25 b Fk(mtx)d Fl(is)i Fk(NULL)p Fl(,)f(or)g(if)h │ │ │ │ -Fk(n1)p Fl(,)g Fk(n2)p Fl(,)g Fk(inc1)f Fl(or)g Fk(inc2)f │ │ │ │ -Fl(are)h(less)h(than)g(or)f(equal)g(to)h(zero,)g(or)f(if)h(the)h │ │ │ │ -(matrix)208 1688 y(is)k(not)h(full)h(matrix)e(\(i.e.,)i │ │ │ │ -Fk(inc1)d Fl(m)n(ust)i(b)r(e)g Fk(1)f Fl(and)h Fk(inc2)e │ │ │ │ -Fl(m)n(ust)i(b)r(e)g Fk(n1)p Fl(,)g Fg(or)g Fk(inc1)f │ │ │ │ -Fl(m)n(ust)h(b)r(e)g Fk(n2)f Fl(and)h Fk(inc2)e Fl(m)n(ust)i(b)r(e)208 │ │ │ │ -1787 y Fk(1)p Fl(\),)d(an)g(error)f(message)g(is)i(prin)n(ted)f(and)h │ │ │ │ -(zero)e(is)i(returned.)101 1965 y(2.)42 b Fk(void)f(A2_subA2)g(\()i(A2) │ │ │ │ -g(*mtxA,)e(A2)i(*mtxB,)905 2065 y(int)f(firstrow,)e(int)i(lastrow,)f │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 125 100 1244 4 v │ │ │ │ +1409 w Fk(A2)27 b Fe(:)37 b Fg(DRAFT)27 b Fe(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2656 100 V 0 390 a Fd(1.2.3)112 b(Initialize)38 b(metho)s(ds)101 │ │ │ │ +574 y Fl(1.)k Fk(void)f(A2_init)g(\()i(A2)g(*mtx,)f(int)g(type,)f(int)i │ │ │ │ +(n1,)f(int)h(n2,)f(int)g(inc1,)g(int)g(inc2,)861 674 │ │ │ │ +y(double)f(*entries)g(\))i(;)208 812 y Fl(This)30 b(is)h(the)g(basic)f │ │ │ │ +(initializer)h(metho)r(d.)47 b(W)-7 b(e)31 b(require)e(that)i │ │ │ │ +Fk(mtx)f Fl(not)h(b)r(e)g Fk(NULL)p Fl(,)e Fk(type)g │ │ │ │ +Fl(b)r(e)j(either)e Fk(SPOOLES)p 3702 812 27 4 v 29 w(REAL)208 │ │ │ │ +912 y Fl(or)d Fk(SPOOLES)p 623 912 V 29 w(COMPLEX)p Fl(,)e │ │ │ │ +Fk(n1)j Fl(and)g Fk(n2)g Fl(b)r(oth)h(b)r(e)g(p)r(ositiv)n(e,)f(and)h │ │ │ │ +(b)r(oth)f Fk(inc1)f Fl(and)i Fk(inc2)e Fl(b)r(oth)i(b)r(e)f(p)r │ │ │ │ +(ositiv)n(e)g(and)h(that)208 1012 y(one)g(of)h(them)h(b)r(e)f(equal)g │ │ │ │ +(to)g(one.)44 b(Also,)30 b(w)n(e)g(only)f(initialize)i(a)e(full)i │ │ │ │ +(matrix,)f(i.e.,)h(one)f(of)g Fk(inc1)42 b(=)h(1)30 b │ │ │ │ +Fl(and)f Fk(inc2)42 b(=)208 1111 y(nrow)26 b Fl(or)g │ │ │ │ +Fk(inc1)42 b(=)h(ncol)26 b Fl(and)i Fk(inc2)42 b(=)h(1)27 │ │ │ │ +b Fl(m)n(ust)h(hold.)208 1250 y(The)g(ob)5 b(ject)29 │ │ │ │ +b(is)f(\014rst)g(cleared)g(with)h(a)f(call)h(to)f Fk(A2)p │ │ │ │ +1780 1250 V 31 w(clearData\(\))p Fl(.)35 b(If)29 b Fk(entries)d │ │ │ │ +Fl(is)i Fk(NULL)f Fl(then)i Fk(n1*n2)e Fl(new)i(en)n(tries)208 │ │ │ │ +1350 y(are)h(found,)k Fk(mtx->entries)27 b Fl(is)32 b(set)f(to)h(this)g │ │ │ │ +(address)f(and)h Fk(nowned)d Fl(is)j(set)g(to)g Fk(n1*n2)p │ │ │ │ +Fl(.)48 b(If)32 b Fk(entries)d Fl(is)j(not)g Fk(NULL)p │ │ │ │ +Fl(,)208 1449 y(then)c Fk(mtx->entries)22 b Fl(is)28 │ │ │ │ +b(set)f(to)h Fk(entries)d Fl(and)i Fk(nowned)e Fl(is)j(set)f(to)h │ │ │ │ +(zero.)208 1588 y Fg(Err)l(or)e(che)l(cking:)37 b Fl(If)25 │ │ │ │ +b Fk(mtx)d Fl(is)i Fk(NULL)p Fl(,)f(or)g(if)h Fk(n1)p │ │ │ │ +Fl(,)g Fk(n2)p Fl(,)g Fk(inc1)f Fl(or)g Fk(inc2)f Fl(are)h(less)h(than) │ │ │ │ +g(or)f(equal)g(to)h(zero,)g(or)f(if)h(the)h(matrix)208 │ │ │ │ +1688 y(is)k(not)h(full)h(matrix)e(\(i.e.,)i Fk(inc1)d │ │ │ │ +Fl(m)n(ust)i(b)r(e)g Fk(1)f Fl(and)h Fk(inc2)e Fl(m)n(ust)i(b)r(e)g │ │ │ │ +Fk(n1)p Fl(,)g Fg(or)g Fk(inc1)f Fl(m)n(ust)h(b)r(e)g │ │ │ │ +Fk(n2)f Fl(and)h Fk(inc2)e Fl(m)n(ust)i(b)r(e)208 1787 │ │ │ │ +y Fk(1)p Fl(\),)d(an)g(error)f(message)g(is)i(prin)n(ted)f(and)h(zero)e │ │ │ │ +(is)i(returned.)101 1965 y(2.)42 b Fk(void)f(A2_subA2)g(\()i(A2)g │ │ │ │ +(*mtxA,)e(A2)i(*mtxB,)905 2065 y(int)f(firstrow,)e(int)i(lastrow,)f │ │ │ │ (int)h(firstcol,)e(int)i(lastcol)f(\))i(;)208 2204 y │ │ │ │ Fl(This)27 b(initializer)g(metho)r(d)h(mak)n(es)f(the)h(ob)5 │ │ │ │ b(ject)27 b Fk(mtxA)f Fl(p)r(oin)n(t)i(in)n(to)f(a)h(submatrix)f(of)g │ │ │ │ (ob)5 b(ject)28 b Fk(mtxB)p Fl(,)e(as)208 2415 y Fk(A\(0:lastrow-fir)o │ │ │ │ (str)o(ow)o(,0)o(:la)o(st)o(col)o(-f)o(ir)o(stc)o(ol)o(\))38 │ │ │ │ b(=)43 b(B\(firstrow:lastr)o(ow)o(,)37 b(firstcol:lastcol\))208 │ │ │ │ 2626 y Fl(Note,)20 b Fk(firstrow)p Fl(,)d Fk(lastrow)p │ │ │ │ @@ -4512,17 +4501,17 @@ │ │ │ │ b(jor.)208 5308 y Fg(Err)l(or)31 b(che)l(cking:)40 b │ │ │ │ Fl(If)30 b Fk(Q)p Fl(,)e Fk(A)g Fl(or)g Fk(workDV)e Fl(is)j │ │ │ │ Fk(NULL)p Fl(,)e(or)h(if)h Fk(msglvl)41 b(>)i(0)28 b │ │ │ │ Fl(and)h Fk(msgFile)d Fl(if)j Fk(NULL)p Fl(,)e(an)h(error)f(message)g │ │ │ │ (is)208 5407 y(prin)n(ted)g(and)g(the)h(program)e(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1212 4 v 1377 100 a Fk(A2)27 │ │ │ │ -b Fe(:)37 b Fg(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -2649 100 V 1212 w Fl(5)101 390 y(4.)42 b Fk(void)f(A2_applyQT)f(\()j │ │ │ │ +TeXDict begin 5 4 bop 83 100 1244 4 v 1410 100 a Fk(A2)27 │ │ │ │ +b Fe(:)37 b Fg(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2617 100 V 1244 w Fl(5)101 390 y(4.)42 b Fk(void)f(A2_applyQT)f(\()j │ │ │ │ (A2)g(*Y,)f(A2)h(*A,)f(A2)h(*X,)f(DV)h(*workDV,)d(int)j(msglvl,)d(FILE) │ │ │ │ i(*msgFile)f(\))i(;)208 522 y Fl(This)22 b(metho)r(d)h(computes)f │ │ │ │ Fj(Y)42 b Fl(=)22 b Fj(Q)1296 491 y Fb(T)1348 522 y Fj(X)29 │ │ │ │ b Fl(\(if)23 b(real\))f(or)f Fj(Y)42 b Fl(=)22 b Fj(Q)2077 │ │ │ │ 491 y Fb(H)2140 522 y Fj(X)29 b Fl(\(if)23 b(complex\),)g(where)f │ │ │ │ Fj(Q)g Fl(is)g(stored)g(in)g(Householder)208 621 y(v)n(ectors)d(inside) │ │ │ │ j Fj(A)p Fl(.)35 b(W)-7 b(e)21 b(assume)g(that)h Fj(A)p │ │ │ │ @@ -4590,18 +4579,18 @@ │ │ │ │ 5176 y Fl(This)27 b(metho)r(d)h(returns)f(the)h(one-norm)e(of)i(ro)n(w) │ │ │ │ e Fk(irow)g Fl(of)i(the)g(matrix.)208 5308 y Fg(Err)l(or)d(che)l │ │ │ │ (cking:)36 b Fl(If)22 b Fk(mtx)f Fl(is)h Fk(NULL)p Fl(,)e(or)i │ │ │ │ Fk(irow)e Fl(is)i(not)g(in)g Fk([0,n1-1])p Fl(,)e(an)i(error)e(message) │ │ │ │ h(is)h(prin)n(ted)g(and)g(the)g(program)208 5407 y(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fl(6)p 125 100 1212 4 v │ │ │ │ -1377 w Fk(A2)26 b Fe(:)37 b Fg(DRAFT)28 b Fe(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2689 100 V 101 390 a Fl(9.)42 b Fk(double)f(A2_twoNormOfRow)c │ │ │ │ -(\()43 b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 521 y Fl(This)27 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 125 100 1244 4 v │ │ │ │ +1409 w Fk(A2)27 b Fe(:)37 b Fg(DRAFT)27 b Fe(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2656 100 V 101 390 a Fl(9.)42 b Fk(double)f(A2_twoNormOfRow)c(\()43 │ │ │ │ +b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 521 y Fl(This)27 │ │ │ │ b(metho)r(d)h(returns)f(the)h(t)n(w)n(o-norm)e(of)h(ro)n(w)g │ │ │ │ Fk(irow)f Fl(of)h(the)h(matrix.)208 652 y Fg(Err)l(or)d(che)l(cking:)36 │ │ │ │ b Fl(If)22 b Fk(mtx)f Fl(is)h Fk(NULL)p Fl(,)e(or)i Fk(irow)e │ │ │ │ Fl(is)i(not)g(in)g Fk([0,n1-1])p Fl(,)e(an)i(error)e(message)h(is)h │ │ │ │ (prin)n(ted)g(and)g(the)g(program)208 751 y(exits.)60 │ │ │ │ 914 y(10.)41 b Fk(double)g(A2_infinityNorm)o(OfR)o(ow)c(\()43 │ │ │ │ b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 1044 y Fl(This)27 │ │ │ │ @@ -4673,17 +4662,17 @@ │ │ │ │ (coloff)f(\))i(;)208 5218 y Fl(This)27 b(metho)r(d)h(is)g(used)f(to)h │ │ │ │ (shift)g(the)g(base)f(of)h(the)f(en)n(tries)g(and)h(adjust)g │ │ │ │ (dimensions)f(of)g(the)h Fk(A2)f Fl(ob)5 b(ject.)208 │ │ │ │ 5407 y Fk(mtx\(0:n1-rowoff)o(-1,)o(0:)o(n2)o(-co)o(lo)o(ff-)o(1\))37 │ │ │ │ b(:=)43 b(mtx\(rowoff:n1-1)o(,co)o(lo)o(ff:)o(n2)o(-1)o(\))p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1212 4 v 1377 100 a Fk(A2)27 │ │ │ │ -b Fe(:)37 b Fg(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -2649 100 V 1212 w Fl(7)208 390 y Fg(Err)l(or)k(che)l(cking:)38 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1244 4 v 1410 100 a Fk(A2)27 │ │ │ │ +b Fe(:)37 b Fg(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2617 100 V 1244 w Fl(7)208 390 y Fg(Err)l(or)j(che)l(cking:)38 │ │ │ │ b Fl(If)28 b Fk(mtx)f Fl(is)g Fk(NULL)f Fl(an)i(error)d(message)h(is)i │ │ │ │ (prin)n(ted)f(and)h(the)g(program)d(exits.)101 551 y(3.)42 │ │ │ │ b Fk(int)g(A2_rowMajor)d(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ 682 y Fl(This)27 b(metho)r(d)h(returns)f(1)g(if)h(the)g(storage)e(is)i │ │ │ │ (ro)n(w)e(ma)5 b(jor,)26 b(otherwise)h(it)h(returns)f(zero.)208 │ │ │ │ 812 y Fg(Err)l(or)j(che)l(cking:)38 b Fl(If)28 b Fk(mtx)f │ │ │ │ Fl(is)g Fk(NULL)p Fl(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ @@ -4757,19 +4746,19 @@ │ │ │ │ Fl(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ Fk(row[])d Fl(v)n(ector.)208 5308 y Fg(Err)l(or)k(che)l(cking:)39 │ │ │ │ b Fl(If)27 b Fk(mtx)p Fl(,)f Fk(entries)e Fl(or)j Fk(row[])e │ │ │ │ Fl(are)h Fk(NULL)p Fl(,)f(or)h(if)i Fk(irow)d Fl(is)i(not)g(in)h │ │ │ │ Fk([0,n1-1])p Fl(,)c(an)i(error)g(message)f(is)208 5407 │ │ │ │ y(prin)n(ted)i(and)g(the)h(program)e(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fl(8)p 125 100 1212 4 v │ │ │ │ -1377 w Fk(A2)26 b Fe(:)37 b Fg(DRAFT)28 b Fe(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2689 100 V 60 390 a Fl(13.)41 b Fk(void)g(A2_setRowDV)f(\()j │ │ │ │ -(A2)f(*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 520 │ │ │ │ -y Fl(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fk(irow)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 125 100 1244 4 v │ │ │ │ +1409 w Fk(A2)27 b Fe(:)37 b Fg(DRAFT)27 b Fe(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2656 100 V 60 390 a Fl(13.)41 b Fk(void)g(A2_setRowDV)f(\()j(A2)f │ │ │ │ +(*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 520 y │ │ │ │ +Fl(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fk(irow)g │ │ │ │ Fl(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ Fk(rowDV)d Fl(ob)5 b(ject.)208 649 y Fg(Err)l(or)32 b(che)l(cking:)44 │ │ │ │ b Fl(If)31 b Fk(mtx)e Fl(or)h Fk(rowDV)e Fl(are)i Fk(NULL)p │ │ │ │ Fl(,)e(or)i(if)h(the)f(matrix)g(is)g(not)h(real,)f(or)f(if)i │ │ │ │ Fk(irow)e Fl(is)h(not)h(in)f Fk([0,n1-1])p Fl(,)208 749 │ │ │ │ y(an)d(error)e(message)i(is)g(prin)n(ted)h(and)f(the)h(program)e │ │ │ │ (exits.)60 908 y(14.)41 b Fk(void)g(A2_setRowZV)f(\()j(A2)f(*mtx,)g(ZV) │ │ │ │ @@ -4842,17 +4831,17 @@ │ │ │ │ (n2)o(\))19 b Fl(columns)24 b(are)208 5178 y(copied.)208 │ │ │ │ 5308 y Fg(Err)l(or)30 b(che)l(cking:)38 b Fl(If)28 b │ │ │ │ Fk(mtxA)e Fl(or)g Fk(mtxB)g Fl(is)i Fk(NULL)p Fl(,)d(or)i(if)h(the)g │ │ │ │ (matrices)e(are)h(not)g(of)h(the)f(same)g(t)n(yp)r(e,)h(an)f(error)f │ │ │ │ (message)208 5407 y(is)h(prin)n(ted)h(and)f(the)h(program)e(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 83 100 1212 4 v 1377 100 a Fk(A2)27 │ │ │ │ -b Fe(:)37 b Fg(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -2649 100 V 1212 w Fl(9)60 390 y(23.)41 b Fk(void)g(A2_sub)h(\()h(A2)g │ │ │ │ +TeXDict begin 9 8 bop 83 100 1244 4 v 1410 100 a Fk(A2)27 │ │ │ │ +b Fe(:)37 b Fg(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2617 100 V 1244 w Fl(9)60 390 y(23.)41 b Fk(void)g(A2_sub)h(\()h(A2)g │ │ │ │ (*mtxA,)e(A2)h(*mtxB)g(\))h(;)208 523 y Fl(This)27 b(metho)r(d)h │ │ │ │ (subtracts)e(en)n(tries)h(in)h(matrix)e Fk(mtxB)g Fl(from)h(en)n(tries) │ │ │ │ g(in)g(matrix)g Fk(mtxA)p Fl(.)f(Note,)h Fk(mtxA)f Fl(and)h │ │ │ │ Fk(mtxB)f Fl(need)208 622 y(not)34 b(b)r(e)h(of)g(the)f(same)g(size,)i │ │ │ │ (the)f(leading)f Fk(min\(mtxA->n1,mtxB)o(->)o(n1\))28 │ │ │ │ b Fl(ro)n(ws)33 b(and)h Fk(min\(mtxA->n2,mtx)o(B->)o(n2)o(\))208 │ │ │ │ 722 y Fl(columns)27 b(are)f(subtracted.)208 855 y Fg(Err)l(or)k(che)l │ │ │ │ @@ -4939,17 +4928,17 @@ │ │ │ │ (in)i(reading)208 5275 y(the)i(data,)f(the)h(v)-5 b(alue)27 │ │ │ │ b Fk(1)g Fl(is)h(returned.)36 b(If)28 b(an)g(IO)f(error)f(is)h(encoun)n │ │ │ │ (tered)g(from)g Fk(fread)p Fl(,)f(zero)g(is)i(returned.)208 │ │ │ │ 5407 y Fg(Err)l(or)i(che)l(cking:)38 b Fl(If)28 b Fk(mtx)f │ │ │ │ Fl(or)g Fk(fp)f Fl(are)h Fk(NULL)p Fl(,)f(an)h(error)f(message)g(is)i │ │ │ │ (prin)n(ted)f(and)h(zero)e(is)i(returned.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fl(10)p 166 100 1191 4 │ │ │ │ -v 1355 w Fk(A2)27 b Fe(:)37 b Fg(DRAFT)27 b Fe(Decem)n(b)r(er)h(20,)f │ │ │ │ -(2018)p 2710 100 V 101 390 a Fl(4.)42 b Fk(int)g(A2_writeToFile)c(\()43 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fl(10)p 166 100 1224 4 │ │ │ │ +v 1388 w Fk(A2)27 b Fe(:)37 b Fg(DRAFT)27 b Fe(Octob)r(er)g(11,)g(2021) │ │ │ │ +p 2677 100 V 101 390 a Fl(4.)42 b Fk(int)g(A2_writeToFile)c(\()43 │ │ │ │ b(A2)g(*mtx,)e(char)h(*fn)g(\))i(;)208 522 y Fl(This)31 │ │ │ │ b(metho)r(d)h(writes)f(a)g Fk(A2)g Fl(ob)5 b(ject)31 │ │ │ │ b(to)h(a)f(\014le.)49 b(It)32 b(tries)f(to)g(op)r(en)h(the)g(\014le)g │ │ │ │ (and)f(if)h(it)g(is)f(successful,)i(it)f(then)g(calls)208 │ │ │ │ 622 y Fk(A2)p 301 622 27 4 v 30 w(writeFromFormatt)o(edF)o(il)o(e\(\)) │ │ │ │ 24 b Fl(or)29 b Fk(A2)p 1600 622 V 31 w(writeFromBinaryF)o(ile)o(\(\))o │ │ │ │ Fl(,)d(closes)j(the)i(\014le)g(and)f(returns)g(the)h(v)-5 │ │ │ │ @@ -5026,17 +5015,17 @@ │ │ │ │ Fl(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of)f(ro)n(ws.)307 │ │ │ │ 5144 y Fh(\017)41 b Fl(The)28 b Fk(ncol)e Fl(parameter)g(is)h(the)h(n)n │ │ │ │ (um)n(b)r(er)g(of)f(ro)n(ws.)307 5275 y Fh(\017)41 b │ │ │ │ Fl(The)28 b Fk(inc1)e Fl(parameter)g(is)h(the)h(ro)n(w)f(incremen)n(t.) │ │ │ │ 307 5407 y Fh(\017)41 b Fl(The)28 b Fk(inc2)e Fl(parameter)g(is)h(the)h │ │ │ │ (column)g(incremen)n(t.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 83 100 1191 4 v 1356 100 a Fk(A2)27 │ │ │ │ -b Fe(:)37 b Fg(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2629 100 V 1191 w Fl(11)307 390 y Fh(\017)41 b Fl(The)28 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1224 4 v 1389 100 a Fk(A2)27 │ │ │ │ +b Fe(:)37 b Fg(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2596 100 V 1224 w Fl(11)307 390 y Fh(\017)41 b Fl(The)28 │ │ │ │ b Fk(seed)e Fl(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.) │ │ │ │ 101 573 y(2.)42 b Fk(test_QR)e(msglvl)h(msgFile)g(type)h(nrow)g(ncol)g │ │ │ │ (inc1)g(inc2)g(seed)208 706 y Fl(This)22 b(driv)n(er)g(program)e(tests) │ │ │ │ j(the)g Fk(A2)p 1376 706 27 4 v 30 w(QRreduce\(\))c Fl(and)k │ │ │ │ Fk(A2)p 2110 706 V 30 w(QRreduce2\(\))18 b Fl(metho)r(ds)23 │ │ │ │ b(whic)n(h)g(reduce)f Fj(A)h Fl(to)g Fj(QR)g Fl(via)208 │ │ │ │ 805 y(rank-1)g(and)i(rank-2)f(up)r(dates.)36 b(Use)25 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -20,15 +20,15 @@ │ │ │ │ │ • A2 IS REAL(mtx) is 1 if mtx has real entries and 0 otherwise. │ │ │ │ │ • A2 IS COMPLEX(mtx) is 1 if mtx has complex entries and 0 otherwise. │ │ │ │ │ TheA2 copyEntriesToVector()methodusesthefollowingconstants: A2 STRICT LOWER,A2 LOWER,A2 DIAGONAL, │ │ │ │ │ A2 UPPER, A2 STRICT UPPER, A2 ALL ENTRIES, A2 BY ROWS and A2 BY COLUMNS. │ │ │ │ │ 1.2 Prototypes and descriptions of A2 methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the A2 object. │ │ │ │ │ 1 │ │ │ │ │ - 2 A2 : DRAFT December 20, 2018 │ │ │ │ │ + 2 A2 : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ 1. A2 * A2_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the A2 structure and then sets the default fields by a call to │ │ │ │ │ A2 setDefaultFields(). │ │ │ │ │ 2. void A2_setDefaultFields ( A2 *mtx ) ; │ │ │ │ │ @@ -56,15 +56,15 @@ │ │ │ │ │ 4. int A2_inc2 ( A2 *mtx ) ; │ │ │ │ │ This method returns the secondary increment, the stride in memory (with respect to real or complex │ │ │ │ │ entries) between adjacent entries in the same row. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 5. double * A2_entries ( A2 *mtx ) ; │ │ │ │ │ This method returns a pointer to the base address of the entries. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ - A2 : DRAFT December 20, 2018 3 │ │ │ │ │ + A2 : DRAFT October 11, 2021 3 │ │ │ │ │ 6. double * A2_row ( A2 *mtx, int irow ) ; │ │ │ │ │ This method returns a pointer to the leading element of row irow. │ │ │ │ │ Error checking: If mtx or entries is NULL, or if irow is not in [0,n1-1], an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 7. double * A2_column ( A2 *mtx, int jcol ) ; │ │ │ │ │ This method returns a pointer to the leading element of column jcol. │ │ │ │ │ Error checking: If mtx or entries is NULL, or if jcol is not in [0,n2-1], an error message is printed │ │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ │ or if jcol is not in [0,n2-1], an error message is printed and the program exits. │ │ │ │ │ 13. void A2_pointerToComplexEntry ( A2 *mtx, int irow, int jcol, │ │ │ │ │ double **ppReal, double **ppImag ) ; │ │ │ │ │ This method sets *ppReal to the pointer to the real part of the (irow,jcol) entry, and sets *ppImag │ │ │ │ │ to the pointer to the imaginary part of the (irow,jcol) entry. │ │ │ │ │ Error checking: If mtx, ppReal or ppImag is NULL, or if the matrix is not complex, or if irow is not in │ │ │ │ │ [0,n1-1], or if jcol is not in [0,n2-1], an error message is printed and the program exits. │ │ │ │ │ - 4 A2 : DRAFT December 20, 2018 │ │ │ │ │ + 4 A2 : DRAFT October 11, 2021 │ │ │ │ │ 1.2.3 Initialize methods │ │ │ │ │ 1. void A2_init ( A2 *mtx, int type, int n1, int n2, int inc1, int inc2, │ │ │ │ │ double *entries ) ; │ │ │ │ │ This is the basic initializer method. We require that mtx not be NULL, type be either SPOOLES REAL │ │ │ │ │ or SPOOLES COMPLEX, n1 and n2 both be positive, and both inc1 and inc2 both be positive and that │ │ │ │ │ one of them be equal to one. Also, we only initialize a full matrix, i.e., one of inc1 = 1 and inc2 = │ │ │ │ │ nrow or inc1 = ncol and inc2 = 1 must hold. │ │ │ │ │ @@ -134,15 +134,15 @@ │ │ │ │ │ Error checking: If A or workDV is NULL, or if msglvl > 0 and msgFile if NULL, an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ 3. void A2_computeQ ( A2 *Q, A2 *A, DV *workDV, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method computes Q from the A = QR factorization computed in A2 QRreduce(). Note: A and Q │ │ │ │ │ must be column major. │ │ │ │ │ Error checking: If Q, A or workDV is NULL, or if msglvl > 0 and msgFile if NULL, an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ - A2 : DRAFT December 20, 2018 5 │ │ │ │ │ + A2 : DRAFT October 11, 2021 5 │ │ │ │ │ 4. void A2_applyQT ( A2 *Y, A2 *A, A2 *X, DV *workDV, int msglvl, FILE *msgFile ) ; │ │ │ │ │ T H │ │ │ │ │ This method computes Y = Q X (if real) or Y = Q X (if complex), where Q is stored in Householder │ │ │ │ │ vectors inside A. We assume that A2 reduce() has been previously called with A as an argument. Since │ │ │ │ │ Y is computed column-by-column, X and Y can be the same A2 object. The workDV object is resized │ │ │ │ │ as necessary. Note: Y, A and X must be column major. │ │ │ │ │ Error checking: If Y, A, X or workDV is NULL, or if msglvl > 0 and msgFile if NULL, or if Y, A or X is │ │ │ │ │ @@ -174,15 +174,15 @@ │ │ │ │ │ This method returns the infinity-norm of column jcol of the matrix. │ │ │ │ │ Error checking: If mtx is NULL, or jcol is not in [0,n2-1], an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 8. double A2_oneNormOfRow ( A2 *mtx, int irow ) ; │ │ │ │ │ This method returns the one-norm of row irow of the matrix. │ │ │ │ │ Error checking: If mtx is NULL, or irow is not in [0,n1-1], an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 6 A2 : DRAFT December 20, 2018 │ │ │ │ │ + 6 A2 : DRAFT October 11, 2021 │ │ │ │ │ 9. double A2_twoNormOfRow ( A2 *mtx, int irow ) ; │ │ │ │ │ This method returns the two-norm of row irow of the matrix. │ │ │ │ │ Error checking: If mtx is NULL, or irow is not in [0,n1-1], an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 10. double A2_infinityNormOfRow ( A2 *mtx, int irow ) ; │ │ │ │ │ This method returns the infinity-norm of row irow of the matrix. │ │ │ │ │ Error checking: If mtx is NULL, or irow is not in [0,n1-1], an error message is printed and the program │ │ │ │ │ @@ -213,15 +213,15 @@ │ │ │ │ │ 1.2.7 Utility methods │ │ │ │ │ 1. int A2_sizeOf ( A2 *mtx ) ; │ │ │ │ │ This method returns the number of bytes owned by this object. │ │ │ │ │ Error checking: If mtx is NULL an error message is printed and the program exits. │ │ │ │ │ 2. void A2_shiftBase ( A2 *mtx, int rowoff, int coloff ) ; │ │ │ │ │ This method is used to shift the base of the entries and adjust dimensions of the A2 object. │ │ │ │ │ mtx(0:n1-rowoff-1,0:n2-coloff-1) := mtx(rowoff:n1-1,coloff:n2-1) │ │ │ │ │ - A2 : DRAFT December 20, 2018 7 │ │ │ │ │ + A2 : DRAFT October 11, 2021 7 │ │ │ │ │ Error checking: If mtx is NULL an error message is printed and the program exits. │ │ │ │ │ 3. int A2_rowMajor ( A2 *mtx ) ; │ │ │ │ │ This method returns 1 if the storage is row major, otherwise it returns zero. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. int A2_columnMajor ( A2 *mtx ) ; │ │ │ │ │ This method returns 1 if the storage is column major, otherwise it returns zero. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -253,15 +253,15 @@ │ │ │ │ │ This method fills the colZV object with column jcol of the matrix. │ │ │ │ │ Error checking: If mtx or colZV are NULL, or if the matrix is not complex, or if jcol is not in [0,n2-1], │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 12. void A2_setRow ( A2 *mtx, double row[], int irow ) ; │ │ │ │ │ This method fills row irow of the matrix with the entries in the row[] vector. │ │ │ │ │ Error checking: If mtx, entries or row[] are NULL, or if irow is not in [0,n1-1], an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ - 8 A2 : DRAFT December 20, 2018 │ │ │ │ │ + 8 A2 : DRAFT October 11, 2021 │ │ │ │ │ 13. void A2_setRowDV ( A2 *mtx, DV rowDV, int irow ) ; │ │ │ │ │ This method fills row irow of the matrix with the entries in the rowDV object. │ │ │ │ │ Error checking: If mtx or rowDV are NULL, or if the matrix is not real, or if irow is not in [0,n1-1], │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 14. void A2_setRowZV ( A2 *mtx, ZV rowZV, int irow ) ; │ │ │ │ │ This method fills row irow of the matrix with the entries in the rowZV object. │ │ │ │ │ Error checking: If mtx or rowZV are NULL, or if the matrix is not complex, or if irow is not in [0,n1-1], │ │ │ │ │ @@ -294,15 +294,15 @@ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 22. void A2_copy ( A2 *mtxA, A2 *mtxB ) ; │ │ │ │ │ This method copies entries from matrix mtxB into matrix mtxA. Note, mtxA and mtxB need not be of │ │ │ │ │ the same size, the leading min(mtxA->n1,mtxB->n1)rows and min(mtxA->n2,mtxB->n2)columns are │ │ │ │ │ copied. │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, or if the matrices are not of the same type, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - A2 : DRAFT December 20, 2018 9 │ │ │ │ │ + A2 : DRAFT October 11, 2021 9 │ │ │ │ │ 23. void A2_sub ( A2 *mtxA, A2 *mtxB ) ; │ │ │ │ │ This method subtracts entries in matrix mtxB from entries in matrix mtxA. Note, mtxA and mtxB need │ │ │ │ │ not be of the same size, the leading min(mtxA->n1,mtxB->n1) rows and min(mtxA->n2,mtxB->n2) │ │ │ │ │ columns are subtracted. │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, or if the matrices are not of the same type, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 24. void A2_swapRows ( A2 *mtx, int irow1, int irow2 ) ; │ │ │ │ │ @@ -335,15 +335,15 @@ │ │ │ │ │ This method reads a A2 object from a formatted file whose pointer is fp. If there are no errors in │ │ │ │ │ reading the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 3. int A2_readFromBinaryFile ( A2 *mtx, FILE *fp ) ; │ │ │ │ │ This method reads a A2 object from a binary file whose pointer is fp. If there are no errors in reading │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - 10 A2 : DRAFT December 20, 2018 │ │ │ │ │ + 10 A2 : DRAFT October 11, 2021 │ │ │ │ │ 4. int A2_writeToFile ( A2 *mtx, char *fn ) ; │ │ │ │ │ This method writes a A2 object to a file. It tries to open the file and if it is successful, it then calls │ │ │ │ │ A2 writeFromFormattedFile() or A2 writeFromBinaryFile(), closes the file and returns the value │ │ │ │ │ returned from the called routine. │ │ │ │ │ Error checking: If mtx or fn are NULL, or if fn is not of the form *.a2f (for a formatted file) or *.a2b │ │ │ │ │ (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 5. int A2_writeToFormattedFile ( A2 *mtx, FILE *fp ) ; │ │ │ │ │ @@ -374,15 +374,15 @@ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ • The nrow parameter is the number of rows. │ │ │ │ │ • The ncol parameter is the number of rows. │ │ │ │ │ • The inc1 parameter is the row increment. │ │ │ │ │ • The inc2 parameter is the column increment. │ │ │ │ │ - A2 : DRAFT December 20, 2018 11 │ │ │ │ │ + A2 : DRAFT October 11, 2021 11 │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 2. test_QR msglvl msgFile type nrow ncol inc1 inc2 seed │ │ │ │ │ This driver program tests the A2 QRreduce()and A2 QRreduce2()methods which reduce A to QR via │ │ │ │ │ rank-1 and rank-2 updates. Use the script file do QR for testing. When msglvl > 1, the matrix A and │ │ │ │ │ matrices R1 and R2 (computed from A2 QRreduce()and A2 QRreduce2(),respectively) are printed to │ │ │ │ │ T T T T │ │ │ │ │ the message file. When the output file is loaded into matlab, the errors A A−R R and A A−R R │ │ ├── ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ ├── AllInOne.ps │ │ │ │ @@ -9,15 +9,15 @@ │ │ │ │ %%+ CMMI10 CMTT10 CMSY10 CMEX10 CMR7 CMMI7 CMTI10 CMMI12 CMR6 CMTT8 │ │ │ │ %%+ CMBX8 CMMI8 CMMI6 CMTT12 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o AllInOne.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2008,23 +2008,23 @@ │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 46 /period put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 61 /equal put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 68 /D put │ │ │ │ dup 71 /G put │ │ │ │ dup 74 /J put │ │ │ │ dup 75 /K put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 82 /R put │ │ │ │ dup 87 /W put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ @@ -2217,203 +2217,201 @@ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BAD47EE10B9AECC871B76227228CA161EA7B61DABB252EF91E607AC8D3F85774 │ │ │ │ DF0B1507B60BF52E4E9BC0FD04400A548D553D4A6EDB247875E0A2E013685C51 │ │ │ │ D23EE8A56AF57025AD67D929CE8BE791BE91A4C4D9F00DB8B4F16252C04F7BC2 │ │ │ │ 02236296A9052306639F4672E90E3B9DDE466EAC17E200523B2AECD6C05A0A83 │ │ │ │ 66D4EBC86C0DF27B789D5597FE88BCDAD2925CFF60F5A8EA618FE867857D585A │ │ │ │ -CE25A158AED63B8FE391030C518693AEC75AC0AADD0C11B0065E2ABCF51132F3 │ │ │ │ -82E3718B9A9FAAF727F2D8286177EE27BAD040C66D0D2D7C092B45D9330265B5 │ │ │ │ -6B5C8E29F71C9EF548BFA4BAFAB242B26455E4B7FC1882D68E408D25E6F58EC3 │ │ │ │ -046AAFC52C182BDCD36034FD58E8B379C9F2BD16FA6FBB8C455E36A1BEA8F803 │ │ │ │ -2AC069379392D74A6E8DD64AAC6FB5E7EE151EE99AF33B1D9E55C5C8D601EEB7 │ │ │ │ -2C194E090D261E86199D6576EC00044C87B3E79C39B4CBCBF391B78C1E9D17AE │ │ │ │ -FC99092341499E3160303A8191B181B48F30D726E0280F4117BB36F4A023EC43 │ │ │ │ -6FAE04365D12BC874446765347944E9DD89582C152AD0D3333C7CD5801479CFB │ │ │ │ -43571C36769B6559812ABF86D2254DD489E8236EC4ADA0F4D24203110223900C │ │ │ │ -D7FFD1B7C8F198B9773F90232AE077399CA1A8E3418EDE69CD6DE7A0CBFF945B │ │ │ │ -1894FB73F7E8764DE2CAA63C4567CF4F49FF0A5E5762CE64ECBF0942E41BD839 │ │ │ │ -6E6D081A533083845E02E4DFE5AF52ED5F96F156175D6C84935D48F6503D2B4F │ │ │ │ -0A80354F6DDE4CA1C3F776010D7AF7381234AA0013B1695F689C47CACD151370 │ │ │ │ -64BE75752EC11131649D2F9F7961C0246BD903F285BD6B611A6D21201028B28F │ │ │ │ -76EA92856695D338825D18B6E11FD28CBC15E8BFD93DCB87179DE79DC9B515A4 │ │ │ │ -7A80587F86F7C03A6EFA9F5B43902C5C16B7419964046852EE8049D01D5F7F48 │ │ │ │ -16AFD4CDA864C4200F7D3349510A29C723823753750284F6F637F845C9EE7DD5 │ │ │ │ -AD9C83CC12FF260A090CBF8DA795E851FF01581DEAFC030CC1491680F5CD6AA8 │ │ │ │ -8AEB699224D2829C7C7010C8FC2E234E4BE61F2999A03F708FB952E17FB9CBD0 │ │ │ │ -11E7A02854AAA509A7B6A2BEA2B125D1B2CA4C872C12D8EBDFE6E716A6461E12 │ │ │ │ -43E829695E876B917DF685FFB08C18CC3A1FD322483D946E762DC46C9A628600 │ │ │ │ -A066D7B3B3905A9C4A96B4A64C367A8FFC1AB337632D452BC8A23D121DF43605 │ │ │ │ -D53907BF5B3F17C44494AD72E3D14624AE9EDF590EAEBE5ADA3A19918AD29F40 │ │ │ │ -A0FB8609DD83B6AABBDD7AEC60CBDD94D098CD346EFC9661B205EF4624929A85 │ │ │ │ -6CD5DBA9BFCC9858EEC6513F41048AE781D74C32C84140940EAD0D42513A837D │ │ │ │ -D760F15AAD3A0F341A5FFE6AEC9B1C86C099ECB78FB703DF366B8F70E289A5C1 │ │ │ │ -6DE19CCE76B829A36D0EA2C7842FCAED2E37C88088B13AADE628F8D1485E2FBB │ │ │ │ -E428601F957BEAA9C199EB272E12C2D9C9268AF3A194F535956F491599A47510 │ │ │ │ -E18517677F3C58E0DA3ECE2202774F9DCC3113BBE11ADC6AEA04EC6DE6C510EC │ │ │ │ -DBE173CA6F2C077E85290948BA72708518A194395B4B7ECC7E4ED5F3F8993048 │ │ │ │ -39EF6F044EDB72CB447B4EACF413FE137CFE3E11BBF73BCB89C684AB3322EF82 │ │ │ │ -EEC1D3B8A11273650A420B1DDCDAC45F92D194E89E605481230891F93708885F │ │ │ │ -3484B761586E75889036058C6E8FB5DFA16D95B1BD2EC4C3FA8F5A325FD5500C │ │ │ │ -5FD4773525A9405BBFB56CA07CF440B1576A04BBE11E62FE5CD647BFEC96B26A │ │ │ │ -913B3A11D6769A616C904BA38AFA1BD3B12A55D0BB7779D915B32CF7A7776AA6 │ │ │ │ -042F4882A8663A1D7CDA343779F51B15CD1D5CDD46A15090014BF9F841472466 │ │ │ │ -5EEBFC28FD0332323C283E981D4CDC9AD6295AAC57B96F8F52617E3F0D339EE6 │ │ │ │ -06EC61CE1A4220739FE7A81F98F960B7F1B37FA50325DA730D0BD2951516E6AC │ │ │ │ -E99A89834B43E758D999FA11CBE3F72DA7BFAA53612063369023FF9443FEB098 │ │ │ │ -063871B60DA1031252A8B8069B789815F3AF11BE693BEDE3FA0BED14A3164DA8 │ │ │ │ -B235A418B85DDF7822CCF2CC99E6F19602F917BF140BDAFB5D38375C032D2F79 │ │ │ │ -C276D5B1DC70DC81C35DED04AF45FD62B4968F1DF65E3D5BC64926A6167F5C21 │ │ │ │ -72F2EF61D9AE6BDCA773733B7031E5C93148DAD0DCF698946991B2DDA5E5C8F4 │ │ │ │ -3D931402E3720B96747EBE795645CE50E7148D5AB7AFBAFC3EF4B6D43B3128B8 │ │ │ │ -AE083CD9E3CB00985C49D6F255B0BD8B7D3C2AF94919F4731F01083E65234B73 │ │ │ │ -40EC40B9B655A4429E6679D47C33F9565B8EBF0BB6D0BC1AF71DC62690486AF8 │ │ │ │ -1D2EF926B6F15FF63079A39F3A73F907658F26B737C4714A8F1D41D430110C63 │ │ │ │ -CD290CA0EF10D05241C2E5B5E3F29D79F4C9B3CEB12983C884757BA3F41E747F │ │ │ │ -4A408654C8C3832A9CE0D455D128B9DE46CE33342CEB5EFD1E69A352A1C37CC9 │ │ │ │ -AD585854C18C8754195A1A2B6ECA9C4CE73DE708C80832201189C5D14D0CF627 │ │ │ │ -FD1361C6DF96468AE9592ECE66DA7869563CC9D7B8BBC028D72EA26CF2782827 │ │ │ │ -A5FC6AD470EA50B166FED8F04838D4B5137560602EBC45FD971FF6DFBC126542 │ │ │ │ -531AD87B2FE87A15BC669CCBBEBFD187FA844D6975F6CFE2001E402F0FD88CAF │ │ │ │ -525956E1F57117D2D4C8EE83A224C84D1A662DFEB644685F751C823A80782CEC │ │ │ │ -8AF0873DA59562ED61226CF6CC75275FA6FA15929981C1A8CAC9E9FBC043A26F │ │ │ │ -840CD305CEE8677E797B4532712750D215250DB62DF75D9CB33DBEC6916B5303 │ │ │ │ -55252895BB7493FFDF8E2EEBFCC9CFBD83325AF02DCDD68CCC5CCCCA8CBC5D10 │ │ │ │ -CCE84AC9CF64BCD1A20381F8537EE428F95845DC7E9C41CC8654EE126715C39A │ │ │ │ -05D93B908C7FE256A3538234D3CC08F032B0BEFCF0EAB083A498595A6713C4B8 │ │ │ │ -3D8E02A2905B19EF1E9F22A02858F4A1185EBF575875FE184F59F97F2A13C267 │ │ │ │ -5AAB63F547E161A2222794FAB3120E9271E7A4E110D195F6438708CBF1596A81 │ │ │ │ -CE52EE296382C694545A14D3889E346D3B9AA474703F39B42F640C707528212E │ │ │ │ -F09EA66A57678E129315EDC9DDF9CFCE9CE83722428A6C0E2347E28DB11D6A4A │ │ │ │ -F3E30A657160580539388CA8C01F23BDAD8880213B64FD144973B80C7BD24820 │ │ │ │ -D4BB1D52C097C1AF30E14E2B48C29E6CCDD4233EC7D507AC0C2A191EE40E5FDC │ │ │ │ -B72295B3BB932DE66D016A0E79E6DBADA0779C97E6D15B97F8506E688EA9FDA2 │ │ │ │ -EFCDAF815537DF4E4C891A1A76FC949B9E44799F11CD87B796E2EC893691E22D │ │ │ │ -E72B23E7ACB8423F1ABCFF81DAC6ED83281D86451A87B1E8F922BCE7055FE14B │ │ │ │ -642851B1970EC3AA5ACF6A3A7C2DAA3CA54A86CAA460DDEE3D6770DACFF6E3A9 │ │ │ │ -6D47D38EC76FE8CAD7BD64BBF56AF852B9EBACC087D5E114B6F3852F0A09EFD4 │ │ │ │ -A1127E389208E866FD0A3BA32ACF9FA049801C06A0F5CBAF0B07713C1BC13282 │ │ │ │ -072966DDD833BB26DB3984DB71C6976E0301722CA6F8DE4276FD4CCB2264D246 │ │ │ │ -6D79DCC37B8CCE35489B2530E3F1111AB713D850292EA8E4FFD15E0B6A87EDBA │ │ │ │ -25850034F72D96B03F8811A0BD459FB31BFA51AE89AC97FD00AD7688EE9896A9 │ │ │ │ -71B024567D8E312620E71C768830820F602E06BA65987C0029F3B137B048F049 │ │ │ │ -54ABBB16EDCCA268D5C577B32541180A9FFBC1411B16204686A1B07291C030B5 │ │ │ │ -1B013005CA19918D3287015A6E530E0FE888412E829085E9A94CA8F99446AF30 │ │ │ │ -0723EF19310B42C3DA4EC060765223E76EAE6E41D3537371BDE47858D995E5AB │ │ │ │ -1DD50CFBC5BE7B9155790A85D8D3D2D6EC096F994F118B3881E5FEAE204CFCDE │ │ │ │ -4D502E236CE09C1CBBBE872B1B4EB60D71EF9D66AC279C4F7331A018281FB713 │ │ │ │ -B5E3842529FD8391F01E14F3608B42E3D229BDA5B7DDBF61D75969159F03FA0E │ │ │ │ -81D52BC461F4DE914E140A0A5FCDAB0FCE4453FB84901A9F8F82D9F2E379BA28 │ │ │ │ -9CCD09932993D1155E23EAD1082809FBF39F9C9FFEB2887CF195D70F16A49718 │ │ │ │ -09536A3142906AB404EB4A9091533BFC0C82332C510922FB2180C11DD9BA9B5D │ │ │ │ -5AEA1203BF16B72C45713CF02501CCCBB08A799B70A81F5B0830E6FFE510D7AD │ │ │ │ -1DCA4C3BB7B2AA40BBD620745F1AAE691655D9AEC87B0B5C77F0BFF333144F1D │ │ │ │ -66039B23F7AECDEAEFAD5567619A875A814F7F538DF4DB1E7B3A0BCEB89E3171 │ │ │ │ -677842A1D82F93A4D9A4C12A35B1BC95D96B69B6F6CD4420B590B74D9739F941 │ │ │ │ -CD6C304FBF126177D0B55DF54E5FC37FBE2549852043B5A93B1B946C044443B0 │ │ │ │ -D4EF0FB639780F69C8B4A1F45F7B960E1914A80BFD8DDABE7217126B6C126585 │ │ │ │ -97AE1561ECD7CF49FD2368040523ACA359164440FFAAE31914DA71DFD951DD23 │ │ │ │ -9F1A8B10303CD07614FBBC9B485FD2AEE187AA530E7F6CE33DB51C3FB9624905 │ │ │ │ -6A101CA6BBEAEB108A6DF8887348E36F16BEC7879DDAAFF613342E5FFC75FB96 │ │ │ │ -6EDE65B0691F4B9EF72B65C53C517C5F15B52BBEE4982EBB9EF9CAD583D378A0 │ │ │ │ -555149CA7406405159B66E86DF3284CEB99F6CD31AF15EC6C76882BE33F68A57 │ │ │ │ -F8F1673BCAA6A6119C723452142565125D80CBB7AB6CADAFF2F3D9E8497FA534 │ │ │ │ -D16457AD946EC1C02D848A757264E27F752293467D81031E19D4A7FEA74E1D57 │ │ │ │ -552069FE47AE13D27163B43EEE7627529C0E2EC390CD8547E514F702A0D692EB │ │ │ │ -18782AE81C1B7109C3453EAEE179797D5517D2BAC7A18E5CC7D905FCFEB419FF │ │ │ │ -AA9BFFBD784E1F1EC83A5395A856EDCD5A4C19DA398AE21C0AA6B3235F6FAA78 │ │ │ │ -32CC344C05427FA1F5372D6B634667E9004A1BA14621724C7FDC356371C736D5 │ │ │ │ -8F48FCD4256820EFE26E1558B382B9CC5CEB1B2C83610252C26D40488630D602 │ │ │ │ -8D4D63B474B72A0291C5C8A9E5DA84EDAA633B80456618451097F7325FBBCB24 │ │ │ │ -F64103E9AE80F947D8EFCA29DBC6BDA7FEF9E143698526A5E313B16B932525E9 │ │ │ │ -9F25DC7928DFAD7DAA110C0114C9FF5576CC89C50DB49E5D90F438681945E3D3 │ │ │ │ -E27018AA8D37AF8708FD19D07CB155AB95037DA0EB723C948585068F839EFEDB │ │ │ │ -AC4D24E8A945AE2CAC141F75976EAF657DB3C0D187AF93547C67349A9031BF3F │ │ │ │ -4305534B38CB267148384B2B88310E042AB0B9778A654A2C761DC8BC951BCE9B │ │ │ │ -C4C52E91F022BA23163FACC77CBFE79FF45F2D070A7FF59C38E70784B603DB5B │ │ │ │ -0684FCD0A535F8ACE8846476402D0F62D247D14AE2C58ADEC2EDB28FDA40D974 │ │ │ │ -3556AFFC85E8D703AB45E56FA6BDB92E50D67F42400D528AD5D58BC7C5D6D71F │ │ │ │ -64ACD9FC153A92834F091DFE6F4793949767C7EB578B607ABE7165FB4DB1E14B │ │ │ │ -0488D26328DBCCC9C794FDECB4069E84EE1A7A786EB2C6F2CE84740C832BDEA3 │ │ │ │ -896EC8CD1BC6E682D497799AE338535E5F047502A6CEDB40CDEC247028BED265 │ │ │ │ -4CF08D5ACA0523E794BF435FDE9C2EC4C8C07E8867AE9B7BD8984D6E82B981A3 │ │ │ │ -1560EA40D49BD1E3F2165B42F3CF5D549D1EE07E0A7DB99202434EA9391E5549 │ │ │ │ -40E07F43C8D4CEEDA9E98A458C082BE1ED1987BA7A05F8A9658209E8871F8EE2 │ │ │ │ -E1CE60AB890BC161EF4C1625897EE48838BDE6135679725F3B90533868C18B41 │ │ │ │ -76FB9E42A9D9AB76FAD5CC74312527E4843AAA83DCF8433C9407253754D66C54 │ │ │ │ -08688862695EA86043E86E1D4206FCD9D98D15CD3835C9BFFFE9437DE7F6C2B0 │ │ │ │ -9F429D0582953AF2B29BE15EBB5CBDF2782E402B47F27EADECE536336DA53F4B │ │ │ │ -E0C205BB3478AC3C0DC0714708644AB5F6BD3DE903F315BA14C80E8089BBADAA │ │ │ │ -FD3E6E5D617765D993E13F19AB141F40647F70B50904A44148DDEB37A1D6F022 │ │ │ │ -75F9DCAE163EF14EDB7D20F7C2AA3C29E8AC1472479BF5E7F77C00B7437F1268 │ │ │ │ -A5000F42DE87B57B85A088D6FF93C4FEF95B97C9E7A32EC336C697A38E0D0E4B │ │ │ │ -11F3EF4D63363A472391616E72550116199A123EC2D773E6F9B8661A081F53BD │ │ │ │ -FD0623470B13D7E24DC9E5ADAE52AEFC1C751EFDFFE4453CE6647134B9E3C4FC │ │ │ │ -EF86BD845D7143D385DCC654EC798C160F6D3A395B210F7D405FED18C4ACD174 │ │ │ │ -55DCD8CA10216F033F5BC27BF0FDB2729B69DAAD9941E339A40BCAB74DB0E38F │ │ │ │ -E437C131C4965DFB5B195DAEDC64850FBF1E248D02BF3A38BA38A88A1B2384C7 │ │ │ │ -CEF4E91C793D4EA194039DED4900C327E20248F7F1A7377B513F5A5ECC4E4C1C │ │ │ │ -AA72B261F4DD4D419A6AB019736F0190E25CF29E67C2F712CD0767DA7B8DB3DD │ │ │ │ -7F34D13CF7AB223142181AEEE466926626EB62D77C7A328B79EA05583B0D5F84 │ │ │ │ -5F113C57C10CA99626193FC902449705E5E645199B7769D1B2FBE941170DB92A │ │ │ │ -58917AEE64E0F1414560148239656DE28C5A425982DB43A14E2A21B4F27B82FA │ │ │ │ -F50AF0D7139E6E74A4C7D2C6034A70D2911B9C3B7909EA5779CBAB8F839CACBB │ │ │ │ -3F81519C7777A30F6F3FD3914C534A2483AB6C6FE869EBAF8874B07905A92AD0 │ │ │ │ -16716558D485313199D39EF436CBA30F8E1617CE0C95ED7EB5E3548029BAB0E0 │ │ │ │ -8E6572447E41128CB567E6E7CD5DDA0B4F7E077399C01CF72533442BB2E74326 │ │ │ │ -8E753AA93F283F59AEF54459A619F33F6556B16CAC8B2D1386F09675262B5359 │ │ │ │ -C6CCA4F18493B70FD393929F8D847A7B30C6692D1A9702D512B04C68DB68D107 │ │ │ │ -27343FD2B6DEA1F698003CE5B33EBDD95ACB53AC0AB05C576853FED05172852D │ │ │ │ -7D395FAF17547F54EF6D1593E656BAEBE1D6F0FB81F1B829B8C517E465D05192 │ │ │ │ -F4FC821D907710D1B19254E160122CD97EC8DBBA35F0911BD3908FD145876892 │ │ │ │ -5EC99B91CD3F85674AFCC66BB36D9FA712D2145152328C36F25B12E5139AF0B7 │ │ │ │ -D29645D85D6AF450C5291BE453753E842C8B0FD518A325336C39EC09AA043986 │ │ │ │ -ABA6C7011210DECCC48D7F8390C11917A470DA3176FCEB4FCB7B7EAE1920A618 │ │ │ │ -78EB82755FE31358491339E6430F64EAE7B1D005627B6011E6B4C387CB3EFE5D │ │ │ │ -CAF3A3703BDA1F7A6EADC5A5300D98CEAE1CF67D001D8AD367848BFD8E1B3D29 │ │ │ │ -36F771E9D21722250DD3947DA60CB0FBA3146F9E8007D59D18883BDF49F475B3 │ │ │ │ -93AFC74B9D3F3F7815A103859680902B9B5A2818758E44FC3510DDB1042709F7 │ │ │ │ -8DBBC5F01A8EFF4E56F970848CB7B4680815300C388C4EFE2B4E7037BB82B171 │ │ │ │ -A63F76C2E845719ADA2D3A6CC5A47D66D3F88EDBF0E912D913BC6A01A3AE021C │ │ │ │ -1C9B1920E5BE2D0259B75E673D4402B9ACEF1E80344925FA1D726BFF3B87C010 │ │ │ │ -12791EC24D20696F7C9D562FB18E301D9CA1F5B309A393BB8099882F1D1C1B90 │ │ │ │ -34A3CFA71BB3EF60790E7888EC8EBEBF64ACE560B4AFE4EFEE27836AD3C9269E │ │ │ │ -1A172F7CD04AED194BFD391A0463B92BF2F20037E3F1CB0F86262C9CFBF3721F │ │ │ │ -4AC9FA16351C549FE2796D5C8528EA20D78FF16DB1D12F9B600A0F80016A0369 │ │ │ │ -A301C9D415DCE1AAE50DE23E3122E2DA9197E1208A117D2C2C5FF56C43CE6C1E │ │ │ │ -CEE8C8661806EE345075A4ACA412AC4DD186A4CA325612F1C8778B72010D30C3 │ │ │ │ -426E6B2B9574C0A2E59FB02EE3C1FCA0F895F19522E107134D41E8AA370F104D │ │ │ │ -656A8EE4CDFFC8127A47B24A8742E0670CCE77E450D0B98061948E5121A3A34A │ │ │ │ -907C41DB7220A8F61425B05429774E0BFD82CC735F9515527240F230557555A2 │ │ │ │ -41C08983819FE3E313D6AB957595631DF367E6BFBBAB5E891D278983D1816B26 │ │ │ │ -97879A7D507F907BA3604AFC9E6B07A3A5AC6CC869C706922BEDA300593DD8FC │ │ │ │ -B2734BBE056204900CA8636F1DEDA50C555E64833E6C511FD860DB9015D5249F │ │ │ │ -24AB59F093F42C280EC8AE91BCE72693E7586E59FBAA8CBB9B5DC32EDA92B3EC │ │ │ │ -B31B094A78DA8BA31495097771202EE752214AA40D380771751F44D61E6C4F04 │ │ │ │ -3D53EB3D60D59D910A8A30763A8742AF01BCB4234B84DFA4048368C2DEAD0691 │ │ │ │ -253314A620B585B7A41ACB3BD32E81B7F878174C15B303686DFD8895C8935774 │ │ │ │ -CA6E87EDDE5C31D13A654A02705D808413D51BE86097F82E29AFB47E119413DD │ │ │ │ -955653616E92D3EF2FB81523C5F1DD9A1E482C6F4A5935A010C3597C1C77B9A1 │ │ │ │ -C65A0525D20FF8A588E7018C2C6FF03B57EEE9BB9E0378BB45B672DBE247B175 │ │ │ │ -846FBD3A4B6AFC14A9E7C158AD6E4FDDC567A42559588BBE352EDCDB5146ED03 │ │ │ │ -FC4D8F2590FF5A7E09613B899D6711445E595430A730327461D0442092E1C085 │ │ │ │ -6F4B654CF7F26DF83EC5561978261EE7424DB1C20E1DE5277C793CD3AE4C65F1 │ │ │ │ -69BAE1A8FF8B1DCDC355108DC26F92C105293C3C6C23B5644A6081DA00BB601C │ │ │ │ -1631160E3F8BD8068B8D0B454E7DD399B7232D60B45ADF364568C1936B2928D5 │ │ │ │ -257C18ABFE0094E749E33E604668BE440F2A3DBDC338F4BFBF26571BE9897953 │ │ │ │ -F51F4335C87DDDF04B5B9B8132F08FD121593AA7F9C61FBFD0DEA4BBD26490AC │ │ │ │ -265327DA073E195F05EF0D87D80F89B3ED687F3996FF6A931356525B2BD91973 │ │ │ │ -F2E43C58B13A17F73F9F70CD3BAB5A1B07A70761B156AFB0294BE5BDB822E465 │ │ │ │ -D4779B75A2A14E311B1F1D493A3471A97B87D176DA3ACAA1D2AC717210E485FF │ │ │ │ -50EFB4ABE72920B29377D0F82FC83226F7F5DC0E40C6A5E8C3F40DA45F659052 │ │ │ │ -2F733FD832A42589CE404EC521F684C836269342E8122A320D5939F264A3690E │ │ │ │ -33144283675851F1B622AD3B168EAC32FD62B0A6A3DFDB7B8DF1CE3148791F57 │ │ │ │ -988DE92F951E5DB1B6E081C128B65983C44EDB31617F730C41CAAA4EB56BC149 │ │ │ │ -B379E4A5DAF4FAA5C7CAC6A06525575C7AD27119EC3BA374E1E0DF2D93415F37 │ │ │ │ -6B0182 │ │ │ │ +CE25A158AED63B8FE391030C518692F2EF74DC514FD192BCC93C02373CE75137 │ │ │ │ +334A9C960EFF02B687E7B8F18FE2D9EAD2EBBEA3A459D8476AF51AF6C85E1166 │ │ │ │ +08A0A6190D8FA8252F5D38820C6950A8B323B1B8648E3AFEB827678CDE87C535 │ │ │ │ +EBB201D3A169CD9DCC4C3C256A0960D963F3C6659BBF4D2971663D0AB84621F1 │ │ │ │ +5C186C0550483EA00066C08F2E907B838F2863B986BBD637B6F56676655CD30C │ │ │ │ +3EDEEAF952BDF9914D3AED6D1A55395BCAB30DB575B37DD1D9B0D4C10D271EAE │ │ │ │ +A248414EE7723314B838B57BE9F0C73CF62AF0D75DF2671311BE7799F05E418C │ │ │ │ +4F35990248F427F070142CB26352246E6DAEC83C4289DDF8D4D3A68B2B651940 │ │ │ │ +A5C3C29CD047FB7A9B6B30347EB4A72707B9A257BEB9619A9FECE775E7768E96 │ │ │ │ +49D9F4394C560D2132EAF983EC7487968C90C79C4C9E4850A535DB6D2CDFE5B4 │ │ │ │ +CC9A00C0794A9F597EFAD2BE4A8A3B7C70FEF1C2ECE478E326EA63E862F721AE │ │ │ │ +0C81F5FB631B423DBD64F4E5EB88F1BFCF456B7B2FDCC351FCD2F5738BC6F9CB │ │ │ │ +954587285C021DCFDD499A73A974B806A1C8F790FE9334CFC66BAF0433229BC7 │ │ │ │ +7AC262F9051282C6CB3F563CEC886494DD9F3CC8B68DD5F3FCE6A16F45F4744C │ │ │ │ +D75A5EAC06FB15B6F4E2DFB281F585F591D29375218CA25117CB09724CC3F530 │ │ │ │ +BD59F14D2F27D6AEF5EA68B4D42F0D9E0D780B4BA82118CCD564818E8FAA7DBB │ │ │ │ +4E53E65D106EA1B12B9B625E409C6A86021F813D37E33337B8C7A07B6AB65FD2 │ │ │ │ +51A82B4DD61B763FC2ED5DD7DC5BA1BEB5F194724528E5AD4DB4672032CFC759 │ │ │ │ +4A1086EA2D1C8EC57B873D0D74B9F6D049BBE422EF6DBD511C388D8E5A169484 │ │ │ │ +26D715D0AD8A2715C7D83CBD23A4446BC157BF97858844F46BCB381A92B5F945 │ │ │ │ +109E245E033C17828B5066C864905F30240FC0600493B478156503B361CBD466 │ │ │ │ +5E5D3C7C02F21A072EB265145894581BF858CA3C3271600E2F4D334D7C06DDD5 │ │ │ │ +174ED0DC441599F7EB47DA257D9A8C815F7B3A79C6D791B5CA713ED425A255FA │ │ │ │ +A7F48E0BA9839C2068D0EB3C1640931B63139A583227E1BAC8F22E6E2B261238 │ │ │ │ +83FBD53BCD93D3C5A40F64AB3488C47041C9AF1E0F4F67A00CFEFB27960C4B28 │ │ │ │ +B9344AD49FB44E2F5EA23BB35D05DB485AC4BB1ED645674EE92D354487A2FDE1 │ │ │ │ +42489C09EE612B4E03DCC7876B8D83617F3994497F9C6E1C7D187030E0D072C9 │ │ │ │ +405C355822629C50373E7B8D177931319B517B51679755DAF76394A733FB8E2F │ │ │ │ +57B89D4AA6394A3E69D00832B1D066EED5F679E6782951C680A7321B199F15C9 │ │ │ │ +183E5F70C838F6794F7EFE33C9071D6CB6A27E79671C7C77383513239AA433F9 │ │ │ │ +F220C0E6E0E4895BD831B0070D45B6E0C2F517CEC47B46637C4C258AB7F5F512 │ │ │ │ +DD9082A8E1F4D8DDFF165A99648D4C95821F570338DB09EDF0BDB88A9CAF1E2A │ │ │ │ +CA338D56F755B1BBB810765529F35B72A85BF0377B6B58195D5D999E4919A657 │ │ │ │ +20509D4A3CDEC257E3BC0D5FA1735B710140710434F71D52FC2276D39F203971 │ │ │ │ +362B4C3AE327B539880654D6DA990DFF9FD0D117076D691F46E474C9490FDA78 │ │ │ │ +6418649AFC3176E43F74CC124D40E83B162A945C7668C1AA15C9A979DDBAA923 │ │ │ │ +0C3B2C6BA68F89CBAD82A3E0B025F8E0A593FAC9C169583DEE7297BA89922D14 │ │ │ │ +CA70F243AD3451D62B6ED34106D6834A95718CBFE91E7D206609AECDD587CCD5 │ │ │ │ +534BB64F1473FD9211C3939D619217843152B730FACE17ED4788FF28D5E2F97A │ │ │ │ +50253CD897C90606FF4C81DE5C557C6DDBF72F713B35B1CDE0199EF3C0493150 │ │ │ │ +2EA4523025F27D436C92BE95526C8C074B27155FCAA8366DB04D1A4A84CB4C9E │ │ │ │ +738CE2964E096251541BA276221C2E2C12189FB54F2F01EB782EF7E178312454 │ │ │ │ +42A7D28CBFEE5E56518B598C48ED930BF29E6DD79C3293D6363D7AB0FB524339 │ │ │ │ +BEED83B7F898FD6A4AAEFDBC72E3233933CD555134FD28AD42512556DCB10E81 │ │ │ │ +D2DB80C32BCCA68D7415D1AC5841F348864EF1A379F8B2F5A82604920BD69C7E │ │ │ │ +30E2A058EE2076C77C8D3A98CC5C2F84EAEC01C5DC6D9DA72212A925173194DF │ │ │ │ +BCDAF58B7E899DAEF9BF9E1B53082D5E97068B44D0EB62524A4B23608DBAC7E8 │ │ │ │ +3A443B00198F72411542CF307C7A5F870EF3C051E193753668F25492B6D0A035 │ │ │ │ +6358F3BBDE60EC1A0BAA8B15C6465BBA001CF78BE97E46BF34B2AD212D43D8C5 │ │ │ │ +D1CEACF4AB30B13E566F44104B1B7A5EA8C398E86EFE18E89502B08907094D98 │ │ │ │ +B7BD0C828A030A87E87921C25EC0A63E3279BB19CA50F5B9CFDA2D330EFFB107 │ │ │ │ +332EEC54E3FD1F2EFEE67B164B9BA996EE493F187FCB1839271833DB0CE6A5CA │ │ │ │ +69815FEAB351E895BEF4BB2767BD8023BECF8722E82FDDB3EEAC802A63060681 │ │ │ │ +A53C594A55BF657A57FB6042C07968B97372CCDACA8552B38E262343E4A28DB0 │ │ │ │ +B9D11C26AC20FC717E1B941AE3181B171F689DB3A91384E926927F87E936A450 │ │ │ │ +A91A404ED2D59CF624D1F33A5BB4594696E998C005D7C9459DA494230A551265 │ │ │ │ +06EAFD8A14D67AA2256C39B3B6BF939897624AE4600D2416D9B86D1570BD84AF │ │ │ │ +943C17029A17AC6CEB25871F733087389CBFA081BCD62CFB05A1A362B1CA0990 │ │ │ │ +44413BADDB183A201B593BACF75A7DC1133F4ACF14E9D080FFBA631FBA565C17 │ │ │ │ +13FAE80ABB305FACB6ABD4BE8BEFEF69FAF6BC72D29FE807A21BAFB501143C6C │ │ │ │ +4113EE45E129403D5EE92EEBFB65983A57737DB17709D3A62EAAEC48EAA4A6B7 │ │ │ │ +DC7719C1A0882B1CBF196F15B6CD33CED9EF0C772E6E4E96745BBE4B9FB026DA │ │ │ │ +9AB1646F77969A0723428CD460110E754479CFD3C8C12D841F928D20E7AE47B3 │ │ │ │ +11790D535EE073672BB1112D3791C3742127466B7A3BA8C7DDF9435C886362FC │ │ │ │ +0E3DA5CCE663D0FB69A716FADF32A7EC5494B6374AC2DD34CDA09FA4877C2615 │ │ │ │ +C154DA7F6780F1CD6EA716B7B30C3C47121DA8F4B9054B9D975E4A48499C6FC8 │ │ │ │ +9567C44FA454DF2833BF4DEECC3D5482F51C917D6E06F3E21AEAC3263A9E6691 │ │ │ │ +831C4582EDF9D1711D08E03BBDC4BC5C650B99D5BACAF63931FD263E68BF34F7 │ │ │ │ +805E33E245CD2FE5C351943914CD5163A163603139D40E7C45BC6F6FD7EEAE78 │ │ │ │ +3B74A783677213F2ADE10810DC5C235E2759840C4E0AE7FDF902238143DCD792 │ │ │ │ +82A044247C59E619F62F31E96CA6728FBC3544B880E2F95B85E609C9ADBDCCE2 │ │ │ │ +0808A8741D703C00D62CDE9F675A24684135C986D4075B928EDADFB7A72337BA │ │ │ │ +B74ECFCD2153E9BE56A09392A83882D5518B67E014707D00DEA86AD21700A038 │ │ │ │ +396D61B4727338EDE7954F87DB65F4634D0B94F8DF9A570E1599B3701EE4EEB1 │ │ │ │ +6F7D1B90250D795A98B2BDDF5C7DC47528E34EC262FE6C8EAED51593E8BA38B5 │ │ │ │ +B96B1189BDCACEC29887826E1303E66747CE15A6DC469E45F6C2EAB6668FAF5C │ │ │ │ +BB0654B3286E6C7179811E93DF983A761723D9B026994D6513A3BF29E6748DAA │ │ │ │ +F52F8D1A0762890C585550FFF556F3F8735E3F631EF94F6EDC4159D53CD7B24A │ │ │ │ +49031B6FA00F3C03BA369A6BAF7483AB651B98010BF1DE5355F5579FE15BA2F1 │ │ │ │ +30B3245DEE21C2E6FB9413E177C64A132BE3CBF08C1BD6A9E484B2BAF1C838CD │ │ │ │ +77FD421C4660D768BDF188C5B03FCBA5006A575A2D38E53E0CF026EEAA05C6EE │ │ │ │ +B068B3D5E1837569D9D3A974857FE8AE9B5D251C4ECFD3868BC8622DAD1B849E │ │ │ │ +642E4924BBA19C774E2532BD98D13778C22F94F56594D59DE26F9C08E43D0211 │ │ │ │ +0C28C89BB38CF2DFE928F265555F3D9399B19885B2CAE432AE5006F2FA959EAC │ │ │ │ +088997F447EEA49B0A3C68EEC56A1E2F6491E0BBB4408D30795598A31BE76074 │ │ │ │ +2CE1094025E827DF42CFC31315E8F4DB82DCB33A3BC0CFC34446AFD830DCE727 │ │ │ │ +1E4617E681ECA458203813591B168B4CF41E93701CAC0540278463F3C83521A4 │ │ │ │ +50148B79B16726D52A1831D6FBE48E74B1FE096413C143F734EF568A877C7203 │ │ │ │ +D1196577F95648EB7028503D4B302861162BC992B65107D742EAB7F4C0CF6810 │ │ │ │ +2DE0B0BA3407C3F200C3B0100E42203E9893AF7395CEBD8A614F1CF2046CBC86 │ │ │ │ +9B57F8BBEE7E44260B8C018E19B76C919956036FEF1252C440B29D0F08ECAC22 │ │ │ │ +9E83AB2D9C524DE0961B9715628D33029D4C463C1DDC120D026B90E6B3DA2437 │ │ │ │ +EC5F2A732A2795349581CBD1331F3749BF78639F2F1F9179D46AAB0F62C83E81 │ │ │ │ +B328CC0F50E2535A565CA9098521EFEE4A975614D54A0E00798385C338F09812 │ │ │ │ +AA6E8879B3E2D5DFC89D71B1B2C143F13600C69E8889FDDFD844BB3657CFDA0E │ │ │ │ +69218167857768607C96599AA80AC9E5B812B551EFAF62C70862B5310A43C7B4 │ │ │ │ +F81A7A2C21A7944C9CD0E972D571DFCFA222171BFA88E9A791006AA2B7755C4B │ │ │ │ +CE150DDDF26ED9B4D3F1B72113C9159B725620A1B7D414FB9AABACB53F66FBAC │ │ │ │ +A0F15FBA53BD23ED99821E781CAC8BF6E7319AFC28391594FA5B8F28015613D5 │ │ │ │ +372DF28B6B274FD36BDD97B95EF52E7C49886B30EF171C9E786218D8A143DF02 │ │ │ │ +F1FCA0366A894C10B970AD3B80E0DBAD2E7A6C7C88F943C346BBEC11ED7F1FB2 │ │ │ │ +FF036E610439E46C0CB70A60E058BFC55E94B71E6254434FCF66B816631F9F63 │ │ │ │ +7BB1EAE1123060291F623BD1245357B2FA2242332C0648B53A711A85C850404D │ │ │ │ +FBAE5E5AF1A5C11005C8104CDB9D0B4EC86247CAD43C29905974F92AFCF86E20 │ │ │ │ +DB82FE8916B0F1CBCE36F567B6D5B3E043EE3928F53D355074B0A605B49856AE │ │ │ │ +9474C6DDFB5526A873D13AF0380CF9DC5295D064C68914A207256115C48015E9 │ │ │ │ +E1EC8A3BE314834360CE5682E8BD75D20DB71C01EB376AC3200C6E56534C3C59 │ │ │ │ +B2A879FE85E23DB1051D9FEFB55A474D079144072F8F918E05CD7669A705568E │ │ │ │ +18EB95089CC6A0D740F8A987132D5A1DEB6C95607CD67100565C5D24F1DBD926 │ │ │ │ +70537C1ECA80812818F2D72FAC829838AFD1A5F94DEEB40EC464CC2DEB6D55D7 │ │ │ │ +15E9DC3FE445A5653CDA8AD7B050506E253D8B3FA3DFEFA6E395785AA79835FB │ │ │ │ +54EE41B2004B9267B26759E40F6B20962074B77F9157A9DAA1AF78B77419C8E5 │ │ │ │ +907B360DFD457486C49CFE5BA182C70C409313B9FA725D3224E5FEAC28A5FFBE │ │ │ │ +8C11D72DCF0F4139FE1B46493EA3E5407B7707BAC426573E09CCBB0E0FB86F83 │ │ │ │ +E8547549E0E5C4CB40EC030B5ACF5612F4897FAB65D5061CE504142161A77011 │ │ │ │ +92F6F92BF635849E28AAB207CA7CA4FC69C1D8096E1589F49797B0CA043BB435 │ │ │ │ +91535F062F1E2225532DFB86F748524BBD2C48E98F9D1AA3C66DAD48981BD967 │ │ │ │ +7F04FF4D6C768AD9898A81770445E26B6296AFBB7356EECBD95A644244EAAC75 │ │ │ │ +2F7B8FF149E23745877D45B48D5DC4879A1A081CA4E371472C8984CF5A27CB70 │ │ │ │ +F971109C12DFF5EEF3DDE172244E6220CE7885979374F8F11ED81E16E522B008 │ │ │ │ +F9B0A54CD90AEA953E8D063CC84424E8C9FB236E9A6D7DEA9DA794646930BAEA │ │ │ │ +6A9F900CAF48AFD24BED21419BB9B5E9742F04E691ADC50CE570B3ECE6A11260 │ │ │ │ +15C75CD531DBB2D60F2AFBE988C35BA88D61204C69E1F7CB3D0F06E3CC15EECF │ │ │ │ +FCCFC334975D3A4A2880A1A6EFA6F5E528DED816DA1565A3B67EFB772DA0F46A │ │ │ │ +698104A2C9AAF3BA403532FE898890B714853EDE74FCF3024465F465B73A7A78 │ │ │ │ +3B6527BB24030589DE8AB3DACF50E7D8B93132D8ED05908A250F32EAA16E3EAB │ │ │ │ +6E3F70E2ABC553935BDAAC68C8BE3CA2C88E69679641DC0B56A48FBD72AFAFB7 │ │ │ │ +AB4E5136DCD7D01C3466AA3A123292AE263D84C5703B3E5CC4BFD35370C408E2 │ │ │ │ +9977C86D44B102DF3992D9CD88E0755D78106413E7233121ADBFDFA8ED86888D │ │ │ │ +DA3065655B7A50616B301D1CB131BB94F261A3019DEDAF9C434558BABF728DCB │ │ │ │ +FD4E418BC1E2FF69B3A2767D03DFFBDFED125BBA68054FF7FD195BDBD7F30C92 │ │ │ │ +3B8030D73E02BF2AE83154CEB4CC10CB9C33BAB5E499A3E8B4BB76892D25892B │ │ │ │ +DA02BA577C8C89C000E50ACE502AB5155C5518ECB787B6F563364685C8A3D734 │ │ │ │ +A88DB9C2A518407A7B4C212C5C679013448280326F1079AA55303998037E006D │ │ │ │ +F785FBDBE072EFE42D986B5E49CAD69732FECF688678D49587B08DB176D8243F │ │ │ │ +FC64B6A791DC51730ADDE01C7B3867D2DDB31494F360163EB10733C06CC88625 │ │ │ │ +04F1C804016457E91026E821FA4AA1388271691AE82935357DA4BBF0424806E7 │ │ │ │ +183FAB8F41E4B06E6993E9B9C067F44412ED8D22902E6313DAB3DF551754F2B2 │ │ │ │ +65164474DDFE22A8E9DD137162C85A5E4CFEBF8568AA1F5AB7736DB7E6220D51 │ │ │ │ +955A75C5A1B64E732125E7CDD89D93E2A635552DEEF200ED0C5D98BAF8E1396F │ │ │ │ +F8F84E254274D012BC8E2119EC5C53FD88BE9AF88632A63CD3CE7FB6DC164B32 │ │ │ │ +844B70C2A7E086F1109D78C9A1F8406BA08BA272DFF887F2FB3B523B149F99AA │ │ │ │ +F7069F353CB96D0E4C2A3484473DC82725925FFABF5589CCCB04340AB79A2EFF │ │ │ │ +255F940885E2BD1945A4164A2D4491945930560B298F05D72ADBB43CEC076B86 │ │ │ │ +8FF77BBCCDBE6AE1A36C749279E6A70940C83F1F00C0BB9C5466BC695F5E4211 │ │ │ │ +A49136807757A67492BB55B13C07CB07E56D3BD6D827EA68C689D8F871315F1C │ │ │ │ +90FDC12AA7884BAE24662C52B2662DB6D8C0CD5A2ACD3CA7683CDEFA4ED0650E │ │ │ │ +F5C7B2829CE5B2C044CB58C0430A52CD2DDAA8931690DB26B9CC4CF5403690EF │ │ │ │ +4B44FB06E9CE80033E90ACCD74EC828C3B6B3EB1E6F92656C5DB5DEBD271270A │ │ │ │ +472AFFA6C359AC38FF287DB82D98FB0C021BBB119C54C5515D91E59973601FD7 │ │ │ │ +52D2977EA931B2E35609F06509C4A39AB3FE932FE21DA8449CD26D65F7D4C251 │ │ │ │ +4DA418B14DAD02BDD4A253F06A957F1F40737EE6CFA8F44591D2676B9232E530 │ │ │ │ +1ED28DCD8B9EA937DCF65A238EA046A78D93CB19B4798942F1D99DC9C6D2867E │ │ │ │ +678237ECBCAFA8E0CD7C383DBA3DF5A851308091922683BD9502807366E2C568 │ │ │ │ +063B63C07EC40DF981DC905B6DB26AD75BDE35682B81856E4A70A71A4C64BBD0 │ │ │ │ +EC1E3B419337AC54FB9CB5453B41940AA8FB99E0F53FC1094B53B2D77400C927 │ │ │ │ +DE88B1B5336921224FB6039BA231AD9A9AFFB2AC4FDAFD31E1A0C28C06B16F91 │ │ │ │ +7E5B8CA73CBD453D04F60D1AC6AFF2D36BCA516E694C4B67F0B13B9E79C16373 │ │ │ │ +6ED4765EC879F2F5484FDAF375692317C3E530C6701602A60E21403012A662FF │ │ │ │ +652377E3FBE408F37863B283A0A49782C57D99B9510C111287C89CA79DD7D599 │ │ │ │ +C31A006EF198E6BD2D7BD5EC8B58FBEBC9285CADAE3FB9871E8C16356DD6E6D2 │ │ │ │ +B2AFB57794F0E47C96E679A9858CECFEDF5E511E2A6F87B40A534F50A4532379 │ │ │ │ +108B84D2184870EFE208DB33B8B98C7061D770964F781739E8A5209DA7C9EA70 │ │ │ │ +C9882D4AFBB7EEA4AADB24DAE02ECCA143FF158EDBF31BA59DD1E457CFB53641 │ │ │ │ +FE398678552DB3A1541D3BC3B22F299B1B09CD01F99BDF17763981503E3E45B4 │ │ │ │ +766F04003FA72C8A70DC76B511AD73952ACCB1A0ED6E628850E048E34D4272BB │ │ │ │ +BEDBF1C09CF0241001C25921965FD38B0143069DEBDD7E445D12E030A71075AD │ │ │ │ +B588C700075F6C8FABE61FCFB7C0D253F8FEFC52C0E632C2954ED875C1598627 │ │ │ │ +22C2568AE6C0E27F06E67C2D070911B156E2336CCF4D5E5F154E4D383F5BC7CE │ │ │ │ +EB147629E4675E185A93A5DC3207DBCBD7978471E064210CD992CF977306F406 │ │ │ │ +E2AC2CD52953EBB2BD5A1DE97644E33AC4CA0082A14A2DA37F9690C3F46AB794 │ │ │ │ +B7600982D88B44557ED37F4ED8D1A42A867D46125EF3D21F036274E2880A8AAD │ │ │ │ +844075DB268878ADC2050C7B9DF4A72F411E144D56844E7E4D494A91CD539F06 │ │ │ │ +D72EB3194699434581FF3C415270BFB315E0A45606CA385C4ADE9434131AD32D │ │ │ │ +F6D0453ABC5A9C5F2D401CD7E3F48E380A0C7E744AB458DBC48040E1928880DC │ │ │ │ +E6DEC0F6517D262701E7C1B96440A24585577B372FCA573F53A70224D3F27652 │ │ │ │ +A6E0E2171F2B7D1F0A5D599CB423DFE745816BBCC852B50155B228C48079CE99 │ │ │ │ +C3C4880067D70D2FBEDA08A68FDB8BB4EA7EA70451E62F8143A038D63E12D6DD │ │ │ │ +CB20CE64020B9680DF5FE34A3EF19C7E8EE993BFA03F2DE9C1E1C9EE98665E42 │ │ │ │ +C33F292F50DB0663EEB26BEA06D4222C87E113D0CE1E69A89BB44CCDED636EC2 │ │ │ │ +4C1D8A485716097BEEEF03A7A4CC89EBA83B6AFD15126E29646F5AD497D5781A │ │ │ │ +73D97BEE8BC8681AD8377DBAA3DB5BF32816AE0C530DAB4077ED58A102D50456 │ │ │ │ +B35D5861C52297C113D3C754FAB7FF079F55FFFB027E7070E59877C1572689B1 │ │ │ │ +3D1D5E4C4130082D6FDE4A0B918D44565246D2A731DA97C9C55C401A2AFD69E0 │ │ │ │ +63A19AA1240EB51B22BFF77994EF71D09056C3B196FECDAF615F7D4110673281 │ │ │ │ +C99B02855C9DCDE8A75A36AE54C226994F2C2482CB438DAB9550A923C5271A3E │ │ │ │ +7945ED45D4B3AB9B5FAF41A19318081F8CE8 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5434,17 +5432,16 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ -dup 68 /D put │ │ │ │ dup 76 /L put │ │ │ │ +dup 79 /O put │ │ │ │ dup 83 /S put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ dup 103 /g put │ │ │ │ dup 105 /i put │ │ │ │ @@ -5630,160 +5627,156 @@ │ │ │ │ F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 │ │ │ │ 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 │ │ │ │ 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 │ │ │ │ 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C │ │ │ │ AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ -AB7916D44EC2210CB941B4C12515E844F0D26CDF0AEAD63BF1491BB50ED4D6D2 │ │ │ │ -739930E80E26E9B425C25033121899AD22102AE6868648BABB7D5985611C95E3 │ │ │ │ -5B8D365C7D034BA22E904A0ADB0132CE38288C127BBEA0825E600D18383A6854 │ │ │ │ -EE28FD1B2F57AF704854AEECF985EEFAE0521DB38B0A7511C803CE8AE0D0BC02 │ │ │ │ -50744F806B8D771AEA2192F982AF15F1AA2B282B220E0446388AE1E65D790C3B │ │ │ │ -EE0CDD225BFA7546482D89735D609CB0F6404848709CE648248461C1C1947781 │ │ │ │ -1D09EE81A86FE19A47333DE9F1BB60E4D5956B30CAD83C9D7802B23384AA4770 │ │ │ │ -1F8B0BECC59D89A72228FDB1DFF4A8ED1860B5BB6A68972B4AF749921DB8B84C │ │ │ │ -29CB8AFBD2A2627BA5A48365915B851AA4B6C3EA9B56AFF84BA518B76B538B1D │ │ │ │ -F061BB3B52415F812A0FBE7E3F1368385655D26F83F4E26258BF2DEE7635BCAA │ │ │ │ -CA750B27B84E49C0739DD9FE8D83E237DCB07FAA40A877F8EBF3A9F648A42396 │ │ │ │ -FC5DF2E28CF108232859709F2E9C018D674E7F84D46AA22B5055DB664186CC0B │ │ │ │ -9B1DA23AEC29A6D08B92C5092585546ED88BBEC2FC591F1C1CA84328FFD54A2D │ │ │ │ -DB22854969B48D14688B68332769DD43B3A7B578DCA34ACD04A38A1FF04A91D6 │ │ │ │ -5929BAFF28927A6D84C7E3A3AE8D74891319E3E45D856BEAE380284C94907D23 │ │ │ │ -A071BDE07E709B00DEFF9B798CE4CC12347AF897E5AD822896CED42E2D8AD3E9 │ │ │ │ -304906C9EC2AACD46046ECC405E7026FC4CBB5CF1839E9D5FBDE499E014B6632 │ │ │ │ -E452A674891E081EBE36F142FF67B0545D1822A7E605DEAE35873ADBEA3B5080 │ │ │ │ -1E76E153B5DDB46B21EBA6528B9E0DA580DDEBC40F6DDF9182922DF289238466 │ │ │ │ -7B405708E3C87D49B70D2B2C18C884D4F92095DE0947779AA0F960832FF8A120 │ │ │ │ -091B926290F81DDD0899B5B1351B7E2DF850C28766A2FF8DCC6727AB0481D99A │ │ │ │ -AE808C2E930B00350B42BC410EE092D3D8F317179970AE353BF55A9B60BDFD4C │ │ │ │ -C13705E44D2997F1239BC58B3A38CEFD05818249C8FF00A04B1AED2599BE8598 │ │ │ │ -3C70E1AE80285F84D0DFBAD7FDBAF9760B68AD9FEF4DDB7AD646E11A84F6AA2F │ │ │ │ -7C061E8269F0D30A821A38C85DED731189F95952F98E392429A153828D7784A7 │ │ │ │ -D7483A571BD77BB5C65C735657189130573B10F6EBBBB2E2D2C7CACD07292659 │ │ │ │ -34CE06FED18C658F1626F500719F629D1B7BBE05F20BE9992A12ECE6B995CCEB │ │ │ │ -A9EC6D91BC2A87C1FE8C769A6C3F77C568CC6B716B757D4CF0F0F986946F8BA4 │ │ │ │ -B26DDC43655C8D13BD25B01136519D8AC8778CEBD1FC6F2FC692E42F61C371D2 │ │ │ │ -9A74A3B5231FD223BBF62984D64C1DE7723D34C42F210690758D27414A7408BA │ │ │ │ -ACBDCE6BC612A0AE07265824F2A272EEF0E590FC76DEE1C06314862BDFAC9621 │ │ │ │ -70E6BFAE722C204DC8FBE679F999ACD61821ABA3985854883AEBEFA99284ACC2 │ │ │ │ -97D208F0E5511C393563B7068D9257FB7CE5451B7D99D6E6F7FF387D906F9BDA │ │ │ │ -7A6CC96E08EE9F0E3200275868319C2B1EB84FA0A6A1CA25FC1490BDE952E919 │ │ │ │ -8224999C6F37CE4E62C33947ECC27F762F2B11683B7A22309EF9C9129B47C01A │ │ │ │ -25986FBE58712C88085C94652E4D4E38A80939AF0DA975AAD14FA7F9E66354A8 │ │ │ │ -46323466E4C458F4546B29CCB23A778D6CABA5C9D8DF5E01EDECC546552D5773 │ │ │ │ -B5FBCCAD20111E5325A3F76BE4C14BD1AD50D51648A747C05133F61B3A3B3324 │ │ │ │ -73A787D55396AC192A3CEE4AAAC864FCB90EA3912041BE52E341B959FB60882B │ │ │ │ -1FD614E0C7FBC733564B33DE720EC29B73030A66388C7218E357539BAA7860F1 │ │ │ │ -FC564F59B7DB15DC122BCB702BE634E68A282AC1221C7D9942B82BE7E7860862 │ │ │ │ -AA3899F389BBF1AF3CEDB4D0309ED16610AC04B32042F9CAEBCCBC8622A87F79 │ │ │ │ -21B424C2609D8716286A1EFDFD0C0F7D7FEEE16DB13B1B3B3BEE0F46BDBF692A │ │ │ │ -A13EE56DDB1551126D05DBBD83628ADC5C7BAB84B476B86192DD4B656BE22362 │ │ │ │ -16DEA5A3ADDB03A3E139510941059955B07D162440589EB8A541109ED1BA6D67 │ │ │ │ -8AD7ABC84448BADB3CD9CA92275F8A746A6D76EEFF9B4E009C0EAA117752FCBC │ │ │ │ -142242C77F96DF61AE7EAB1C06D0511489B71ADAA8166C54B0023EF2D678A67B │ │ │ │ -9DFBE0A986D641B30E0AA20FBA45D0B7FBACA1FB4C04D8E51798B66E27E17257 │ │ │ │ -FC590CC41A4310DC37BBA6BA48546BFA0764FDDC449BFA1BB734D9CF93EE96FF │ │ │ │ -09FE1DAEEA4D8BF055145B3C6C2C705C325B9BC0D266831389C9C6C29852CBE0 │ │ │ │ -04016B02D1477208F52DFC38F7B0DC450911384753C42B99C28EF3FA772AF02E │ │ │ │ -E31727A1BB268EDDE0BF2A9414EC068106EF34BD810279C33EF667DC6587CD31 │ │ │ │ -360C41528CFC36F01F9306CFC0CCF0C9D3FD7F3D55C525FD30BBC70C1E1C66E9 │ │ │ │ -9A143DCBA9380718FFB5EFAFFF250198C5457CF74A804CCE8C898FFB534BF2AD │ │ │ │ -682DEB023E43BD0C87854C5ADCE7F9F63F4A5A7150A9B7319901A8FE5E13E652 │ │ │ │ -51CF671E4466F83DBCF7C08E7938CB73BF21C03C340D6E5271532A386B71E5B0 │ │ │ │ -E185AF2B56F8C3A7B6E3C1DF7D7EA5171BFA08B94D285107C9C50D848D437D0A │ │ │ │ -03E341E7EE5FE152958036794964F9D1CD668D3CEADA9B1B7741EA410AB07F28 │ │ │ │ -A63D57E2C831D46B086EFC72108EAB92D5AF60C599418D26245CC59372EE120D │ │ │ │ -FCA9D47F7948C001DCE4298BD456E29CE09B24F5B194EC78356EA53BF9FE7664 │ │ │ │ -FCC36EED6C2D62D25AF589B730558D0F49F81488822D434188F89740A90E3132 │ │ │ │ -BD3F2D7591F8E01EC416A832086EA8F0C5B595D498EE2A127C3986AE1131B447 │ │ │ │ -E38846BA2B3B5C13E40BC5E2E44872CD7040E5FE3511AFC9F70A70DF89572148 │ │ │ │ -9401248F720D25AA4AD58425DACF910C0A52D9ABFA384D834F514D895B5110DF │ │ │ │ -44E3D1E981FDBCB9A71BAA581EC51467A8516FDC458C749C0F46C9B3D72B12C4 │ │ │ │ -20DF4A24607472C30B6143FAA5D39C4DE835D393725C11B6920E875EBB0981D1 │ │ │ │ -461F9E474664ED539547BF195F4BCE6931F19B1FDA0404D57A52C5538C26DA61 │ │ │ │ -C67AFA77C7FB1716AE7A65ED46EE896FEAA9D2A75BDDA58124C17D73B231F578 │ │ │ │ -1AC929E51FAAE57CA879D0BD37D7CD4CE08A57639EBA65D6D87B91A2F949A868 │ │ │ │ -DDE533F2374E1AB81D9172950CFBFC149F2E96DA1F09DFBB69BE06CCC537F625 │ │ │ │ -070C48F52DAFB07990E4936AFC003A958E115E78092361D315A4FFD47F687552 │ │ │ │ -1395CC347895E145DBB2F65A904B8C08852C5028D90A0435CDAB0BFD2FB81590 │ │ │ │ -B2E9573FD3AAB0D76711DE55B85CF1F3CD3E061989DE64D38C217E348A18E362 │ │ │ │ -17A7C9C6B97745321DE82C870CCB6DCE4306098EDE94AFC70E4EDF4CABBEF8D7 │ │ │ │ -DA178B45ACA66A027433F55E28CEE0290A6ECB4DA302A357AA38C4BDFDD07CC5 │ │ │ │ -88F6956E0237D34B9BB7DCC208B08836ABB71821F5F92A5261509B682660AE49 │ │ │ │ -805E8CA419994B0D8E0CA2C9CAF3EF3846AB0E3DD5275FC5256A85F22731C948 │ │ │ │ -99A25A929CE11CE0DCFB92092BF94FDAF9E33BDE0C266CFFE0C0C29B800F1DB5 │ │ │ │ -685C3D5C8AE89D4AE4DAE4C3F221EC964272BFD6489864F64781FC95F995A506 │ │ │ │ -50B3767416F2F11BDCDAF9D1B18D3D2FDB2E9AD51DD4EED3C418752C2F12CD27 │ │ │ │ -228492B223CD10DAFB47A57F8506F5E212668FE67D8FE943068D6E27BFD458D0 │ │ │ │ -40CA70902F102CA8433E6A6766FB1142C5520192FBA897FA94E1BFC4F3F1015D │ │ │ │ -49B244AB2BBE508498E873A0283DD00E0C0B53C83AD028E2C0E42E3F6CE5E5F7 │ │ │ │ -20D6929A9F7FE7F9550A5CF49445D11BF7A7823F015CDEFE49DA57A5151A49DF │ │ │ │ -BFFBE4209BEE039B4C6940BD96C713E4CA7351232570DF59890555C332DA85A0 │ │ │ │ -F4F3096C0E12210BD6A1B8E1F42B64DCFEDE5AAB448C3FE1C50BFF2E18D15FE1 │ │ │ │ -09198367B546F97F8234E87CE89671A85A1BAEFBF388B902704DC5D49278364D │ │ │ │ -C3ABD4A23811C03D43BEA1402D8C7BD2DF3D6FAB6D2C1351E21A03DA50B72D7E │ │ │ │ -C20184EF18F217D83C4E31E5479E8EDEA8236C0EC4A38425891C28CD78CDCDFC │ │ │ │ -13DD9832771AF8D42B4293DE75D492B04EF9D2869FCA03AF68D1E73261CEDCAD │ │ │ │ -767D5FB19441951802FB78760C99B3FF1EB16EC6DB8360F229B4BBA85B8A922D │ │ │ │ -BB4E59397C6A949316FC18D69990C817F4315024C11A7D8EF373F5BC571B153C │ │ │ │ -CBF5E2FC2E95C2C422ADF0A842F79E133691C6E9F7F4BDD08D4C6E29CF1A0658 │ │ │ │ -48842D243A3667DD046105F7D4A15CD97382F0A9280E0FB0AD8D647A29BE8802 │ │ │ │ -2C891A6495CAAA423BF0C63ADBDEB9C8F4D0464847A0AEB67F90208962B25806 │ │ │ │ -D8DC3227B0D3D92CB187993B05D14A3F58E50016A2DC6E522F211479CC1FF67F │ │ │ │ -52A6867E2BB6E5BD2492EDCAB0E00E28AB1D8C3C258F819BD117D9DFB25CF9A3 │ │ │ │ -6822399BB864B213B69BEEB4E24B4FC8353951C0038B2F8E485CCA2FB88B42D8 │ │ │ │ -9E3C2040C4DEE8A1BFD27ABC47377A58D6630A732780ED0ED66B8C2B7788FDBE │ │ │ │ -E8EAE83EC960B8031C7B28B7F2F1F605653C2CC3B531C8587239C7344BB82EAA │ │ │ │ -1B2E283E7EF069356117E3F733F50DFA242157003D40B8A940B0167DCC0B6582 │ │ │ │ -061BCEBB72BD71E251270ABA1AA13A05DFCAC0646780A4B42632D8073A8FBCB6 │ │ │ │ -CA82629550251ADE21E9D3065A128B8B7E961B43028BBCFBE2364829AD11B189 │ │ │ │ -9FA09E066A5786115951B585BDB830EFF5FD54F94277E4F6D81A5BF3617EAEFC │ │ │ │ -A0B98C3CD069F4E505FE9CC68B921BCD72F5CDF9AF5820F878D33A786CA8C456 │ │ │ │ -D1C5E27534AC8386F5C143EC493560DC15A8EFF959DD308013072D6BCF97771E │ │ │ │ -6D905EA552AFD8542515FE54D54ACA73BF58686AFADC8B4966ED324CFF0D7046 │ │ │ │ -3D83CE348824CFFC2B6D3FBB31D386C9AAA37F48366CD163ADC99CE211856782 │ │ │ │ -675F0C5C33E73A91F57B598A562BC2AE780F2341116A037278A25F24BF55CE74 │ │ │ │ -C4DF4B6926FB6E82E2EA62E23C197EEDCE78BB858369D6D37C2443E815378277 │ │ │ │ -17FF687E5DAF4DACDA1817025C4A3FC9E3C85393FEDB1AD02C19E52C0B510797 │ │ │ │ -97748E45D6DE0849341039D3CFC3DB4C2C5E94F82C83CBF94F12EE0321863525 │ │ │ │ -9178CEEF725B27AB6992E2408E051CC72AA0ABBCAF99759EA394CC3F5EE14818 │ │ │ │ -5DF17BBF220896F8435F1FA6781AEEBE0D642BF71BC84F022BFF11CEEF9585EB │ │ │ │ -BA598E532ED151E5ECE16085B16E39451955E5049CE25163AE917B18215DD91A │ │ │ │ -5C3010E4A11958305A135B36FBBF68AAE430667137A76761CBA25C38EFABA28C │ │ │ │ -D99D70935F421BFFBCF6844FE6F975C54011EFDE7F1EDB987CEC863DE1886174 │ │ │ │ -9CFFAC69310614931A392C4A3582E3707272838173FEA6EA814EE9C5CBD8CAB8 │ │ │ │ -CEFD4FD5B48BB9028BFAFE89D8308164CEA74543C77AF55A26D2B71DD5BBEEF0 │ │ │ │ -8CF53C644F596D40AE4A73063C056066EC63BFEE98968E3F5A3C62B7DE42D65F │ │ │ │ -004E2B6DC651D4DB7DBBCF00505D098AF1B20ECD2FDC028FC4A5A8CB56E365B0 │ │ │ │ -266304F0B497D8DAA67287EF9BDAA94A6EA60D43005697BBCC07607DBECE5B91 │ │ │ │ -EC99A4F093F366E97541CB68AD5717872C09738285C8AF5812C4B42998903290 │ │ │ │ -395FB75F79A9EA6C42A50D67746D45AA74AD7A013970124A68212D09A35DEDCC │ │ │ │ -54D6E594DCB507CF135AE34472487C0FEEFC7D23DB9634A9FEF85B6846734D88 │ │ │ │ -958D99D82F30F93E7B36AF90A01BB6F69833538CF4E58DD8E4A4B1777C5B96B5 │ │ │ │ -84E5AD5BBD740FCB9B45E21E458B352179A980EFE7EDB2321F0A36B1B1C00396 │ │ │ │ -E27C8943EC94C8F82C3AE8A379C239C21D60F8EB6413DA68D8B64DF403861178 │ │ │ │ -5203160928E93089D3A81169D63B058BA7D2B10E805C938B9DF780D46CBD8758 │ │ │ │ -370426305EEE01908EEE5A86617899613F410EE7754199E6DAD2181BDEFF7901 │ │ │ │ -D5EC59ECF7DE9552CA5210FB24E3CAD051815BAA6B8183A3CC71A78BB2BA9926 │ │ │ │ -DEB25E86D088F34E1BA594FFF06416CE8074878910B5902E4DEEFA400A916067 │ │ │ │ -1941F69F0021DFEC9D6DBEA275BDDEA8F4FA69DA462989ABC5C0264C1C8B55BE │ │ │ │ -1972E21DE6EEBBC4C7A6F71524A3FCFD8F7F3F70B6517673FF6BF0FE4925733C │ │ │ │ -9437617BE57CC825993152CB5F6444BD1AD10C1D27EC8F55BDD20E7F5B1F5632 │ │ │ │ -BACE43968E071F4E4A3A8FF09A79611622A45DFF59CCE35808C32043D58FC1F6 │ │ │ │ -9B3E1F813A5E57DD024EBEB191A5A30E32827DD471D3DB3B1F94BD1BEAA28F5D │ │ │ │ -67390DDB312FEE5DFED56B82CC6AD94E8B39392B90DCA77B3623F8C597A6E6D6 │ │ │ │ -F4E8A1EFA63E12FC485481B25B63D978A6864D42D4073AB7A7BD687B2A0F6BEB │ │ │ │ -D81562AA30653646B17C73D6A295FE474D4FBA45B5ECCE7DBA741337389CA693 │ │ │ │ -D40EA6E21BB67BB5F8DC58DB44963EAA3CC904C799926276223CEDF758BBD1CD │ │ │ │ -F617C9FA4A671C5D912D96569C2E45725F73AA2ED53D27AF8E4CC7F77FD32BC0 │ │ │ │ -DD93A3A5C668390D55D6C9D7249445A361433D06F55989C40021E7EF470281E1 │ │ │ │ -0B9A82C49DF9FBFB4445692536A5F88C4DF3B2FB524ED2A1904469C9026ED36C │ │ │ │ -275DC5576FB9023E123343DEE87A6C416CF03E375FAF1CAC463A4377E99BB28D │ │ │ │ -7277155796C76821 │ │ │ │ +AB7916D44EC2210CB941B83BC0F1C097792CFFE7112D039CF77EAE73CB4E02BF │ │ │ │ +60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 │ │ │ │ +1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 │ │ │ │ +F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 │ │ │ │ +1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C │ │ │ │ +C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 │ │ │ │ +73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B │ │ │ │ +E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 │ │ │ │ +2F2CF265A3D15993AD2BF8F3EC52CCFFD910AFBD0C8696F4F645BA30F814067F │ │ │ │ +0D6D7DC137A90449D0E5BA59F3A4BD93AE747A59307924B2DCFA51827C5774CF │ │ │ │ +45A0C469A27561983E5901EB5F2D8548DBD72436018A9CB8B590406B0FC49C9D │ │ │ │ +13A9E37A47D8DB6EE59E823778BBC9676EB81895119F1B6D34DFD6D31F8D29E4 │ │ │ │ +7899CB7C7A857C254FA5AC16C0BFEC2CFAA9F32EE998F50FD309A2586C9C30D9 │ │ │ │ +BD4779CDE57A2050EB69A6312BC9A68111CC1E9C8C1BD9DB2B0BF7F29CB14429 │ │ │ │ +D7CB197E341B939950039D1D434AC3F1AE6705209F418ECF559F9ABA1A2F0EE6 │ │ │ │ +D7E4602EF0ED613ABEB116BC9C254B0B4BEB2F35ADDA34D9F9F7DC15833C8479 │ │ │ │ +9667EABF81698B6DA38688EA4F1FCE65C6A921650B64658EE4462F134138EA2D │ │ │ │ +05EFF7027AF9017AD7927F87FC4B892162F75461E4C9B3F9462DC10EA290FA70 │ │ │ │ +2E05FC129FDD758D0B55F55E107D9FB04CE567913C0BBE20E9CD401084BC7092 │ │ │ │ +DB719185689AC798DE205F07AC99C5C369CF7BFF3ED1A58AEFEE763DC398F11B │ │ │ │ +1C07E81DAE49D1830BD99FA1551F14BB01EF761CEC71E7640D3AA0C7BF7DC95D │ │ │ │ +7B7008C0E65B1FE788CF61373908F6F30FBD2C52D00B8ED1945745FF364CCD34 │ │ │ │ +90CF217C65F52CE2AA644FAAA19AB6CABEAF3AD0F39E1DFDD3A9F17DFEBE3085 │ │ │ │ +5602975091033AE2B4BA63B8CF799D0D7FF34459445D86C62F7A5F74BED3ADC3 │ │ │ │ +FB2EC73ECF113C792552087F6B157FB06BD96A1C2F1F882EFCECC606DA26D35C │ │ │ │ +23781387A6B139CD447ECFA142407EA43C948184BDA845717687C24B55C37D06 │ │ │ │ +0D308E8B99C240B409615F8B93EF484888879A7EBE6A51F720BE2A27E58B0C1A │ │ │ │ +7DC0089F9E4BC79B2FC54DBD406964966B411EB224B39033CB8B76004E5C6AC4 │ │ │ │ +FC3AB5CC27C02E17D01AD1677D3B3430BCF94E669CB7EAF290B4228D16D20014 │ │ │ │ +8BA94C40D71373FCC41101227DB4E019E8AE6AB572C28D61554799B2C3B37457 │ │ │ │ +89BB0064961C636B92D3F6F98EA38D6F0E30C13C70DC0467E5FEA945EEA659B8 │ │ │ │ +A3567FBC43D9B48BE9ED85102FBF170C996B82B56FB04C0EC807E223FF0A069D │ │ │ │ +F3790505A928FF0562B3FFB38520F678B5C4584A1E56AEED1308F296C1FE39D6 │ │ │ │ +A8B34D6B1B4BA7BCECEEC640FAF1B47CC89F05160D742A222386EB90D79182AF │ │ │ │ +BD0F06180154B4A036080CDF9E8E8E3993B345C2511FE31EF07C353ACB2F3B49 │ │ │ │ +3EA7A7B2C3DFB965E9E599E404C7DB577CFE9120740CE568905D77833251D007 │ │ │ │ +17FF29438AB929FB051D9EB25A406F772FB05E21169C5E45104AFB404799EFDA │ │ │ │ +A06E717DF8D014073675F2E509CF6F87A34C6010EB10F894832593920771FE8C │ │ │ │ +83C477BD3BC3B8D374B4C8B15E6219338C82CF93A00459EB4F6048C2E807721E │ │ │ │ +617062CB597B4AA052AAD54A7610AA4A906B100F6E9DD55D03005BA1729791E6 │ │ │ │ +061E10C73A19410A8AC635CCFB0965EA8766E5AAC15FDEB68D95449CD47EBBEF │ │ │ │ +20AD28B72B14584A6EB537707FF5ED8C821917FEDC0D055819184F923D337C6A │ │ │ │ +ECC67D1EDC5B6AA24D73E0281880A69596D8197F0764D7E5C6151F4713C189C7 │ │ │ │ +D18931305A6996D22807A894917C8A29B4171F6EAE87622D6C1A3612B5DB8A91 │ │ │ │ +38247778BEA841944FA5A8D251FB148A9067F47E3CB704D5D1D669F15D00ED44 │ │ │ │ +DD396A1F48AC73008960716F063E6D0D96973FB13C8F421F9D78CEAF1AD041F9 │ │ │ │ +11EB4C1266404432BD4DFDB6B2046FBC569E72AFD83F37D1CDED587D22E9D758 │ │ │ │ +6ADF276F22137A5A60189D984FA481EDCB926882E28F8285285069A73C0487C6 │ │ │ │ +42A2402CCD1E4A66E62EC76325DCD62559114A45892B38B526EEA51512E021B2 │ │ │ │ +7915CB45437167E1F699AD9E849ADB768AD6F7C5F15B309F5F3D98071FE69D59 │ │ │ │ +E778243FB7A5197063DF065912F713D7A67F2468A7C5F9C7AA93334FAA42DC8D │ │ │ │ +19BBD26CA66CE4EE97EE5C73E8AE001873CE0523F1C581BAD15D5BA2C40A0D7C │ │ │ │ +287266B078A6056DF5CF195C0C8EF01ED7B495054387006294F75EA5139350B6 │ │ │ │ +A06B8BF13E7C5450385FBDE634AC31E17D4B2B45666536FC8CE8A88DDB9E4202 │ │ │ │ +21DA868E75EB99E5827A5B89299EC053926E349BBF660DC7D4985BAA69BEED6C │ │ │ │ +6E0CD5E234D34F8E41BC1F955C68060EA4CB214EFFC2970D2CF43905CFCD4DA4 │ │ │ │ +855ED0E12F664621A26E20A88DD18E7828318998DC38D7CB19C6AAE11A78ED83 │ │ │ │ +27E6DC32E5E57AEA35242950A3472FDDD401F03E35F0B28BD991A998614C6773 │ │ │ │ +7DC0F722E5BFDDFB4CCEC7CAEEBD3857D3B22F5A9BEE128BE70138751CDB8813 │ │ │ │ +7412FDF0F9845808EFF793DC52BF2B1F7F7DFC2565AB4D87BA80B25CBEF8C14D │ │ │ │ +64E431C93A17016107DA56BDE3CF134C69879FAC3BDCF8F3759CB15F5E444B10 │ │ │ │ +4E1D3C1152EB770B78D160E53C11C08EFAC277B077421A503A892CA01E03E4C4 │ │ │ │ +61565932D909E33329E4CB1F291A4DFEBC0F48FF2BA4B0E337E64D40BBEAAC30 │ │ │ │ +63B0749857CBC5AD2D06E280917E48283F60270EFCAD31191EDAC198D3CDC813 │ │ │ │ +D84DAB5F37EE0C612B574EDEE4747FD1988BB4B1F257B111491C4048D466FD5B │ │ │ │ +7E5A2905197C916936EED27ACC96705EFF1CD62948DE2261CE4B8B41237B3A3D │ │ │ │ +D5A6607CADFDE2A8E6A94FAB763024F294CEFAA1DD084DABDD13A81126FD5D12 │ │ │ │ +97BC39DEE709F74D8335B2FD1E84D76330CDC001CBEE0779E2A9B6A9D3144350 │ │ │ │ +F7AA93B352493989ACA6DC8DE67EE876A480FA894D2632EC0D28396ADB085D95 │ │ │ │ +524C3421636BA35336A9BCE09E61261515ABDF2913EF112E795A7F51BDEEDC50 │ │ │ │ +8A0D04221AB824AC50AF6F31BD910A5B61EB4AE8B28A26D035BF34B3993532F0 │ │ │ │ +419BCFEFB18184D56DEFCA7213255FD70F2E95F50E5229F12C98FB400C56F22B │ │ │ │ +9C71C49D27D7354D4D2DEDA393F905C464DCE69B5292C811EE5DA773920AAF49 │ │ │ │ +0C376FE61C50586B8589DD0D3B63562A8EBDA150C9DEF80CB2D982D8DDD795C5 │ │ │ │ +C9A5D1220007A38E51268392A667F6CA9834DFE16555EBC1545BD0CBA0F327CC │ │ │ │ +D13B4A47D507FEC961B5E2BA3B3C02D59CCD2C3CDDAF32239923B2BF6BBB4A82 │ │ │ │ +B8F19C3E1954A7D4A8CFBB3F9DD7DBF13F24BA0E692C03E4F4098C74CA2AC5CE │ │ │ │ +79E00167A105234A171A2234C535D77487C5B0CF4581EBFEEB5DA016C0BB902B │ │ │ │ +6FC0F966C2249F812BE9E4D26F6553DEEA2CAD705632BD2388E4293B6173B167 │ │ │ │ +D1A0E1ED9BFB31CD8850A499918B478F68851937F5C95F07FE8342C8C17D12A8 │ │ │ │ +2C77A504DEB0BABBF052C044D4CCEC28AE138D100EB1EE59A51C25AA6375CE33 │ │ │ │ +89113BA4F12B48101F2E0E89BC7DD9CBB19DFEFD28F3439592032466A8A85DC3 │ │ │ │ +C0162DAB3D81EABF98724860C56581FF842666E4F322E0A22672809505F7058E │ │ │ │ +4B789DFE5F21DCD61E738CDAD62A123051904A0F168954CE25F1A39AC4AB5E5B │ │ │ │ +6CD9AD20B65AD016BAFC9FA60501D62CB5A2EFCDD8E5915F9569AE31959D7F90 │ │ │ │ +60D60F6D9299A0A091D10F3C749C8FD34A52921AB8F51944230236C3D44C4D47 │ │ │ │ +C5C28B80EDF6BE896198FD224940AF188CE7F9A8AED117367A38BA4B6875312F │ │ │ │ +FD03132FCFD1284623E047775F969F71DCFAAA79AF5CCCA3EA538E5CB8EBA710 │ │ │ │ +E1F7770E6E655D704017B8154D583B4C50790D9423327B06422A05D0FEF8409B │ │ │ │ +851F9BB37CF27047B025E83FB2079C0CEA62EB0221BA981962AAF938AE8109D3 │ │ │ │ +CC78AF0DB993A11304832420130D9E70DDFDA01EE8D2C187601574D9A286AA50 │ │ │ │ +3DF998ECE027AD598B8A73E94DF1E6B46F3E3B8C5B101E5E9B557993FC9C0949 │ │ │ │ +061F0D1693CDA8E34EFBECF4881DA1A8F38A683C3C36A5C5991B1B3598D55F8E │ │ │ │ +43E2EB4277239F80F177A45EA6AE1E8B23400ECA769DBC3A4A5914E16F80FD23 │ │ │ │ +7F657EE9A48EC6B796D9D20EFCD8D3EF605E2EDFE464382A1D508D0255209376 │ │ │ │ +0E207D2320F2B59B161867664EB0CF1FFC25CA54D9B6D36FDE81641CD376871B │ │ │ │ +BA4E35163683BB38ECA2DDDF6DC014703BA1F4F39AC6CF8B5FBE1B9F49FA061C │ │ │ │ +1EBDC6C75F3D10A272A85D268D2E89D6BD506FAD2CA1C65064779FF2CB8C57CD │ │ │ │ +E5A9B900ED4AB189F380E3D1A6879291FEA4FD27E1928F7DA719073437372249 │ │ │ │ +65C6817EE3AA46CC305C4B8698E0C29FD20E717A2C3B80A6D5AAC1D09E57CE70 │ │ │ │ +A601E97248C655DDFD2BD375875E1B980F1E473F94986FACCDB6DFF103E9C48A │ │ │ │ +400B04746CD3D744AD86FD85935110811A205FAC2AE473926B0F14A7AB982156 │ │ │ │ +8B79F8673150E70C5761242A684ADDBDAEDDF6FDCAB2856651A825782CC9E871 │ │ │ │ +87F8813933986EE58A6930DEC3F797A99752186F591688E827C8DEDEA04D5521 │ │ │ │ +CB53837C0985B437AA1DBFB5D6674D9667EB82C002DFD6E9DE7AF368601FEADC │ │ │ │ +555444D6915B37E0ED2D6CC2F5A7183B153DFC13AB75F9C110C0E17FC13DC568 │ │ │ │ +68E91C0B25FEBFBD24CE73A061FAF327285E0090F1CC0A0A82904186A5ADCDB1 │ │ │ │ +2626AD850B29265E6081A2D5B387C83DDF231B43F8A127A3FEFEF584A8E0A3D5 │ │ │ │ +8643357D52322EFD7BF6EE63EF506CDE1CC97099192EB397AFF1071B8EFB46EA │ │ │ │ +6C677A6B14E5E7C610E843B1C510988FC549A3676CD205D72C94CD805EA91D44 │ │ │ │ +38C2A4E7A8450BB7486F290D92A4F60EC20543368C657407160E47370383EB2E │ │ │ │ +A0B0E66F156EC4B2DE47D344C9B9478A5DF41CD8C456587DFD7E8D93EA46C5C9 │ │ │ │ +397942A6BAC5412B698CD434C22874ED34F38DD5262FE61D4E47BBD78D39744B │ │ │ │ +02248AC2B2221B25A2DB446BC3BF76187CF1676610BAFAC9CA7DEBB42ABC2450 │ │ │ │ +4E71FA7DF9BE11C817700DC620581BAF36C357A0B5F97D8B2F759603C994F275 │ │ │ │ +432A0B28E7C68E2F31DA6174452B684C4B7501751C0DF5CC9F09738E381D3F55 │ │ │ │ +319F74BB0F55BDB2F473C3E40EF56D5062FA072B197C9DD65B188DE118B39710 │ │ │ │ +53EABD96576D1394C9872D04C50029EA48D21F1AF9DA9BE9862C62F1B841BD1F │ │ │ │ +DFA4BDDD63A46266A1E9678352A25F5F0F8640CC735DD671F9300D76722310D4 │ │ │ │ +4CC854807D14A8C7E62D6FFBC69C0716C088052AAFA90BF9A324A40D75DA3781 │ │ │ │ +17568FFA39FF67765634FE805798A4346E655054BA07A7FC64523B7E84EB9D0F │ │ │ │ +527C4B45515770A39FD008A666D8EC79FAD20105E993F82208545F8D96F76FE5 │ │ │ │ +EBEB717D48A42888B92435327531C6201A7EC17133C5006A6D171B0F66E1254D │ │ │ │ +4E70B69FD185D530257AB3EEBBE1F1797B23DC753DC90F4A218344FE9FB5B05A │ │ │ │ +DC643B50563260B43FC84D7CF44FD2D793CE5101F9E15F573DC8258A34A1A2E5 │ │ │ │ +8F5F1731BF73ABE81A17275D490ED10696C8F64FEBE8E8B5E5A7661C5E7397F1 │ │ │ │ +E6541A12F33B7E785EE545B0AB755ED82133965AD787788D0F79ED18EBC903AB │ │ │ │ +7C4665A89C62F4F66641D30B70AFE13E7806FB529B4A0CF7E18C8D74EF4D0A2A │ │ │ │ +CB7E44ECB9E21A943C57673CC8DD8A498AF7AC5ECC87A48A04554E245B8DECA4 │ │ │ │ +31A923D4F68A30A42CF52A973064DA3791A8C256CC17087EC0345CDF6AA97672 │ │ │ │ +6953D8F4122439B0F7BE7C2CA3D3989E14CDB39CC7F60EB6BEFB0C868A042895 │ │ │ │ +4047B4EB693629E8371C3A584EA06B58EB26DEE9E45CE9815D6215B82BAF1824 │ │ │ │ +38218D4FA0063BEF9B27549731E28CD67AA9E79E408A8FEF7CF214A92D9C17C4 │ │ │ │ +0C5FB5121847FB76470971169DBF96927AABC868D57FFBE673EF7FE0048B2FD6 │ │ │ │ +EE700DA0118AF0CDC5B2D220712AE08EEBF98284B3DCB400A5B3344DC0AC619F │ │ │ │ +9369CCEB268CFB603C8C03C24406856179664D2B8BDA59DFE134A53D58240D58 │ │ │ │ +B7E158C89F131008FAC26867B0323CB3624036981A519106C4C5F86EE1EC0A10 │ │ │ │ +5653842562FF236263802497B671B6C05BD0535885638502BB64394740D6CFF6 │ │ │ │ +30B5612BC52217C199E2C279B4EDD64999F16D0FFEA14D0BA805DF1E96A134A6 │ │ │ │ +F4D41B49B08C95D2D05D5916498BD1C393716D9FF28261B2E754B7B160E5F36E │ │ │ │ +6545C1E78246FFF1A60764B7D1DAF3C1E36F9554DC0C28E717D18B21F3614FFA │ │ │ │ +7BA33FE3D484F3F4D45166A362D44414BB │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -8574,15 +8567,15 @@ │ │ │ │ 44 44 44 44 44 44 44 44 44 1[44 44 1[44 44 44 33[{}86 │ │ │ │ 83.022 /CMTT10 rf /Fp 142[37 23[48 69 2[57 2[63 66 53 │ │ │ │ 3[57 1[46 5[69 2[62 65[{}11 83.022 /CMMI10 rf /Fq 132[67 │ │ │ │ 60 2[97 71 75 52 53 55 2[67 75 112 37 2[37 75 67 41 61 │ │ │ │ 75 60 1[65 13[75 2[92 101 1[128 3[50 4[103 97 96 102 │ │ │ │ 11[67 67 67 67 67 49[{}34 119.552 /CMBX12 rf /Fr 131[83 │ │ │ │ 2[44 2[44 1[32 33 33 2[42 46 69 23 2[23 1[42 1[37 1[37 │ │ │ │ -46 42 13[46 6[52 7[63 11[42 5[42 42 42 3[23 44[{}24 83.022 │ │ │ │ +46 42 13[46 3[65 2[52 25[42 42 42 3[23 44[{}23 83.022 │ │ │ │ /CMSL10 rf /Fs 132[48 42 2[69 50 53 37 38 39 2[48 53 │ │ │ │ 80 27 2[27 53 48 29 44 53 42 1[46 6[58 6[53 2[65 72 75 │ │ │ │ 91 57 2[36 3[63 73 69 68 72 7[48 2[48 48 48 48 48 48 │ │ │ │ 48 1[27 46[{}42 83.022 /CMBX10 rf /Ft 131[83 42 37 44 │ │ │ │ 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 42 │ │ │ │ 25 37 46 37 46 42 4[42 3[62 85 1[62 60 46 61 1[57 65 │ │ │ │ 62 76 52 65 1[30 62 1[54 57 63 60 59 62 3[65 2[23 42 │ │ │ │ @@ -8590,16 +8583,16 @@ │ │ │ │ 4[42 20[46 46 48 11[{}73 83.022 /CMR10 rf /Fu 133[31 │ │ │ │ 37 37 51 37 39 27 28 28 1[39 35 39 59 20 1[22 20 39 35 │ │ │ │ 22 31 39 31 39 35 9[72 2[51 39 52 1[48 55 53 65 44 2[25 │ │ │ │ 53 3[54 51 50 53 7[35 35 35 35 35 35 35 35 35 35 1[20 │ │ │ │ 24 20 31[39 12[{}53 66.4176 /CMR8 rf /Fv 252[32 3[{}1 │ │ │ │ 49.8132 /CMSY6 rf /Fw 252[35 3[{}1 66.4176 /CMSY8 rf │ │ │ │ /Fx 139[38 38 38 2[49 54 81 1[51 1[27 54 49 30 43 1[43 │ │ │ │ -54 49 9[100 4[72 1[66 4[76 50 2[77 2[75 70 69 73 8[49 │ │ │ │ -5[49 49 49 1[27 1[27 44[{}31 99.6264 /CMR12 rf /Fy 172[90 │ │ │ │ +54 49 9[100 4[72 1[66 76 3[76 50 2[77 2[75 70 69 73 14[49 │ │ │ │ +49 49 1[27 1[27 44[{}31 99.6264 /CMR12 rf /Fy 172[90 │ │ │ │ 2[110 121 2[97 6[106 18[81 3[45 46[{}7 143.462 /CMBX12 │ │ │ │ rf /Fz 134[70 2[70 73 51 52 51 2[66 73 111 36 2[36 1[66 │ │ │ │ 1[58 3[66 13[73 6[83 76[{}16 143.462 /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ @@ -8612,27 +8605,27 @@ │ │ │ │ end │ │ │ │ %%EndSetup │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 590 739 a Fz(Solving)43 b(Linear)g(Systems)f │ │ │ │ (using)h Fy(SPOOLES)54 b(2.2)778 1005 y Fx(C.)33 b(C.)g(Ashcraft,)g(R.) │ │ │ │ f(G.)h(Grimes,)g(D.)f(J.)h(Pierce,)h(D.)e(K.)g(W)-8 b(ah)1442 │ │ │ │ 1121 y(Bo)s(eing)32 b(Phan)m(tom)i(W)-8 b(orks)2458 1085 │ │ │ │ -y Fw(\003)1547 1341 y Fx(Decem)m(b)s(er)34 b(20,)e(2018)p │ │ │ │ +y Fw(\003)1586 1341 y Fx(Octob)s(er)32 b(11,)g(2021)p │ │ │ │ 0 5173 1560 4 v 91 5226 a Fv(\003)127 5249 y Fu(P)-6 │ │ │ │ b(.)33 b(O.)g(Bo)n(x)h(24346,)j(Mail)32 b(Stop)i(7L-22,)i(Seattle,)h(W) │ │ │ │ -6 b(ashington)36 b(98124.)62 b(This)32 b(researc)n(h)i(w)n(as)g(supp)r │ │ │ │ (orted)g(in)f(part)h(b)n(y)g(the)g(D)n(ARP)-6 b(A)0 5328 │ │ │ │ y(Con)n(tract)33 b(D)n(ABT63-95-C-0122)f(and)g(the)g(DoD)g(High)f(P)n │ │ │ │ (erformance)h(Computing)g(Mo)r(dernization)g(Program)f(Common)h(HPC)f │ │ │ │ (Soft)n(w)n(are)0 5407 y(Supp)r(ort)25 b(Initiativ)n(e.)1929 │ │ │ │ 5656 y Ft(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ TeXDict begin 2 1 bop 0 100 a Ft(2)327 b Fs(SPOOLES)32 │ │ │ │ b(2.2)27 b Fr(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1078 4 v 1271 w(Decem)n(b)r(er)g(20,)g(2018)0 390 y Fq(Con)l(ten)l(ts)0 │ │ │ │ +1144 4 v 1336 w(Octob)r(er)g(11,)g(2021)0 390 y Fq(Con)l(ten)l(ts)0 │ │ │ │ 601 y Fs(1)77 b(Ov)m(erview)3335 b(4)0 812 y(2)77 b(Serial)31 │ │ │ │ b(Solution)g(of)g Fp(AX)f Ft(=)23 b Fp(Y)50 b Fs(using)31 │ │ │ │ b(an)h Fp(LU)40 b Fs(factorization)1572 b(6)125 938 y │ │ │ │ Ft(2.1)83 b(Reading)28 b(the)f(input)i(parameters)k(.)42 │ │ │ │ b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ 134 b(6)125 1065 y(2.2)83 b(Comm)n(unicating)27 b(the)h(data)f(for)h │ │ │ │ @@ -8732,24 +8725,24 @@ │ │ │ │ b(.)d(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(23)0 │ │ │ │ 5196 y Fs(A)53 b Fo(allInOne.c)27 b Fs({)32 b(A)g(Serial)f │ │ │ │ Fp(LU)40 b Fs(Driv)m(er)33 b(Program)1941 b(24)0 5407 │ │ │ │ y(B)57 b Fo(allInOne.c)27 b Fs({)32 b(A)g(Serial)f Fp(LU)40 │ │ │ │ b Fs(Driv)m(er)33 b(Program)1941 b(31)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 0 100 a Fr(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1105 4 v 1269 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1171 4 v 1334 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Ft(3)0 390 y Fs(C)56 b Fo(allInOne.c)27 │ │ │ │ b Fs({)32 b(A)g(Serial)f Fp(LU)40 b Fs(Driv)m(er)33 b(Program)1941 │ │ │ │ b(39)0 598 y(D)52 b Fo(allInOne.c)27 b Fs({)32 b(A)g(Serial)f │ │ │ │ Fp(QR)h Fs(Driv)m(er)h(Program)1934 b(49)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 100 a Ft(4)327 b Fs(SPOOLES)32 │ │ │ │ b(2.2)27 b Fr(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1078 4 v 1271 w(Decem)n(b)r(er)g(20,)g(2018)0 390 y Fq(1)135 │ │ │ │ +1144 4 v 1336 w(Octob)r(er)g(11,)g(2021)0 390 y Fq(1)135 │ │ │ │ b(Ov)l(erview)0 598 y Ft(The)34 b Fs(SPOOLES)h Ft(soft)n(w)n(are)d │ │ │ │ (library)h(is)h(designed)g(to)g(solv)n(e)f(sparse)g(systems)h(of)g │ │ │ │ (linear)f(equations)h Fp(AX)40 b Ft(=)34 b Fp(Y)53 b │ │ │ │ Ft(for)34 b Fp(X)7 b Ft(,)0 698 y(where)20 b Fp(A)h Ft(is)f(full)h │ │ │ │ (rank)f(and)g Fp(X)27 b Ft(and)20 b Fp(Y)40 b Ft(are)19 │ │ │ │ b(dense)h(matrices.)34 b(The)21 b(matrix)f Fp(A)g Ft(can)g(b)r(e)h │ │ │ │ (either)g(real)e(or)h(complex,)h(symmetric,)0 797 y(Hermitian,)28 │ │ │ │ @@ -8871,16 +8864,16 @@ │ │ │ │ 5308 y(F)-7 b(or)35 b(example,)k(consider)c(the)i Fo(DenseMtx)d │ │ │ │ Ft(ob)5 b(ject)36 b(that)h(mo)r(dels)f(a)h(dense)f(matrix.)63 │ │ │ │ b(The)37 b Fo(DenseMtx/DenseMt)o(x.)o(h)0 5407 y Ft(header)j(\014le)i │ │ │ │ (de\014nes)f(the)h(ob)5 b(ject's)41 b(C)g(struct)g(and)h(has)e(protot)n │ │ │ │ (yp)r(es)h(\(with)h(extensiv)n(e)e(commen)n(ts\))i(of)f(the)g(ob)5 │ │ │ │ b(ject's)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 0 100 a Fr(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1105 4 v 1269 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1171 4 v 1334 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Ft(5)0 390 y(metho)r(ds.)35 b(The)21 │ │ │ │ b(source)f(\014les)h(are)f(found)i(in)f(the)h Fo(DenseMtx/src)16 │ │ │ │ b Ft(directory)-7 b(.)33 b(The)21 b(L)2629 373 y Fl(A)2666 │ │ │ │ 390 y Ft(T)2712 408 y(E)2758 390 y(X)h(do)r(cumen)n(tation)f(\014les)g │ │ │ │ (are)f(found)0 490 y(in)g(the)h Fo(DenseMtx/doc)15 b │ │ │ │ Ft(directory)-7 b(.)34 b(The)20 b(\014les)g(can)g(b)r(e)g(used)g(to)g │ │ │ │ (create)g(the)g Fo(DenseMtx)d Ft(ob)5 b(ject's)20 b(c)n(hapter)f(in)i │ │ │ │ @@ -8897,15 +8890,15 @@ │ │ │ │ Fp(LU)34 b Ft(and)24 b Fp(QR)h Ft(driv)n(er)0 1013 y(programs.)58 │ │ │ │ b(The)36 b Fo(MT/drivers)31 b Ft(and)k Fo(MPI/drivers)c │ │ │ │ Ft(directories)j(con)n(tain)h(the)h(m)n(ultithreaded)f(and)h(MPI)f │ │ │ │ Fp(LU)43 b Ft(driv)n(er)0 1112 y(programs.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ TeXDict begin 6 5 bop 0 100 a Ft(6)327 b Fs(SPOOLES)32 │ │ │ │ b(2.2)27 b Fr(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1078 4 v 1271 w(Decem)n(b)r(er)g(20,)g(2018)0 390 y Fq(2)135 │ │ │ │ +1144 4 v 1336 w(Octob)r(er)g(11,)g(2021)0 390 y Fq(2)135 │ │ │ │ b(Serial)46 b(Solution)f(of)g Fi(AX)e Fh(=)33 b Fi(Y)71 │ │ │ │ b Fq(using)45 b(an)g Fi(LU)56 b Fq(factorization)0 599 │ │ │ │ y Ft(The)27 b(user)g(has)g(some)g(represen)n(tation)f(of)h(the)h(data)f │ │ │ │ (whic)n(h)g(represen)n(ts)f(the)i(linear)f(system,)g │ │ │ │ Fp(AX)j Ft(=)22 b Fp(Y)d Ft(.)37 b(The)27 b(user)g(w)n(an)n(ts)0 │ │ │ │ 699 y(the)h(solution)f Fp(X)7 b Ft(.)36 b(The)28 b Fs(SPOOLES)g │ │ │ │ Ft(library)e(will)i(use)f Fp(A)h Ft(and)g Fp(Y)46 b Ft(and)27 │ │ │ │ @@ -9001,16 +8994,16 @@ │ │ │ │ b Ft(or)23 b Fo(InpMtx)p 3048 5253 V 29 w(inputComplexEntr)o(y\()o(\))p │ │ │ │ 0 5330 1560 4 v 92 5384 a Ff(1)127 5407 y Fe(InpMtx)i │ │ │ │ Fu(stands)g(for)d Fe(Inp)p Fu(ut)j Fe(M)p Fu(a)p Fe(t)p │ │ │ │ Fu(ri)p Fe(x)p Fu(,)f(for)f(it)g(is)g(the)i(ob)t(ject)f(in)n(to)h(whic) │ │ │ │ n(h)e(the)i(user)e(inputs)h(the)h(matrix)e(en)n(tries.)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 0 100 a Fr(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1105 4 v 1269 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1171 4 v 1334 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Ft(7)0 390 y(to)30 b(place)g(that)g(en)n(try)g │ │ │ │ (in)n(to)g(the)g Fo(InpMtx)e Ft(ob)5 b(ject.)44 b(Finally)30 │ │ │ │ b(this)g(co)r(de)g(segmen)n(t)g(closes)f(the)i(\014le.)44 │ │ │ │ b(\014nalizes)30 b(the)g(input)h(to)0 490 y Fo(InpMtx)23 │ │ │ │ b Ft(b)n(y)j(con)n(v)n(erting)e(the)i(in)n(ternal)f(storage)e(of)j(the) │ │ │ │ g(matrix)f(en)n(tries)g(to)h(a)f(v)n(ector)f(form.)36 │ │ │ │ b(\(This)26 b(is)g(necessary)e(for)h(later)0 589 y(steps.\))0 │ │ │ │ @@ -9082,28 +9075,28 @@ │ │ │ │ (they)h(apply)f(to,)h(or)e(the)i(library)e(name,)h(e.g.,)g │ │ │ │ Fe(SPOOLES)p 3716 5328 V 27 w(REAL)p Fu(.)0 5407 y(They)e(are)g │ │ │ │ (describ)r(ed)g(in)f(the)i(reference)f(man)n(ual)g(in)f(the)i(section)g │ │ │ │ (for)d(the)j(particular)e(ob)t(ject.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ TeXDict begin 8 7 bop 0 100 a Ft(8)327 b Fs(SPOOLES)32 │ │ │ │ b(2.2)27 b Fr(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1078 4 v 1271 w(Decem)n(b)r(er)g(20,)g(2018)125 390 y │ │ │ │ -Ft(Ev)n(ery)e(ob)5 b(ject)27 b(in)g Fs(SPOOLES)g Ft(has)g(prin)n(t)g │ │ │ │ -(metho)r(ds)g(to)g(output)h(the)f(con)n(ten)n(ts)f(of)h(that)h(ob)5 │ │ │ │ -b(ject.)36 b(This)27 b(is)g(illustrated)0 490 y(in)h(this)g(co)r(de)g │ │ │ │ -(segmen)n(t)f(b)n(y)h(prin)n(ting)f(the)h(input)h(matrix)e(as)g(con)n │ │ │ │ -(tained)g(in)i(the)f Fo(InpMtx)d Ft(ob)5 b(ject,)28 b │ │ │ │ -Fo(mtxA)p Ft(.)e(T)-7 b(o)28 b(shorten)f(this)0 589 y(c)n(hapter)g(w)n │ │ │ │ -(e)g(will)g(from)g(no)n(w)g(on)g(omit)h(the)g(part)f(of)g(the)h(co)r │ │ │ │ -(de)f(that)h(prin)n(ts)f(debug)h(output)g(to)f Fo(msgFile)e │ │ │ │ -Ft(for)h(the)i(v)-5 b(arious)0 689 y(co)r(de)27 b(segmen)n(ts.)36 │ │ │ │ -b(The)28 b(complete)g(sample)f(program)e(in)j(Section)g(A)g(con)n │ │ │ │ -(tains)e(all)i(of)f(the)h(debug)g(prin)n(t)f(statemen)n(ts.)125 │ │ │ │ -807 y(After)f(the)g(matrix)g Fp(A)g Ft(has)f(b)r(een)i(read)e(in)h │ │ │ │ -(from)g(the)g(\014le)g(and)g(placed)g(in)g(an)f Fo(InpMtx)f │ │ │ │ +1144 4 v 1336 w(Octob)r(er)g(11,)g(2021)125 390 y Ft(Ev)n(ery)e(ob)5 │ │ │ │ +b(ject)27 b(in)g Fs(SPOOLES)g Ft(has)g(prin)n(t)g(metho)r(ds)g(to)g │ │ │ │ +(output)h(the)f(con)n(ten)n(ts)f(of)h(that)h(ob)5 b(ject.)36 │ │ │ │ +b(This)27 b(is)g(illustrated)0 490 y(in)h(this)g(co)r(de)g(segmen)n(t)f │ │ │ │ +(b)n(y)h(prin)n(ting)f(the)h(input)h(matrix)e(as)g(con)n(tained)g(in)i │ │ │ │ +(the)f Fo(InpMtx)d Ft(ob)5 b(ject,)28 b Fo(mtxA)p Ft(.)e(T)-7 │ │ │ │ +b(o)28 b(shorten)f(this)0 589 y(c)n(hapter)g(w)n(e)g(will)g(from)g(no)n │ │ │ │ +(w)g(on)g(omit)h(the)g(part)f(of)g(the)h(co)r(de)f(that)h(prin)n(ts)f │ │ │ │ +(debug)h(output)g(to)f Fo(msgFile)e Ft(for)h(the)i(v)-5 │ │ │ │ +b(arious)0 689 y(co)r(de)27 b(segmen)n(ts.)36 b(The)28 │ │ │ │ +b(complete)g(sample)f(program)e(in)j(Section)g(A)g(con)n(tains)e(all)i │ │ │ │ +(of)f(the)h(debug)g(prin)n(t)f(statemen)n(ts.)125 807 │ │ │ │ +y(After)f(the)g(matrix)g Fp(A)g Ft(has)f(b)r(een)i(read)e(in)h(from)g │ │ │ │ +(the)g(\014le)g(and)g(placed)g(in)g(an)f Fo(InpMtx)f │ │ │ │ Ft(ob)5 b(ject,)26 b(the)g(righ)n(t)g(hand)g(matrix)0 │ │ │ │ 907 y Fp(Y)46 b Ft(is)28 b(read)f(in)g(from)h(a)f(\014le)h(and)f │ │ │ │ (placed)g(in)h(a)f Fo(DenseMtx)e Ft(ob)5 b(ject.)36 b(The)28 │ │ │ │ b(follo)n(wing)f(co)r(de)g(fragmen)n(t)g(do)r(es)g(this)h(op)r │ │ │ │ (eration.)0 1066 y Fo(inputFile)40 b(=)j(fopen\(rhsFileNam)o(e,)37 │ │ │ │ b("r"\))42 b(;)0 1165 y(fscanf\(inputFile)o(,)c("\045d)k(\045d",)g │ │ │ │ (&nrow,)f(&nrhs\))g(;)0 1265 y(mtxB)h(=)h(DenseMtx_new\(\))38 │ │ │ │ @@ -9162,16 +9155,16 @@ │ │ │ │ 5308 y(The)j(righ)n(t)f(hand)h(side)g(en)n(tries)f(are)g(then)h(in,)h │ │ │ │ (ro)n(w)e(b)n(y)h(ro)n(w,)f(and)h(placed)g(in)n(to)g(their)g(lo)r │ │ │ │ (cations)f(via)g(one)h(of)g(the)g(t)n(w)n(o)0 5407 y(\\set)c(en)n │ │ │ │ (tries")g(metho)r(ds.)37 b(Note,)27 b(the)h(nonzero)f(ro)n(ws)f(can)h │ │ │ │ (b)r(e)h(read)f(from)g(the)h(\014le)g(in)g(an)n(y)e(order.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fr(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1105 4 v 1269 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1171 4 v 1334 w Fs(SPOOLES)32 b(2.2)27 b Fr(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Ft(9)0 390 y Fg(2.3)112 b(Reordering)38 │ │ │ │ b(the)f(linear)h(system)0 564 y Ft(The)30 b(\014rst)g(step)h(is)f(to)g │ │ │ │ (\014nd)h(the)g(p)r(erm)n(utation)f(matrix)f Fp(P)12 │ │ │ │ b Ft(,)31 b(and)g(then)f(p)r(erm)n(ute)h Fp(AX)j Ft(=)27 │ │ │ │ b Fp(Y)49 b Ft(in)n(to)30 b(\()p Fp(P)12 b(AP)3336 534 │ │ │ │ y Fk(T)3389 564 y Ft(\)\()p Fp(P)g(X)7 b Ft(\))27 b(=)g │ │ │ │ Fp(P)12 b(Y)19 b Ft(.)0 664 y(The)32 b(result)g(of)g(the)h │ │ │ │ @@ -9258,23 +9251,23 @@ │ │ │ │ b(ject.)p 0 5330 1560 4 v 92 5384 a Ff(3)127 5407 y Fe(IVL)24 │ │ │ │ b Fu(stands)h(for)e Fe(I)p Fu(n)n(teger)i Fe(V)p Fu(ector)f │ │ │ │ Fe(L)p Fu(ist,)g(i.e.,)e(a)i(list)f(of)g(in)n(teger)h(v)n(ectors.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ TeXDict begin 10 9 bop 0 100 a Ft(10)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)125 390 y │ │ │ │ -Ft(Once)i(w)n(e)h(ha)n(v)n(e)f(the)i(p)r(erm)n(utation)f(v)n(ector,)f │ │ │ │ -(w)n(e)h(apply)g(it)g(to)g(the)h(fron)n(t)f(tree,)g(b)n(y)g(the)h │ │ │ │ -Fo(ETree)p 3135 390 27 4 v 29 w(permuteVertices\()o(\))0 │ │ │ │ -490 y Ft(metho)r(d,)41 b(and)c(then)h(to)g(the)g(matrix)f(with)h(the)g │ │ │ │ -Fo(InpMtx)p 1874 490 V 29 w(permute\(\))c Ft(metho)r(d.)67 │ │ │ │ -b(If)38 b(the)g(matrix)f Fp(A)h Ft(is)g(symmetric)f(or)0 │ │ │ │ -589 y(Hermitian,)32 b(w)n(e)e(exp)r(ect)h(all)f(nonzero)g(en)n(tries)g │ │ │ │ -(to)g(b)r(e)h(in)g(the)g(upp)r(er)g(triangle.)46 b(P)n(erm)n(uting)29 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)125 390 y Ft(Once)i(w)n(e)h(ha) │ │ │ │ +n(v)n(e)f(the)i(p)r(erm)n(utation)f(v)n(ector,)f(w)n(e)h(apply)g(it)g │ │ │ │ +(to)g(the)h(fron)n(t)f(tree,)g(b)n(y)g(the)h Fo(ETree)p │ │ │ │ +3135 390 27 4 v 29 w(permuteVertices\()o(\))0 490 y Ft(metho)r(d,)41 │ │ │ │ +b(and)c(then)h(to)g(the)g(matrix)f(with)h(the)g Fo(InpMtx)p │ │ │ │ +1874 490 V 29 w(permute\(\))c Ft(metho)r(d.)67 b(If)38 │ │ │ │ +b(the)g(matrix)f Fp(A)h Ft(is)g(symmetric)f(or)0 589 │ │ │ │ +y(Hermitian,)32 b(w)n(e)e(exp)r(ect)h(all)f(nonzero)g(en)n(tries)g(to)g │ │ │ │ +(b)r(e)h(in)g(the)g(upp)r(er)g(triangle.)46 b(P)n(erm)n(uting)29 │ │ │ │ b(the)i(matrix)f(yields)h Fp(P)12 b(AP)3825 559 y Fk(T)3877 │ │ │ │ 589 y Ft(,)0 689 y(whic)n(h)36 b(ma)n(y)f(not)h(ha)n(v)n(e)f(all)h(of)g │ │ │ │ (its)g(en)n(tries)g(in)g(the)g(upp)r(er)h(triangle.)61 │ │ │ │ b(If)37 b Fp(A)f Ft(is)g(symmetric)g(or)f(Hermitian,)j(the)f(call)e(to) │ │ │ │ 0 789 y Fo(InpMtx)p 269 789 V 29 w(mapToUpperTriang)o(le)o(\(\))24 │ │ │ │ b Ft(ensures)29 b(that)i(all)f(en)n(tries)f(of)i Fp(P)12 │ │ │ │ b(AP)2348 759 y Fk(T)2430 789 y Ft(are)29 b(in)i(its)f(upp)r(er)h │ │ │ │ @@ -9354,23 +9347,22 @@ │ │ │ │ Fu(-th)f(c)n(hevron)i(of)e Fc(A)g Fu(consists)h(of)f(the)i(diagonal)f │ │ │ │ (en)n(try)g Fc(A)1829 5338 y Fb(i;i)1896 5328 y Fu(,)g(the)g │ │ │ │ Fc(i)p Fu(-th)g(ro)n(w)f(of)g(the)h(upp)r(er)g(triangle)g(of)f │ │ │ │ Fc(A)p Fu(,)g(and)h(the)h Fc(i)p Fu(-th)e(column)h(of)0 │ │ │ │ 5407 y(the)f(lo)n(w)n(er)e(triangle)h(of)f Fc(A)p Fu(.)p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(11)0 │ │ │ │ -390 y Fo(chvmanager)39 b(=)44 b(ChvManager_new\()o(\))38 │ │ │ │ -b(;)0 490 y(ChvManager_init\()o(chv)o(ma)o(na)o(ger)o(,)f(NO_LOCK,)k │ │ │ │ -(1\))h(;)0 589 y(DVfill\(10,)d(cpus,)j(0.0\))g(;)0 689 │ │ │ │ -y(IVfill\(20,)d(stats,)j(0\))g(;)0 789 y(rootchv)f(=)i │ │ │ │ -(FrontMtx_factorI)o(np)o(Mtx)o(\(f)o(ron)o(tm)o(tx)o(,)38 │ │ │ │ -b(mtxA,)j(tau,)h(droptol,)567 888 y(chvmanager,)d(&error,)h(cpus,)i │ │ │ │ +TeXDict begin 11 10 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(11)0 390 y Fo(chvmanager)39 │ │ │ │ +b(=)44 b(ChvManager_new\()o(\))38 b(;)0 490 y(ChvManager_init\()o(chv)o │ │ │ │ +(ma)o(na)o(ger)o(,)f(NO_LOCK,)k(1\))h(;)0 589 y(DVfill\(10,)d(cpus,)j │ │ │ │ +(0.0\))g(;)0 689 y(IVfill\(20,)d(stats,)j(0\))g(;)0 789 │ │ │ │ +y(rootchv)f(=)i(FrontMtx_factorI)o(np)o(Mtx)o(\(f)o(ron)o(tm)o(tx)o(,) │ │ │ │ +38 b(mtxA,)j(tau,)h(droptol,)567 888 y(chvmanager,)d(&error,)h(cpus,)i │ │ │ │ (stats,)f(msglvl,)g(msgFile\))f(;)0 988 y(ChvManager_free\()o(chv)o(ma) │ │ │ │ o(na)o(ger)o(\))d(;)0 1169 y Ft(W)-7 b(orking)25 b(storage)e(used)j │ │ │ │ (during)f(the)h(factorization)e(is)h(found)h(in)g(the)g(form)f(of)h │ │ │ │ (blo)r(c)n(k)f Fj(chevr)l(ons)p Ft(,)i(in)f(a)f Fo(Chv)f │ │ │ │ Ft(ob)5 b(ject,)26 b(whic)n(h)0 1269 y(hold)j(the)g(partial)g(fron)n │ │ │ │ (tal)f(matrix)g(for)h(a)f(fron)n(t.)41 b(Muc)n(h)29 b(as)g(with)g(the)g │ │ │ │ Fo(SubMtx)e Ft(ob)5 b(ject,)29 b(the)h Fo(FrontMtx)c │ │ │ │ @@ -9449,15 +9441,15 @@ │ │ │ │ b(for)g(w)n(orking)f(storage.)34 b(The)25 b(last)f(step)h(is)f(to)h(p)r │ │ │ │ (erm)n(ute)g(the)g(ro)n(ws)e(of)h(the)h Fo(DenseMtx)d │ │ │ │ Ft(from)i(the)h(new)f(ordering)f(in)n(to)0 5407 y(the)28 │ │ │ │ b(old)f(ordering.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ TeXDict begin 12 11 bop 0 100 a Ft(12)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fg(2.7)112 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fg(2.7)112 │ │ │ │ b(Sample)39 b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files)0 │ │ │ │ 568 y Ft(Immediately)34 b(b)r(elo)n(w)g(are)f(t)n(w)n(o)g(sample)h │ │ │ │ (\014les:)50 b Fo(matrix.input)29 b Ft(holds)34 b(the)g(matrix)g(input) │ │ │ │ h(and)f Fo(rhs.input)c Ft(holds)k(the)0 668 y(righ)n(t)20 │ │ │ │ b(hand)h(side.)35 b(This)21 b(example)g(is)g(for)f(a)h(symmetric)g │ │ │ │ (Laplacian)f(op)r(erator)f(on)i(a)f(3)5 b Fn(\002)g Ft(3)21 │ │ │ │ b(grid.)34 b(Only)21 b(en)n(tries)f(in)h(the)h(upp)r(er)0 │ │ │ │ @@ -9486,29 +9478,29 @@ │ │ │ │ (0.0)h(0.0)f(0.0)1533 2351 y(5)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(1.0)g │ │ │ │ (0.0)h(0.0)f(0.0)1533 2451 y(6)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(0.0)g │ │ │ │ (1.0)h(0.0)f(0.0)1533 2550 y(7)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(0.0)g │ │ │ │ (0.0)h(1.0)f(0.0)1533 2650 y(8)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(0.0)g │ │ │ │ (0.0)h(0.0)f(1.0)p 3231 2650 V 1483 2653 1750 4 v eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(13)0 │ │ │ │ -390 y Fq(3)135 b(Multithreaded)45 b(Solution)h(of)f Fi(AX)e │ │ │ │ -Fh(=)33 b Fi(Y)71 b Fq(using)45 b(an)f Fi(LU)57 b Fq(factorization)0 │ │ │ │ -599 y Ft(The)26 b(only)f(computations)g(that)h(are)f(m)n(ultithreaded)g │ │ │ │ -(are)g(the)h(factorization)e(and)i(forw)n(ard)e(and)h(bac)n(ksolv)n │ │ │ │ -(es.)34 b(Therefore,)0 699 y(this)c(section)g(will)g(describ)r(e)g │ │ │ │ -(only)g(the)g(di\013erences)g(b)r(et)n(w)n(een)g(the)h(serial)e(driv)n │ │ │ │ -(er)g(in)h(Section)g(A)h(and)f(the)g(m)n(ultithreaded)0 │ │ │ │ -798 y(driv)n(er)35 b(whose)i(complete)f(listing)h(is)g(found)g(in)g │ │ │ │ -(Section)f(B.)65 b(This)36 b(section)h(will)g(refer)f(the)h(reader)e │ │ │ │ -(to)i(subsections)f(in)0 898 y(Section)28 b(2)f(for)g(the)h(parts)f(of) │ │ │ │ -g(the)h(co)r(de)g(where)f(the)h(t)n(w)n(o)e(driv)n(ers)h(are)f(iden)n │ │ │ │ -(tical.)125 1023 y(The)h(shared)g(memory)g(parallel)g(v)n(ersion)f(of)i │ │ │ │ +TeXDict begin 13 12 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(13)0 390 y Fq(3)135 b(Multithreaded)45 │ │ │ │ +b(Solution)h(of)f Fi(AX)e Fh(=)33 b Fi(Y)71 b Fq(using)45 │ │ │ │ +b(an)f Fi(LU)57 b Fq(factorization)0 599 y Ft(The)26 │ │ │ │ +b(only)f(computations)g(that)h(are)f(m)n(ultithreaded)g(are)g(the)h │ │ │ │ +(factorization)e(and)i(forw)n(ard)e(and)h(bac)n(ksolv)n(es.)34 │ │ │ │ +b(Therefore,)0 699 y(this)c(section)g(will)g(describ)r(e)g(only)g(the)g │ │ │ │ +(di\013erences)g(b)r(et)n(w)n(een)g(the)h(serial)e(driv)n(er)g(in)h │ │ │ │ +(Section)g(A)h(and)f(the)g(m)n(ultithreaded)0 798 y(driv)n(er)35 │ │ │ │ +b(whose)i(complete)f(listing)h(is)g(found)g(in)g(Section)f(B.)65 │ │ │ │ +b(This)36 b(section)h(will)g(refer)f(the)h(reader)e(to)i(subsections)f │ │ │ │ +(in)0 898 y(Section)28 b(2)f(for)g(the)h(parts)f(of)g(the)h(co)r(de)g │ │ │ │ +(where)f(the)h(t)n(w)n(o)e(driv)n(ers)h(are)f(iden)n(tical.)125 │ │ │ │ +1023 y(The)h(shared)g(memory)g(parallel)g(v)n(ersion)f(of)i │ │ │ │ Fs(SPOOLES)g Ft(is)g(implemen)n(ted)g(using)g(thread)f(based)h │ │ │ │ (parallelism.)36 b(The)0 1123 y(m)n(ulti-threaded)24 │ │ │ │ b(co)r(de)h(uses)f(m)n(uc)n(h)g(of)h(the)g(serial)f(co)r(de)g(|)h(the)g │ │ │ │ (basic)f(steps)g(are)g(the)h(same)f(and)h(use)f(the)h(serial)f(metho)r │ │ │ │ (ds.)0 1223 y(The)31 b(usage)e(of)i Fs(SPOOLES)g Ft(for)f(comm)n │ │ │ │ (unicating)g(the)h(data)g(for)f(the)h(problem)f(and)h(reordering)d(the) │ │ │ │ k(linear)e(system)g(is)0 1322 y(iden)n(tical)25 b(in)g(the)h(serial)e │ │ │ │ @@ -9574,15 +9566,15 @@ │ │ │ │ 5308 y(DV_init\(cumopsDV)o(,)d(nthread,)i(NULL\))h(;)0 │ │ │ │ 5407 y(ownersIV)f(=)j(ETree_ddMap\(front)o(ETr)o(ee)o(,)38 │ │ │ │ b(type,)j(symmetryflag,)d(cumopsDV,)i(1./\(2.*nthread\)\))d(;)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ TeXDict begin 14 13 bop 0 100 a Ft(14)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Ft(The)d(\014rst)f │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Ft(The)d(\014rst)f │ │ │ │ (step)h(is)f(to)h(ensure)f(that)g(eac)n(h)g(thread)g(has)g(a)h(fron)n │ │ │ │ (t)f(to)g(o)n(wn,)h(decreasing)e(the)i(n)n(um)n(b)r(er)f(of)h(threads)f │ │ │ │ (if)h(necessary)-7 b(.)0 490 y(W)g(e)31 b(then)f(construct)g(the)h(o)n │ │ │ │ (wners)d(map)i(using)g(the)h(fron)n(t)f(tree)f(ob)5 b(ject.)45 │ │ │ │ b(The)30 b Fo(cumopsDV)d Ft(ob)5 b(ject)30 b(is)g(a)g(double)g │ │ │ │ (precision)0 589 y(v)n(ector)e(ob)5 b(ject)29 b(whose)f(length)h(is)g │ │ │ │ (the)h(n)n(um)n(b)r(er)f(of)g(threads.)41 b(On)29 b(return)f(from)h │ │ │ │ @@ -9663,22 +9655,21 @@ │ │ │ │ b(Mo)r(derate)33 b(sp)r(eedups)g(in)g(the)g(factorization)f(ha)n(v)n(e) │ │ │ │ g(b)r(een)h(for)g(v)-5 b(alues)32 b(of)h Fo(lookahead)d │ │ │ │ Ft(up)j(to)g(the)g(n)n(um)n(b)r(er)208 5308 y(of)i(threads.)58 │ │ │ │ b(F)-7 b(or)35 b(nonzero)f Fo(lookahead)d Ft(v)-5 b(alues,)37 │ │ │ │ b(the)f(amoun)n(t)e(of)h(w)n(orking)f(storage)f(can)i(increase,)g │ │ │ │ (sometimes)208 5407 y(appreciably)-7 b(.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(15)0 │ │ │ │ -390 y(The)22 b(p)r(ost-pro)r(cessing)f(of)h(the)g(factorization)f(is)h │ │ │ │ -(exactly)g(the)g(same)g(as)g(the)g(serial)f(co)r(de.)35 │ │ │ │ -b(Note,)24 b(this)e(step)g(can)g(b)r(e)h(trivially)0 │ │ │ │ -490 y(parallelized,)j(but)j(is)e(not)h(done)f(at)h(presen)n(t.)125 │ │ │ │ -614 y(After)d(the)g(p)r(ost-pro)r(cessing)e(step,)j(the)f │ │ │ │ +TeXDict begin 15 14 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(15)0 390 y(The)22 b(p)r(ost-pro)r(cessing)f │ │ │ │ +(of)h(the)g(factorization)f(is)h(exactly)g(the)g(same)g(as)g(the)g │ │ │ │ +(serial)f(co)r(de.)35 b(Note,)24 b(this)e(step)g(can)g(b)r(e)h │ │ │ │ +(trivially)0 490 y(parallelized,)j(but)j(is)e(not)h(done)f(at)h(presen) │ │ │ │ +n(t.)125 614 y(After)d(the)g(p)r(ost-pro)r(cessing)e(step,)j(the)f │ │ │ │ Fo(FrontMtx)d Ft(ob)5 b(ject)24 b(con)n(tains)g(the)i │ │ │ │ Fp(L)2539 626 y Fk(J)n(;I)2631 614 y Ft(,)g Fp(D)2749 │ │ │ │ 626 y Fk(I)5 b(;I)2865 614 y Ft(and)25 b Fp(U)3081 626 │ │ │ │ y Fk(I)5 b(;J)3206 614 y Ft(submatrices.)35 b(What)0 │ │ │ │ 714 y(remains)24 b(to)h(b)r(e)g(done)f(is)h(to)g(sp)r(ecify)g(whic)n(h) │ │ │ │ g(threads)f(o)n(wn)g(whic)n(h)h(submatrices,)f(and)h(th)n(us)g(p)r │ │ │ │ (erform)f(computations)h(with)0 814 y(them.)37 b(This)28 │ │ │ │ @@ -9709,15 +9700,15 @@ │ │ │ │ b(in)h(the)g(latter.)0 3167 y Fg(3.7)112 b(Sample)39 │ │ │ │ b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files)0 3345 │ │ │ │ y Ft(The)28 b(m)n(ultithreaded)f(driv)n(er)g(uses)g(the)h(same)f(input) │ │ │ │ h(\014les)g(as)f(found)g(in)h(Section)g(2.7.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ TeXDict begin 16 15 bop 0 100 a Ft(16)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fq(4)135 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fq(4)135 │ │ │ │ b(MPI)44 b(Solution)i(of)f Fi(AX)d Fh(=)34 b Fi(Y)70 │ │ │ │ b Fq(using)45 b(an)g Fi(LU)57 b Fq(factorization)0 597 │ │ │ │ y Ft(Unlik)n(e)30 b(the)h(serial)d(and)i(m)n(ultithreaded)g(en)n │ │ │ │ (vironmen)n(ts)f(where)h(the)g(data)g(structures)f(are)g(global,)h │ │ │ │ (existing)g(under)f(one)0 697 y(address)d(space,)g(in)h(the)h(MPI)e(en) │ │ │ │ n(vironmen)n(t,)g(data)h(is)g(lo)r(cal,)f(eac)n(h)g(pro)r(cess)g(or)g │ │ │ │ (pro)r(cessor)f(has)h(its)h(o)n(wn)g(distinct)g(address)0 │ │ │ │ @@ -9804,34 +9795,34 @@ │ │ │ │ (cessors,)e(w)n(e)h(use)0 5407 y(the)e(distributed)g │ │ │ │ Fo(InpMtx)p 837 5407 27 4 v 29 w(MPI)p 998 5407 V 30 │ │ │ │ w(fullAdjacency\(\))22 b Ft(metho)r(d)28 b(to)f(construct)g(the)h │ │ │ │ Fo(IVL)f Ft(ob)5 b(ject)27 b(of)h(the)f(graph)g(of)g │ │ │ │ Fp(A)19 b Ft(+)f Fp(A)3819 5377 y Fk(T)3872 5407 y Ft(.)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(17)125 │ │ │ │ -390 y(A)n(t)31 b(this)h(p)r(oin)n(t,)h(eac)n(h)d(pro)r(cessor)g(has)h │ │ │ │ -(computed)g(its)h(o)n(wn)f(minim)n(um)h(degree)e(ordering)g(and)i │ │ │ │ -(created)e(a)h(fron)n(t)g(tree)0 490 y(ob)5 b(ject.)36 │ │ │ │ -b(The)26 b(orderings)e(will)i(lik)n(ely)g(b)r(e)g(di\013eren)n(t,)h(b)r │ │ │ │ -(ecause)e(eac)n(h)h(pro)r(cessors)d(input)k(a)e(di\013eren)n(t)i │ │ │ │ -(random)e(n)n(um)n(b)r(er)g(seed)0 589 y(to)30 b(the)g(ordering)e │ │ │ │ -(metho)r(d.)43 b(Only)29 b(one)h(ordering)e(can)h(b)r(e)h(used)g(for)f │ │ │ │ -(the)h(factorization,)f(so)g(the)h(pro)r(cessors)d(collectiv)n(ely)0 │ │ │ │ -689 y(determine)f(whic)n(h)f(of)h(the)g(orderings)d(is)j(b)r(est,)g │ │ │ │ -(whic)n(h)g(is)f(then)h(broadcast)e(to)i(all)f(the)h(pro)r(cessors,)e │ │ │ │ -(as)h(the)h(co)r(de)f(fragmen)n(t)0 789 y(b)r(elo)n(w)i(illustrates.)0 │ │ │ │ -972 y Fo(opcounts)40 b(=)j(DVinit\(nproc,)c(0.0\))j(;)0 │ │ │ │ -1072 y(opcounts[myid])c(=)43 b(ETree_nFactorOps)o(\(fr)o(on)o(tE)o(Tre) │ │ │ │ -o(e,)37 b(type,)k(symmetryflag\))e(;)0 1171 y(MPI_Allgather\(\(v)o(oid) │ │ │ │ -e(*\))42 b(&opcounts[myid],)37 b(1,)43 b(MPI_DOUBLE,)610 │ │ │ │ -1271 y(\(void)f(*\))g(opcounts,)e(1,)j(MPI_DOUBLE,)c(MPI_COMM_WORLD\))f │ │ │ │ -(;)0 1370 y(minops)j(=)i(DVmin\(nproc,)c(opcounts,)h(&root\))h(;)0 │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(17)125 390 y(A)n(t)31 b(this)h(p)r(oin)n(t,) │ │ │ │ +h(eac)n(h)d(pro)r(cessor)g(has)h(computed)g(its)h(o)n(wn)f(minim)n(um)h │ │ │ │ +(degree)e(ordering)g(and)i(created)e(a)h(fron)n(t)g(tree)0 │ │ │ │ +490 y(ob)5 b(ject.)36 b(The)26 b(orderings)e(will)i(lik)n(ely)g(b)r(e)g │ │ │ │ +(di\013eren)n(t,)h(b)r(ecause)e(eac)n(h)h(pro)r(cessors)d(input)k(a)e │ │ │ │ +(di\013eren)n(t)i(random)e(n)n(um)n(b)r(er)g(seed)0 589 │ │ │ │ +y(to)30 b(the)g(ordering)e(metho)r(d.)43 b(Only)29 b(one)h(ordering)e │ │ │ │ +(can)h(b)r(e)h(used)g(for)f(the)h(factorization,)f(so)g(the)h(pro)r │ │ │ │ +(cessors)d(collectiv)n(ely)0 689 y(determine)f(whic)n(h)f(of)h(the)g │ │ │ │ +(orderings)d(is)j(b)r(est,)g(whic)n(h)g(is)f(then)h(broadcast)e(to)i │ │ │ │ +(all)f(the)h(pro)r(cessors,)e(as)h(the)h(co)r(de)f(fragmen)n(t)0 │ │ │ │ +789 y(b)r(elo)n(w)i(illustrates.)0 972 y Fo(opcounts)40 │ │ │ │ +b(=)j(DVinit\(nproc,)c(0.0\))j(;)0 1072 y(opcounts[myid])c(=)43 │ │ │ │ +b(ETree_nFactorOps)o(\(fr)o(on)o(tE)o(Tre)o(e,)37 b(type,)k │ │ │ │ +(symmetryflag\))e(;)0 1171 y(MPI_Allgather\(\(v)o(oid)e(*\))42 │ │ │ │ +b(&opcounts[myid],)37 b(1,)43 b(MPI_DOUBLE,)610 1271 │ │ │ │ +y(\(void)f(*\))g(opcounts,)e(1,)j(MPI_DOUBLE,)c(MPI_COMM_WORLD\))f(;)0 │ │ │ │ +1370 y(minops)j(=)i(DVmin\(nproc,)c(opcounts,)h(&root\))h(;)0 │ │ │ │ 1470 y(DVfree\(opcounts\))c(;)0 1570 y(frontETree)i(=)44 │ │ │ │ b(ETree_MPI_Bcast)o(\(fr)o(on)o(tET)o(re)o(e,)37 b(root,)42 │ │ │ │ b(msglvl,)e(msgFile,)h(MPI_COMM_WORLD\))c(;)0 1824 y │ │ │ │ Fg(4.4)112 b(Non-n)m(umeric)39 b(w)m(ork)0 2001 y Ft(Once)28 │ │ │ │ b(the)h(fron)n(t)f(tree)g(is)h(replicated)f(across)f(the)h(pro)r │ │ │ │ (cessors,)f(w)n(e)h(obtain)g(the)h(p)r(erm)n(utation)g(v)n(ectors)e │ │ │ │ (and)h(p)r(erm)n(ute)h(the)0 2100 y(v)n(ertices)h(in)h(the)h(fron)n(t)e │ │ │ │ @@ -9877,15 +9868,15 @@ │ │ │ │ b(=)j(0)h(;)0 5208 y(newA)e(=)h(InpMtx_MPI_split)o(\(mt)o(xA)o(,)38 │ │ │ │ b(vtxmapIV,)h(stats,)j(msglvl,)e(msgFile,)h(firsttag,)0 │ │ │ │ 5308 y(MPI_COMM_WORLD\))c(;)0 5407 y(InpMtx_free\(mtxA)o(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 18 18 │ │ │ │ TeXDict begin 18 17 bop 0 100 a Ft(18)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(mtxA)42 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(mtxA)42 │ │ │ │ b(=)h(newA)f(;)0 490 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o(tx)o │ │ │ │ (A,)37 b(INPMTX_BY_VECTORS)o(\))g(;)0 589 y(newY)42 b(=)h │ │ │ │ (DenseMtx_MPI_spl)o(itB)o(yR)o(ows)o(\(m)o(txY)o(,)37 │ │ │ │ b(vtxmapIV,)j(stats,)h(msglvl,)1395 689 y(msgFile,)f(firsttag,)g │ │ │ │ (MPI_COMM_WORLD\))d(;)0 789 y(DenseMtx_free\(mt)o(xY\))g(;)0 │ │ │ │ 888 y(mtxY)42 b(=)h(newY)f(;)0 1073 y Ft(The)27 b Fo(InpMtx)p │ │ │ │ 439 1073 27 4 v 29 w(MPI)p 600 1073 V 30 w(split\(\))e │ │ │ │ @@ -9952,26 +9943,26 @@ │ │ │ │ (addition)f(of)h(the)g Fo(firsttag)c Ft(and)k(MPI)f(comm)n(unicator)f │ │ │ │ (at)i(the)g(end.)125 5308 y(The)h(p)r(ost-pro)r(cessing)e(of)j(the)f │ │ │ │ (factorization)f(is)h(the)h(same)f(in)g(principle)g(as)g(in)g(the)h │ │ │ │ (serial)e(co)r(de)h(but)h(di\013ers)f(in)h(that)0 5407 │ │ │ │ y(is)d(uses)h(the)g(distributed)g(data)f(structures.)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(19)0 │ │ │ │ -390 y Fo(FrontMtx_MPI_pos)o(tPr)o(oc)o(es)o(s\(f)o(ro)o(ntm)o(tx)o(,)38 │ │ │ │ -b(ownersIV,)h(stats,)i(msglvl,)1090 490 y(msgFile,)f(firsttag,)g │ │ │ │ -(MPI_COMM_WORLD\))d(;)0 682 y Ft(After)f(the)g(p)r(ost-pro)r(cessing)e │ │ │ │ -(step,)j(eac)n(h)e(lo)r(cal)g Fo(FrontMtx)d Ft(ob)5 b(ject)36 │ │ │ │ -b(con)n(tains)e(the)i Fp(L)2759 694 y Fk(J)n(;I)2851 │ │ │ │ -682 y Ft(,)i Fp(D)2981 694 y Fk(I)5 b(;I)3108 682 y Ft(and)36 │ │ │ │ -b Fp(U)3335 694 y Fk(I)5 b(;J)3470 682 y Ft(submatrices)0 │ │ │ │ -782 y(for)37 b(the)g(fron)n(ts)g(that)g(w)n(ere)f(o)n(wned)h(b)n(y)g │ │ │ │ -(the)g(particular)f(pro)r(cessor.)64 b(Ho)n(w)n(ev)n(er,)37 │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(19)0 390 y Fo(FrontMtx_MPI_pos)o(tPr)o(oc)o │ │ │ │ +(es)o(s\(f)o(ro)o(ntm)o(tx)o(,)38 b(ownersIV,)h(stats,)i(msglvl,)1090 │ │ │ │ +490 y(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))d(;)0 682 │ │ │ │ +y Ft(After)f(the)g(p)r(ost-pro)r(cessing)e(step,)j(eac)n(h)e(lo)r(cal)g │ │ │ │ +Fo(FrontMtx)d Ft(ob)5 b(ject)36 b(con)n(tains)e(the)i │ │ │ │ +Fp(L)2759 694 y Fk(J)n(;I)2851 682 y Ft(,)i Fp(D)2981 │ │ │ │ +694 y Fk(I)5 b(;I)3108 682 y Ft(and)36 b Fp(U)3335 694 │ │ │ │ +y Fk(I)5 b(;J)3470 682 y Ft(submatrices)0 782 y(for)37 │ │ │ │ +b(the)g(fron)n(ts)g(that)g(w)n(ere)f(o)n(wned)h(b)n(y)g(the)g │ │ │ │ +(particular)f(pro)r(cessor.)64 b(Ho)n(w)n(ev)n(er,)37 │ │ │ │ b(the)h(parallel)e(solv)n(e)g(is)h(based)g(on)g(the)0 │ │ │ │ 881 y(submatrices)27 b(b)r(eing)g(distributed)i(across)c(the)j(pro)r │ │ │ │ (cessors,)d(not)j(just)g(the)g(fron)n(ts.)125 1006 y(W)-7 │ │ │ │ b(e)30 b(m)n(ust)g(sp)r(ecify)g(whic)n(h)g(threads)f(o)n(wn)g(whic)n(h) │ │ │ │ h(submatrices,)g(and)f(so)h(p)r(erform)f(computations)g(with)i(them.)44 │ │ │ │ b(This)0 1106 y(is)27 b(done)h(b)n(y)f(constructing)g(a)g │ │ │ │ Fj(\\solve{map")i Ft(ob)5 b(ject,)28 b(as)f(w)n(e)g(see)g(b)r(elo)n(w.) │ │ │ │ @@ -10024,15 +10015,15 @@ │ │ │ │ b(=)43 b(FrontMtx_ownedCo)o(lum)o(ns)o(IV)o(\(fr)o(on)o(tmt)o(x,)37 │ │ │ │ b(myid,)k(ownersIV,)1787 5308 y(msglvl,)g(msgFile\))f(;)0 │ │ │ │ 5407 y(nmycol)h(=)i(IV_size\(ownedColu)o(mn)o(sIV)o(\))37 │ │ │ │ b(;)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ TeXDict begin 20 19 bop 0 100 a Ft(20)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(mtxX)42 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(mtxX)42 │ │ │ │ b(=)h(DenseMtx_new\(\))38 b(;)0 490 y(if)43 b(\()g(nmycol)e(>)i(0)g(\)) │ │ │ │ h({)131 589 y(DenseMtx_init\(mt)o(xX)o(,)37 b(type,)42 │ │ │ │ b(0,)h(0,)g(nmycol,)d(nrhs,)i(1,)g(nmycol\))f(;)131 689 │ │ │ │ y(DenseMtx_rowIndi)o(ce)o(s\()o(mtx)o(X,)c(&nrow,)k(&rowind\))f(;)131 │ │ │ │ 789 y(IVcopy\(nmycol,)e(rowind,)i(IV_entries\(ownedC)o(ol)o(umn)o(sI)o │ │ │ │ (V\))o(\))e(;)0 888 y(})0 1079 y Ft(If)25 b Fp(A)h Ft(is)f(symmetric,)g │ │ │ │ (or)f(if)i(piv)n(oting)e(for)h(stabilit)n(y)g(w)n(as)f(not)h(used,)g │ │ │ │ @@ -10088,48 +10079,47 @@ │ │ │ │ 1205 4918 V 1222 4918 V 1273 4520 a(2)h(1)1273 4619 y(2)g(0.0)1273 │ │ │ │ 4719 y(3)g(0.0)p 1932 4918 V 1948 4918 V 2000 4520 a(2)f(1)2000 │ │ │ │ 4619 y(4)87 b(1.0)2000 4719 y(5)g(0.0)p 2658 4918 V 2675 │ │ │ │ 4918 V 2726 4520 a(3)43 b(1)2726 4619 y(6)87 b(0.0)2726 │ │ │ │ 4719 y(7)g(0.0)2726 4818 y(8)g(0.0)p 3385 4918 V 3401 │ │ │ │ 4918 V 497 4921 2906 4 v eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(21)0 │ │ │ │ -390 y Fq(5)135 b(Serial)46 b(Solution)f(of)g Fi(AX)e │ │ │ │ -Fh(=)33 b Fi(Y)71 b Fq(using)45 b(an)g Fi(QR)g Fq(factorization)0 │ │ │ │ -595 y Ft(Let)28 b(us)f(review)g(the)h(steps)g(is)f(solving)g │ │ │ │ -Fp(AX)i Ft(=)23 b Fp(Y)46 b Ft(using)27 b(a)h Fp(QR)g │ │ │ │ -Ft(factorization.)125 777 y Fn(\017)41 b Fs(comm)m(unicate)27 │ │ │ │ -b Ft(the)h(data)f(for)g(the)h(problem)f(as)g Fp(A)p Ft(,)h │ │ │ │ -Fp(X)34 b Ft(and)28 b Fp(Y)18 b Ft(.)125 940 y Fn(\017)41 │ │ │ │ -b Fs(reorder)27 b Ft(as)663 919 y Fm(e)643 940 y Fp(A)727 │ │ │ │ -919 y Fm(e)706 940 y Fp(X)i Ft(=)23 b Fp(Y)18 b Ft(,)28 │ │ │ │ -b(where)1269 919 y Fm(e)1249 940 y Fp(A)23 b Ft(=)g Fp(AP)1549 │ │ │ │ -909 y Fk(T)1629 940 y Ft(and)1812 919 y Fm(e)1791 940 │ │ │ │ -y Fp(X)29 b Ft(=)23 b Fp(P)12 b(X)7 b Ft(.)36 b(and)27 │ │ │ │ -b Fp(P)40 b Ft(is)27 b(a)g(p)r(erm)n(utation)h(matrix.)125 │ │ │ │ -1102 y Fn(\017)41 b Fs(factor)497 1081 y Fm(e)477 1102 │ │ │ │ -y Fp(A)24 b Ft(=)e Fp(QR)q Ft(,)27 b(where)h Fp(Q)f Ft(is)g(orthogonal) │ │ │ │ -f(and)h Fp(R)h Ft(is)g(upp)r(er)g(triangular.)125 1264 │ │ │ │ -y Fn(\017)41 b Fs(solv)m(e)27 b Fp(R)503 1234 y Fk(T)555 │ │ │ │ -1264 y Fp(R)q Ft(\()p Fp(P)12 b(X)7 b Ft(\))22 b(=)h │ │ │ │ -Fp(A)996 1234 y Fk(T)1048 1264 y Fp(Y)47 b Ft(\(if)28 │ │ │ │ -b(real\))f(or)g Fs(solv)m(e)g Fp(R)1842 1234 y Fk(H)1904 │ │ │ │ -1264 y Fp(R)q Ft(\()p Fp(P)12 b(X)7 b Ft(\))23 b(=)f │ │ │ │ -Fp(A)2345 1234 y Fk(H)2409 1264 y Fp(Y)46 b Ft(\(if)28 │ │ │ │ -b(complex\).)125 1446 y(A)21 b(complete)h(listing)f(of)h(a)f(sample)g │ │ │ │ -(program)e(is)i(found)h(in)g(Section)f(D.)36 b(W)-7 b(e)21 │ │ │ │ -b(will)h(no)n(w)f(b)r(egin)h(to)f(w)n(ork)f(our)h(w)n(a)n(y)f(through)0 │ │ │ │ -1546 y(the)28 b(program)e(to)h(illustrate)g(the)h(use)g(of)f │ │ │ │ -Fs(SPOOLES)h Ft(to)f(solv)n(e)g(a)g(system)g(of)h(linear)f(equations.)0 │ │ │ │ -1800 y Fg(5.1)112 b(Reading)39 b(the)e(input)h(parameters)0 │ │ │ │ -1976 y Ft(The)31 b(input)h(parameters)d(are)h(iden)n(tical)h(to)g │ │ │ │ -(those)g(of)g(the)g(serial)f Fp(LU)39 b Ft(driv)n(er)30 │ │ │ │ -b(program)f(describ)r(ed)i(in)g(Section)g(2.1)g(with)0 │ │ │ │ +TeXDict begin 21 20 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(21)0 390 y Fq(5)135 b(Serial)46 │ │ │ │ +b(Solution)f(of)g Fi(AX)e Fh(=)33 b Fi(Y)71 b Fq(using)45 │ │ │ │ +b(an)g Fi(QR)g Fq(factorization)0 595 y Ft(Let)28 b(us)f(review)g(the)h │ │ │ │ +(steps)g(is)f(solving)g Fp(AX)i Ft(=)23 b Fp(Y)46 b Ft(using)27 │ │ │ │ +b(a)h Fp(QR)g Ft(factorization.)125 777 y Fn(\017)41 │ │ │ │ +b Fs(comm)m(unicate)27 b Ft(the)h(data)f(for)g(the)h(problem)f(as)g │ │ │ │ +Fp(A)p Ft(,)h Fp(X)34 b Ft(and)28 b Fp(Y)18 b Ft(.)125 │ │ │ │ +940 y Fn(\017)41 b Fs(reorder)27 b Ft(as)663 919 y Fm(e)643 │ │ │ │ +940 y Fp(A)727 919 y Fm(e)706 940 y Fp(X)i Ft(=)23 b │ │ │ │ +Fp(Y)18 b Ft(,)28 b(where)1269 919 y Fm(e)1249 940 y │ │ │ │ +Fp(A)23 b Ft(=)g Fp(AP)1549 909 y Fk(T)1629 940 y Ft(and)1812 │ │ │ │ +919 y Fm(e)1791 940 y Fp(X)29 b Ft(=)23 b Fp(P)12 b(X)7 │ │ │ │ +b Ft(.)36 b(and)27 b Fp(P)40 b Ft(is)27 b(a)g(p)r(erm)n(utation)h │ │ │ │ +(matrix.)125 1102 y Fn(\017)41 b Fs(factor)497 1081 y │ │ │ │ +Fm(e)477 1102 y Fp(A)24 b Ft(=)e Fp(QR)q Ft(,)27 b(where)h │ │ │ │ +Fp(Q)f Ft(is)g(orthogonal)f(and)h Fp(R)h Ft(is)g(upp)r(er)g │ │ │ │ +(triangular.)125 1264 y Fn(\017)41 b Fs(solv)m(e)27 b │ │ │ │ +Fp(R)503 1234 y Fk(T)555 1264 y Fp(R)q Ft(\()p Fp(P)12 │ │ │ │ +b(X)7 b Ft(\))22 b(=)h Fp(A)996 1234 y Fk(T)1048 1264 │ │ │ │ +y Fp(Y)47 b Ft(\(if)28 b(real\))f(or)g Fs(solv)m(e)g │ │ │ │ +Fp(R)1842 1234 y Fk(H)1904 1264 y Fp(R)q Ft(\()p Fp(P)12 │ │ │ │ +b(X)7 b Ft(\))23 b(=)f Fp(A)2345 1234 y Fk(H)2409 1264 │ │ │ │ +y Fp(Y)46 b Ft(\(if)28 b(complex\).)125 1446 y(A)21 b(complete)h │ │ │ │ +(listing)f(of)h(a)f(sample)g(program)e(is)i(found)h(in)g(Section)f(D.) │ │ │ │ +36 b(W)-7 b(e)21 b(will)h(no)n(w)f(b)r(egin)h(to)f(w)n(ork)f(our)h(w)n │ │ │ │ +(a)n(y)f(through)0 1546 y(the)28 b(program)e(to)h(illustrate)g(the)h │ │ │ │ +(use)g(of)f Fs(SPOOLES)h Ft(to)f(solv)n(e)g(a)g(system)g(of)h(linear)f │ │ │ │ +(equations.)0 1800 y Fg(5.1)112 b(Reading)39 b(the)e(input)h │ │ │ │ +(parameters)0 1976 y Ft(The)31 b(input)h(parameters)d(are)h(iden)n │ │ │ │ +(tical)h(to)g(those)g(of)g(the)g(serial)f Fp(LU)39 b │ │ │ │ +Ft(driv)n(er)30 b(program)f(describ)r(ed)i(in)g(Section)g(2.1)g(with)0 │ │ │ │ 2076 y(the)d(exception)f(that)h(the)g Fo(symmetryflag)23 │ │ │ │ b Ft(is)k(not)h(presen)n(t.)0 2330 y Fg(5.2)112 b(Comm)m(unicating)39 │ │ │ │ b(the)f(data)g(for)f(the)h(problem)0 2506 y Ft(This)28 │ │ │ │ b(step)f(is)h(iden)n(tical)f(to)h(the)g(serial)e(co)r(de,)i(as)f │ │ │ │ (describ)r(ed)g(in)h(Section)f(2.2)0 2760 y Fg(5.3)112 │ │ │ │ b(Reordering)38 b(the)f(linear)h(system)0 2937 y Ft(F)-7 │ │ │ │ b(or)30 b(the)h Fp(LU)39 b Ft(factorization)30 b(of)g │ │ │ │ @@ -10167,15 +10157,15 @@ │ │ │ │ (ETr)o(ee)o(\))38 b(;)0 5208 y(newToOld)127 b(=)44 b(IV_entries\(newT)o │ │ │ │ (oOl)o(dI)o(V\))37 b(;)0 5308 y(InpMtx_permute\(m)o(txA)o(,)g(NULL,)42 │ │ │ │ b(oldToNew\)\))d(;)0 5407 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o │ │ │ │ (tx)o(A,)e(INPMTX_BY_VECTORS)o(\))g(;)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ TeXDict begin 22 21 bop 0 100 a Ft(22)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Ft(The)j │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Ft(The)j │ │ │ │ Fo(oldToNewIV)25 b Ft(and)k Fo(newToOldIV)d Ft(v)-5 b(ariables)28 │ │ │ │ b(are)g Fo(IV)h Ft(ob)5 b(jects)29 b(that)h(represen)n(t)e(an)h(in)n │ │ │ │ (teger)g(v)n(ector.)41 b(The)29 b Fo(oldToNew)0 490 y │ │ │ │ Ft(and)21 b Fo(newToOld)e Ft(v)-5 b(ariables)20 b(are)g(p)r(oin)n(ters) │ │ │ │ h(to)g Fo(int)p Ft(,)h(whic)n(h)f(p)r(oin)n(t)h(to)f(the)h(base)f │ │ │ │ (address)f(of)h(the)h Fo(int)f Ft(v)n(ector)f(in)h(an)h │ │ │ │ Fo(IV)e Ft(ob)5 b(ject.)0 589 y(Once)38 b(w)n(e)g(ha)n(v)n(e)f(the)h(p) │ │ │ │ @@ -10246,85 +10236,85 @@ │ │ │ │ b(;)0 5009 y(ChvManager_init\()o(chv)o(ma)o(na)o(ger)o(,)f(NO_LOCK,)k │ │ │ │ (1\))h(;)0 5108 y(DVzero\(10,)d(cpus\))j(;)0 5208 y(facops)f(=)i(0.0)g │ │ │ │ (;)0 5308 y(FrontMtx_QR_fact)o(or\()o(fr)o(on)o(tmt)o(x,)37 │ │ │ │ b(mtxA,)42 b(chvmanager,)d(cpus,)i(&facops,)f(msglvl,)h(msgFile\))f(;)0 │ │ │ │ 5407 y(ChvManager_free\()o(chv)o(ma)o(na)o(ger)o(\))d(;)p │ │ │ │ eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(23)0 │ │ │ │ -390 y(W)-7 b(orking)38 b(storage)g(used)h(during)g(the)g(factorization) │ │ │ │ -f(is)i(found)f(in)h(the)f(form)g(of)h(blo)r(c)n(k)e Fj(chevr)l(ons)p │ │ │ │ -Ft(,)44 b(in)39 b(a)g Fo(Chv)f Ft(ob)5 b(ject,)0 490 │ │ │ │ -y(whic)n(h)34 b(hold)g(the)h(partial)e(fron)n(tal)g(matrix)h(for)g(a)f │ │ │ │ -(fron)n(t.)57 b(Muc)n(h)34 b(as)f(with)i(the)f Fo(SubMtx)e │ │ │ │ -Ft(ob)5 b(ject,)36 b(the)e Fo(FrontMtx)d Ft(ob)5 b(ject)0 │ │ │ │ -589 y(do)r(es)28 b(not)g(concern)f(itself)i(with)f(managing)f(w)n │ │ │ │ -(orking)f(storage,)h(instead)h(it)g(relies)g(on)g(a)f │ │ │ │ -Fo(ChvManager)d Ft(ob)5 b(ject)28 b(to)g(manage)0 689 │ │ │ │ -y(the)i Fo(Chv)f Ft(ob)5 b(jects.)43 b(On)30 b(return)f │ │ │ │ -Fo(facops)f Ft(con)n(tains)h(the)h(n)n(um)n(b)r(er)f(of)h(\015oating)f │ │ │ │ -(p)r(oin)n(t)h(op)r(erations)f(p)r(erformed)g(during)h(the)0 │ │ │ │ -789 y(factorization.)125 910 y(The)i(factorization)f(is)h(p)r(erformed) │ │ │ │ -f(using)h(a)g(one-dimensional)f(decomp)r(osition)g(of)h(the)h(factor)e │ │ │ │ -(matrices.)50 b(Keeping)0 1010 y(the)34 b(factor)f(matrices)f(in)i │ │ │ │ -(this)g(form)f(sev)n(erely)f(limits)i(the)g(amoun)n(t)f(of)g │ │ │ │ -(parallelism)f(for)h(the)h(forw)n(ard)e(and)h(bac)n(ksolv)n(es.)0 │ │ │ │ -1110 y(W)-7 b(e)29 b(p)r(erform)f(a)f(p)r(ost-pro)r(cessing)g(step)h │ │ │ │ -(to)g(con)n(v)n(ert)f(the)i(one-dimensional)e(data)h(structures)f(to)i │ │ │ │ -(submatrices)e(of)h(a)g(t)n(w)n(o-)0 1209 y(dimensional)19 │ │ │ │ -b(blo)r(c)n(k)g(decomp)r(osition)f(of)h(the)h(factor)f(matrices.)33 │ │ │ │ -b(The)19 b(follo)n(wing)f(co)r(de)i(fragmen)n(t)e(p)r(erforms)h(this)g │ │ │ │ -(op)r(eration.)0 1387 y Fo(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o │ │ │ │ -(mt)o(x,)37 b(msglvl,)k(msgFile\))f(;)0 1639 y Fg(5.6)112 │ │ │ │ -b(Solving)39 b(the)e(linear)h(system)0 1823 y Ft(The)28 │ │ │ │ -b(follo)n(wing)e(co)r(de)i(fragmen)n(t)e(solv)n(es)h(the)h(linear)e │ │ │ │ -(system)i Fp(R)2013 1793 y Fk(T)2065 1823 y Fp(R)2150 │ │ │ │ -1802 y Fm(b)2129 1823 y Fp(X)h Ft(=)2334 1802 y Fm(b)2314 │ │ │ │ -1823 y Fp(A)2376 1793 y Fk(T)2429 1823 y Fp(Y)46 b Ft(if)28 │ │ │ │ -b(real)f(or)g Fp(R)2927 1793 y Fk(H)2989 1823 y Fp(R)3075 │ │ │ │ -1802 y Fm(b)3053 1823 y Fp(X)i Ft(=)3259 1802 y Fm(b)3239 │ │ │ │ -1823 y Fp(A)3301 1793 y Fk(H)3364 1823 y Fp(Y)47 b Ft(if)28 │ │ │ │ -b(complex.)0 2000 y Fo(mtxX)42 b(=)h(DenseMtx_new\(\))38 │ │ │ │ -b(;)0 2100 y(DenseMtx_init\(mt)o(xX,)f(type,)k(0,)i(0,)g(neqns,)e │ │ │ │ -(nrhs,)g(1,)i(neqns\))e(;)0 2200 y(FrontMtx_QR_solv)o(e\(f)o(ro)o(nt)o │ │ │ │ -(mtx)o(,)c(mtxA,)42 b(mtxX,)f(mtxB,)h(mtxmanager,)785 │ │ │ │ -2299 y(cpus,)f(msglvl,)g(msgFile\))f(;)0 2476 y Ft(Last,)27 │ │ │ │ -b(w)n(e)g(p)r(erm)n(ute)h(the)g(ro)n(ws)e(of)i Fo(widehatX)c │ │ │ │ -Ft(bac)n(k)j(in)n(to)g Fp(X)7 b Ft(.)0 2654 y Fo(DenseMtx_permute)o │ │ │ │ -(Row)o(s\()o(mt)o(xX,)37 b(newToOldIV\))i(;)0 2906 y │ │ │ │ -Fg(5.7)112 b(Sample)39 b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files) │ │ │ │ -0 3081 y Ft(Immediately)26 b(b)r(elo)n(w)g(are)e(t)n(w)n(o)i(sample)f │ │ │ │ -(\014les:)36 b Fo(qr.matrix.input)20 b Ft(holds)25 b(the)i(matrix)e │ │ │ │ -(input)i(and)e Fo(qr.rhs.input)c Ft(holds)0 3181 y(the)28 │ │ │ │ -b(righ)n(t)e(hand)i(side.)37 b(This)27 b(simple)h(example)f(is)g(an)g │ │ │ │ -(8)18 b Fn(\002)f Ft(6)27 b(matrix)g Fp(A)h Ft(and)f(a)g(single)g(righ) │ │ │ │ -n(t)g(hand)g(side.)37 b(The)27 b(solution)g(is)0 3280 │ │ │ │ -y(the)h(v)n(ector)e(of)i(all)f(ones.)36 b(Note)28 b(ho)n(w)f(the)h │ │ │ │ -(indices)g(are)e(zero-based)g(as)h(for)g(C,)g(instead)h(of)f(one-based) │ │ │ │ -g(as)g(for)g(F)-7 b(ortran.)1346 3452 y Fo(matrix.input)p │ │ │ │ -1296 3485 623 4 v 1294 5348 4 1864 v 1346 3555 a(8)43 │ │ │ │ -b(6)g(18)1346 3655 y(0)g(1)g(1.0)1346 3754 y(0)g(3)g(2.0)1346 │ │ │ │ -3854 y(1)g(2)g(3.0)1346 3954 y(1)g(3)g(1.0)1346 4053 │ │ │ │ -y(1)g(5)g(1.0)1346 4153 y(2)g(0)g(1.0)1346 4253 y(2)g(2)g(2.0)1346 │ │ │ │ -4352 y(3)g(0)g(3.0)1346 4452 y(3)g(2)g(4.0)1346 4551 │ │ │ │ -y(3)g(4)g(2.0)1346 4651 y(4)g(3)g(1.0)1346 4751 y(5)g(1)g(2.0)1346 │ │ │ │ -4850 y(5)g(4)g(3.0)1346 4950 y(5)g(5)g(1.0)1346 5050 │ │ │ │ -y(6)g(0)g(2.0)1346 5149 y(6)g(3)g(3.0)1346 5249 y(7)g(1)g(1.0)1346 │ │ │ │ -5348 y(7)g(4)g(3.0)p 1917 5348 V 1296 5352 623 4 v 2162 │ │ │ │ -3950 a(rhs.input)p 2112 3984 492 4 v 2111 4850 4 867 │ │ │ │ -v 2162 4053 a(8)g(1)2162 4153 y(0)g(3.0)2162 4253 y(1)g(5.0)2162 │ │ │ │ +TeXDict begin 23 22 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(23)0 390 y(W)-7 b(orking)38 │ │ │ │ +b(storage)g(used)h(during)g(the)g(factorization)f(is)i(found)f(in)h │ │ │ │ +(the)f(form)g(of)h(blo)r(c)n(k)e Fj(chevr)l(ons)p Ft(,)44 │ │ │ │ +b(in)39 b(a)g Fo(Chv)f Ft(ob)5 b(ject,)0 490 y(whic)n(h)34 │ │ │ │ +b(hold)g(the)h(partial)e(fron)n(tal)g(matrix)h(for)g(a)f(fron)n(t.)57 │ │ │ │ +b(Muc)n(h)34 b(as)f(with)i(the)f Fo(SubMtx)e Ft(ob)5 │ │ │ │ +b(ject,)36 b(the)e Fo(FrontMtx)d Ft(ob)5 b(ject)0 589 │ │ │ │ +y(do)r(es)28 b(not)g(concern)f(itself)i(with)f(managing)f(w)n(orking)f │ │ │ │ +(storage,)h(instead)h(it)g(relies)g(on)g(a)f Fo(ChvManager)d │ │ │ │ +Ft(ob)5 b(ject)28 b(to)g(manage)0 689 y(the)i Fo(Chv)f │ │ │ │ +Ft(ob)5 b(jects.)43 b(On)30 b(return)f Fo(facops)f Ft(con)n(tains)h │ │ │ │ +(the)h(n)n(um)n(b)r(er)f(of)h(\015oating)f(p)r(oin)n(t)h(op)r(erations) │ │ │ │ +f(p)r(erformed)g(during)h(the)0 789 y(factorization.)125 │ │ │ │ +910 y(The)i(factorization)f(is)h(p)r(erformed)f(using)h(a)g │ │ │ │ +(one-dimensional)f(decomp)r(osition)g(of)h(the)h(factor)e(matrices.)50 │ │ │ │ +b(Keeping)0 1010 y(the)34 b(factor)f(matrices)f(in)i(this)g(form)f(sev) │ │ │ │ +n(erely)f(limits)i(the)g(amoun)n(t)f(of)g(parallelism)f(for)h(the)h │ │ │ │ +(forw)n(ard)e(and)h(bac)n(ksolv)n(es.)0 1110 y(W)-7 b(e)29 │ │ │ │ +b(p)r(erform)f(a)f(p)r(ost-pro)r(cessing)g(step)h(to)g(con)n(v)n(ert)f │ │ │ │ +(the)i(one-dimensional)e(data)h(structures)f(to)i(submatrices)e(of)h(a) │ │ │ │ +g(t)n(w)n(o-)0 1209 y(dimensional)19 b(blo)r(c)n(k)g(decomp)r(osition)f │ │ │ │ +(of)h(the)h(factor)f(matrices.)33 b(The)19 b(follo)n(wing)f(co)r(de)i │ │ │ │ +(fragmen)n(t)e(p)r(erforms)h(this)g(op)r(eration.)0 1387 │ │ │ │ +y Fo(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o(mt)o(x,)37 │ │ │ │ +b(msglvl,)k(msgFile\))f(;)0 1639 y Fg(5.6)112 b(Solving)39 │ │ │ │ +b(the)e(linear)h(system)0 1823 y Ft(The)28 b(follo)n(wing)e(co)r(de)i │ │ │ │ +(fragmen)n(t)e(solv)n(es)h(the)h(linear)e(system)i Fp(R)2013 │ │ │ │ +1793 y Fk(T)2065 1823 y Fp(R)2150 1802 y Fm(b)2129 1823 │ │ │ │ +y Fp(X)h Ft(=)2334 1802 y Fm(b)2314 1823 y Fp(A)2376 │ │ │ │ +1793 y Fk(T)2429 1823 y Fp(Y)46 b Ft(if)28 b(real)f(or)g │ │ │ │ +Fp(R)2927 1793 y Fk(H)2989 1823 y Fp(R)3075 1802 y Fm(b)3053 │ │ │ │ +1823 y Fp(X)i Ft(=)3259 1802 y Fm(b)3239 1823 y Fp(A)3301 │ │ │ │ +1793 y Fk(H)3364 1823 y Fp(Y)47 b Ft(if)28 b(complex.)0 │ │ │ │ +2000 y Fo(mtxX)42 b(=)h(DenseMtx_new\(\))38 b(;)0 2100 │ │ │ │ +y(DenseMtx_init\(mt)o(xX,)f(type,)k(0,)i(0,)g(neqns,)e(nrhs,)g(1,)i │ │ │ │ +(neqns\))e(;)0 2200 y(FrontMtx_QR_solv)o(e\(f)o(ro)o(nt)o(mtx)o(,)c │ │ │ │ +(mtxA,)42 b(mtxX,)f(mtxB,)h(mtxmanager,)785 2299 y(cpus,)f(msglvl,)g │ │ │ │ +(msgFile\))f(;)0 2476 y Ft(Last,)27 b(w)n(e)g(p)r(erm)n(ute)h(the)g(ro) │ │ │ │ +n(ws)e(of)i Fo(widehatX)c Ft(bac)n(k)j(in)n(to)g Fp(X)7 │ │ │ │ +b Ft(.)0 2654 y Fo(DenseMtx_permute)o(Row)o(s\()o(mt)o(xX,)37 │ │ │ │ +b(newToOldIV\))i(;)0 2906 y Fg(5.7)112 b(Sample)39 b(Matrix)f(and)h │ │ │ │ +(Righ)m(t)d(Hand)i(Side)h(Files)0 3081 y Ft(Immediately)26 │ │ │ │ +b(b)r(elo)n(w)g(are)e(t)n(w)n(o)i(sample)f(\014les:)36 │ │ │ │ +b Fo(qr.matrix.input)20 b Ft(holds)25 b(the)i(matrix)e(input)i(and)e │ │ │ │ +Fo(qr.rhs.input)c Ft(holds)0 3181 y(the)28 b(righ)n(t)e(hand)i(side.)37 │ │ │ │ +b(This)27 b(simple)h(example)f(is)g(an)g(8)18 b Fn(\002)f │ │ │ │ +Ft(6)27 b(matrix)g Fp(A)h Ft(and)f(a)g(single)g(righ)n(t)g(hand)g │ │ │ │ +(side.)37 b(The)27 b(solution)g(is)0 3280 y(the)h(v)n(ector)e(of)i(all) │ │ │ │ +f(ones.)36 b(Note)28 b(ho)n(w)f(the)h(indices)g(are)e(zero-based)g(as)h │ │ │ │ +(for)g(C,)g(instead)h(of)f(one-based)g(as)g(for)g(F)-7 │ │ │ │ +b(ortran.)1346 3452 y Fo(matrix.input)p 1296 3485 623 │ │ │ │ +4 v 1294 5348 4 1864 v 1346 3555 a(8)43 b(6)g(18)1346 │ │ │ │ +3655 y(0)g(1)g(1.0)1346 3754 y(0)g(3)g(2.0)1346 3854 │ │ │ │ +y(1)g(2)g(3.0)1346 3954 y(1)g(3)g(1.0)1346 4053 y(1)g(5)g(1.0)1346 │ │ │ │ +4153 y(2)g(0)g(1.0)1346 4253 y(2)g(2)g(2.0)1346 4352 │ │ │ │ +y(3)g(0)g(3.0)1346 4452 y(3)g(2)g(4.0)1346 4551 y(3)g(4)g(2.0)1346 │ │ │ │ +4651 y(4)g(3)g(1.0)1346 4751 y(5)g(1)g(2.0)1346 4850 │ │ │ │ +y(5)g(4)g(3.0)1346 4950 y(5)g(5)g(1.0)1346 5050 y(6)g(0)g(2.0)1346 │ │ │ │ +5149 y(6)g(3)g(3.0)1346 5249 y(7)g(1)g(1.0)1346 5348 │ │ │ │ +y(7)g(4)g(3.0)p 1917 5348 V 1296 5352 623 4 v 2162 3950 │ │ │ │ +a(rhs.input)p 2112 3984 492 4 v 2111 4850 4 867 v 2162 │ │ │ │ +4053 a(8)g(1)2162 4153 y(0)g(3.0)2162 4253 y(1)g(5.0)2162 │ │ │ │ 4352 y(2)g(3.0)2162 4452 y(3)g(9.0)2162 4551 y(4)g(1.0)2162 │ │ │ │ 4651 y(5)g(6.0)2162 4751 y(6)g(5.0)2162 4850 y(7)g(4.0)p │ │ │ │ 2602 4850 V 2112 4854 492 4 v eop end │ │ │ │ %%Page: 24 24 │ │ │ │ TeXDict begin 24 23 bop 0 100 a Ft(24)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fq(A)134 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fq(A)134 │ │ │ │ b Fa(allInOne.c)40 b Fq({)45 b(A)g(Serial)h Fi(LU)56 │ │ │ │ b Fq(Driv)l(er)46 b(Program)0 625 y Fo(/*)86 b(allInOne.c)d(*/)0 │ │ │ │ 824 y(#include)40 b("../../misc.h")0 924 y(#include)g │ │ │ │ ("../../FrontMtx.h)o(")0 1024 y(#include)g("../../SymbFac.h")0 │ │ │ │ 1223 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1322 y(int)0 1422 y(main)i(\()h(int)f(argc,)g(char)g │ │ │ │ @@ -10364,20 +10354,19 @@ │ │ │ │ 4909 y(int)565 b(*newToOld,)40 b(*oldToNew)g(;)0 5009 │ │ │ │ y(int)565 b(stats[20])40 b(;)0 5108 y(IV)609 b(*newToOldIV,)39 │ │ │ │ b(*oldToNewIV)g(;)0 5208 y(IVL)565 b(*adjIVL,)41 b(*symbfacIVL)e(;)0 │ │ │ │ 5308 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 5407 y(/*)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(25)131 │ │ │ │ -390 y Fo(----------------)o(--)o(--)131 490 y(get)42 │ │ │ │ -b(input)g(parameters)131 589 y(----------------)o(--)o(--)0 │ │ │ │ -689 y(*/)0 789 y(if)h(\()g(argc)f(!=)h(9)g(\))g({)131 │ │ │ │ +TeXDict begin 25 24 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(25)131 390 y Fo(----------------)o(--)o(--) │ │ │ │ +131 490 y(get)42 b(input)g(parameters)131 589 y(----------------)o(--)o │ │ │ │ +(--)0 689 y(*/)0 789 y(if)h(\()g(argc)f(!=)h(9)g(\))g({)131 │ │ │ │ 888 y(fprintf\(stdout,)37 b("\\n")262 988 y("\\n)42 b(usage:)f(\045s)i │ │ │ │ (msglvl)e(msgFile)g(type)g(symmetryflag)e(pivotingflag")262 │ │ │ │ 1088 y("\\n)347 b(matrixFileName)38 b(rhsFileName)h(seed")262 │ │ │ │ 1187 y("\\n)173 b(msglvl)41 b(--)h(message)f(level")262 │ │ │ │ 1287 y("\\n)173 b(msgFile)40 b(--)j(message)e(file")262 │ │ │ │ 1386 y("\\n)173 b(type)f(--)43 b(type)f(of)h(entries")262 │ │ │ │ 1486 y("\\n)260 b(1)43 b(\(SPOOLES_REAL\))169 b(--)42 │ │ │ │ @@ -10418,20 +10407,20 @@ │ │ │ │ b(=)43 b(atoi\(argv[8]\))38 b(;)0 5272 y(/*--------------)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 5372 y(/*)p │ │ │ │ eop end │ │ │ │ %%Page: 26 26 │ │ │ │ TeXDict begin 26 25 bop 0 100 a Ft(26)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)131 390 y │ │ │ │ -Fo(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(--)131 490 y(STEP)42 b(1:)g(read)g(the)h(entries)d(from)i │ │ │ │ -(the)h(input)e(file)479 589 y(and)i(create)e(the)h(InpMtx)f(object)131 │ │ │ │ -689 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--) │ │ │ │ -o(---)o(--)o(--)0 789 y(*/)0 888 y(inputFile)f(=)j(fopen\(matrixFile)o │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)131 390 y Fo(----------------)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)131 │ │ │ │ +490 y(STEP)42 b(1:)g(read)g(the)h(entries)d(from)i(the)h(input)e(file) │ │ │ │ +479 589 y(and)i(create)e(the)h(InpMtx)f(object)131 689 │ │ │ │ +y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ +(---)o(--)o(--)0 789 y(*/)0 888 y(inputFile)f(=)j(fopen\(matrixFile)o │ │ │ │ (Nam)o(e,)37 b("r"\))42 b(;)0 988 y(fscanf\(inputFile)o(,)c("\045d)k │ │ │ │ (\045d)h(\045d",)f(&nrow,)f(&ncol,)g(&nent\))g(;)0 1088 │ │ │ │ y(neqns)h(=)h(nrow)f(;)0 1187 y(mtxA)g(=)h(InpMtx_new\(\))c(;)0 │ │ │ │ 1287 y(InpMtx_init\(mtxA)o(,)f(INPMTX_BY_ROWS,)f(type,)k(nent,)h │ │ │ │ (neqns\))f(;)0 1386 y(if)i(\()g(type)f(==)h(SPOOLES_REAL)38 │ │ │ │ b(\))43 b({)131 1486 y(double)128 b(value)42 b(;)131 │ │ │ │ 1586 y(for)g(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\)) │ │ │ │ @@ -10467,33 +10456,33 @@ │ │ │ │ 4774 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ 4873 y(for)h(\()h(jrhs)f(=)h(0)g(;)g(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\)) │ │ │ │ i({)392 4973 y(fscanf\(inputFile,)37 b("\045le",)k(&value\))g(;)392 │ │ │ │ 5073 y(DenseMtx_setRealE)o(nt)o(ry\()o(mt)o(xY,)c(jrow,)k(jrhs,)h │ │ │ │ (value\))f(;)262 5172 y(})131 5272 y(})0 5372 y(})i(else)f({)p │ │ │ │ eop end │ │ │ │ %%Page: 27 27 │ │ │ │ -TeXDict begin 27 26 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(27)131 │ │ │ │ -390 y Fo(double)128 b(imag,)42 b(real)f(;)131 490 y(for)h(\()h(irow)f │ │ │ │ -(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\))i({)262 │ │ │ │ -589 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ -689 y(for)h(\()h(jrhs)f(=)h(0)g(;)g(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i │ │ │ │ -({)392 789 y(fscanf\(inputFile,)37 b("\045le)42 b(\045le",)f(&real,)g │ │ │ │ -(&imag\))g(;)392 888 y(DenseMtx_setCompl)o(ex)o(Ent)o(ry)o(\(mt)o(xY)o │ │ │ │ -(,)c(jrow,)42 b(jrhs,)f(real,)h(imag\))g(;)262 988 y(})131 │ │ │ │ -1088 y(})0 1187 y(})0 1287 y(fclose\(inputFile)o(\))c(;)0 │ │ │ │ -1386 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)131 1486 │ │ │ │ -y(fprintf\(msgFile,)37 b("\\n\\n)k(rhs)i(matrix)e(in)h(original)f │ │ │ │ -(ordering"\))e(;)131 1586 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o │ │ │ │ -(\(mt)o(xY)o(,)f(msgFile\))i(;)131 1685 y(fflush\(msgFile\))d(;)0 │ │ │ │ -1785 y(})0 1885 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(-*/)0 1984 y(/*)131 2084 y(----------------)o(--)o(--) │ │ │ │ -o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ +TeXDict begin 27 26 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(27)131 390 y Fo(double)128 │ │ │ │ +b(imag,)42 b(real)f(;)131 490 y(for)h(\()h(irow)f(=)h(0)h(;)f(irow)f(<) │ │ │ │ +h(nrow)f(;)h(irow++)e(\))i({)262 589 y(fscanf\(inputFil)o(e,)37 │ │ │ │ +b("\045d",)42 b(&jrow\))f(;)262 689 y(for)h(\()h(jrhs)f(=)h(0)g(;)g │ │ │ │ +(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i({)392 789 y(fscanf\(inputFile,)37 │ │ │ │ +b("\045le)42 b(\045le",)f(&real,)g(&imag\))g(;)392 888 │ │ │ │ +y(DenseMtx_setCompl)o(ex)o(Ent)o(ry)o(\(mt)o(xY)o(,)c(jrow,)42 │ │ │ │ +b(jrhs,)f(real,)h(imag\))g(;)262 988 y(})131 1088 y(})0 │ │ │ │ +1187 y(})0 1287 y(fclose\(inputFile)o(\))c(;)0 1386 y(if)43 │ │ │ │ +b(\()g(msglvl)e(>)i(2)g(\))h({)131 1486 y(fprintf\(msgFile,)37 │ │ │ │ +b("\\n\\n)k(rhs)i(matrix)e(in)h(original)f(ordering"\))e(;)131 │ │ │ │ +1586 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xY)o(,)f │ │ │ │ +(msgFile\))i(;)131 1685 y(fflush\(msgFile\))d(;)0 1785 │ │ │ │ +y(})0 1885 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(-*/)0 1984 y(/*)131 2084 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ 2183 y(STEP)42 b(3)h(:)g(find)f(a)h(low-fill)d(ordering)131 │ │ │ │ 2283 y(\(1\))i(create)f(the)i(Graph)e(object)131 2383 │ │ │ │ y(\(2\))h(order)g(the)g(graph)f(using)h(multiple)e(minimum)h(degree)131 │ │ │ │ 2482 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)0 2582 y(*/)0 2682 y(graph)h(=)h │ │ │ │ (Graph_new\(\))c(;)0 2781 y(adjIVL)i(=)i(InpMtx_fullAdjace)o(nc)o(y\(m) │ │ │ │ o(tx)o(A\))37 b(;)0 2881 y(nedges)k(=)i(IVL_tsize\(adjIVL\))37 │ │ │ │ @@ -10522,25 +10511,24 @@ │ │ │ │ (oNe)o(wI)o(V\))37 b(;)0 5272 y(newToOldIV)i(=)44 b(ETree_newToOldV)o │ │ │ │ (txP)o(er)o(m\(f)o(ro)o(nt)o(ETr)o(ee)o(\))38 b(;)0 5372 │ │ │ │ y(newToOld)127 b(=)44 b(IV_entries\(newT)o(oOl)o(dI)o(V\))37 │ │ │ │ b(;)p eop end │ │ │ │ %%Page: 28 28 │ │ │ │ TeXDict begin 28 27 bop 0 100 a Ft(28)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo │ │ │ │ -(ETree_permuteVer)o(tic)o(es)o(\(f)o(ron)o(tE)o(Tre)o(e,)37 │ │ │ │ -b(oldToNewIV\))i(;)0 490 y(InpMtx_permute\(m)o(txA)o(,)e(oldToNew,)j │ │ │ │ -(oldToNew\))g(;)0 589 y(if)j(\()87 b(symmetryflag)38 │ │ │ │ -b(==)43 b(SPOOLES_SYMMETRI)o(C)131 689 y(||)g(symmetryflag)38 │ │ │ │ -b(==)43 b(SPOOLES_HERMITIA)o(N)37 b(\))44 b({)131 789 │ │ │ │ -y(InpMtx_mapToUppe)o(rT)o(ri)o(ang)o(le)o(\(mt)o(xA)o(\))38 │ │ │ │ -b(;)0 888 y(})0 988 y(InpMtx_changeCoo)o(rdT)o(yp)o(e\()o(mtx)o(A,)f │ │ │ │ -(INPMTX_BY_CHEVRO)o(NS\))g(;)0 1088 y(InpMtx_changeSto)o(rag)o(eM)o(od) │ │ │ │ -o(e\(m)o(tx)o(A,)g(INPMTX_BY_VECTORS)o(\))g(;)0 1187 │ │ │ │ -y(DenseMtx_permute)o(Row)o(s\()o(mt)o(xY,)g(oldToNewIV\))i(;)0 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(ETree_permuteVer)o │ │ │ │ +(tic)o(es)o(\(f)o(ron)o(tE)o(Tre)o(e,)37 b(oldToNewIV\))i(;)0 │ │ │ │ +490 y(InpMtx_permute\(m)o(txA)o(,)e(oldToNew,)j(oldToNew\))g(;)0 │ │ │ │ +589 y(if)j(\()87 b(symmetryflag)38 b(==)43 b(SPOOLES_SYMMETRI)o(C)131 │ │ │ │ +689 y(||)g(symmetryflag)38 b(==)43 b(SPOOLES_HERMITIA)o(N)37 │ │ │ │ +b(\))44 b({)131 789 y(InpMtx_mapToUppe)o(rT)o(ri)o(ang)o(le)o(\(mt)o │ │ │ │ +(xA)o(\))38 b(;)0 888 y(})0 988 y(InpMtx_changeCoo)o(rdT)o(yp)o(e\()o │ │ │ │ +(mtx)o(A,)f(INPMTX_BY_CHEVRO)o(NS\))g(;)0 1088 y(InpMtx_changeSto)o │ │ │ │ +(rag)o(eM)o(od)o(e\(m)o(tx)o(A,)g(INPMTX_BY_VECTORS)o(\))g(;)0 │ │ │ │ +1187 y(DenseMtx_permute)o(Row)o(s\()o(mt)o(xY,)g(oldToNewIV\))i(;)0 │ │ │ │ 1287 y(symbfacIVL)g(=)44 b(SymbFac_initFro)o(mIn)o(pM)o(tx\()o(fr)o(on) │ │ │ │ o(tET)o(re)o(e,)37 b(mtxA\))42 b(;)0 1386 y(if)h(\()g(msglvl)e(>)i(2)g │ │ │ │ (\))h({)131 1486 y(fprintf\(msgFile,)37 b("\\n\\n)k(old-to-new)f │ │ │ │ (permutation)f(vector"\))h(;)131 1586 y(IV_writeForHuman)o(Ey)o(e\()o │ │ │ │ (old)o(To)o(New)o(IV)o(,)e(msgFile\))i(;)131 1685 y(fprintf\(msgFile,)d │ │ │ │ ("\\n\\n)k(new-to-old)f(permutation)f(vector"\))h(;)131 │ │ │ │ 1785 y(IV_writeForHuman)o(Ey)o(e\()o(new)o(To)o(Old)o(IV)o(,)e │ │ │ │ @@ -10580,45 +10568,45 @@ │ │ │ │ (0.0\))g(;)0 4973 y(IVfill\(20,)d(stats,)j(0\))g(;)0 │ │ │ │ 5073 y(rootchv)f(=)i(FrontMtx_factorI)o(np)o(Mtx)o(\(f)o(ron)o(tm)o(tx) │ │ │ │ o(,)38 b(mtxA,)j(tau,)h(droptol,)567 5172 y(chvmanager,)d(&error,)h │ │ │ │ (cpus,)i(stats,)f(msglvl,)g(msgFile\))f(;)0 5272 y(ChvManager_free\()o │ │ │ │ (chv)o(ma)o(na)o(ger)o(\))d(;)0 5372 y(if)43 b(\()g(msglvl)e(>)i(2)g │ │ │ │ (\))h({)p eop end │ │ │ │ %%Page: 29 29 │ │ │ │ -TeXDict begin 29 28 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(29)131 │ │ │ │ -390 y Fo(fprintf\(msgFile,)37 b("\\n\\n)k(factor)g(matrix"\))g(;)131 │ │ │ │ -490 y(FrontMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)c │ │ │ │ -(msgFile\))j(;)131 589 y(fflush\(msgFile\))d(;)0 689 │ │ │ │ -y(})0 789 y(if)43 b(\()g(rootchv)e(!=)h(NULL)g(\))h({)131 │ │ │ │ -888 y(fprintf\(msgFile,)37 b("\\n\\n)k(matrix)g(found)h(to)h(be)f │ │ │ │ -(singular\\n"\))d(;)131 988 y(exit\(-1\))h(;)0 1088 y(})0 │ │ │ │ -1187 y(if)j(\()g(error)e(>=)i(0)g(\))h({)131 1287 y(fprintf\(msgFile,) │ │ │ │ -37 b("\\n\\n)k(error)h(encountered)d(at)k(front)e(\045d",)h(error\))f │ │ │ │ -(;)131 1386 y(exit\(-1\))f(;)0 1486 y(})0 1586 y(/*--------------)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ -1685 y(/*)131 1785 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(-)131 1885 y(STEP)i(7:)g(post-process)d(the)j │ │ │ │ -(factorization)131 1984 y(----------------)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(--)o(-)0 2084 y(*/)0 2183 y(FrontMtx_postPro)o(ces)o │ │ │ │ -(s\()o(fr)o(ont)o(mt)o(x,)37 b(msglvl,)k(msgFile\))f(;)0 │ │ │ │ -2283 y(if)j(\()g(msglvl)e(>)i(2)g(\))h({)131 2383 y(fprintf\(msgFile,) │ │ │ │ -37 b("\\n\\n)k(factor)g(matrix)g(after)h(post-processing")o(\))c(;)131 │ │ │ │ -2482 y(FrontMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)f │ │ │ │ -(msgFile\))j(;)131 2582 y(fflush\(msgFile\))d(;)0 2682 │ │ │ │ -y(})0 2781 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(-*/)0 2881 y(/*)131 2980 y(----------------)o(--)o(--)o(---) │ │ │ │ -o(--)o(---)o(--)o(-)131 3080 y(STEP)42 b(8:)g(solve)g(the)g(linear)f │ │ │ │ -(system)131 3180 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(-)0 3279 y(*/)0 3379 y(mtxX)h(=)h(DenseMtx_new\(\))38 │ │ │ │ -b(;)0 3479 y(DenseMtx_init\(mt)o(xX,)f(type,)k(0,)i(0,)g(neqns,)e │ │ │ │ -(nrhs,)g(1,)i(neqns\))e(;)0 3578 y(DenseMtx_zero\(mt)o(xX\))c(;)0 │ │ │ │ +TeXDict begin 29 28 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(29)131 390 y Fo(fprintf\(msgFile,)37 │ │ │ │ +b("\\n\\n)k(factor)g(matrix"\))g(;)131 490 y(FrontMtx_writeFo)o(rH)o │ │ │ │ +(um)o(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)c(msgFile\))j(;)131 │ │ │ │ +589 y(fflush\(msgFile\))d(;)0 689 y(})0 789 y(if)43 b(\()g(rootchv)e │ │ │ │ +(!=)h(NULL)g(\))h({)131 888 y(fprintf\(msgFile,)37 b("\\n\\n)k(matrix)g │ │ │ │ +(found)h(to)h(be)f(singular\\n"\))d(;)131 988 y(exit\(-1\))h(;)0 │ │ │ │ +1088 y(})0 1187 y(if)j(\()g(error)e(>=)i(0)g(\))h({)131 │ │ │ │ +1287 y(fprintf\(msgFile,)37 b("\\n\\n)k(error)h(encountered)d(at)k │ │ │ │ +(front)e(\045d",)h(error\))f(;)131 1386 y(exit\(-1\))f(;)0 │ │ │ │ +1486 y(})0 1586 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(--)o(-*/)0 1685 y(/*)131 1785 y(----------------)o(--)o(--) │ │ │ │ +o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-)131 1885 y(STEP)i(7:)g │ │ │ │ +(post-process)d(the)j(factorization)131 1984 y(----------------)o(--)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-)0 2084 │ │ │ │ +y(*/)0 2183 y(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o(mt)o(x,)37 │ │ │ │ +b(msglvl,)k(msgFile\))f(;)0 2283 y(if)j(\()g(msglvl)e(>)i(2)g(\))h({) │ │ │ │ +131 2383 y(fprintf\(msgFile,)37 b("\\n\\n)k(factor)g(matrix)g(after)h │ │ │ │ +(post-processing")o(\))c(;)131 2482 y(FrontMtx_writeFo)o(rH)o(um)o(anE) │ │ │ │ +o(ye)o(\(fr)o(on)o(tmt)o(x,)f(msgFile\))j(;)131 2582 │ │ │ │ +y(fflush\(msgFile\))d(;)0 2682 y(})0 2781 y(/*--------------)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 2881 │ │ │ │ +y(/*)131 2980 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(-) │ │ │ │ +131 3080 y(STEP)42 b(8:)g(solve)g(the)g(linear)f(system)131 │ │ │ │ +3180 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(-)0 │ │ │ │ +3279 y(*/)0 3379 y(mtxX)h(=)h(DenseMtx_new\(\))38 b(;)0 │ │ │ │ +3479 y(DenseMtx_init\(mt)o(xX,)f(type,)k(0,)i(0,)g(neqns,)e(nrhs,)g(1,) │ │ │ │ +i(neqns\))e(;)0 3578 y(DenseMtx_zero\(mt)o(xX\))c(;)0 │ │ │ │ 3678 y(FrontMtx_solve\(f)o(ron)o(tm)o(tx)o(,)h(mtxX,)j(mtxY,)h │ │ │ │ (mtxmanager,)654 3778 y(cpus,)f(msglvl,)g(msgFile\))f(;)0 │ │ │ │ 3877 y(if)j(\()g(msglvl)e(>)i(2)g(\))h({)131 3977 y(fprintf\(msgFile,) │ │ │ │ 37 b("\\n\\n)k(solution)g(matrix)g(in)h(new)h(ordering"\))c(;)131 │ │ │ │ 4076 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xX)o(,)f │ │ │ │ (msgFile\))i(;)131 4176 y(fflush\(msgFile\))d(;)0 4276 │ │ │ │ y(})0 4375 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -10633,15 +10621,15 @@ │ │ │ │ 5172 y(fprintf\(msgFile,)37 b("\\n\\n)k(solution)g(matrix)g(in)h │ │ │ │ (original)f(ordering"\))e(;)131 5272 y(DenseMtx_writeFo)o(rH)o(um)o │ │ │ │ (anE)o(ye)o(\(mt)o(xX)o(,)f(msgFile\))i(;)131 5372 y(fflush\(msgFile\)) │ │ │ │ d(;)p eop end │ │ │ │ %%Page: 30 30 │ │ │ │ TeXDict begin 30 29 bop 0 100 a Ft(30)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(})0 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(})0 │ │ │ │ 490 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 589 y(/*)131 689 y(-----------)131 789 y(free)42 │ │ │ │ b(memory)131 888 y(-----------)0 988 y(*/)0 1088 y(FrontMtx_free\(fr)o │ │ │ │ (ont)o(mt)o(x\))37 b(;)0 1187 y(DenseMtx_free\(mt)o(xX\))g(;)0 │ │ │ │ 1287 y(DenseMtx_free\(mt)o(xY\))g(;)0 1386 y(IV_free\(newToOld)o(IV\))g │ │ │ │ (;)0 1486 y(IV_free\(oldToNew)o(IV\))g(;)0 1586 y(InpMtx_free\(mtxA)o │ │ │ │ @@ -10651,29 +10639,29 @@ │ │ │ │ (;)0 2084 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)0 2183 y(return\(1\))i(;)j(})0 2283 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)p │ │ │ │ eop end │ │ │ │ %%Page: 31 31 │ │ │ │ -TeXDict begin 31 30 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(31)0 │ │ │ │ -390 y Fq(B)134 b Fa(allInOne.c)40 b Fq({)45 b(A)g(Serial)h │ │ │ │ -Fi(LU)56 b Fq(Driv)l(er)46 b(Program)0 625 y Fo(/*)86 │ │ │ │ -b(allInOneMT.c)d(*/)0 824 y(#include)40 b("../spoolesMT.h")0 │ │ │ │ -924 y(#include)g("../../misc.h")0 1024 y(#include)g("../../FrontMtx.h)o │ │ │ │ -(")0 1123 y(#include)g("../../SymbFac.h")0 1322 y(/*--------------)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ -1422 y(int)0 1522 y(main)i(\()h(int)f(argc,)g(char)g(*argv[])f(\))i({)0 │ │ │ │ -1621 y(/*)131 1721 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)131 1821 y(all-in-one)c(program)i(to)i(solve)e(A)i(X)h(=)f(Y) │ │ │ │ -131 1920 y(using)e(a)i(multithreaded)c(factorization)f(and)k(solve)131 │ │ │ │ +TeXDict begin 31 30 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(31)0 390 y Fq(B)134 b Fa(allInOne.c)40 │ │ │ │ +b Fq({)45 b(A)g(Serial)h Fi(LU)56 b Fq(Driv)l(er)46 b(Program)0 │ │ │ │ +625 y Fo(/*)86 b(allInOneMT.c)d(*/)0 824 y(#include)40 │ │ │ │ +b("../spoolesMT.h")0 924 y(#include)g("../../misc.h")0 │ │ │ │ +1024 y(#include)g("../../FrontMtx.h)o(")0 1123 y(#include)g │ │ │ │ +("../../SymbFac.h")0 1322 y(/*--------------)o(---)o(--)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(-*/)0 1422 y(int)0 1522 y(main)i(\()h(int)f │ │ │ │ +(argc,)g(char)g(*argv[])f(\))i({)0 1621 y(/*)131 1721 │ │ │ │ +y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ +1821 y(all-in-one)c(program)i(to)i(solve)e(A)i(X)h(=)f(Y)131 │ │ │ │ +1920 y(using)e(a)i(multithreaded)c(factorization)f(and)k(solve)131 │ │ │ │ 2120 y(\(1\))g(read)g(in)h(matrix)e(entries)g(for)h(A)h(and)f(form)g │ │ │ │ (InpMtx)f(object)131 2219 y(\(2\))h(read)g(in)h(right)e(hand)h(side)g │ │ │ │ (for)h(Y)g(entries)d(and)j(form)f(DenseMtx)e(object)131 │ │ │ │ 2319 y(\(3\))i(form)g(Graph)g(object,)e(order)i(matrix)f(and)h(form)g │ │ │ │ (front)g(tree)131 2418 y(\(4\))g(get)g(the)h(permutation,)38 │ │ │ │ b(permute)j(the)h(front)g(tree,)f(matrix)305 2518 y(and)h(right)g(hand) │ │ │ │ g(side)g(and)g(get)h(the)f(symbolic)e(factorization)131 │ │ │ │ @@ -10703,15 +10691,15 @@ │ │ │ │ 5108 y(ncol,)i(nedges,)f(nent,)g(neqns,)g(nfront,)g(nrhs,)g(nrow,)697 │ │ │ │ 5208 y(nthread,)g(pivotingflag,)d(seed,)j(symmetryflag,)e(type)j(;)0 │ │ │ │ 5308 y(int)565 b(*newToOld,)40 b(*oldToNew)g(;)0 5407 │ │ │ │ y(int)565 b(stats[20])40 b(;)p eop end │ │ │ │ %%Page: 32 32 │ │ │ │ TeXDict begin 32 31 bop 0 100 a Ft(32)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(IV)609 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(IV)609 │ │ │ │ b(*newToOldIV,)39 b(*oldToNewIV,)g(*ownersIV)g(;)0 490 │ │ │ │ y(IVL)565 b(*adjIVL,)41 b(*symbfacIVL)e(;)0 589 y(SolveMap)345 │ │ │ │ b(*solvemap)40 b(;)0 689 y(SubMtxManager)125 b(*mtxmanager)83 │ │ │ │ b(;)0 789 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)0 888 y(/*)131 988 y(----------------)o(--)o(--)131 │ │ │ │ 1088 y(get)42 b(input)g(parameters)131 1187 y(----------------)o(--)o │ │ │ │ @@ -10752,71 +10740,70 @@ │ │ │ │ 4774 y(})i(else)f(if)h(\()g(\(msgFile)d(=)j(fopen\(argv[2],)38 │ │ │ │ b("a"\)\))k(==)h(NULL)e(\))j({)131 4873 y(fprintf\(stderr,)37 │ │ │ │ b("\\n)42 b(fatal)g(error)g(in)g(\045s")479 4973 y("\\n)h(unable)e(to)i │ │ │ │ (open)f(file)g(\045s\\n",)479 5073 y(argv[0],)f(argv[2]\))f(;)131 │ │ │ │ 5172 y(return\(-1\))f(;)0 5272 y(})0 5372 y(type)478 │ │ │ │ b(=)43 b(atoi\(argv[3]\))38 b(;)p eop end │ │ │ │ %%Page: 33 33 │ │ │ │ -TeXDict begin 33 32 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(33)0 │ │ │ │ -390 y Fo(symmetryflag)126 b(=)43 b(atoi\(argv[4]\))38 │ │ │ │ -b(;)0 490 y(pivotingflag)126 b(=)43 b(atoi\(argv[5]\))38 │ │ │ │ -b(;)0 589 y(matrixFileName)g(=)43 b(argv[6])e(;)0 689 │ │ │ │ -y(rhsFileName)170 b(=)43 b(argv[7])e(;)0 789 y(seed)478 │ │ │ │ -b(=)43 b(atoi\(argv[8]\))38 b(;)0 888 y(nthread)346 b(=)43 │ │ │ │ -b(atoi\(argv[9]\))38 b(;)0 988 y(/*--------------)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1088 y(/*)131 │ │ │ │ -1187 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(--)o(--)131 1287 y(STEP)k(1:)g(read)g(the)h(entries)d(from) │ │ │ │ -i(the)h(input)e(file)479 1386 y(and)i(create)e(the)h(InpMtx)f(object) │ │ │ │ -131 1486 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--) │ │ │ │ -o(--)o(---)o(--)o(--)0 1586 y(*/)0 1685 y(inputFile)f(=)j │ │ │ │ -(fopen\(matrixFile)o(Nam)o(e,)37 b("r"\))42 b(;)0 1785 │ │ │ │ -y(fscanf\(inputFile)o(,)c("\045d)k(\045d)h(\045d",)f(&nrow,)f(&ncol,)g │ │ │ │ -(&nent\))g(;)0 1885 y(neqns)h(=)h(nrow)f(;)0 1984 y(mtxA)g(=)h │ │ │ │ -(InpMtx_new\(\))c(;)0 2084 y(InpMtx_init\(mtxA)o(,)f(INPMTX_BY_ROWS,)f │ │ │ │ -(type,)k(nent,)h(0\))h(;)0 2183 y(if)g(\()g(type)f(==)h(SPOOLES_REAL)38 │ │ │ │ -b(\))43 b({)131 2283 y(double)128 b(value)42 b(;)131 │ │ │ │ -2383 y(for)g(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\)) │ │ │ │ -i({)262 2482 y(fscanf\(inputFil)o(e,)37 b("\045d)42 b(\045d)h(\045le",) │ │ │ │ -f(&irow,)f(&jcol,)g(&value\))g(;)262 2582 y(InpMtx_inputRea)o(lE)o(ntr) │ │ │ │ -o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h(value\))f(;)131 2682 │ │ │ │ -y(})0 2781 y(})i(else)f({)131 2881 y(double)128 b(imag,)42 │ │ │ │ -b(real)f(;)131 2980 y(for)h(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f │ │ │ │ -(;)h(ient++)e(\))i({)262 3080 y(fscanf\(inputFil)o(e,)37 │ │ │ │ -b("\045d)42 b(\045d)h(\045le)g(\045le",)e(&irow,)g(&jcol,)g(&real,)g │ │ │ │ -(&imag\))g(;)262 3180 y(InpMtx_inputCom)o(pl)o(exE)o(nt)o(ry\()o(mt)o │ │ │ │ -(xA,)c(irow,)k(jcol,)h(real,)f(imag\))h(;)131 3279 y(})0 │ │ │ │ -3379 y(})0 3479 y(fclose\(inputFile)o(\))c(;)0 3578 y(InpMtx_changeSto) │ │ │ │ -o(rag)o(eM)o(od)o(e\(m)o(tx)o(A,)f(INPMTX_BY_VECTORS)o(\))g(;)0 │ │ │ │ -3678 y(if)43 b(\()g(msglvl)e(>)i(1)g(\))h({)131 3778 │ │ │ │ -y(fprintf\(msgFile,)37 b("\\n\\n)k(input)h(matrix"\))e(;)131 │ │ │ │ -3877 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(m)o(txA)o(,)d(msgFile\))k │ │ │ │ -(;)131 3977 y(fflush\(msgFile\))c(;)0 4076 y(})0 4176 │ │ │ │ -y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(-*/)0 4276 y(/*)131 4375 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(--)o(---)o(-)131 4475 y(STEP)42 │ │ │ │ +TeXDict begin 33 32 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(33)0 390 y Fo(symmetryflag)126 │ │ │ │ +b(=)43 b(atoi\(argv[4]\))38 b(;)0 490 y(pivotingflag)126 │ │ │ │ +b(=)43 b(atoi\(argv[5]\))38 b(;)0 589 y(matrixFileName)g(=)43 │ │ │ │ +b(argv[6])e(;)0 689 y(rhsFileName)170 b(=)43 b(argv[7])e(;)0 │ │ │ │ +789 y(seed)478 b(=)43 b(atoi\(argv[8]\))38 b(;)0 888 │ │ │ │ +y(nthread)346 b(=)43 b(atoi\(argv[9]\))38 b(;)0 988 y(/*--------------) │ │ │ │ +o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ +o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ +1088 y(/*)131 1187 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(--)o(---)o(--)o(--)131 1287 y(STEP)k(1:)g(read)g(the)h │ │ │ │ +(entries)d(from)i(the)h(input)e(file)479 1386 y(and)i(create)e(the)h │ │ │ │ +(InpMtx)f(object)131 1486 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)0 1586 y(*/)0 │ │ │ │ +1685 y(inputFile)f(=)j(fopen\(matrixFile)o(Nam)o(e,)37 │ │ │ │ +b("r"\))42 b(;)0 1785 y(fscanf\(inputFile)o(,)c("\045d)k(\045d)h │ │ │ │ +(\045d",)f(&nrow,)f(&ncol,)g(&nent\))g(;)0 1885 y(neqns)h(=)h(nrow)f(;) │ │ │ │ +0 1984 y(mtxA)g(=)h(InpMtx_new\(\))c(;)0 2084 y(InpMtx_init\(mtxA)o(,)f │ │ │ │ +(INPMTX_BY_ROWS,)f(type,)k(nent,)h(0\))h(;)0 2183 y(if)g(\()g(type)f │ │ │ │ +(==)h(SPOOLES_REAL)38 b(\))43 b({)131 2283 y(double)128 │ │ │ │ +b(value)42 b(;)131 2383 y(for)g(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h │ │ │ │ +(nent)f(;)h(ient++)e(\))i({)262 2482 y(fscanf\(inputFil)o(e,)37 │ │ │ │ +b("\045d)42 b(\045d)h(\045le",)f(&irow,)f(&jcol,)g(&value\))g(;)262 │ │ │ │ +2582 y(InpMtx_inputRea)o(lE)o(ntr)o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h │ │ │ │ +(value\))f(;)131 2682 y(})0 2781 y(})i(else)f({)131 2881 │ │ │ │ +y(double)128 b(imag,)42 b(real)f(;)131 2980 y(for)h(\()h(ient)f(=)h(0)h │ │ │ │ +(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\))i({)262 3080 y(fscanf\(inputFil) │ │ │ │ +o(e,)37 b("\045d)42 b(\045d)h(\045le)g(\045le",)e(&irow,)g(&jcol,)g │ │ │ │ +(&real,)g(&imag\))g(;)262 3180 y(InpMtx_inputCom)o(pl)o(exE)o(nt)o │ │ │ │ +(ry\()o(mt)o(xA,)c(irow,)k(jcol,)h(real,)f(imag\))h(;)131 │ │ │ │ +3279 y(})0 3379 y(})0 3479 y(fclose\(inputFile)o(\))c(;)0 │ │ │ │ +3578 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o(tx)o(A,)f │ │ │ │ +(INPMTX_BY_VECTORS)o(\))g(;)0 3678 y(if)43 b(\()g(msglvl)e(>)i(1)g(\))h │ │ │ │ +({)131 3778 y(fprintf\(msgFile,)37 b("\\n\\n)k(input)h(matrix"\))e(;) │ │ │ │ +131 3877 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(m)o(txA)o(,)d │ │ │ │ +(msgFile\))k(;)131 3977 y(fflush\(msgFile\))c(;)0 4076 │ │ │ │ +y(})0 4176 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(-*/)0 4276 y(/*)131 4375 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(-)131 4475 y(STEP)42 │ │ │ │ b(2:)g(read)g(the)h(right)e(hand)h(side)g(matrix)f(Y)131 │ │ │ │ 4575 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(-)0 4674 y(*/)0 4774 y(inputFile)f(=)j(fopen\(rhsFileNam)o │ │ │ │ (e,)37 b("r"\))42 b(;)0 4873 y(fscanf\(inputFile)o(,)c("\045d)k │ │ │ │ (\045d",)g(&nrow,)f(&nrhs\))g(;)0 4973 y(mtxY)h(=)h(DenseMtx_new\(\))38 │ │ │ │ b(;)0 5073 y(DenseMtx_init\(mt)o(xY,)f(type,)k(0,)i(0,)g(neqns,)e │ │ │ │ (nrhs,)g(1,)i(neqns\))e(;)0 5172 y(DenseMtx_zero\(mt)o(xY\))c(;)0 │ │ │ │ 5272 y(if)43 b(\()g(type)f(==)h(SPOOLES_REAL)38 b(\))43 │ │ │ │ b({)131 5372 y(double)128 b(value)42 b(;)p eop end │ │ │ │ %%Page: 34 34 │ │ │ │ TeXDict begin 34 33 bop 0 100 a Ft(34)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)131 390 y │ │ │ │ -Fo(for)42 b(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\))i │ │ │ │ -({)262 490 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)131 390 y Fo(for)42 │ │ │ │ +b(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\))i({)262 │ │ │ │ +490 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ 589 y(for)h(\()h(jrhs)f(=)h(0)g(;)g(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i │ │ │ │ ({)392 689 y(fscanf\(inputFile,)37 b("\045le",)k(&value\))g(;)392 │ │ │ │ 789 y(DenseMtx_setRealE)o(nt)o(ry\()o(mt)o(xY,)c(jrow,)k(jrhs,)h │ │ │ │ (value\))f(;)262 888 y(})131 988 y(})0 1088 y(})i(else)f({)131 │ │ │ │ 1187 y(double)128 b(imag,)42 b(real)f(;)131 1287 y(for)h(\()h(irow)f(=) │ │ │ │ h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\))i({)262 1386 │ │ │ │ y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ @@ -10854,29 +10841,29 @@ │ │ │ │ 4973 y(})0 5073 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 5172 y(/*)131 5272 y(----------------)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---) │ │ │ │ 131 5372 y(STEP)42 b(4:)g(get)h(the)f(permutation,)d(permute)h(the)j │ │ │ │ (front)e(tree,)p eop end │ │ │ │ %%Page: 35 35 │ │ │ │ -TeXDict begin 35 34 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(35)479 │ │ │ │ -390 y Fo(permute)41 b(the)h(matrix)g(and)g(right)f(hand)h(side,)g(and) │ │ │ │ -479 490 y(get)h(the)f(symbolic)e(factorization)131 589 │ │ │ │ -y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(--)o(---)0 689 y(*/)0 789 y(oldToNewIV)f(=)44 │ │ │ │ -b(ETree_oldToNewV)o(txP)o(er)o(m\(f)o(ro)o(nt)o(ETr)o(ee)o(\))38 │ │ │ │ -b(;)0 888 y(oldToNew)127 b(=)44 b(IV_entries\(oldT)o(oNe)o(wI)o(V\))37 │ │ │ │ -b(;)0 988 y(newToOldIV)i(=)44 b(ETree_newToOldV)o(txP)o(er)o(m\(f)o(ro) │ │ │ │ -o(nt)o(ETr)o(ee)o(\))38 b(;)0 1088 y(newToOld)127 b(=)44 │ │ │ │ -b(IV_entries\(newT)o(oOl)o(dI)o(V\))37 b(;)0 1187 y(ETree_permuteVer)o │ │ │ │ -(tic)o(es)o(\(f)o(ron)o(tE)o(Tre)o(e,)g(oldToNewIV\))i(;)0 │ │ │ │ -1287 y(InpMtx_permute\(m)o(txA)o(,)e(oldToNew,)j(oldToNew\))g(;)0 │ │ │ │ -1386 y(if)j(\()87 b(symmetryflag)38 b(==)43 b(SPOOLES_SYMMETRI)o(C)131 │ │ │ │ +TeXDict begin 35 34 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(35)479 390 y Fo(permute)41 │ │ │ │ +b(the)h(matrix)g(and)g(right)f(hand)h(side,)g(and)479 │ │ │ │ +490 y(get)h(the)f(symbolic)e(factorization)131 589 y(----------------)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)0 689 y(*/)0 789 y(oldToNewIV)f(=)44 b(ETree_oldToNewV)o(txP) │ │ │ │ +o(er)o(m\(f)o(ro)o(nt)o(ETr)o(ee)o(\))38 b(;)0 888 y(oldToNew)127 │ │ │ │ +b(=)44 b(IV_entries\(oldT)o(oNe)o(wI)o(V\))37 b(;)0 988 │ │ │ │ +y(newToOldIV)i(=)44 b(ETree_newToOldV)o(txP)o(er)o(m\(f)o(ro)o(nt)o │ │ │ │ +(ETr)o(ee)o(\))38 b(;)0 1088 y(newToOld)127 b(=)44 b(IV_entries\(newT)o │ │ │ │ +(oOl)o(dI)o(V\))37 b(;)0 1187 y(ETree_permuteVer)o(tic)o(es)o(\(f)o │ │ │ │ +(ron)o(tE)o(Tre)o(e,)g(oldToNewIV\))i(;)0 1287 y(InpMtx_permute\(m)o │ │ │ │ +(txA)o(,)e(oldToNew,)j(oldToNew\))g(;)0 1386 y(if)j(\()87 │ │ │ │ +b(symmetryflag)38 b(==)43 b(SPOOLES_SYMMETRI)o(C)131 │ │ │ │ 1486 y(||)g(symmetryflag)38 b(==)43 b(SPOOLES_HERMITIA)o(N)37 │ │ │ │ b(\))44 b({)131 1586 y(InpMtx_mapToUppe)o(rT)o(ri)o(ang)o(le)o(\(mt)o │ │ │ │ (xA)o(\))38 b(;)0 1685 y(})0 1785 y(InpMtx_changeCoo)o(rdT)o(yp)o(e\()o │ │ │ │ (mtx)o(A,)f(INPMTX_BY_CHEVRO)o(NS\))g(;)0 1885 y(InpMtx_changeSto)o │ │ │ │ (rag)o(eM)o(od)o(e\(m)o(tx)o(A,)g(INPMTX_BY_VECTORS)o(\))g(;)0 │ │ │ │ 1984 y(DenseMtx_permute)o(Row)o(s\()o(mt)o(xY,)g(oldToNewIV\))i(;)0 │ │ │ │ 2084 y(symbfacIVL)g(=)44 b(SymbFac_initFro)o(mIn)o(pM)o(tx\()o(fr)o(on) │ │ │ │ @@ -10915,24 +10902,24 @@ │ │ │ │ (sIV)o(,)d(msgFile\))k(;)131 5272 y(fprintf\(msgFile,)c("\\n\\n)k │ │ │ │ (factor)g(operations)f(for)i(each)g(front"\))f(;)131 │ │ │ │ 5372 y(DV_writeForHuman)o(Ey)o(e\()o(cum)o(op)o(sDV)o(,)c(msgFile\))k │ │ │ │ (;)p eop end │ │ │ │ %%Page: 36 36 │ │ │ │ TeXDict begin 36 35 bop 0 100 a Ft(36)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)131 390 y │ │ │ │ -Fo(fflush\(msgFile\))37 b(;)0 490 y(})0 589 y(DV_free\(cumopsDV)o(\))h │ │ │ │ -(;)0 689 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(-*/)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)131 988 y(STEP)k(6:)g │ │ │ │ -(initialize)e(the)i(front)g(matrix)f(object)131 1088 │ │ │ │ -y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)0 1187 y(*/)0 1287 y(frontmtx)127 b(=)44 b(FrontMtx_new\(\)) │ │ │ │ -37 b(;)0 1386 y(mtxmanager)i(=)44 b(SubMtxManager_n)o(ew\()o(\))37 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)131 390 y Fo(fflush\(msgFile\)) │ │ │ │ +37 b(;)0 490 y(})0 589 y(DV_free\(cumopsDV)o(\))h(;)0 │ │ │ │ +689 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(-*/)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)131 988 y(STEP)k(6:)g(initialize)e │ │ │ │ +(the)i(front)g(matrix)f(object)131 1088 y(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)0 1187 │ │ │ │ +y(*/)0 1287 y(frontmtx)127 b(=)44 b(FrontMtx_new\(\))37 │ │ │ │ +b(;)0 1386 y(mtxmanager)i(=)44 b(SubMtxManager_n)o(ew\()o(\))37 │ │ │ │ b(;)0 1486 y(SubMtxManager_in)o(it\()o(mt)o(xm)o(ana)o(ge)o(r,)g │ │ │ │ (LOCK_IN_PROCESS,)g(0\))43 b(;)0 1586 y(FrontMtx_init\(fr)o(ont)o(mt)o │ │ │ │ (x,)37 b(frontETree,)i(symbfacIVL,)g(type,)j(symmetryflag,)610 │ │ │ │ 1685 y(FRONTMTX_DENSE_FR)o(ON)o(TS,)37 b(pivotingflag,)h │ │ │ │ (LOCK_IN_PROCESS,)610 1785 y(0,)43 b(NULL,)e(mtxmanager,)f(msglvl,)g │ │ │ │ (msgFile\))g(;)0 1885 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ @@ -10966,27 +10953,27 @@ │ │ │ │ (post-process)d(the)j(factorization)131 4973 y(----------------)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-)0 5073 │ │ │ │ y(*/)0 5172 y(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o(mt)o(x,)37 │ │ │ │ b(msglvl,)k(msgFile\))f(;)0 5272 y(if)j(\()g(msglvl)e(>)i(1)g(\))h({) │ │ │ │ 131 5372 y(fprintf\(msgFile,)37 b("\\n\\n)k(factor)g(matrix)g(after)h │ │ │ │ (post-processing")o(\))c(;)p eop end │ │ │ │ %%Page: 37 37 │ │ │ │ -TeXDict begin 37 36 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(37)131 │ │ │ │ -390 y Fo(FrontMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,) │ │ │ │ -37 b(msgFile\))j(;)131 490 y(fflush\(msgFile\))d(;)0 │ │ │ │ -589 y(})0 689 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ -o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ -o(--)o(--)o(-*/)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ -(-)131 988 y(STEP)42 b(9:)g(get)h(the)f(solve)g(map)g(object)f(for)h │ │ │ │ -(the)h(parallel)d(solve)131 1088 y(----------------)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ -(-)0 1187 y(*/)0 1287 y(solvemap)g(=)j(SolveMap_new\(\))38 │ │ │ │ +TeXDict begin 37 36 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(37)131 390 y Fo(FrontMtx_writeFo)o(rH)o(um)o │ │ │ │ +(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)37 b(msgFile\))j(;)131 │ │ │ │ +490 y(fflush\(msgFile\))d(;)0 589 y(})0 689 y(/*--------------)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 789 │ │ │ │ +y(/*)131 888 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)131 │ │ │ │ +988 y(STEP)42 b(9:)g(get)h(the)f(solve)g(map)g(object)f(for)h(the)h │ │ │ │ +(parallel)d(solve)131 1088 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)0 │ │ │ │ +1187 y(*/)0 1287 y(solvemap)g(=)j(SolveMap_new\(\))38 │ │ │ │ b(;)0 1386 y(SolveMap_ddMap\(s)o(olv)o(em)o(ap)o(,)g(symmetryflag,)g │ │ │ │ (FrontMtx_upperBl)o(oc)o(kIV)o(L\()o(fro)o(nt)o(mt)o(x\),)654 │ │ │ │ 1486 y(FrontMtx_lowerBl)o(oc)o(kIV)o(L\()o(fr)o(ont)o(mt)o(x\),)f │ │ │ │ (nthread,)j(ownersIV,)654 1586 y(FrontMtx_frontTr)o(ee)o(\(fr)o(on)o │ │ │ │ (tm)o(tx\))o(,)d(seed,)42 b(msglvl,)f(msgFile\))f(;)0 │ │ │ │ 1685 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -11021,41 +11008,40 @@ │ │ │ │ 4774 y(free)42 b(memory)131 4873 y(-----------)0 4973 │ │ │ │ y(*/)0 5073 y(FrontMtx_free\(fr)o(ont)o(mt)o(x\))37 b(;)0 │ │ │ │ 5172 y(DenseMtx_free\(mt)o(xX\))g(;)0 5272 y(DenseMtx_free\(mt)o(xY\))g │ │ │ │ (;)0 5372 y(IV_free\(newToOld)o(IV\))g(;)p eop end │ │ │ │ %%Page: 38 38 │ │ │ │ TeXDict begin 38 37 bop 0 100 a Ft(38)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo │ │ │ │ -(IV_free\(oldToNew)o(IV\))37 b(;)0 490 y(InpMtx_free\(mtxA)o(\))h(;)0 │ │ │ │ -589 y(ETree_free\(front)o(ETr)o(ee)o(\))f(;)0 689 y(IVL_free\(symbfac)o │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(IV_free\(oldToNew)o │ │ │ │ +(IV\))37 b(;)0 490 y(InpMtx_free\(mtxA)o(\))h(;)0 589 │ │ │ │ +y(ETree_free\(front)o(ETr)o(ee)o(\))f(;)0 689 y(IVL_free\(symbfac)o │ │ │ │ (IVL)o(\))g(;)0 789 y(SubMtxManager_fr)o(ee\()o(mt)o(xm)o(ana)o(ge)o │ │ │ │ (r\))g(;)0 888 y(Graph_free\(graph)o(\))h(;)0 988 y(SolveMap_free\(so)o │ │ │ │ (lve)o(ma)o(p\))f(;)0 1088 y(IV_free\(ownersIV)o(\))h(;)0 │ │ │ │ 1187 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1287 y(return\(1\))i(;)j(})0 1386 y(/*--------------)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)p eop │ │ │ │ end │ │ │ │ %%Page: 39 39 │ │ │ │ -TeXDict begin 39 38 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(39)0 │ │ │ │ -390 y Fq(C)135 b Fa(allInOne.c)40 b Fq({)45 b(A)f(Serial)i │ │ │ │ -Fi(LU)57 b Fq(Driv)l(er)45 b(Program)0 625 y Fo(/*)86 │ │ │ │ -b(allInOneMPI.c)c(*/)0 824 y(#include)40 b("../spoolesMPI.h")0 │ │ │ │ -924 y(#include)g("../../timings.h")0 1123 y(/*--------------)o(---)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1223 │ │ │ │ -y(int)0 1322 y(main)i(\()h(int)f(argc,)g(char)g(*argv[])f(\))i({)0 │ │ │ │ -1422 y(/*)131 1522 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(-)131 │ │ │ │ -1621 y(all-in-one)c(MPI)k(program)d(for)j(each)f(process)131 │ │ │ │ -1821 y(order,)f(factor)g(and)h(solve)g(A)h(X)g(=)g(Y)131 │ │ │ │ +TeXDict begin 39 38 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(39)0 390 y Fq(C)135 b Fa(allInOne.c)40 │ │ │ │ +b Fq({)45 b(A)f(Serial)i Fi(LU)57 b Fq(Driv)l(er)45 b(Program)0 │ │ │ │ +625 y Fo(/*)86 b(allInOneMPI.c)c(*/)0 824 y(#include)40 │ │ │ │ +b("../spoolesMPI.h")0 924 y(#include)g("../../timings.h")0 │ │ │ │ +1123 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(-*/)0 1223 y(int)0 1322 y(main)i(\()h(int)f(argc,)g(char)g │ │ │ │ +(*argv[])f(\))i({)0 1422 y(/*)131 1522 y(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(-)131 1621 y(all-in-one)c(MPI)k(program)d(for)j(each)f │ │ │ │ +(process)131 1821 y(order,)f(factor)g(and)h(solve)g(A)h(X)g(=)g(Y)131 │ │ │ │ 2020 y(\()g(1\))g(read)f(in)g(matrix)f(entries)g(and)i(form)e(InpMtx)h │ │ │ │ (object)f(for)h(A)131 2120 y(\()h(2\))g(order)e(the)i(system)e(using)g │ │ │ │ (minimum)g(degree)131 2219 y(\()i(3\))g(permute)d(the)j(front)e(tree) │ │ │ │ 131 2319 y(\()i(4\))g(create)e(the)h(owners)f(map)i(IV)f(object)131 │ │ │ │ 2418 y(\()h(5\))g(permute)d(the)j(matrix)e(A)i(and)f(redistribute)131 │ │ │ │ 2518 y(\()h(6\))g(compute)d(the)j(symbolic)d(factorization)131 │ │ │ │ 2618 y(\()j(7\))g(compute)d(the)j(numeric)d(factorization)131 │ │ │ │ @@ -11083,17 +11069,17 @@ │ │ │ │ b(*inputFile,)39 b(*msgFile)i(;)0 5208 y(Graph)477 b(*graph)41 │ │ │ │ b(;)0 5308 y(int)565 b(error,)41 b(firsttag,)f(ient,)i(irow,)f(jcol,)h │ │ │ │ (lookahead)e(=)j(0,)697 5407 y(msglvl,)e(myid,)h(nedges,)e(nent,)i │ │ │ │ (neqns,)f(nmycol,)g(nproc,)g(nrhs,)p eop end │ │ │ │ %%Page: 40 40 │ │ │ │ TeXDict begin 40 39 bop 0 100 a Ft(40)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)697 390 y │ │ │ │ -Fo(nrow,)42 b(pivotingflag,)c(root,)k(seed,)f(symmetryflag,)d(type)k(;) │ │ │ │ -0 490 y(int)565 b(stats[20])40 b(;)0 589 y(int)565 b(*rowind)41 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)697 390 y Fo(nrow,)42 │ │ │ │ +b(pivotingflag,)c(root,)k(seed,)f(symmetryflag,)d(type)k(;)0 │ │ │ │ +490 y(int)565 b(stats[20])40 b(;)0 589 y(int)565 b(*rowind)41 │ │ │ │ b(;)0 689 y(IV)609 b(*oldToNewIV,)39 b(*ownedColumnsIV,)e(*ownersIV,) │ │ │ │ 697 789 y(*newToOldIV,)i(*vtxmapIV)h(;)0 888 y(IVL)565 │ │ │ │ b(*adjIVL,)41 b(*symbfacIVL)e(;)0 988 y(SolveMap)345 │ │ │ │ b(*solvemap)40 b(;)0 1088 y(/*--------------)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(-*/)0 1187 y(/*)131 1287 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ @@ -11136,44 +11122,44 @@ │ │ │ │ (number")262 4674 y("\\n",)g(argv[0]\))f(;)131 4774 y(return\(0\))g(;)0 │ │ │ │ 4873 y(})0 4973 y(msglvl)h(=)i(atoi\(argv[1]\))38 b(;)0 │ │ │ │ 5073 y(if)43 b(\()g(strcmp\(argv[2],)37 b("stdout"\))j(==)j(0)g(\))g({) │ │ │ │ 131 5172 y(msgFile)d(=)k(stdout)d(;)0 5272 y(})i(else)f({)131 │ │ │ │ 5372 y(sprintf\(buffer,)37 b("res.\045d",)j(myid\))i(;)p │ │ │ │ eop end │ │ │ │ %%Page: 41 41 │ │ │ │ -TeXDict begin 41 40 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(41)131 │ │ │ │ -390 y Fo(if)43 b(\()g(\(msgFile)d(=)j(fopen\(buffer,)38 │ │ │ │ -b("w"\)\))k(==)h(NULL)f(\))h({)262 490 y(fprintf\(stderr,)37 │ │ │ │ -b("\\n)42 b(fatal)g(error)f(in)i(\045s")610 589 y("\\n)g(unable)e(to)h │ │ │ │ -(open)g(file)g(\045s\\n",)610 689 y(argv[0],)e(buffer\))h(;)262 │ │ │ │ -789 y(return\(-1\))e(;)131 888 y(})0 988 y(})0 1088 y(type)391 │ │ │ │ -b(=)43 b(atoi\(argv[3]\))38 b(;)0 1187 y(symmetryflag)h(=)k │ │ │ │ -(atoi\(argv[4]\))38 b(;)0 1287 y(pivotingflag)h(=)k(atoi\(argv[5]\))38 │ │ │ │ -b(;)0 1386 y(seed)391 b(=)43 b(atoi\(argv[6]\))38 b(;)0 │ │ │ │ -1486 y(IVzero\(20,)h(stats\))j(;)0 1586 y(DVzero\(20,)d(cpus\))j(;)0 │ │ │ │ -1685 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(-*/)0 1785 y(/*)131 1885 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ -o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)131 1984 y(STEP)g(1:)g(read) │ │ │ │ -g(the)h(entries)d(from)i(the)h(input)e(file)479 2084 │ │ │ │ -y(and)i(create)e(the)h(InpMtx)f(object)131 2183 y(----------------)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)0 │ │ │ │ -2283 y(*/)0 2383 y(sprintf\(buffer,)c("matrix.\045d.input")o(,)h │ │ │ │ -(myid\))j(;)0 2482 y(inputFile)f(=)j(fopen\(buffer,)38 │ │ │ │ -b("r"\))k(;)0 2582 y(fscanf\(inputFile)o(,)c("\045d)k(\045d)h(\045d",)f │ │ │ │ -(&neqns,)e(&neqns,)h(&nent\))g(;)0 2682 y(mtxA)h(=)h(InpMtx_new\(\))c │ │ │ │ -(;)0 2781 y(InpMtx_init\(mtxA)o(,)f(INPMTX_BY_ROWS,)f(type,)k(nent,)h │ │ │ │ -(0\))h(;)0 2881 y(if)g(\()g(type)f(==)h(SPOOLES_REAL)38 │ │ │ │ -b(\))43 b({)131 2980 y(double)128 b(value)42 b(;)131 │ │ │ │ -3080 y(for)g(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\)) │ │ │ │ -i({)262 3180 y(fscanf\(inputFil)o(e,)37 b("\045d)42 b(\045d)h(\045le",) │ │ │ │ -f(&irow,)f(&jcol,)g(&value\))g(;)262 3279 y(InpMtx_inputRea)o(lE)o(ntr) │ │ │ │ -o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h(value\))f(;)131 3379 │ │ │ │ +TeXDict begin 41 40 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(41)131 390 y Fo(if)43 b(\()g(\(msgFile)d(=)j │ │ │ │ +(fopen\(buffer,)38 b("w"\)\))k(==)h(NULL)f(\))h({)262 │ │ │ │ +490 y(fprintf\(stderr,)37 b("\\n)42 b(fatal)g(error)f(in)i(\045s")610 │ │ │ │ +589 y("\\n)g(unable)e(to)h(open)g(file)g(\045s\\n",)610 │ │ │ │ +689 y(argv[0],)e(buffer\))h(;)262 789 y(return\(-1\))e(;)131 │ │ │ │ +888 y(})0 988 y(})0 1088 y(type)391 b(=)43 b(atoi\(argv[3]\))38 │ │ │ │ +b(;)0 1187 y(symmetryflag)h(=)k(atoi\(argv[4]\))38 b(;)0 │ │ │ │ +1287 y(pivotingflag)h(=)k(atoi\(argv[5]\))38 b(;)0 1386 │ │ │ │ +y(seed)391 b(=)43 b(atoi\(argv[6]\))38 b(;)0 1486 y(IVzero\(20,)h │ │ │ │ +(stats\))j(;)0 1586 y(DVzero\(20,)d(cpus\))j(;)0 1685 │ │ │ │ +y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ +(-*/)0 1785 y(/*)131 1885 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)131 1984 y(STEP)g(1:)g(read)g │ │ │ │ +(the)h(entries)d(from)i(the)h(input)e(file)479 2084 y(and)i(create)e │ │ │ │ +(the)h(InpMtx)f(object)131 2183 y(----------------)o(--)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)0 2283 │ │ │ │ +y(*/)0 2383 y(sprintf\(buffer,)c("matrix.\045d.input")o(,)h(myid\))j(;) │ │ │ │ +0 2482 y(inputFile)f(=)j(fopen\(buffer,)38 b("r"\))k(;)0 │ │ │ │ +2582 y(fscanf\(inputFile)o(,)c("\045d)k(\045d)h(\045d",)f(&neqns,)e │ │ │ │ +(&neqns,)h(&nent\))g(;)0 2682 y(mtxA)h(=)h(InpMtx_new\(\))c(;)0 │ │ │ │ +2781 y(InpMtx_init\(mtxA)o(,)f(INPMTX_BY_ROWS,)f(type,)k(nent,)h(0\))h │ │ │ │ +(;)0 2881 y(if)g(\()g(type)f(==)h(SPOOLES_REAL)38 b(\))43 │ │ │ │ +b({)131 2980 y(double)128 b(value)42 b(;)131 3080 y(for)g(\()h(ient)f │ │ │ │ +(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\))i({)262 │ │ │ │ +3180 y(fscanf\(inputFil)o(e,)37 b("\045d)42 b(\045d)h(\045le",)f │ │ │ │ +(&irow,)f(&jcol,)g(&value\))g(;)262 3279 y(InpMtx_inputRea)o(lE)o(ntr)o │ │ │ │ +(y\()o(mtx)o(A,)c(irow,)k(jcol,)h(value\))f(;)131 3379 │ │ │ │ y(})0 3479 y(})i(else)f(if)h(\()g(type)f(==)h(SPOOLES_COMPLEX)37 │ │ │ │ b(\))43 b({)131 3578 y(double)128 b(imag,)42 b(real)f(;)131 │ │ │ │ 3678 y(for)h(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\)) │ │ │ │ i({)262 3778 y(fscanf\(inputFil)o(e,)37 b("\045d)42 b(\045d)h(\045le)g │ │ │ │ (\045le",)e(&irow,)g(&jcol,)g(&real,)g(&imag\))g(;)262 │ │ │ │ 3877 y(InpMtx_inputCom)o(pl)o(exE)o(nt)o(ry\()o(mt)o(xA,)c(irow,)k │ │ │ │ (jcol,)h(real,)f(imag\))h(;)131 3977 y(})0 4076 y(})0 │ │ │ │ @@ -11189,23 +11175,23 @@ │ │ │ │ o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)131 5272 y(STEP)42 b(2:)g(read)g(the)h(rhs)f(entries)f(from)h(the) │ │ │ │ g(rhs)g(input)g(file)131 5372 y(and)g(create)f(the)i(DenseMtx)d(object) │ │ │ │ h(for)h(Y)p eop end │ │ │ │ %%Page: 42 42 │ │ │ │ TeXDict begin 42 41 bop 0 100 a Ft(42)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)131 390 y │ │ │ │ -Fo(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(--)o(---)0 490 y(*/)0 589 y(sprintf\(buffer,)37 │ │ │ │ -b("rhs.\045d.input",)h(myid\))j(;)0 689 y(inputFile)f(=)j │ │ │ │ -(fopen\(buffer,)38 b("r"\))k(;)0 789 y(fscanf\(inputFile)o(,)c("\045d)k │ │ │ │ -(\045d",)g(&nrow,)f(&nrhs\))g(;)0 888 y(mtxY)h(=)h(DenseMtx_new\(\))38 │ │ │ │ -b(;)0 988 y(DenseMtx_init\(mt)o(xY,)f(type,)k(0,)i(0,)g(nrow,)e(nrhs,)h │ │ │ │ -(1,)h(nrow\))e(;)0 1088 y(DenseMtx_rowIndi)o(ces)o(\(m)o(tx)o(Y,)c │ │ │ │ -(&nrow,)k(&rowind\))g(;)0 1187 y(if)i(\()g(type)f(==)h(SPOOLES_REAL)38 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)131 390 y Fo(----------------)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)0 490 y(*/)0 589 y(sprintf\(buffer,)37 b("rhs.\045d.input",)h │ │ │ │ +(myid\))j(;)0 689 y(inputFile)f(=)j(fopen\(buffer,)38 │ │ │ │ +b("r"\))k(;)0 789 y(fscanf\(inputFile)o(,)c("\045d)k(\045d",)g(&nrow,)f │ │ │ │ +(&nrhs\))g(;)0 888 y(mtxY)h(=)h(DenseMtx_new\(\))38 b(;)0 │ │ │ │ +988 y(DenseMtx_init\(mt)o(xY,)f(type,)k(0,)i(0,)g(nrow,)e(nrhs,)h(1,)h │ │ │ │ +(nrow\))e(;)0 1088 y(DenseMtx_rowIndi)o(ces)o(\(m)o(tx)o(Y,)c(&nrow,)k │ │ │ │ +(&rowind\))g(;)0 1187 y(if)i(\()g(type)f(==)h(SPOOLES_REAL)38 │ │ │ │ b(\))43 b({)131 1287 y(double)128 b(value)42 b(;)131 │ │ │ │ 1386 y(for)g(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\)) │ │ │ │ i({)262 1486 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 │ │ │ │ b(rowind)f(+)i(irow\))e(;)262 1586 y(for)h(\()h(jcol)f(=)h(0)g(;)g │ │ │ │ (jcol)f(<)i(nrhs)e(;)h(jcol++)e(\))i({)392 1685 y(fscanf\(inputFile,)37 │ │ │ │ b("\045le",)k(&value\))g(;)392 1785 y(DenseMtx_setRealE)o(nt)o(ry\()o │ │ │ │ (mt)o(xY,)c(irow,)k(jcol,)h(value\))f(;)262 1885 y(})131 │ │ │ │ @@ -11240,20 +11226,19 @@ │ │ │ │ 4973 y(nedges)k(=)i(IVL_tsize\(adjIVL\))37 b(;)0 5073 │ │ │ │ y(Graph_init2\(grap)o(h,)g(0,)43 b(neqns,)e(0,)i(nedges,)d(neqns,)i │ │ │ │ (nedges,)e(adjIVL,)523 5172 y(NULL,)i(NULL\))f(;)0 5272 │ │ │ │ y(if)i(\()g(msglvl)e(>)i(2)g(\))h({)131 5372 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(graph)h(of)h(the)f(input)f(matrix"\))g(;)p │ │ │ │ eop end │ │ │ │ %%Page: 43 43 │ │ │ │ -TeXDict begin 43 42 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(43)131 │ │ │ │ -390 y Fo(Graph_writeForHu)o(ma)o(nE)o(ye\()o(gr)o(aph)o(,)37 │ │ │ │ -b(msgFile\))k(;)131 490 y(fflush\(msgFile\))c(;)0 589 │ │ │ │ -y(})0 689 y(frontETree)i(=)44 b(orderViaMMD\(gra)o(ph,)37 │ │ │ │ +TeXDict begin 43 42 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(43)131 390 y Fo(Graph_writeForHu)o(ma)o(nE)o │ │ │ │ +(ye\()o(gr)o(aph)o(,)37 b(msgFile\))k(;)131 490 y(fflush\(msgFile\))c │ │ │ │ +(;)0 589 y(})0 689 y(frontETree)i(=)44 b(orderViaMMD\(gra)o(ph,)37 │ │ │ │ b(seed)42 b(+)h(myid,)e(msglvl,)g(msgFile\))f(;)0 789 │ │ │ │ y(Graph_free\(graph)o(\))e(;)0 888 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h │ │ │ │ ({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(front)h(tree)g(from)g │ │ │ │ (ordering"\))d(;)131 1088 y(ETree_writeForHu)o(ma)o(nE)o(ye\()o(fr)o │ │ │ │ (ont)o(ET)o(ree)o(,)e(msgFile\))k(;)131 1187 y(fflush\(msgFile\))c(;)0 │ │ │ │ 1287 y(})0 1386 y(opcounts)j(=)j(DVinit\(nproc,)c(0.0\))j(;)0 │ │ │ │ 1486 y(opcounts[myid])c(=)43 b(ETree_nFactorOps)o(\(fr)o(on)o(tE)o(Tre) │ │ │ │ @@ -11300,19 +11285,19 @@ │ │ │ │ o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)131 5272 │ │ │ │ y(STEP)42 b(4:)g(generate)f(the)h(owners)f(map)i(IV)f(object)479 │ │ │ │ 5372 y(and)h(the)f(map)g(from)g(vertices)f(to)h(owners)p │ │ │ │ eop end │ │ │ │ %%Page: 44 44 │ │ │ │ TeXDict begin 44 43 bop 0 100 a Ft(44)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)131 390 y │ │ │ │ -Fo(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(-)0 490 y(*/)0 589 y(cutoff)128 b(=)43 b(1./\(2*nproc\))c │ │ │ │ -(;)0 689 y(cumopsDV)h(=)j(DV_new\(\))e(;)0 789 y(DV_init\(cumopsDV)o(,) │ │ │ │ -d(nproc,)j(NULL\))g(;)0 888 y(ownersIV)f(=)j(ETree_ddMap\(front)o(ETr)o │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)131 390 y Fo(----------------)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)0 │ │ │ │ +490 y(*/)0 589 y(cutoff)128 b(=)43 b(1./\(2*nproc\))c(;)0 │ │ │ │ +689 y(cumopsDV)h(=)j(DV_new\(\))e(;)0 789 y(DV_init\(cumopsDV)o(,)d │ │ │ │ +(nproc,)j(NULL\))g(;)0 888 y(ownersIV)f(=)j(ETree_ddMap\(front)o(ETr)o │ │ │ │ (ee)o(,)1002 988 y(type,)f(symmetryflag,)c(cumopsDV,)i(cutoff\))h(;)0 │ │ │ │ 1088 y(DV_free\(cumopsDV)o(\))d(;)0 1187 y(vtxmapIV)i(=)j(IV_new\(\))e │ │ │ │ (;)0 1287 y(IV_init\(vtxmapIV)o(,)d(neqns,)j(NULL\))g(;)0 │ │ │ │ 1386 y(IVgather\(neqns,)c(IV_entries\(vtxmap)o(IV\))o(,)392 │ │ │ │ 1486 y(IV_entries\(owners)o(IV)o(\),)g(ETree_vtxToFront\()o(fr)o(on)o │ │ │ │ (tET)o(re)o(e\)\))g(;)0 1586 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)131 │ │ │ │ 1685 y(fprintf\(msgFile,)37 b("\\n\\n)k(map)i(from)f(fronts)f(to)h │ │ │ │ @@ -11348,32 +11333,32 @@ │ │ │ │ 4873 y(fflush\(msgFile\))d(;)0 4973 y(})0 5073 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 5172 y(/*)131 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)131 5372 y(STEP)42 b(6:)g(compute)f(the)h │ │ │ │ (symbolic)f(factorization)p eop end │ │ │ │ %%Page: 45 45 │ │ │ │ -TeXDict begin 45 44 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(45)131 │ │ │ │ -390 y Fo(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(--)0 490 y(*/)0 589 y(symbfacIVL)39 b(=)44 │ │ │ │ -b(SymbFac_MPI_ini)o(tFr)o(om)o(Inp)o(Mt)o(x\()o(fro)o(nt)o(ETr)o(ee)o │ │ │ │ -(,)37 b(ownersIV,)j(mtxA,)915 689 y(stats,)h(msglvl,)g(msgFile,)f │ │ │ │ -(firsttag,)g(MPI_COMM_WORLD\))e(;)0 789 y(firsttag)i(+=)j │ │ │ │ -(frontETree->nfro)o(nt)37 b(;)0 888 y(if)43 b(\()g(msglvl)e(>)i(2)g(\)) │ │ │ │ -h({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(local)h(symbolic)e │ │ │ │ -(factorization"\))d(;)131 1088 y(IVL_writeForHuma)o(nE)o(ye)o(\(sy)o │ │ │ │ -(mb)o(fac)o(IV)o(L,)g(msgFile\))j(;)131 1187 y(fflush\(msgFile\))d(;)0 │ │ │ │ -1287 y(})0 1386 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(-*/)0 1486 y(/*)131 1586 y(----------------)o(--)o(--) │ │ │ │ -o(---)o(--)o(---)o(--)o(---)o(--)131 1685 y(STEP)42 b(7:)g(initialize)e │ │ │ │ -(the)i(front)g(matrix)131 1785 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ -o(---)o(--)o(---)o(--)0 1885 y(*/)0 1984 y(mtxmanager)d(=)44 │ │ │ │ +TeXDict begin 45 44 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(45)131 390 y Fo(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)0 490 │ │ │ │ +y(*/)0 589 y(symbfacIVL)39 b(=)44 b(SymbFac_MPI_ini)o(tFr)o(om)o(Inp)o │ │ │ │ +(Mt)o(x\()o(fro)o(nt)o(ETr)o(ee)o(,)37 b(ownersIV,)j(mtxA,)915 │ │ │ │ +689 y(stats,)h(msglvl,)g(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))e(;)0 │ │ │ │ +789 y(firsttag)i(+=)j(frontETree->nfro)o(nt)37 b(;)0 │ │ │ │ +888 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)131 988 y(fprintf\(msgFile,) │ │ │ │ +37 b("\\n\\n)k(local)h(symbolic)e(factorization"\))d(;)131 │ │ │ │ +1088 y(IVL_writeForHuma)o(nE)o(ye)o(\(sy)o(mb)o(fac)o(IV)o(L,)g │ │ │ │ +(msgFile\))j(;)131 1187 y(fflush\(msgFile\))d(;)0 1287 │ │ │ │ +y(})0 1386 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(-*/)0 1486 y(/*)131 1586 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)131 1685 y(STEP)42 b(7:)g(initialize)e(the)i │ │ │ │ +(front)g(matrix)131 1785 y(----------------)o(--)o(--)o(---)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)0 1885 y(*/)0 1984 y(mtxmanager)d(=)44 │ │ │ │ b(SubMtxManager_n)o(ew\()o(\))37 b(;)0 2084 y(SubMtxManager_in)o(it\()o │ │ │ │ (mt)o(xm)o(ana)o(ge)o(r,)g(NO_LOCK,)j(0\))j(;)0 2183 │ │ │ │ y(frontmtx)d(=)j(FrontMtx_new\(\))38 b(;)0 2283 y(FrontMtx_init\(fr)o │ │ │ │ (ont)o(mt)o(x,)f(frontETree,)i(symbfacIVL,)g(type,)j(symmetryflag,)610 │ │ │ │ 2383 y(FRONTMTX_DENSE_FR)o(ON)o(TS,)37 b(pivotingflag,)h(NO_LOCK,)i │ │ │ │ (myid,)610 2482 y(ownersIV,)g(mtxmanager,)f(msglvl,)i(msgFile\))f(;)0 │ │ │ │ 2582 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ @@ -11403,37 +11388,37 @@ │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(-)131 │ │ │ │ 5272 y(STEP)i(9:)g(post-process)d(the)j(factorization)d(and)j(split)131 │ │ │ │ 5372 y(the)g(factor)f(matrices)f(into)i(submatrices)p │ │ │ │ eop end │ │ │ │ %%Page: 46 46 │ │ │ │ TeXDict begin 46 45 bop 0 100 a Ft(46)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)131 390 y │ │ │ │ -Fo(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(-)0 490 y(*/)0 589 y(FrontMtx_MPI_pos)o(tPr)o │ │ │ │ -(oc)o(es)o(s\(f)o(ro)o(ntm)o(tx)o(,)38 b(ownersIV,)h(stats,)i(msglvl,) │ │ │ │ -1090 689 y(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))d(;)0 │ │ │ │ -789 y(firsttag)j(+=)j(5*nproc)e(;)0 888 y(if)i(\()g(msglvl)e(>)i(2)g │ │ │ │ -(\))h({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(numeric)g │ │ │ │ -(factorization)d(after)k(post-processing)o("\);)131 1088 │ │ │ │ -y(FrontMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)37 │ │ │ │ -b(msgFile\))j(;)131 1187 y(fflush\(msgFile\))d(;)0 1287 │ │ │ │ -y(})0 1386 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(-*/)0 1486 y(/*)131 1586 y(----------------)o(--)o(--)o(---) │ │ │ │ -o(--)o(---)o(--)o(---)o(--)131 1685 y(STEP)42 b(10:)g(create)f(the)h │ │ │ │ -(solve)g(map)g(object)131 1785 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ -o(---)o(--)o(---)o(--)0 1885 y(*/)0 1984 y(solvemap)e(=)j │ │ │ │ -(SolveMap_new\(\))38 b(;)0 2084 y(SolveMap_ddMap\(s)o(olv)o(em)o(ap)o │ │ │ │ -(,)g(symmetryflag,)654 2183 y(FrontMtx_upperBl)o(oc)o(kIV)o(L\()o(fr)o │ │ │ │ -(ont)o(mt)o(x\),)654 2283 y(FrontMtx_lowerBl)o(oc)o(kIV)o(L\()o(fr)o │ │ │ │ -(ont)o(mt)o(x\),)654 2383 y(nproc,)j(ownersIV,)f(FrontMtx_frontTr)o(ee) │ │ │ │ -o(\(f)o(ron)o(tm)o(tx\))o(,)654 2482 y(seed,)h(msglvl,)g(msgFile\);)0 │ │ │ │ -2582 y(if)i(\()g(msglvl)e(>)i(3)g(\))h({)131 2682 y(SolveMap_writeFo)o │ │ │ │ -(rH)o(um)o(anE)o(ye)o(\(so)o(lv)o(ema)o(p,)37 b(msgFile\))j(;)131 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)131 390 y Fo(----------------)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(-)0 490 y(*/)0 589 y(FrontMtx_MPI_pos)o(tPr)o(oc)o(es)o(s\(f)o(ro)o │ │ │ │ +(ntm)o(tx)o(,)38 b(ownersIV,)h(stats,)i(msglvl,)1090 │ │ │ │ +689 y(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))d(;)0 789 │ │ │ │ +y(firsttag)j(+=)j(5*nproc)e(;)0 888 y(if)i(\()g(msglvl)e(>)i(2)g(\))h │ │ │ │ +({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(numeric)g(factorization)d │ │ │ │ +(after)k(post-processing)o("\);)131 1088 y(FrontMtx_writeFo)o(rH)o(um)o │ │ │ │ +(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)37 b(msgFile\))j(;)131 │ │ │ │ +1187 y(fflush\(msgFile\))d(;)0 1287 y(})0 1386 y(/*--------------)o │ │ │ │ +(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ +1486 y(/*)131 1586 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)131 1685 y(STEP)42 b(10:)g(create)f(the)h(solve)g(map)g │ │ │ │ +(object)131 1785 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)0 1885 y(*/)0 1984 y(solvemap)e(=)j(SolveMap_new\(\))38 │ │ │ │ +b(;)0 2084 y(SolveMap_ddMap\(s)o(olv)o(em)o(ap)o(,)g(symmetryflag,)654 │ │ │ │ +2183 y(FrontMtx_upperBl)o(oc)o(kIV)o(L\()o(fr)o(ont)o(mt)o(x\),)654 │ │ │ │ +2283 y(FrontMtx_lowerBl)o(oc)o(kIV)o(L\()o(fr)o(ont)o(mt)o(x\),)654 │ │ │ │ +2383 y(nproc,)j(ownersIV,)f(FrontMtx_frontTr)o(ee)o(\(f)o(ron)o(tm)o │ │ │ │ +(tx\))o(,)654 2482 y(seed,)h(msglvl,)g(msgFile\);)0 2582 │ │ │ │ +y(if)i(\()g(msglvl)e(>)i(3)g(\))h({)131 2682 y(SolveMap_writeFo)o(rH)o │ │ │ │ +(um)o(anE)o(ye)o(\(so)o(lv)o(ema)o(p,)37 b(msgFile\))j(;)131 │ │ │ │ 2781 y(fflush\(msgFile\))d(;)0 2881 y(})0 2980 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 3080 y(/*)131 3180 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)131 3279 │ │ │ │ y(STEP)42 b(11:)g(redistribute)d(the)j(submatrices)d(of)k(the)f │ │ │ │ (factors)131 3379 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -11455,22 +11440,21 @@ │ │ │ │ b(\))43 b({)131 4973 y(IV)130 b(*rowmapIV)40 b(;)0 5073 │ │ │ │ y(/*)131 5172 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(-)131 │ │ │ │ 5272 y(pivoting)g(has)i(taken)g(place,)f(redistribute)e(the)j(right)f │ │ │ │ (hand)h(side)131 5372 y(to)h(match)e(the)h(final)g(rows)g(and)g │ │ │ │ (columns)f(in)i(the)f(fronts)p eop end │ │ │ │ %%Page: 47 47 │ │ │ │ -TeXDict begin 47 46 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(47)131 │ │ │ │ -390 y Fo(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(-)0 │ │ │ │ -490 y(*/)131 589 y(rowmapIV)40 b(=)j(FrontMtx_MPI_rowm)o(ap)o(IV\()o │ │ │ │ -(fr)o(on)o(tmt)o(x,)37 b(ownersIV,)j(msglvl,)1569 689 │ │ │ │ -y(msgFile,)g(MPI_COMM_WORLD\))e(;)131 789 y(newY)k(=)h │ │ │ │ +TeXDict begin 47 46 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(47)131 390 y Fo(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ +(--)o(---)o(-)0 490 y(*/)131 589 y(rowmapIV)40 b(=)j(FrontMtx_MPI_rowm) │ │ │ │ +o(ap)o(IV\()o(fr)o(on)o(tmt)o(x,)37 b(ownersIV,)j(msglvl,)1569 │ │ │ │ +689 y(msgFile,)g(MPI_COMM_WORLD\))e(;)131 789 y(newY)k(=)h │ │ │ │ (DenseMtx_MPI_spl)o(it)o(ByR)o(ow)o(s\(m)o(tx)o(Y,)37 │ │ │ │ b(rowmapIV,)j(stats,)h(msglvl,)1526 888 y(msgFile,)f(firsttag,)g │ │ │ │ (MPI_COMM_WORLD\))d(;)131 988 y(DenseMtx_free\(mt)o(xY)o(\))g(;)131 │ │ │ │ 1088 y(mtxY)42 b(=)h(newY)f(;)131 1187 y(IV_free\(rowmapIV)o(\))37 │ │ │ │ b(;)0 1287 y(})0 1386 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)131 │ │ │ │ 1486 y(fprintf\(msgFile,)37 b("\\n\\n)k(rhs)i(matrix)e(after)g │ │ │ │ (split"\))g(;)131 1586 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o │ │ │ │ @@ -11515,15 +11499,15 @@ │ │ │ │ (ordering)523 5272 y(and)i(assemble)f(the)h(solution)e(onto)i │ │ │ │ (processor)e(zero)131 5372 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)p │ │ │ │ eop end │ │ │ │ %%Page: 48 48 │ │ │ │ TeXDict begin 48 47 bop 0 100 a Ft(48)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(*/)0 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(*/)0 │ │ │ │ 490 y(DenseMtx_permute)o(Row)o(s\()o(mt)o(xX,)37 b(newToOldIV\))i(;)0 │ │ │ │ 589 y(if)k(\()g(msglvl)e(>)i(2)g(\))h({)131 689 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(solution)g(in)h(old)h(ordering"\))c(;)131 │ │ │ │ 789 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xX)o(,)f │ │ │ │ (msgFile\))i(;)131 888 y(fflush\(msgFile\))d(;)0 988 │ │ │ │ y(})0 1088 y(IV_fill\(vtxmapIV)o(,)h(0\))k(;)0 1187 y(firsttag++)d(;)0 │ │ │ │ 1287 y(mtxX)j(=)h(DenseMtx_MPI_spl)o(itB)o(yR)o(ows)o(\(m)o(txX)o(,)37 │ │ │ │ @@ -11536,29 +11520,29 @@ │ │ │ │ y(})0 1984 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)0 2084 y(MPI_Finalize\(\))h(;)0 2283 y(return\(1\))i(;)j │ │ │ │ (})0 2383 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)p eop end │ │ │ │ %%Page: 49 49 │ │ │ │ -TeXDict begin 49 48 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(49)0 │ │ │ │ -390 y Fq(D)135 b Fa(allInOne.c)40 b Fq({)45 b(A)f(Serial)i │ │ │ │ -Fi(QR)g Fq(Driv)l(er)f(Program)0 625 y Fo(/*)86 b(QRallInOne.c)d(*/)0 │ │ │ │ -824 y(#include)40 b("../../misc.h")0 924 y(#include)g │ │ │ │ -("../../FrontMtx.h)o(")0 1024 y(#include)g("../../SymbFac.h")0 │ │ │ │ -1223 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(-*/)0 1322 y(int)0 1422 y(main)i(\()h(int)f(argc,)g(char)g │ │ │ │ -(*argv[])f(\))i({)0 1522 y(/*)131 1621 y(----------------)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(-)131 │ │ │ │ -1721 y(QR)g(all-in-one)c(program)131 1821 y(\(1\))j(read)g(in)h(matrix) │ │ │ │ -e(entries)g(and)h(form)g(InpMtx)f(object)305 1920 y(of)i(A)g(and)f │ │ │ │ -(A^TA)131 2020 y(\(2\))g(form)g(Graph)g(object)f(of)h(A^TA)131 │ │ │ │ +TeXDict begin 49 48 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(49)0 390 y Fq(D)135 b Fa(allInOne.c)40 │ │ │ │ +b Fq({)45 b(A)f(Serial)i Fi(QR)g Fq(Driv)l(er)f(Program)0 │ │ │ │ +625 y Fo(/*)86 b(QRallInOne.c)d(*/)0 824 y(#include)40 │ │ │ │ +b("../../misc.h")0 924 y(#include)g("../../FrontMtx.h)o(")0 │ │ │ │ +1024 y(#include)g("../../SymbFac.h")0 1223 y(/*--------------)o(---)o │ │ │ │ +(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1322 │ │ │ │ +y(int)0 1422 y(main)i(\()h(int)f(argc,)g(char)g(*argv[])f(\))i({)0 │ │ │ │ +1522 y(/*)131 1621 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(-)131 1721 │ │ │ │ +y(QR)g(all-in-one)c(program)131 1821 y(\(1\))j(read)g(in)h(matrix)e │ │ │ │ +(entries)g(and)h(form)g(InpMtx)f(object)305 1920 y(of)i(A)g(and)f(A^TA) │ │ │ │ +131 2020 y(\(2\))g(form)g(Graph)g(object)f(of)h(A^TA)131 │ │ │ │ 2120 y(\(3\))g(order)g(matrix)f(and)h(form)g(front)g(tree)131 │ │ │ │ 2219 y(\(4\))g(get)g(the)h(permutation,)38 b(permute)j(the)h(matrix)g │ │ │ │ (and)305 2319 y(front)g(tree)g(and)g(get)g(the)h(symbolic)d │ │ │ │ (factorization)131 2418 y(\(5\))i(compute)f(the)h(numeric)f │ │ │ │ (factorization)131 2518 y(\(6\))h(read)g(in)h(right)e(hand)h(side)g │ │ │ │ (entries)131 2618 y(\(7\))g(compute)f(the)h(solution)131 │ │ │ │ 2817 y(created)e(--)j(98jun11,)d(cca)131 2917 y(----------------)o(--)o │ │ │ │ @@ -11583,38 +11567,37 @@ │ │ │ │ (-*/)0 4809 y(/*)131 4909 y(----------------)o(--)o(--)131 │ │ │ │ 5009 y(get)j(input)g(parameters)131 5108 y(----------------)o(--)o(--)0 │ │ │ │ 5208 y(*/)0 5308 y(if)h(\()g(argc)f(!=)h(7)g(\))g({)131 │ │ │ │ 5407 y(fprintf\(stdout,)p eop end │ │ │ │ %%Page: 50 50 │ │ │ │ TeXDict begin 50 49 bop 0 100 a Ft(50)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)262 390 y │ │ │ │ -Fo("\\n)42 b(usage:)f(\045s)i(msglvl)e(msgFile)g(type)g(matrixFileName) │ │ │ │ -d(rhsFileName)h(seed")262 490 y("\\n)173 b(msglvl)41 │ │ │ │ -b(--)h(message)f(level")262 589 y("\\n)173 b(msgFile)40 │ │ │ │ -b(--)j(message)e(file")262 689 y("\\n)173 b(type)f(--)43 │ │ │ │ -b(type)f(of)h(entries")262 789 y("\\n)260 b(1)43 b(\(SPOOLES_REAL\))169 │ │ │ │ -b(--)42 b(real)g(entries")262 888 y("\\n)260 b(2)43 b │ │ │ │ -(\(SPOOLES_COMPLEX)o(\))38 b(--)k(complex)f(entries")262 │ │ │ │ -988 y("\\n)173 b(matrixFileName)37 b(--)43 b(matrix)e(file)h(name,)g │ │ │ │ -(format")262 1088 y("\\n)303 b(nrow)42 b(ncol)g(nent")262 │ │ │ │ -1187 y("\\n)303 b(irow)42 b(jcol)g(entry")262 1287 y("\\n)347 │ │ │ │ -b(...")262 1386 y("\\n)g(note:)41 b(indices)g(are)i(zero)e(based")262 │ │ │ │ -1486 y("\\n)173 b(rhsFileName)39 b(--)j(right)g(hand)g(side)g(file)g │ │ │ │ -(name,)f(format")262 1586 y("\\n)303 b(nrow)42 b(")262 │ │ │ │ -1685 y("\\n)303 b(entry[0]")262 1785 y("\\n)g(...")262 │ │ │ │ -1885 y("\\n)g(entry[nrow-1]")262 1984 y("\\n)173 b(seed)42 │ │ │ │ -b(--)g(random)f(number)h(seed,)f(used)h(for)g(ordering")262 │ │ │ │ -2084 y("\\n",)f(argv[0]\))f(;)131 2183 y(return\(0\))g(;)0 │ │ │ │ -2283 y(})0 2383 y(msglvl)h(=)i(atoi\(argv[1]\))38 b(;)0 │ │ │ │ -2482 y(if)43 b(\()g(strcmp\(argv[2],)37 b("stdout"\))j(==)j(0)g(\))g({) │ │ │ │ -131 2582 y(msgFile)d(=)k(stdout)d(;)0 2682 y(})i(else)f(if)h(\()g │ │ │ │ -(\(msgFile)d(=)j(fopen\(argv[2],)38 b("a"\)\))k(==)h(NULL)e(\))j({)131 │ │ │ │ -2781 y(fprintf\(stderr,)37 b("\\n)42 b(fatal)g(error)g(in)g(\045s")479 │ │ │ │ -2881 y("\\n)h(unable)e(to)i(open)f(file)g(\045s\\n",)479 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)262 390 y Fo("\\n)42 │ │ │ │ +b(usage:)f(\045s)i(msglvl)e(msgFile)g(type)g(matrixFileName)d │ │ │ │ +(rhsFileName)h(seed")262 490 y("\\n)173 b(msglvl)41 b(--)h(message)f │ │ │ │ +(level")262 589 y("\\n)173 b(msgFile)40 b(--)j(message)e(file")262 │ │ │ │ +689 y("\\n)173 b(type)f(--)43 b(type)f(of)h(entries")262 │ │ │ │ +789 y("\\n)260 b(1)43 b(\(SPOOLES_REAL\))169 b(--)42 │ │ │ │ +b(real)g(entries")262 888 y("\\n)260 b(2)43 b(\(SPOOLES_COMPLEX)o(\))38 │ │ │ │ +b(--)k(complex)f(entries")262 988 y("\\n)173 b(matrixFileName)37 │ │ │ │ +b(--)43 b(matrix)e(file)h(name,)g(format")262 1088 y("\\n)303 │ │ │ │ +b(nrow)42 b(ncol)g(nent")262 1187 y("\\n)303 b(irow)42 │ │ │ │ +b(jcol)g(entry")262 1287 y("\\n)347 b(...")262 1386 y("\\n)g(note:)41 │ │ │ │ +b(indices)g(are)i(zero)e(based")262 1486 y("\\n)173 b(rhsFileName)39 │ │ │ │ +b(--)j(right)g(hand)g(side)g(file)g(name,)f(format")262 │ │ │ │ +1586 y("\\n)303 b(nrow)42 b(")262 1685 y("\\n)303 b(entry[0]")262 │ │ │ │ +1785 y("\\n)g(...")262 1885 y("\\n)g(entry[nrow-1]")262 │ │ │ │ +1984 y("\\n)173 b(seed)42 b(--)g(random)f(number)h(seed,)f(used)h(for)g │ │ │ │ +(ordering")262 2084 y("\\n",)f(argv[0]\))f(;)131 2183 │ │ │ │ +y(return\(0\))g(;)0 2283 y(})0 2383 y(msglvl)h(=)i(atoi\(argv[1]\))38 │ │ │ │ +b(;)0 2482 y(if)43 b(\()g(strcmp\(argv[2],)37 b("stdout"\))j(==)j(0)g │ │ │ │ +(\))g({)131 2582 y(msgFile)d(=)k(stdout)d(;)0 2682 y(})i(else)f(if)h │ │ │ │ +(\()g(\(msgFile)d(=)j(fopen\(argv[2],)38 b("a"\)\))k(==)h(NULL)e(\))j │ │ │ │ +({)131 2781 y(fprintf\(stderr,)37 b("\\n)42 b(fatal)g(error)g(in)g │ │ │ │ +(\045s")479 2881 y("\\n)h(unable)e(to)i(open)f(file)g(\045s\\n",)479 │ │ │ │ 2980 y(argv[0],)f(argv[2]\))f(;)131 3080 y(return\(-1\))f(;)0 │ │ │ │ 3180 y(})0 3279 y(type)478 b(=)43 b(atoi\(argv[3]\))38 │ │ │ │ b(;)0 3379 y(matrixFileName)g(=)43 b(argv[4])e(;)0 3479 │ │ │ │ y(rhsFileName)170 b(=)43 b(argv[5])e(;)0 3578 y(seed)478 │ │ │ │ b(=)43 b(atoi\(argv[6]\))38 b(;)0 3678 y(/*--------------)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 3778 y(/*)131 │ │ │ │ @@ -11632,34 +11615,33 @@ │ │ │ │ (ient++)e(\))i({)262 4973 y(fscanf\(inputFil)o(e,)37 │ │ │ │ b("\045d)42 b(\045d)h(\045le",)f(&irow,)f(&jcol,)g(&value\))g(;)262 │ │ │ │ 5073 y(InpMtx_inputRea)o(lE)o(ntr)o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h │ │ │ │ (value\))f(;)131 5172 y(})0 5272 y(})i(else)f({)131 5372 │ │ │ │ y(for)g(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\))i({)p │ │ │ │ eop end │ │ │ │ %%Page: 51 51 │ │ │ │ -TeXDict begin 51 50 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(51)262 │ │ │ │ -390 y Fo(fscanf\(inputFil)o(e,)37 b("\045d)42 b(\045d)h(\045le)g │ │ │ │ -(\045le",)e(&irow,)g(&jcol,)g(&real,)g(&imag\))g(;)262 │ │ │ │ -490 y(InpMtx_inputCom)o(pl)o(exE)o(nt)o(ry\()o(mt)o(xA,)c(irow,)k │ │ │ │ -(jcol,)h(real,)f(imag\))h(;)131 589 y(})0 689 y(})0 789 │ │ │ │ -y(fclose\(inputFile)o(\))c(;)0 888 y(if)43 b(\()g(msglvl)e(>)i(1)g(\))h │ │ │ │ -({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(input)h(matrix"\))e(;)131 │ │ │ │ -1088 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(m)o(txA)o(,)d(msgFile\))k │ │ │ │ -(;)131 1187 y(fflush\(msgFile\))c(;)0 1287 y(})0 1386 │ │ │ │ -y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(-*/)0 1486 y(/*)131 1586 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(--)o(---)131 1685 y(STEP)42 b(2:)g(read)g(the)h │ │ │ │ -(right)e(hand)h(side)g(entries)131 1785 y(----------------)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)0 1885 y(*/)0 │ │ │ │ -1984 y(inputFile)e(=)j(fopen\(rhsFileNam)o(e,)37 b("r"\))42 │ │ │ │ -b(;)0 2084 y(fscanf\(inputFile)o(,)c("\045d)k(\045d",)g(&nrow,)f │ │ │ │ -(&nrhs\))g(;)0 2183 y(mtxB)h(=)h(DenseMtx_new\(\))38 │ │ │ │ +TeXDict begin 51 50 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(51)262 390 y Fo(fscanf\(inputFil)o(e,)37 │ │ │ │ +b("\045d)42 b(\045d)h(\045le)g(\045le",)e(&irow,)g(&jcol,)g(&real,)g │ │ │ │ +(&imag\))g(;)262 490 y(InpMtx_inputCom)o(pl)o(exE)o(nt)o(ry\()o(mt)o │ │ │ │ +(xA,)c(irow,)k(jcol,)h(real,)f(imag\))h(;)131 589 y(})0 │ │ │ │ +689 y(})0 789 y(fclose\(inputFile)o(\))c(;)0 888 y(if)43 │ │ │ │ +b(\()g(msglvl)e(>)i(1)g(\))h({)131 988 y(fprintf\(msgFile,)37 │ │ │ │ +b("\\n\\n)k(input)h(matrix"\))e(;)131 1088 y(InpMtx_writeForH)o(um)o │ │ │ │ +(an)o(Eye)o(\(m)o(txA)o(,)d(msgFile\))k(;)131 1187 y(fflush\(msgFile\)) │ │ │ │ +c(;)0 1287 y(})0 1386 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(--)o(-*/)0 1486 y(/*)131 1586 y(----------------)o(--) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)131 │ │ │ │ +1685 y(STEP)42 b(2:)g(read)g(the)h(right)e(hand)h(side)g(entries)131 │ │ │ │ +1785 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)0 1885 y(*/)0 1984 y(inputFile)e(=)j(fopen\(rhsFileNam)o(e,) │ │ │ │ +37 b("r"\))42 b(;)0 2084 y(fscanf\(inputFile)o(,)c("\045d)k(\045d",)g │ │ │ │ +(&nrow,)f(&nrhs\))g(;)0 2183 y(mtxB)h(=)h(DenseMtx_new\(\))38 │ │ │ │ b(;)0 2283 y(DenseMtx_init\(mt)o(xB,)f(type,)k(0,)i(0,)g(nrow,)e(nrhs,) │ │ │ │ h(1,)h(nrow\))e(;)0 2383 y(DenseMtx_zero\(mt)o(xB\))c(;)0 │ │ │ │ 2482 y(if)43 b(\()g(type)f(==)h(SPOOLES_REAL)38 b(\))43 │ │ │ │ b({)131 2582 y(for)f(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h │ │ │ │ (irow++)e(\))i({)262 2682 y(fscanf\(inputFil)o(e,)37 │ │ │ │ b("\045d",)42 b(&jrow\))f(;)262 2781 y(for)h(\()h(jrhs)f(=)h(0)g(;)g │ │ │ │ (jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i({)392 2881 y(fscanf\(inputFile,)37 │ │ │ │ @@ -11685,15 +11667,15 @@ │ │ │ │ 5172 y(\(1\))i(create)f(the)i(Graph)e(object)g(for)i(A^TA)e(or)i(A^HA) │ │ │ │ 131 5272 y(\(2\))f(order)g(the)g(graph)f(using)h(multiple)e(minimum)h │ │ │ │ (degree)131 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)p eop end │ │ │ │ %%Page: 52 52 │ │ │ │ TeXDict begin 52 51 bop 0 100 a Ft(52)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(*/)0 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(*/)0 │ │ │ │ 490 y(graph)42 b(=)h(Graph_new\(\))c(;)0 589 y(adjIVL)i(=)i │ │ │ │ (InpMtx_adjForATA\()o(mt)o(xA\))37 b(;)0 689 y(nedges)k(=)i │ │ │ │ (IVL_tsize\(adjIVL\))37 b(;)0 789 y(Graph_init2\(grap)o(h,)g(0,)43 │ │ │ │ b(neqns,)e(0,)i(nedges,)d(neqns,)i(nedges,)e(adjIVL,)523 │ │ │ │ 888 y(NULL,)i(NULL\))f(;)0 988 y(if)i(\()g(msglvl)e(>)i(1)g(\))h({)131 │ │ │ │ 1088 y(fprintf\(msgFile,)37 b("\\n\\n)k(graph)h(of)h(A^T)f(A"\))g(;)131 │ │ │ │ 1187 y(Graph_writeForHu)o(ma)o(nE)o(ye\()o(gr)o(aph)o(,)37 │ │ │ │ @@ -11739,36 +11721,36 @@ │ │ │ │ (--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 4973 y(/*)131 5073 y(----------------)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)131 │ │ │ │ 5172 y(STEP)42 b(5:)g(initialize)e(the)i(front)g(matrix)f(object)131 │ │ │ │ 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)0 5372 y(*/)p eop end │ │ │ │ %%Page: 53 53 │ │ │ │ -TeXDict begin 53 52 bop 0 100 a Fr(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1064 4 v 1228 w Fs(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(|)i(Solving)f(Linear)f(Systems)328 b Ft(53)0 │ │ │ │ -390 y Fo(frontmtx)40 b(=)j(FrontMtx_new\(\))38 b(;)0 │ │ │ │ -490 y(mtxmanager)h(=)44 b(SubMtxManager_n)o(ew\()o(\))37 │ │ │ │ -b(;)0 589 y(SubMtxManager_in)o(it\()o(mt)o(xm)o(ana)o(ge)o(r,)g │ │ │ │ -(NO_LOCK,)j(0\))j(;)0 689 y(if)g(\()g(type)f(==)h(SPOOLES_REAL)38 │ │ │ │ -b(\))43 b({)131 789 y(FrontMtx_init\(fr)o(on)o(tm)o(tx,)37 │ │ │ │ -b(frontETree,)i(symbfacIVL,)g(type,)741 888 y(SPOOLES_SYMMETRI)o(C,)e │ │ │ │ -(FRONTMTX_DENSE_F)o(RON)o(TS)o(,)741 988 y(SPOOLES_NO_PIVOT)o(ING)o(,)g │ │ │ │ -(NO_LOCK,)k(0,)h(NULL,)741 1088 y(mtxmanager,)d(msglvl,)i(msgFile\))f │ │ │ │ -(;)0 1187 y(})j(else)f({)131 1287 y(FrontMtx_init\(fr)o(on)o(tm)o(tx,) │ │ │ │ -37 b(frontETree,)i(symbfacIVL,)g(type,)741 1386 y(SPOOLES_HERMITIA)o │ │ │ │ -(N,)e(FRONTMTX_DENSE_F)o(RON)o(TS)o(,)741 1486 y(SPOOLES_NO_PIVOT)o │ │ │ │ -(ING)o(,)g(NO_LOCK,)k(0,)h(NULL,)741 1586 y(mtxmanager,)d(msglvl,)i │ │ │ │ -(msgFile\))f(;)0 1685 y(})0 1785 y(/*--------------)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1885 y(/*)131 │ │ │ │ -1984 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ -(--)o(---)o(-)131 2084 y(STEP)i(6:)g(compute)f(the)h(numeric)f │ │ │ │ -(factorization)131 2183 y(----------------)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(--)o(---)o(-)0 2283 y(*/)0 2383 y(chvmanager)e(=)44 │ │ │ │ +TeXDict begin 53 52 bop 0 100 a Fr(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1130 4 v 1293 w Fs(SPOOLES)32 b(2.2)26 b Fr(|)i(Solving)f │ │ │ │ +(Linear)f(Systems)328 b Ft(53)0 390 y Fo(frontmtx)40 │ │ │ │ +b(=)j(FrontMtx_new\(\))38 b(;)0 490 y(mtxmanager)h(=)44 │ │ │ │ +b(SubMtxManager_n)o(ew\()o(\))37 b(;)0 589 y(SubMtxManager_in)o(it\()o │ │ │ │ +(mt)o(xm)o(ana)o(ge)o(r,)g(NO_LOCK,)j(0\))j(;)0 689 y(if)g(\()g(type)f │ │ │ │ +(==)h(SPOOLES_REAL)38 b(\))43 b({)131 789 y(FrontMtx_init\(fr)o(on)o │ │ │ │ +(tm)o(tx,)37 b(frontETree,)i(symbfacIVL,)g(type,)741 │ │ │ │ +888 y(SPOOLES_SYMMETRI)o(C,)e(FRONTMTX_DENSE_F)o(RON)o(TS)o(,)741 │ │ │ │ +988 y(SPOOLES_NO_PIVOT)o(ING)o(,)g(NO_LOCK,)k(0,)h(NULL,)741 │ │ │ │ +1088 y(mtxmanager,)d(msglvl,)i(msgFile\))f(;)0 1187 y(})j(else)f({)131 │ │ │ │ +1287 y(FrontMtx_init\(fr)o(on)o(tm)o(tx,)37 b(frontETree,)i │ │ │ │ +(symbfacIVL,)g(type,)741 1386 y(SPOOLES_HERMITIA)o(N,)e │ │ │ │ +(FRONTMTX_DENSE_F)o(RON)o(TS)o(,)741 1486 y(SPOOLES_NO_PIVOT)o(ING)o(,) │ │ │ │ +g(NO_LOCK,)k(0,)h(NULL,)741 1586 y(mtxmanager,)d(msglvl,)i(msgFile\))f │ │ │ │ +(;)0 1685 y(})0 1785 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(--)o(-*/)0 1885 y(/*)131 1984 y(----------------)o(--) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(-)131 │ │ │ │ +2084 y(STEP)i(6:)g(compute)f(the)h(numeric)f(factorization)131 │ │ │ │ +2183 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)o(-)0 2283 y(*/)0 2383 y(chvmanager)e(=)44 │ │ │ │ b(ChvManager_new\()o(\))38 b(;)0 2482 y(ChvManager_init\()o(chv)o(ma)o │ │ │ │ (na)o(ger)o(,)f(NO_LOCK,)k(1\))h(;)0 2582 y(DVzero\(10,)d(cpus\))j(;)0 │ │ │ │ 2682 y(facops)f(=)i(0.0)g(;)0 2781 y(FrontMtx_QR_fact)o(or\()o(fr)o(on) │ │ │ │ o(tmt)o(x,)37 b(mtxA,)42 b(chvmanager,)828 2881 y(cpus,)g(&facops,)e │ │ │ │ (msglvl,)h(msgFile\))f(;)0 2980 y(ChvManager_free\()o(chv)o(ma)o(na)o │ │ │ │ (ger)o(\))d(;)0 3080 y(if)43 b(\()g(msglvl)e(>)i(1)g(\))h({)131 │ │ │ │ 3180 y(fprintf\(msgFile,)37 b("\\n\\n)k(factor)g(matrix"\))g(;)131 │ │ │ │ @@ -11792,15 +11774,15 @@ │ │ │ │ y(/*)131 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(-) │ │ │ │ 131 5172 y(STEP)42 b(8:)g(solve)g(the)g(linear)f(system)131 │ │ │ │ 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(-)0 │ │ │ │ 5372 y(*/)p eop end │ │ │ │ %%Page: 54 54 │ │ │ │ TeXDict begin 54 53 bop 0 100 a Ft(54)327 b Fs(SPOOLES)31 │ │ │ │ b(2.2)c Fr(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1036 4 v 1230 w(Decem)n(b)r(er)h(20,)g(2018)0 390 y Fo(mtxX)42 │ │ │ │ +1102 4 v 1295 w(Octob)r(er)h(11,)g(2021)0 390 y Fo(mtxX)42 │ │ │ │ b(=)h(DenseMtx_new\(\))38 b(;)0 490 y(DenseMtx_init\(mt)o(xX,)f(type,)k │ │ │ │ (0,)i(0,)g(neqns,)e(nrhs,)g(1,)i(neqns\))e(;)0 589 y(FrontMtx_QR_solv)o │ │ │ │ (e\(f)o(ro)o(nt)o(mtx)o(,)c(mtxA,)42 b(mtxX,)f(mtxB,)h(mtxmanager,)785 │ │ │ │ 689 y(cpus,)f(msglvl,)g(msgFile\))f(;)0 789 y(if)j(\()g(msglvl)e(>)i(1) │ │ │ │ g(\))h({)131 888 y(fprintf\(msgFile,)37 b("\\n\\n)k(solution)g(matrix)g │ │ │ │ (in)h(new)h(ordering"\))c(;)131 988 y(DenseMtx_writeFo)o(rH)o(um)o(anE) │ │ │ │ o(ye)o(\(mt)o(xX)o(,)f(msgFile\))i(;)131 1088 y(fflush\(msgFile\))d(;)0 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,16 +1,16 @@ │ │ │ │ │ Solving Linear Systems using SPOOLES 2.2 │ │ │ │ │ C. C. Ashcraft, R. G. Grimes, D. J. Pierce, D. K. Wah │ │ │ │ │ Boeing Phantom Works∗ │ │ │ │ │ - December 20, 2018 │ │ │ │ │ + October 11, 2021 │ │ │ │ │ ∗P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124. This research was supported in part by the DARPA │ │ │ │ │ Contract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ Support Initiative. │ │ │ │ │ 1 │ │ │ │ │ - 2 SPOOLES 2.2 — Solving Linear Systems December 20, 2018 │ │ │ │ │ + 2 SPOOLES 2.2 — Solving Linear Systems October 11, 2021 │ │ │ │ │ Contents │ │ │ │ │ 1 Overview 4 │ │ │ │ │ 2 Serial Solution of AX = Y using an LU factorization 6 │ │ │ │ │ 2.1 Reading the input parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 │ │ │ │ │ 2.2 Communicating the data for the problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 │ │ │ │ │ 2.3 Reordering the linear system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 │ │ │ │ │ 2.4 Non-numeric work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 │ │ │ │ │ @@ -39,18 +39,18 @@ │ │ │ │ │ 5.3 Reordering the linear system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 │ │ │ │ │ 5.4 Non-numeric work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 │ │ │ │ │ 5.5 The Matrix Factorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 │ │ │ │ │ 5.6 Solving the linear system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 │ │ │ │ │ 5.7 Sample Matrix and Right Hand Side Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 │ │ │ │ │ A allInOne.c – A Serial LU Driver Program 24 │ │ │ │ │ B allInOne.c – A Serial LU Driver Program 31 │ │ │ │ │ - December 20, 2018 SPOOLES 2.2 — Solving Linear Systems 3 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2 — Solving Linear Systems 3 │ │ │ │ │ C allInOne.c – A Serial LU Driver Program 39 │ │ │ │ │ D allInOne.c – A Serial QR Driver Program 49 │ │ │ │ │ - 4 SPOOLES 2.2 — Solving Linear Systems December 20, 2018 │ │ │ │ │ + 4 SPOOLES 2.2 — Solving Linear Systems October 11, 2021 │ │ │ │ │ 1 Overview │ │ │ │ │ The SPOOLES software library is designed to solve sparse systems of linear equations AX = Y for X, │ │ │ │ │ whereAisfullrankandX andY aredensematrices. ThematrixAcanbeeitherrealorcomplex,symmetric, │ │ │ │ │ Hermitian, square nonsymmetric, or overdetermined. When A is square, there are four steps in the process │ │ │ │ │ of solving AX = Y. │ │ │ │ │ • communicate the data for the problem as A, X and Y. │ │ │ │ │ ee e e T e e │ │ │ │ │ @@ -94,26 +94,26 @@ │ │ │ │ │ The SPOOLES library is based on an object oriented design philosophy. There are several data struc- │ │ │ │ │ tures or objects that the user must interact with. These interactions are performed with a set of methods │ │ │ │ │ for each object. Every object has some standard methods, such as initializing the object, placing data into │ │ │ │ │ the object, extracting data out of the object, writing and reading the object to a input/output file, printing │ │ │ │ │ the contents of the object to a specified file, and freeing the object. │ │ │ │ │ For example, consider the DenseMtx object that models a dense matrix. The DenseMtx/DenseMtx.h │ │ │ │ │ header file defines the object’s C struct and has prototypes (with extensive comments) of the object’s │ │ │ │ │ - December 20, 2018 SPOOLES 2.2 — Solving Linear Systems 5 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2 — Solving Linear Systems 5 │ │ │ │ │ A │ │ │ │ │ methods. Thesourcefiles arefound in the DenseMtx/srcdirectory. The LT X documentation files are found │ │ │ │ │ E │ │ │ │ │ in the DenseMtx/docdirectory. The files can be used to create the DenseMtxobject’s chapter in the Reference │ │ │ │ │ Manual,orinastandalonemannertogeneratetheobject’sdocumentation. TheDenseMtx/driversdirectory │ │ │ │ │ contains driver programs that exercise and validate the object’s functionality. │ │ │ │ │ Almost all the methods in the library are associated with a particular object. There are some exceptions, │ │ │ │ │ mostly found in the misc/src directory. The misc/drivers directory contains the serial LU and QR driver │ │ │ │ │ programs. The MT/drivers and MPI/drivers directories contain the multithreaded and MPI LU driver │ │ │ │ │ programs. │ │ │ │ │ - 6 SPOOLES 2.2 — Solving Linear Systems December 20, 2018 │ │ │ │ │ + 6 SPOOLES 2.2 — Solving Linear Systems October 11, 2021 │ │ │ │ │ 2 Serial Solution of AX = Y using an LU factorization │ │ │ │ │ The user has some representation of the data which represents the linear system, AX = Y . The user wants │ │ │ │ │ the solution X. The SPOOLES library will use A and Y and provide X back to the user. │ │ │ │ │ The SPOOLESlibrary is based on an object oriented design philosophy. The first object that the user │ │ │ │ │ mustinteract with is InpMtx1. The InpMtx object is where the SPOOLES representation of A is assembled. │ │ │ │ │ The user can input the representation of A into the InpMtx object with methods for single matrix entry │ │ │ │ │ (consisting of the row index, the column index, and the value), for an array of entries, for a set of entries in │ │ │ │ │ @@ -145,15 +145,15 @@ │ │ │ │ │ nrhs floating point numbers if the system is real, or 2*nrhs numbers if the system is complex. │ │ │ │ │ • The seed parameter is a random number seed used in the ordering process. │ │ │ │ │ 2.2 Communicating the data for the problem │ │ │ │ │ The following code segment from the full sample program opens the file matrixFileName, reads the first │ │ │ │ │ line of the file, and then initializes the InpMtx object. The program continues by reading each line of the │ │ │ │ │ input matrix data and uses either the method InpMtx inputRealEntry()or InpMtx inputComplexEntry() │ │ │ │ │ 1InpMtx stands for Input Matrix, for it is the object into which the user inputs the matrix entries. │ │ │ │ │ - December 20, 2018 SPOOLES 2.2 — Solving Linear Systems 7 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2 — Solving Linear Systems 7 │ │ │ │ │ to place that entry into the InpMtx object. Finally this code segment closes the file. finalizes the input to │ │ │ │ │ InpMtx by converting the internal storage of the matrix entries to a vector form. (This is necessary for later │ │ │ │ │ steps.) │ │ │ │ │ inputFile = fopen(matrixFileName, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d %d", &nrow, &ncol, &nent) ; │ │ │ │ │ neqns = nrow ; │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ @@ -192,15 +192,15 @@ │ │ │ │ │ • The fifth argument maxnvector is an estimate of the number of number of vectors that will be used, │ │ │ │ │ e.g., number of rows or numbers of columns. │ │ │ │ │ The maxnent and maxnvector arguments only have to be estimates as they are used in the initial sizing of │ │ │ │ │ the object. Either can be 0. The InpMtx object resizes itself as required to handle the linear system. │ │ │ │ │ 2Note that SPOOLES has some pre-defined parameters such as INPMTX BY ROWS for some objects. These parameters are │ │ │ │ │ always uppercase and either begin with the name of the object which they apply to, or the library name, e.g., SPOOLES REAL. │ │ │ │ │ They are described in the reference manual in the section for the particular object. │ │ │ │ │ - 8 SPOOLES 2.2 — Solving Linear Systems December 20, 2018 │ │ │ │ │ + 8 SPOOLES 2.2 — Solving Linear Systems October 11, 2021 │ │ │ │ │ Every object in SPOOLES has print methods to output the contents of that object. This is illustrated │ │ │ │ │ in this code segment by printing the input matrix as contained in the InpMtx object, mtxA. To shorten this │ │ │ │ │ chapter we will from now on omit the part of the code that prints debug output to msgFile for the various │ │ │ │ │ code segments. The complete sample program in Section A contains all of the debug print statements. │ │ │ │ │ After the matrix A has been read in from the file and placed in an InpMtx object, the right hand matrix │ │ │ │ │ Y is read in from a file and placed in a DenseMtx object. The following code fragment does this operation. │ │ │ │ │ inputFile = fopen(rhsFileName, "r") ; │ │ │ │ │ @@ -240,15 +240,15 @@ │ │ │ │ │ number of rows, or neqns. │ │ │ │ │ Theinitialization step allocates storage for the matrix entries, but it does not fill them with any values. This │ │ │ │ │ is done explicitly via the DenseMtx zero() method, which places zeroes in all the entries. This is necessary │ │ │ │ │ since the right hand side matrix Y may be sparse, and so the number of rows in the file may not equal the │ │ │ │ │ number of equations. │ │ │ │ │ The right hand side entries are then in, row by row, and placed into their locations via one of the two │ │ │ │ │ “set entries” methods. Note, the nonzero rows can be read from the file in any order. │ │ │ │ │ - December 20, 2018 SPOOLES 2.2 — Solving Linear Systems 9 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2 — Solving Linear Systems 9 │ │ │ │ │ 2.3 Reordering the linear system │ │ │ │ │ The first step is to find the permutation matrix P, and then permute AX = Y into (PAPT)(PX) = PY. │ │ │ │ │ The result of the SPOOLES ordering step is not just P or its permutation vector, it is a front tree that │ │ │ │ │ defines not just the permutation, but the blocking of the factor matrices, which in turn specifies the data │ │ │ │ │ structures and the computations that are performed during the factor and solves. To determine this ETree │ │ │ │ │ front tree object takes three step, as seen in the code fragment below. │ │ │ │ │ adjIVL = InpMtx_fullAdjacency(mtxA) ; │ │ │ │ │ @@ -287,15 +287,15 @@ │ │ │ │ │ InpMtx_changeCoordType(mtxA, INPMTX_BY_CHEVRONS) ; │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ DenseMtx_permuteRows(mtxB, oldToNewIV) ; │ │ │ │ │ The oldToNewIV and newToOldIV variables are IV objects that represent an integer vector. The oldToNew │ │ │ │ │ and newToOld variables are pointers to int, which point to the base address of the int vector in an IV │ │ │ │ │ object. │ │ │ │ │ 3IVL stands for Integer Vector List, i.e., a list of integer vectors. │ │ │ │ │ - 10 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 10 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ Once we have the permutation vector, we apply it to the front tree, by the ETree permuteVertices() │ │ │ │ │ method, and then to the matrix with the InpMtx permute() method. If the matrix A is symmetric or │ │ │ │ │ Hermitian, we expect all nonzero entries to be in the upper triangle. Permuting the matrix yields PAPT, │ │ │ │ │ which may not have all of its entries in the upper triangle. If A is symmetric or Hermitian, the call to │ │ │ │ │ InpMtx mapToUpperTriangle() ensures that all entries of PAPT are in its upper triangle. Permuting the │ │ │ │ │ matrix destroys the internal vector structure, which has to be restored. But first we need to change the │ │ │ │ │ 4 │ │ │ │ │ @@ -330,15 +330,15 @@ │ │ │ │ │ little internal code differences, and it is the hook we have left in the library to extend its capabilities │ │ │ │ │ to out-of-core factors and solves. │ │ │ │ │ • The twelveth and thirteenth parameters define the message level and message file for the factorization. │ │ │ │ │ The numeric factorization is performed by the FrontMtx factorInpMtx() method. The code segment │ │ │ │ │ from the sample program for the numerical factorization step is found below. │ │ │ │ │ 4The i-th chevron of A consists of the diagonal entry Ai,i, the i-th row of the upper triangle of A, and the i-th column of │ │ │ │ │ the lower triangle of A. │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 11 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 11 │ │ │ │ │ chvmanager = ChvManager_new() ; │ │ │ │ │ ChvManager_init(chvmanager, NO_LOCK, 1) ; │ │ │ │ │ DVfill(10, cpus, 0.0) ; │ │ │ │ │ IVfill(20, stats, 0) ; │ │ │ │ │ rootchv = FrontMtx_factorInpMtx(frontmtx, mtxA, tau, droptol, │ │ │ │ │ chvmanager, &error, cpus, stats, msglvl, msgFile) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ @@ -373,15 +373,15 @@ │ │ │ │ │ First we initialize a new DenseMtx object to hold X (and also PX). (Note, in all cases but a nonsymmetric │ │ │ │ │ matrix with pivoting enabled in an MPI environment, X may overwrite Y, and so we can use the same │ │ │ │ │ DenseMtx object for X and Y.) We then solve the linear system with a call to FrontMtx solve(). Note │ │ │ │ │ that one of the arguments is the mtxmanager object, first created for the numerical factorization. The solve │ │ │ │ │ requires working submatrices, and so we continue the convention of having the FrontMtx ask the manager │ │ │ │ │ object for working storage. The last step is to permute the rows of the DenseMtx from the new ordering into │ │ │ │ │ the old ordering. │ │ │ │ │ - 12 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 12 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ 2.7 Sample Matrix and Right Hand Side Files │ │ │ │ │ Immediately below are two sample files: matrix.input holds the matrix input and rhs.input holds the │ │ │ │ │ right hand side. This example is for a symmetric Laplacian operator on a 3×3 grid. Only entries in the upper │ │ │ │ │ triangle are stored. The right hand side is the 9×9 identity matrix. Note how the indices are zero-based as │ │ │ │ │ for C, instead of one-based as for Fortran. │ │ │ │ │ matrix.input │ │ │ │ │ 9 9 21 │ │ │ │ │ @@ -402,15 +402,15 @@ │ │ │ │ │ 7 8 -1.0 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 │ │ │ │ │ 0 3 -1.0 │ │ │ │ │ 1 4 -1.0 │ │ │ │ │ 2 5 -1.0 │ │ │ │ │ 3 6 -1.0 │ │ │ │ │ 4 7 -1.0 │ │ │ │ │ 5 8 -1.0 │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 13 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 13 │ │ │ │ │ 3 Multithreaded Solution of AX = Y using an LU factorization │ │ │ │ │ The only computations that are multithreaded are the factorization and forward and backsolves. Therefore, │ │ │ │ │ this section will describe only the differences between the serial driver in Section A and the multithreaded │ │ │ │ │ driver whose complete listing is found in Section B. This section will refer the reader to subsections in │ │ │ │ │ Section 2 for the parts of the code where the two drivers are identical. │ │ │ │ │ The shared memory parallel version of SPOOLES is implemented using thread based parallelism. The │ │ │ │ │ multi-threaded code uses much of the serial code — the basic steps are the same and use the serial methods. │ │ │ │ │ @@ -443,15 +443,15 @@ │ │ │ │ │ over a range of orderings, and this is what we recommend, as we see in the code fragment below. │ │ │ │ │ if ( nthread > (nfront = FrontMtx_nfront(frontmtx)) ) { │ │ │ │ │ nthread = nfront ; │ │ │ │ │ } │ │ │ │ │ cumopsDV = DV_new() ; │ │ │ │ │ DV_init(cumopsDV, nthread, NULL) ; │ │ │ │ │ ownersIV = ETree_ddMap(frontETree, type, symmetryflag, cumopsDV, 1./(2.*nthread)) ; │ │ │ │ │ - 14 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 14 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ The first step is to ensure that each thread has a front to own, decreasing the number of threads if necessary. │ │ │ │ │ We then construct the owners map using the front tree object. The cumopsDV object is a double precision │ │ │ │ │ vector object whose length is the number of threads. On return from the map call, it contains the number │ │ │ │ │ of factor operations that will be performed by each thread when pivoting for stability is not enabled. │ │ │ │ │ 3.5 The Matrix Factorization │ │ │ │ │ During the factorization and solves, the threads access data and modify the state of the FrontMtx and │ │ │ │ │ SubMtxManagerobjects in a concurrent fashion, so there must be some way to control this access for critical │ │ │ │ │ @@ -487,15 +487,15 @@ │ │ │ │ │ workcooperativelyto compute the factor matrices, there is idle time while one thread waits on another. │ │ │ │ │ The lookahead parameter controls the ability of the thread to look past the present idle point and │ │ │ │ │ performworkthatisnotsoimmediate. Unfortunately, whileathreadisoffdoingthiswork,itmayblock │ │ │ │ │ a thread at a more crucial point. When lookahead = 0, each processor tries to do only “immediate” │ │ │ │ │ work. Moderate speedups in the factorization have been for values of lookahead up to the number │ │ │ │ │ of threads. For nonzero lookahead values, the amount of working storage can increase, sometimes │ │ │ │ │ appreciably. │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 15 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 15 │ │ │ │ │ Thepost-processing of the factorization is exactly the same as the serial code. Note, this step can be trivially │ │ │ │ │ parallelized, but is not done at present. │ │ │ │ │ After the post-processing step, the FrontMtx object contains the L , D and U submatrices. What │ │ │ │ │ J,I I,I I,J │ │ │ │ │ remains to be done is to specify which threads own which submatrices, and thus perform computations with │ │ │ │ │ them. This is done by constructing a “solve–map” object, as we see below. │ │ │ │ │ solvemap = SolveMap_new() ; │ │ │ │ │ @@ -511,15 +511,15 @@ │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ FrontMtx_MT_solve(frontmtx, mtxX, mtxY, mtxmanager, solvemap, cpus, msglvl, msgFile) ; │ │ │ │ │ DenseMtx_permuteRows(mtxX, newToOldIV) ; │ │ │ │ │ The only difference between the serial and multithreaded solve methods is the presence of the solve–map │ │ │ │ │ object in the latter. │ │ │ │ │ 3.7 Sample Matrix and Right Hand Side Files │ │ │ │ │ The multithreaded driver uses the same input files as found in Section 2.7. │ │ │ │ │ - 16 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 16 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ 4 MPISolution of AX =Y using an LU factorization │ │ │ │ │ Unlike the serial and multithreaded environments where the data structures are global, existing under one │ │ │ │ │ address space, in the MPI environment, data is local, each process or processor has its own distinct address │ │ │ │ │ space. The MPI step-by-step process to solve a linear system is exactly the same as the multithreaded case, │ │ │ │ │ with the additional trouble that the data structures are distributed and need to be re-distributed as needed. │ │ │ │ │ The ownership of the factor matrices during the factorization and solves is exactly the same as for the │ │ │ │ │ multithreaded case – the map from fronts to processors and map from submatrices to processors are identical │ │ │ │ │ @@ -552,15 +552,15 @@ │ │ │ │ │ adjIVL = InpMtx_MPI_fullAdjacency(mtxA, stats, msglvl, msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ nedges = IVL_tsize(adjIVL) ; │ │ │ │ │ Graph_init2(graph, 0, neqns, 0, nedges, neqns, nedges, adjIVL, NULL, NULL) ; │ │ │ │ │ frontETree = orderViaMMD(graph, seed + myid, msglvl, msgFile) ; │ │ │ │ │ Whilethedataandcomputationsaredistributedacrosstheprocessors,the orderingprocessis not. Therefore │ │ │ │ │ we need a global graph on each processor. Since the matrix A is distributed across the processors, we use │ │ │ │ │ the distributed InpMtx MPI fullAdjacency() method to construct the IVL object of the graph of A+AT. │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 17 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 17 │ │ │ │ │ At this point, each processor has computed its own minimum degree ordering and created a front tree │ │ │ │ │ object. The orderings will likely be different, because each processors input a different random number seed │ │ │ │ │ to the ordering method. Only one ordering can be used for the factorization, so the processors collectively │ │ │ │ │ determine which of the orderings is best, which is then broadcast to all the processors, as the code fragment │ │ │ │ │ below illustrates. │ │ │ │ │ opcounts = DVinit(nproc, 0.0) ; │ │ │ │ │ opcounts[myid] = ETree_nFactorOps(frontETree, type, symmetryflag) ; │ │ │ │ │ @@ -597,15 +597,15 @@ │ │ │ │ │ IV_init(vtxmapIV, neqns, NULL) ; │ │ │ │ │ IVgather(neqns, IV_entries(vtxmapIV), IV_entries(ownersIV), ETree_vtxToFront(frontETree)) ; │ │ │ │ │ At this point we are ready to assemble and distribute the entries of A and Y . │ │ │ │ │ firsttag = 0 ; │ │ │ │ │ newA = InpMtx_MPI_split(mtxA, vtxmapIV, stats, msglvl, msgFile, firsttag, │ │ │ │ │ MPI_COMM_WORLD) ; │ │ │ │ │ InpMtx_free(mtxA) ; │ │ │ │ │ - 18 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 18 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ mtxA = newA ; │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ newY = DenseMtx_MPI_splitByRows(mtxY, vtxmapIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ mtxY = newY ; │ │ │ │ │ The InpMtx MPI split() method assembles and redistributes the matrix entries by the vectors of the local │ │ │ │ │ @@ -640,15 +640,15 @@ │ │ │ │ │ chvmanager, ownersIV, lookahead, &error, cpus, │ │ │ │ │ stats, msglvl, msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ Note that the ChvManager is not locked. The calling sequence is identical to that of the multithreaded │ │ │ │ │ factorization except for the addition of the firsttag and MPI communicator at the end. │ │ │ │ │ The post-processing of the factorization is the same in principle as in the serial code but differs in that │ │ │ │ │ is uses the distributed data structures. │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 19 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 19 │ │ │ │ │ FrontMtx_MPI_postProcess(frontmtx, ownersIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ After the post-processing step, each local FrontMtx object contains the L , D and U submatrices │ │ │ │ │ J,I I,I I,J │ │ │ │ │ for the fronts that were owned by the particular processor. However, the parallel solve is based on the │ │ │ │ │ submatrices being distributed across the processors, not just the fronts. │ │ │ │ │ We must specify which threads own which submatrices, and so perform computations with them. This │ │ │ │ │ @@ -683,15 +683,15 @@ │ │ │ │ │ mtxY = newY ; │ │ │ │ │ IV_free(rowmapIV) ; │ │ │ │ │ } │ │ │ │ │ Each processor now must create a local DenseMtx object to hold the rows of PX that it owns. │ │ │ │ │ ownedColumnsIV = FrontMtx_ownedColumnsIV(frontmtx, myid, ownersIV, │ │ │ │ │ msglvl, msgFile) ; │ │ │ │ │ nmycol = IV_size(ownedColumnsIV) ; │ │ │ │ │ - 20 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 20 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ if ( nmycol > 0 ) { │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, nmycol, nrhs, 1, nmycol) ; │ │ │ │ │ DenseMtx_rowIndices(mtxX, &nrow, &rowind) ; │ │ │ │ │ IVcopy(nmycol, rowind, IV_entries(ownedColumnsIV)) ; │ │ │ │ │ } │ │ │ │ │ If A is symmetric, or if pivoting for stability was not used, then mtxX can just be a pointer to mtxY, i.e., PX │ │ │ │ │ @@ -722,15 +722,15 @@ │ │ │ │ │ 1 4 -1.0 6 6 4.0 │ │ │ │ │ 6 7 -1.0 │ │ │ │ │ rhs.0.input rhs.1.input rhs.2.input rhs.3.input │ │ │ │ │ 2 1 2 1 2 1 3 1 │ │ │ │ │ 0 0.0 2 0.0 4 1.0 6 0.0 │ │ │ │ │ 1 0.0 3 0.0 5 0.0 7 0.0 │ │ │ │ │ 8 0.0 │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 21 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 21 │ │ │ │ │ 5 Serial Solution of AX = Y using an QR factorization │ │ │ │ │ Let us review the steps is solving AX = Y using a QR factorization. │ │ │ │ │ • communicate the data for the problem as A, X and Y. │ │ │ │ │ ee e T e │ │ │ │ │ • reorder as AX = Y, where A = AP and X =PX. and P is a permutation matrix. │ │ │ │ │ e │ │ │ │ │ • factor A = QR, where Q is orthogonal and R is upper triangular. │ │ │ │ │ @@ -762,15 +762,15 @@ │ │ │ │ │ apply it to the matrix A. This is done by the following code fragment. │ │ │ │ │ oldToNewIV = ETree_oldToNewVtxPerm(frontETree) ; │ │ │ │ │ oldToNew = IV_entries(oldToNewIV) ; │ │ │ │ │ newToOldIV = ETree_newToOldVtxPerm(frontETree) ; │ │ │ │ │ newToOld = IV_entries(newToOldIV) ; │ │ │ │ │ InpMtx_permute(mtxA, NULL, oldToNew)) ; │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ - 22 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 22 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ The oldToNewIV and newToOldIV variables are IV objects that represent an integer vector. The oldToNew │ │ │ │ │ andnewToOldvariablesarepointers to int, which point to the base address of the int vector in an IV object. │ │ │ │ │ Once we have the permutation vector, we apply it to the front tree, by the ETree permuteVertices() │ │ │ │ │ method. We need APT, so we permute the InpMtx object using a NULL pointer for the row permutation │ │ │ │ │ (which means do not permute the rows) and the oldToNew vector for the column permutation. At this point │ │ │ │ │ the InpMtx object holds APT in the form required by the factorization. │ │ │ │ │ The final steps are to compute the symbolic factorization, which is stored in an IVL object, and to │ │ │ │ │ @@ -808,15 +808,15 @@ │ │ │ │ │ the sample program for the numerical factorization step is found below. │ │ │ │ │ chvmanager = ChvManager_new() ; │ │ │ │ │ ChvManager_init(chvmanager, NO_LOCK, 1) ; │ │ │ │ │ DVzero(10, cpus) ; │ │ │ │ │ facops = 0.0 ; │ │ │ │ │ FrontMtx_QR_factor(frontmtx, mtxA, chvmanager, cpus, &facops, msglvl, msgFile) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 23 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 23 │ │ │ │ │ Working storage used during the factorization is found in the form of block chevrons, in a Chv object, │ │ │ │ │ which hold the partial frontal matrix for a front. Much as with the SubMtx object, the FrontMtx object │ │ │ │ │ does not concern itself with managing working storage, instead it relies on a ChvManager object to manage │ │ │ │ │ the Chv objects. On return facops contains the number of floating point operations performed during the │ │ │ │ │ factorization. │ │ │ │ │ The factorization is performed using a one-dimensional decomposition of the factor matrices. Keeping │ │ │ │ │ the factor matrices in this form severely limits the amount of parallelism for the forward and backsolves. │ │ │ │ │ @@ -853,15 +853,15 @@ │ │ │ │ │ 5 1 2.0 6 5.0 │ │ │ │ │ 5 4 3.0 7 4.0 │ │ │ │ │ 5 5 1.0 │ │ │ │ │ 6 0 2.0 │ │ │ │ │ 6 3 3.0 │ │ │ │ │ 7 1 1.0 │ │ │ │ │ 7 4 3.0 │ │ │ │ │ - 24 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 24 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ A allInOne.c – A Serial LU Driver Program │ │ │ │ │ /* allInOne.c */ │ │ │ │ │ #include "../../misc.h" │ │ │ │ │ #include "../../FrontMtx.h" │ │ │ │ │ #include "../../SymbFac.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ int │ │ │ │ │ @@ -900,15 +900,15 @@ │ │ │ │ │ symmetryflag, type ; │ │ │ │ │ int *newToOld, *oldToNew ; │ │ │ │ │ int stats[20] ; │ │ │ │ │ IV *newToOldIV, *oldToNewIV ; │ │ │ │ │ IVL *adjIVL, *symbfacIVL ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 25 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 25 │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 9 ) { │ │ │ │ │ fprintf(stdout, "\n" │ │ │ │ │ "\n usage: %s msglvl msgFile type symmetryflag pivotingflag" │ │ │ │ │ @@ -952,15 +952,15 @@ │ │ │ │ │ symmetryflag = atoi(argv[4]) ; │ │ │ │ │ pivotingflag = atoi(argv[5]) ; │ │ │ │ │ matrixFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ seed = atoi(argv[8]) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - 26 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 26 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ -------------------------------------------- │ │ │ │ │ STEP 1: read the entries from the input file │ │ │ │ │ and create the InpMtx object │ │ │ │ │ -------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ inputFile = fopen(matrixFileName, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d %d", &nrow, &ncol, &nent) ; │ │ │ │ │ @@ -1004,15 +1004,15 @@ │ │ │ │ │ fscanf(inputFile, "%d", &jrow) ; │ │ │ │ │ for ( jrhs = 0 ; jrhs < nrhs ; jrhs++ ) { │ │ │ │ │ fscanf(inputFile, "%le", &value) ; │ │ │ │ │ DenseMtx_setRealEntry(mtxY, jrow, jrhs, value) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ } else { │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 27 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 27 │ │ │ │ │ double imag, real ; │ │ │ │ │ for ( irow = 0 ; irow < nrow ; irow++ ) { │ │ │ │ │ fscanf(inputFile, "%d", &jrow) ; │ │ │ │ │ for ( jrhs = 0 ; jrhs < nrhs ; jrhs++ ) { │ │ │ │ │ fscanf(inputFile, "%le %le", &real, &imag) ; │ │ │ │ │ DenseMtx_setComplexEntry(mtxY, jrow, jrhs, real, imag) ; │ │ │ │ │ } │ │ │ │ │ @@ -1056,15 +1056,15 @@ │ │ │ │ │ get the symbolic factorization │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ oldToNewIV = ETree_oldToNewVtxPerm(frontETree) ; │ │ │ │ │ oldToNew = IV_entries(oldToNewIV) ; │ │ │ │ │ newToOldIV = ETree_newToOldVtxPerm(frontETree) ; │ │ │ │ │ newToOld = IV_entries(newToOldIV) ; │ │ │ │ │ - 28 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 28 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ ETree_permuteVertices(frontETree, oldToNewIV) ; │ │ │ │ │ InpMtx_permute(mtxA, oldToNew, oldToNew) ; │ │ │ │ │ if ( symmetryflag == SPOOLES_SYMMETRIC │ │ │ │ │ || symmetryflag == SPOOLES_HERMITIAN ) { │ │ │ │ │ InpMtx_mapToUpperTriangle(mtxA) ; │ │ │ │ │ } │ │ │ │ │ InpMtx_changeCoordType(mtxA, INPMTX_BY_CHEVRONS) ; │ │ │ │ │ @@ -1108,15 +1108,15 @@ │ │ │ │ │ ChvManager_init(chvmanager, NO_LOCK, 1) ; │ │ │ │ │ DVfill(10, cpus, 0.0) ; │ │ │ │ │ IVfill(20, stats, 0) ; │ │ │ │ │ rootchv = FrontMtx_factorInpMtx(frontmtx, mtxA, tau, droptol, │ │ │ │ │ chvmanager, &error, cpus, stats, msglvl, msgFile) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 29 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 29 │ │ │ │ │ fprintf(msgFile, "\n\n factor matrix") ; │ │ │ │ │ FrontMtx_writeForHumanEye(frontmtx, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ if ( rootchv != NULL ) { │ │ │ │ │ fprintf(msgFile, "\n\n matrix found to be singular\n") ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ @@ -1160,15 +1160,15 @@ │ │ │ │ │ ------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ DenseMtx_permuteRows(mtxX, newToOldIV) ; │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - 30 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 30 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ----------- │ │ │ │ │ free memory │ │ │ │ │ ----------- │ │ │ │ │ */ │ │ │ │ │ @@ -1181,15 +1181,15 @@ │ │ │ │ │ ETree_free(frontETree) ; │ │ │ │ │ IVL_free(symbfacIVL) ; │ │ │ │ │ SubMtxManager_free(mtxmanager) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 31 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 31 │ │ │ │ │ B allInOne.c – A Serial LU Driver Program │ │ │ │ │ /* allInOneMT.c */ │ │ │ │ │ #include "../spoolesMT.h" │ │ │ │ │ #include "../../misc.h" │ │ │ │ │ #include "../../FrontMtx.h" │ │ │ │ │ #include "../../SymbFac.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ @@ -1228,15 +1228,15 @@ │ │ │ │ │ Graph *graph ; │ │ │ │ │ InpMtx *mtxA ; │ │ │ │ │ int error, ient, irow, jcol, jrhs, jrow, lookahead, msglvl, │ │ │ │ │ ncol, nedges, nent, neqns, nfront, nrhs, nrow, │ │ │ │ │ nthread, pivotingflag, seed, symmetryflag, type ; │ │ │ │ │ int *newToOld, *oldToNew ; │ │ │ │ │ int stats[20] ; │ │ │ │ │ - 32 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 32 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ IV *newToOldIV, *oldToNewIV, *ownersIV ; │ │ │ │ │ IVL *adjIVL, *symbfacIVL ; │ │ │ │ │ SolveMap *solvemap ; │ │ │ │ │ SubMtxManager *mtxmanager ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ @@ -1280,15 +1280,15 @@ │ │ │ │ │ } else if ( (msgFile = fopen(argv[2], "a")) == NULL ) { │ │ │ │ │ fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ "\n unable to open file %s\n", │ │ │ │ │ argv[0], argv[2]) ; │ │ │ │ │ return(-1) ; │ │ │ │ │ } │ │ │ │ │ type = atoi(argv[3]) ; │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 33 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 33 │ │ │ │ │ symmetryflag = atoi(argv[4]) ; │ │ │ │ │ pivotingflag = atoi(argv[5]) ; │ │ │ │ │ matrixFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ seed = atoi(argv[8]) ; │ │ │ │ │ nthread = atoi(argv[9]) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ @@ -1332,15 +1332,15 @@ │ │ │ │ │ inputFile = fopen(rhsFileName, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d", &nrow, &nrhs) ; │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxY, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxY) ; │ │ │ │ │ if ( type == SPOOLES_REAL ) { │ │ │ │ │ double value ; │ │ │ │ │ - 34 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 34 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ for ( irow = 0 ; irow < nrow ; irow++ ) { │ │ │ │ │ fscanf(inputFile, "%d", &jrow) ; │ │ │ │ │ for ( jrhs = 0 ; jrhs < nrhs ; jrhs++ ) { │ │ │ │ │ fscanf(inputFile, "%le", &value) ; │ │ │ │ │ DenseMtx_setRealEntry(mtxY, jrow, jrhs, value) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ @@ -1384,15 +1384,15 @@ │ │ │ │ │ ETree_writeForHumanEye(frontETree, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ STEP 4: get the permutation, permute the front tree, │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 35 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 35 │ │ │ │ │ permute the matrix and right hand side, and │ │ │ │ │ get the symbolic factorization │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ oldToNewIV = ETree_oldToNewVtxPerm(frontETree) ; │ │ │ │ │ oldToNew = IV_entries(oldToNewIV) ; │ │ │ │ │ newToOldIV = ETree_newToOldVtxPerm(frontETree) ; │ │ │ │ │ @@ -1436,15 +1436,15 @@ │ │ │ │ │ ownersIV = ETree_ddMap(frontETree, type, symmetryflag, │ │ │ │ │ cumopsDV, 1./(2.*nthread)) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n map from fronts to threads") ; │ │ │ │ │ IV_writeForHumanEye(ownersIV, msgFile) ; │ │ │ │ │ fprintf(msgFile, "\n\n factor operations for each front") ; │ │ │ │ │ DV_writeForHumanEye(cumopsDV, msgFile) ; │ │ │ │ │ - 36 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 36 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ DV_free(cumopsDV) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------ │ │ │ │ │ STEP 6: initialize the front matrix object │ │ │ │ │ @@ -1488,15 +1488,15 @@ │ │ │ │ │ -------------------------------------- │ │ │ │ │ STEP 8: post-process the factorization │ │ │ │ │ -------------------------------------- │ │ │ │ │ */ │ │ │ │ │ FrontMtx_postProcess(frontmtx, msglvl, msgFile) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n factor matrix after post-processing") ; │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 37 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 37 │ │ │ │ │ FrontMtx_writeForHumanEye(frontmtx, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------------- │ │ │ │ │ STEP 9: get the solve map object for the parallel solve │ │ │ │ │ @@ -1540,27 +1540,27 @@ │ │ │ │ │ free memory │ │ │ │ │ ----------- │ │ │ │ │ */ │ │ │ │ │ FrontMtx_free(frontmtx) ; │ │ │ │ │ DenseMtx_free(mtxX) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ IV_free(newToOldIV) ; │ │ │ │ │ - 38 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 38 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ IV_free(oldToNewIV) ; │ │ │ │ │ InpMtx_free(mtxA) ; │ │ │ │ │ ETree_free(frontETree) ; │ │ │ │ │ IVL_free(symbfacIVL) ; │ │ │ │ │ SubMtxManager_free(mtxmanager) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ SolveMap_free(solvemap) ; │ │ │ │ │ IV_free(ownersIV) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 39 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 39 │ │ │ │ │ C allInOne.c – A Serial LU Driver Program │ │ │ │ │ /* allInOneMPI.c */ │ │ │ │ │ #include "../spoolesMPI.h" │ │ │ │ │ #include "../../timings.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ int │ │ │ │ │ main ( int argc, char *argv[] ) { │ │ │ │ │ @@ -1598,15 +1598,15 @@ │ │ │ │ │ double *opcounts ; │ │ │ │ │ DV *cumopsDV ; │ │ │ │ │ ETree *frontETree ; │ │ │ │ │ FILE *inputFile, *msgFile ; │ │ │ │ │ Graph *graph ; │ │ │ │ │ int error, firsttag, ient, irow, jcol, lookahead = 0, │ │ │ │ │ msglvl, myid, nedges, nent, neqns, nmycol, nproc, nrhs, │ │ │ │ │ - 40 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 40 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ nrow, pivotingflag, root, seed, symmetryflag, type ; │ │ │ │ │ int stats[20] ; │ │ │ │ │ int *rowind ; │ │ │ │ │ IV *oldToNewIV, *ownedColumnsIV, *ownersIV, │ │ │ │ │ *newToOldIV, *vtxmapIV ; │ │ │ │ │ IVL *adjIVL, *symbfacIVL ; │ │ │ │ │ SolveMap *solvemap ; │ │ │ │ │ @@ -1650,15 +1650,15 @@ │ │ │ │ │ return(0) ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ msgFile = stdout ; │ │ │ │ │ } else { │ │ │ │ │ sprintf(buffer, "res.%d", myid) ; │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 41 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 41 │ │ │ │ │ if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ "\n unable to open file %s\n", │ │ │ │ │ argv[0], buffer) ; │ │ │ │ │ return(-1) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ @@ -1702,15 +1702,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ STEP 2: read the rhs entries from the rhs input file │ │ │ │ │ and create the DenseMtx object for Y │ │ │ │ │ - 42 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 42 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ sprintf(buffer, "rhs.%d.input", myid) ; │ │ │ │ │ inputFile = fopen(buffer, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d", &nrow, &nrhs) ; │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxY, type, 0, 0, nrow, nrhs, 1, nrow) ; │ │ │ │ │ @@ -1754,15 +1754,15 @@ │ │ │ │ │ adjIVL = InpMtx_MPI_fullAdjacency(mtxA, stats, │ │ │ │ │ msglvl, msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ nedges = IVL_tsize(adjIVL) ; │ │ │ │ │ Graph_init2(graph, 0, neqns, 0, nedges, neqns, nedges, adjIVL, │ │ │ │ │ NULL, NULL) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n graph of the input matrix") ; │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 43 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 43 │ │ │ │ │ Graph_writeForHumanEye(graph, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ frontETree = orderViaMMD(graph, seed + myid, msglvl, msgFile) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n front tree from ordering") ; │ │ │ │ │ @@ -1806,15 +1806,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------- │ │ │ │ │ STEP 4: generate the owners map IV object │ │ │ │ │ and the map from vertices to owners │ │ │ │ │ - 44 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 44 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ ------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ cutoff = 1./(2*nproc) ; │ │ │ │ │ cumopsDV = DV_new() ; │ │ │ │ │ DV_init(cumopsDV, nproc, NULL) ; │ │ │ │ │ ownersIV = ETree_ddMap(frontETree, │ │ │ │ │ type, symmetryflag, cumopsDV, cutoff) ; │ │ │ │ │ @@ -1858,15 +1858,15 @@ │ │ │ │ │ DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------ │ │ │ │ │ STEP 6: compute the symbolic factorization │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 45 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 45 │ │ │ │ │ ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ symbfacIVL = SymbFac_MPI_initFromInpMtx(frontETree, ownersIV, mtxA, │ │ │ │ │ stats, msglvl, msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ firsttag += frontETree->nfront ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n local symbolic factorization") ; │ │ │ │ │ @@ -1910,15 +1910,15 @@ │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ STEP 9: post-process the factorization and split │ │ │ │ │ the factor matrices into submatrices │ │ │ │ │ - 46 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 46 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ FrontMtx_MPI_postProcess(frontmtx, ownersIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ firsttag += 5*nproc ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n numeric factorization after post-processing"); │ │ │ │ │ @@ -1962,15 +1962,15 @@ │ │ │ │ │ */ │ │ │ │ │ if ( FRONTMTX_IS_PIVOTING(frontmtx) ) { │ │ │ │ │ IV *rowmapIV ; │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------------------- │ │ │ │ │ pivoting has taken place, redistribute the right hand side │ │ │ │ │ to match the final rows and columns in the fronts │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 47 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 47 │ │ │ │ │ ---------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ rowmapIV = FrontMtx_MPI_rowmapIV(frontmtx, ownersIV, msglvl, │ │ │ │ │ msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ newY = DenseMtx_MPI_splitByRows(mtxY, rowmapIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ @@ -2014,15 +2014,15 @@ │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ -------------------------------------------------------- │ │ │ │ │ STEP 15: permute the solution into the original ordering │ │ │ │ │ and assemble the solution onto processor zero │ │ │ │ │ -------------------------------------------------------- │ │ │ │ │ - 48 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 48 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ */ │ │ │ │ │ DenseMtx_permuteRows(mtxX, newToOldIV) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n solution in old ordering") ; │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ @@ -2035,15 +2035,15 @@ │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 49 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 49 │ │ │ │ │ D allInOne.c – A Serial QR Driver Program │ │ │ │ │ /* QRallInOne.c */ │ │ │ │ │ #include "../../misc.h" │ │ │ │ │ #include "../../FrontMtx.h" │ │ │ │ │ #include "../../SymbFac.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ int │ │ │ │ │ @@ -2083,15 +2083,15 @@ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 7 ) { │ │ │ │ │ fprintf(stdout, │ │ │ │ │ - 50 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 50 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ "\n usage: %s msglvl msgFile type matrixFileName rhsFileName seed" │ │ │ │ │ "\n msglvl -- message level" │ │ │ │ │ "\n msgFile -- message file" │ │ │ │ │ "\n type -- type of entries" │ │ │ │ │ "\n 1 (SPOOLES_REAL) -- real entries" │ │ │ │ │ "\n 2 (SPOOLES_COMPLEX) -- complex entries" │ │ │ │ │ "\n matrixFileName -- matrix file name, format" │ │ │ │ │ @@ -2135,15 +2135,15 @@ │ │ │ │ │ if ( type == SPOOLES_REAL ) { │ │ │ │ │ for ( ient = 0 ; ient < nent ; ient++ ) { │ │ │ │ │ fscanf(inputFile, "%d %d %le", &irow, &jcol, &value) ; │ │ │ │ │ InpMtx_inputRealEntry(mtxA, irow, jcol, value) ; │ │ │ │ │ } │ │ │ │ │ } else { │ │ │ │ │ for ( ient = 0 ; ient < nent ; ient++ ) { │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 51 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 51 │ │ │ │ │ fscanf(inputFile, "%d %d %le %le", &irow, &jcol, &real, &imag) ; │ │ │ │ │ InpMtx_inputComplexEntry(mtxA, irow, jcol, real, imag) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ fclose(inputFile) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n input matrix") ; │ │ │ │ │ @@ -2187,15 +2187,15 @@ │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------- │ │ │ │ │ STEP 3 : find a low-fill ordering │ │ │ │ │ (1) create the Graph object for A^TA or A^HA │ │ │ │ │ (2) order the graph using multiple minimum degree │ │ │ │ │ ------------------------------------------------- │ │ │ │ │ - 52 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 52 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ */ │ │ │ │ │ graph = Graph_new() ; │ │ │ │ │ adjIVL = InpMtx_adjForATA(mtxA) ; │ │ │ │ │ nedges = IVL_tsize(adjIVL) ; │ │ │ │ │ Graph_init2(graph, 0, neqns, 0, nedges, neqns, nedges, adjIVL, │ │ │ │ │ NULL, NULL) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ @@ -2239,15 +2239,15 @@ │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------ │ │ │ │ │ STEP 5: initialize the front matrix object │ │ │ │ │ ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ - December 20, 2018 SPOOLES 2.2—Solving Linear Systems 53 │ │ │ │ │ + October 11, 2021 SPOOLES 2.2—Solving Linear Systems 53 │ │ │ │ │ frontmtx = FrontMtx_new() ; │ │ │ │ │ mtxmanager = SubMtxManager_new() ; │ │ │ │ │ SubMtxManager_init(mtxmanager, NO_LOCK, 0) ; │ │ │ │ │ if ( type == SPOOLES_REAL ) { │ │ │ │ │ FrontMtx_init(frontmtx, frontETree, symbfacIVL, type, │ │ │ │ │ SPOOLES_SYMMETRIC, FRONTMTX_DENSE_FRONTS, │ │ │ │ │ SPOOLES_NO_PIVOTING, NO_LOCK, 0, NULL, │ │ │ │ │ @@ -2291,15 +2291,15 @@ │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------- │ │ │ │ │ STEP 8: solve the linear system │ │ │ │ │ ------------------------------- │ │ │ │ │ */ │ │ │ │ │ - 54 SPOOLES2.2—SolvingLinearSystems December 20, 2018 │ │ │ │ │ + 54 SPOOLES2.2—SolvingLinearSystems October 11, 2021 │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ FrontMtx_QR_solve(frontmtx, mtxA, mtxX, mtxB, mtxmanager, │ │ │ │ │ cpus, msglvl, msgFile) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n solution matrix in new ordering") ; │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ ├── ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ ├── BKL.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMSL10 CMTI10 CMMI10 │ │ │ │ %%+ CMEX10 CMR8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o BKL.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1845,22 +1845,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2034,88 +2034,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3661,26 +3650,26 @@ │ │ │ │ 61 18[{}2 83.022 /CMEX10 rf /Fc 168[86 3[56 16[69 3[71 │ │ │ │ 2[25 47[58 11[{}6 90.9091 /CMMI10 rf /Fd 133[50 59 2[59 │ │ │ │ 62 44 44 46 1[62 56 62 93 31 2[31 62 2[51 62 2[54 11[86 │ │ │ │ 4[77 6[42 20[56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 │ │ │ │ rf /Fe 179[62 62 8[62 66[{}3 119.552 /CMTT12 rf /Ff 141[38 │ │ │ │ 2[46 51 1[23 42 1[28 46 42 1[42 1[42 1[46 12[65 1[66 │ │ │ │ 11[59 62 69 2[68 6[28 58[{}18 90.9091 /CMTI10 rf /Fg │ │ │ │ -141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 │ │ │ │ -44[{}12 90.9091 /CMSL10 rf /Fh 149[25 72[91 17[45 11[45 │ │ │ │ -2[71{}5 90.9091 /CMSY10 rf /Fi 134[71 3[75 52 53 55 1[75 │ │ │ │ -67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ -1[96 14[67 67 67 2[37 46[{}24 119.552 /CMBX12 rf /Fj │ │ │ │ -134[48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 │ │ │ │ -48 48 48 48 48 48 48 48 1[48 1[48 1[48 3[48 1[48 48 48 │ │ │ │ -48 1[48 1[48 1[48 48 1[48 1[48 48 1[48 48 48 48 2[48 │ │ │ │ -48 48 48 4[48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ -48 40[{}62 90.9091 /CMTT10 rf /Fk 133[40 48 48 66 48 │ │ │ │ -51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 │ │ │ │ -40 51 45 9[93 2[66 4[71 1[83 3[33 2[59 4[68 6[25 2[45 │ │ │ │ +139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 │ │ │ │ +3[25 44[{}12 90.9091 /CMSL10 rf /Fh 149[25 72[91 17[45 │ │ │ │ +11[45 2[71{}5 90.9091 /CMSY10 rf /Fi 134[71 3[75 52 53 │ │ │ │ +55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 │ │ │ │ +11[103 1[96 14[67 67 67 2[37 46[{}24 119.552 /CMBX12 │ │ │ │ +rf /Fj 134[48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 │ │ │ │ +48 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 3[48 1[48 │ │ │ │ +48 48 48 1[48 1[48 1[48 48 1[48 1[48 48 1[48 48 48 48 │ │ │ │ +2[48 48 48 48 4[48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ +48 48 40[{}62 90.9091 /CMTT10 rf /Fk 133[40 48 48 66 │ │ │ │ +48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 │ │ │ │ +51 40 51 45 9[93 2[66 4[71 1[83 3[33 2[59 4[68 6[25 2[45 │ │ │ │ 45 45 45 45 45 45 45 1[25 30 25 71 1[35 35 25 1[76 23[51 │ │ │ │ 51 10[76 1[{}53 90.9091 /CMR10 rf /Fl 135[123 3[90 1[95 │ │ │ │ 2[116 129 1[65 123 71 65 129 116 1[106 129 103 129 113 │ │ │ │ 17[175 2[140 182 1[87 6[165 7[65 12[77 45[{}23 206.559 │ │ │ │ /CMBX12 rf /Fm 179[106 106 8[106 66[{}3 206.559 /CMTT12 │ │ │ │ rf /Fn 139[75 1[79 1[108 7[108 2[88 3[94 29[140 17[97 │ │ │ │ 49[{}8 172.188 /CMBX12 rf end │ │ │ │ @@ -3744,17 +3733,17 @@ │ │ │ │ 5294 y Fh(\017)46 b Fj(int)h(*cweights)28 b Fk(:)40 b(p)s(oin)m(ter)30 │ │ │ │ b(to)h(an)f Fj(int)f Fk(v)m(ector)j(of)e(size)h(3,)g │ │ │ │ Fj(cweights[0])c Fk(con)m(tains)32 b(the)e(w)m(eigh)m(t)h(of)g(the)227 │ │ │ │ 5407 y(separator,)h Fj(cweights[1])27 b Fk(and)j Fj(cweights[2])d │ │ │ │ Fk(con)m(tains)k(the)g(w)m(eigh)m(ts)h(of)e(the)h(t)m(w)m(o)h(comp)s │ │ │ │ (onen)m(ts)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1123 4 v │ │ │ │ -1304 w Fj(BKL)30 b Fg(:)g Ff(DRAFT)h Fg(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2778 100 V 136 399 a Fh(\017)46 b Fj(int)h(*regwghts)39 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1159 4 v │ │ │ │ +1340 w Fj(BKL)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2742 100 V 136 399 a Fh(\017)46 b Fj(int)h(*regwghts)39 │ │ │ │ b Fk(:)62 b(p)s(oin)m(ter)41 b(to)h(an)f Fj(int)f Fk(v)m(ector)j(of)e │ │ │ │ (size)h Fj(nreg)p Fk(,)h(used)d(to)i(store)g(the)f(w)m(eigh)m(ts)h(of)g │ │ │ │ (the)227 511 y(domains)30 b(and)g(segmen)m(ts)136 738 │ │ │ │ y Fh(\017)46 b Fj(float)h(alpha)41 b Fk(:)65 b(n)m(um)m(b)s(er)41 │ │ │ │ b(used)g(to)j(store)f(the)f(partition)i(ev)-5 b(aluation)44 │ │ │ │ b(parameter,)i(the)d(cost)g(of)g(the)227 851 y(partition)31 │ │ │ │ b(is)227 1124 y Fj(balance)46 b(=)i(max\(cweights[1],)43 │ │ │ │ @@ -3799,17 +3788,17 @@ │ │ │ │ (call)h(to)f Fj(BKL)p 2265 5125 V 34 w(clearData\(\))c │ │ │ │ Fk(then)j(free's)h(the)f(storage)i(for)227 5238 y(the)31 │ │ │ │ b(structure)f(with)g(a)h(call)g(to)g Fj(free\(\))p Fk(.)227 │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(bkl)g Fk(is)g Fj(NULL)p Fk(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ (ted)f(and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1123 4 v 1304 100 a Fj(BKL)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2731 100 V 1123 w Fk(3)0 399 y Fd(1.3.1)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1159 4 v 1340 100 a Fj(BKL)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2695 100 V 1159 w Fk(3)0 399 y Fd(1.3.1)112 b(Initializer)38 │ │ │ │ b(metho)s(ds)111 590 y Fk(1.)46 b Fj(void)h(BKL_init)e(\()j(BKL)f │ │ │ │ (*bkl,)f(BPG)h(*bpg,)f(float)h(alpha)f(\))i(;)227 736 │ │ │ │ y Fk(This)34 b(metho)s(d)g(initializes)j(the)d Fj(BKL)g │ │ │ │ Fk(ob)5 b(ject)35 b(giv)m(en)h(a)f(bipartite)g(graph)f(ob)5 │ │ │ │ b(ject)35 b(and)f(cost)i(function)e(pa-)227 849 y(rameter)g(as)f │ │ │ │ (input.)48 b(An)m(y)33 b(previous)g(data)h(is)f(cleared)h(with)f(a)h │ │ │ │ (call)g(to)g Fj(BKL)p 2868 849 29 4 v 33 w(clearData\(\))p │ │ │ │ @@ -3873,17 +3862,17 @@ │ │ │ │ y(6.)46 b Fj(float)h(BKL_setInitPart)c(\()48 b(BKL)f(*bkl,)f(int)h │ │ │ │ (flag,)f(int)h(seed,)g(int)f(domcolors[])f(\))j(;)227 │ │ │ │ 5294 y Fk(This)43 b(metho)s(d)g(sets)h(the)f(initial)i(partition)f(b)m │ │ │ │ (y)f(coloring)i(the)e(domains)h(and)e(segmen)m(ts.)81 │ │ │ │ b(The)43 b Fj(flag)227 5407 y Fk(parameter)31 b(has)f(the)h(follo)m │ │ │ │ (wing)h(v)-5 b(alues.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1123 4 v │ │ │ │ -1304 w Fj(BKL)30 b Fg(:)g Ff(DRAFT)h Fg(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2778 100 V 336 399 a Fh(\017)46 b Fj(flag)h(=)g(1)30 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1159 4 v │ │ │ │ +1340 w Fj(BKL)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2742 100 V 336 399 a Fh(\017)46 b Fj(flag)h(=)g(1)30 │ │ │ │ b Fh(\000)-15 b(!)30 b Fk(random)g(coloring)h(of)g(the)g(domains)336 │ │ │ │ 558 y Fh(\017)46 b Fj(flag)h(=)g(2)30 b Fh(\000)-15 b(!)30 │ │ │ │ b Fk(one)h(blac)m(k)g(domain,)g(\()p Fj(seed)e Fk(\045)h │ │ │ │ Fj(ndom)p Fk(\),)g(rest)h(are)f(white)336 717 y Fh(\017)46 │ │ │ │ b Fj(flag)h(=)g(3)32 b Fh(\000)-15 b(!)32 b Fk(one)g(blac)m(k)i │ │ │ │ (pseudop)s(eripheral)c(domain,)j(found)e(using)g(domain)h(\()p │ │ │ │ Fj(seed)g Fk(\045)g Fj(ndom)p Fk(\))427 830 y(as)f(ro)s(ot,)g(rest)f │ │ │ │ @@ -3951,17 +3940,17 @@ │ │ │ │ b(it)g(returns)e(\()p Fh(j)p Fc(S)5 b Fh(j)21 b Fk(+)f │ │ │ │ Fh(j)p Fc(B)5 b Fh(j)20 b Fk(+)g Fh(j)p Fc(W)13 b Fh(j)p │ │ │ │ Fk(\))1714 5211 y Fa(2)1754 5244 y Fk(.)227 5407 y Ff(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(bkl)g Fk(is)g │ │ │ │ Fj(NULL)p Fk(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g │ │ │ │ (program)g(exits.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1123 4 v 1304 100 a Fj(BKL)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2731 100 V 1123 w Fk(5)111 399 y(3.)46 b Fj(float)h(BKL_eval)e(\()j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1159 4 v 1340 100 a Fj(BKL)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2695 100 V 1159 w Fk(5)111 399 y(3.)46 b Fj(float)h(BKL_eval)e(\()j │ │ │ │ (BKL)f(*bkl,)f(int)h(Sweight,)e(int)i(Bweight,)f(int)h(Wweight)f(\))h │ │ │ │ (;)227 549 y Fk(The)31 b Fh(j)p Fc(S)5 b Fh(j)p Fk(,)31 │ │ │ │ b Fh(j)p Fc(B)5 b Fh(j)31 b Fk(and)f Fh(j)p Fc(W)13 b │ │ │ │ Fh(j)31 b Fk(v)-5 b(alues)31 b(are)g(tak)m(en)h(from)e(the)h │ │ │ │ Fj(Sweight)p Fk(,)f Fj(Bweight)e Fk(and)j Fj(Wweight)d │ │ │ │ Fk(parameters.)227 662 y(If)i(min\()p Fh(j)p Fc(B)5 b │ │ │ │ Fh(j)p Fc(;)15 b Fh(j)p Fc(W)e Fh(j)p Fk(\))26 b Fc(>)f │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -18,15 +18,15 @@ │ │ │ │ │ • int ngaineval : number of gain evaluations, roughly equivalent to the number of degree │ │ │ │ │ evaluations in the minimum degree algorithm │ │ │ │ │ • int *colors : pointer to an int vector of size nreg, colors[idom] is 1 or 2 for domain │ │ │ │ │ idom, colors[iseg] is 0, 1 or 2 for segment iseg. │ │ │ │ │ • int *cweights : pointer to an int vector of size 3, cweights[0] contains the weight of the │ │ │ │ │ separator, cweights[1] and cweights[2] contains the weights of the two components │ │ │ │ │ 1 │ │ │ │ │ - 2 BKL : DRAFT December 20, 2018 │ │ │ │ │ + 2 BKL : DRAFT October 11, 2021 │ │ │ │ │ • int *regwghts : pointer to an int vector of size nreg, used to store the weights of the │ │ │ │ │ domains and segments │ │ │ │ │ • float alpha : number used to store the partition evaluation parameter, the cost of the │ │ │ │ │ partition is │ │ │ │ │ balance = max(cweights[1], cweights[2])/min(cweights[1], cweights[2]) ; │ │ │ │ │ cost = cweights[0]*(1. + alpha*balance) ; │ │ │ │ │ 1.2 Prototypes and descriptions of BKL methods │ │ │ │ │ @@ -47,15 +47,15 @@ │ │ │ │ │ This method clears any data allocated by the object, namely the colors and regwghts vec- │ │ │ │ │ tors. It then fills the structure’s fields with default values with a call to BKL setDefaultFields(). │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void BKL_free ( BKL *bkl ) ; │ │ │ │ │ This method releases any storage by a call to BKL clearData() then free’s the storage for │ │ │ │ │ the structure with a call to free(). │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ - BKL : DRAFT December 20, 2018 3 │ │ │ │ │ + BKL : DRAFT October 11, 2021 3 │ │ │ │ │ 1.3.1 Initializer methods │ │ │ │ │ 1. void BKL_init ( BKL *bkl, BPG *bpg, float alpha ) ; │ │ │ │ │ This method initializes the BKL object given a bipartite graph object and cost function pa- │ │ │ │ │ rameter as input. Any previous data is cleared with a call to BKL clearData(). The ndom, │ │ │ │ │ nseg and nreg scalars are set, the regwghts[] vector allocated and filled, and the colors[] │ │ │ │ │ vector allocated and filled with zeros. │ │ │ │ │ Error checking: If bkl or bpg is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │ │ This method returns the next domain id in a grey code sequence, used to exhaustively search │ │ │ │ │ of a subspace of partitions defined by set of candidate domains to flip. The value count │ │ │ │ │ ranges from 1 to 2ndom. │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ 6. float BKL_setInitPart ( BKL *bkl, int flag, int seed, int domcolors[] ) ; │ │ │ │ │ This method sets the initial partition by coloring the domains and segments. The flag │ │ │ │ │ parameter has the following values. │ │ │ │ │ - 4 BKL : DRAFT December 20, 2018 │ │ │ │ │ + 4 BKL : DRAFT October 11, 2021 │ │ │ │ │ • flag = 1 −→ random coloring of the domains │ │ │ │ │ • flag = 2 −→ one black domain, (seed % ndom), rest are white │ │ │ │ │ • flag = 3 −→ one black pseudoperipheral domain, found using domain (seed % ndom) │ │ │ │ │ as root, rest are white │ │ │ │ │ • flag = 4 −→ roughly half-half split, breadth first search of domains, (seed % ndom) as │ │ │ │ │ root │ │ │ │ │ • flag = 5 −→ roughly half-half split, breadth first search of domains, (seed % ndom) as │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ The |S|, |B| and |W| values are taken from the cweights[] vector. If min(|B|,|W|) > 0, this │ │ │ │ │ function returns   │ │ │ │ │ |S| 1+α∗max(|B|,|W|) , │ │ │ │ │ min(|B|,|W|) │ │ │ │ │ 2 │ │ │ │ │ otherwise it returns (|S| + |B| + |W|) . │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ - BKL : DRAFT December 20, 2018 5 │ │ │ │ │ + BKL : DRAFT October 11, 2021 5 │ │ │ │ │ 3. float BKL_eval ( BKL *bkl, int Sweight, int Bweight, int Wweight ) ; │ │ │ │ │ The |S|, |B| and |W| values are taken from the Sweight, Bweight and Wweight parameters. │ │ │ │ │ If min(|B|,|W|) > 0, this function returns │ │ │ │ │ |S|1+α∗ max(|B|,|W|), │ │ │ │ │ min(|B|,|W|) │ │ │ │ │ 2 │ │ │ │ │ otherwise it returns (|S| + |B| + |W|) . The method checks that bkl is not NULL. │ │ ├── ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ ├── BPG.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMMI10 CMSY10 CMBX10 │ │ │ │ %%+ CMEX10 CMSL10 CMMI7 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o BPG.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -967,22 +967,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1156,88 +1156,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4284,16 +4273,16 @@ │ │ │ │ @start /Fa 173[50 8[29 3[49 69[{}3 58.1154 /CMMI7 rf │ │ │ │ /Fb 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ 56 1[51 62 50 1[54 11[86 5[84 1[106 3[42 1[88 2[86 1[80 │ │ │ │ 11[56 56 56 56 56 56 2[31 37 45[{}33 99.6264 /CMBX12 │ │ │ │ rf /Fc 175[62 8[62 4[62 66[{}3 119.552 /CMTT12 rf /Fd │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 │ │ │ │ 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ -46[{}27 119.552 /CMBX12 rf /Fe 141[33 4[69 7[37 1[37 │ │ │ │ -46 29[63 9[23 1[42 5[42 42 42 3[23 44[{}12 83.022 /CMSL10 │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 139[32 1[33 2[42 9[37 │ │ │ │ +1[37 46 18[65 20[23 7[42 42 42 3[23 44[{}12 83.022 /CMSL10 │ │ │ │ rf /Ff 156[83 46 35[74 1[74 1[74 1[74 56[{}6 83.022 /CMEX10 │ │ │ │ rf /Fg 192[45 63[{}1 83.022 /CMBX10 rf /Fh 145[42 17[55 │ │ │ │ 55 40[55 29[65 1[65 2[42 12[65 2[{}8 83.022 /CMSY10 rf │ │ │ │ /Fi 149[34 5[43 9[57 48 69 78 3[51 10[69 65 1[61 2[63 │ │ │ │ 62 5[23 59[{}13 83.022 /CMMI10 rf /Fj 134[40 1[55 1[45 │ │ │ │ 28 34 35 1[42 42 47 1[21 38 1[25 42 38 1[38 42 38 38 │ │ │ │ 42 12[59 1[61 11[54 56 63 2[62 6[25 12[30 45[{}27 83.022 │ │ │ │ @@ -4408,17 +4397,17 @@ │ │ │ │ y(Finding)27 b(the)g(Dulmage-Mendelsohn)g(decomp)r(osition)f(of)h(a)g │ │ │ │ (bipartite)g(graph)f(is)h(a)f(little)i(less)f(clear)f(cut.)37 │ │ │ │ b(When)28 b(the)0 5215 y(v)n(ertices)e(in)i(the)g(bipartite)g(graph)e │ │ │ │ (ha)n(v)n(e)h(unit)h(w)n(eigh)n(t,)f(the)h(pro)r(cess)e(is)i(straigh)n │ │ │ │ (tforw)n(ard.)125 5407 y Fh(\017)41 b Fl(Find)28 b(a)f(maxim)n(um)g │ │ │ │ (matc)n(hing.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(BPG)27 b Fe(:)h Fj(DRAFT)f Fe(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 125 390 a Fh(\017)41 b Fl(Drop)27 b(an)g(alternating)g(lev)n │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(BPG)27 b Fe(:)g Fj(DRAFT)h Fe(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 125 390 a Fh(\017)41 b Fl(Drop)27 b(an)g(alternating)g(lev)n │ │ │ │ (el)g(structure)g(from)g(exp)r(osed)g(no)r(des)h(in)f │ │ │ │ Fi(X)7 b Fl(.)125 564 y Fh(\017)41 b Fl(Drop)27 b(an)g(alternating)g │ │ │ │ (lev)n(el)g(structure)g(from)g(exp)r(osed)g(no)r(des)h(in)f │ │ │ │ Fi(Y)19 b Fl(.)125 738 y Fh(\017)41 b Fl(Based)24 b(on)h(the)g(t)n(w)n │ │ │ │ (o)g(previous)f(steps,)h(partition)g Fi(X)32 b Fl(in)n(to)25 │ │ │ │ b(three)g(pieces)g(and)g Fi(Y)44 b Fl(in)n(to)24 b(three)h(pieces)g │ │ │ │ (and)g(form)g(a)g(new)208 838 y(separator)g(from)i(the)h(pieces.)0 │ │ │ │ @@ -4538,17 +4527,17 @@ │ │ │ │ b(The)28 b(dra)n(wbac)n(k)e(is)i(that)h(the)f(net)n(w)n(ork)f(induced)0 │ │ │ │ 5407 y(b)n(y)e Fi(S)17 b Fh([)c Fl(\()p Fi(Ad)-9 b(j)5 │ │ │ │ b Fl(\()p Fi(S)g Fl(\))13 b Fh(\\)g Fi(B)t Fl(\))27 b(need)e(not)g(b)r │ │ │ │ (e)g(bipartite.)36 b(In)25 b(other)f(w)n(ords,)g(a)h(bipartite)g │ │ │ │ (induced)g(graph)f(necessarily)f(implies)i(t)n(w)n(o)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1194 4 v 1360 100 a Fk(BPG)26 │ │ │ │ -b Fe(:)i Fj(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fl(3)0 390 y(la)n(y)n(ers)e(to)i(the)g(wide)g │ │ │ │ +TeXDict begin 3 2 bop 83 100 1227 4 v 1393 100 a Fk(BPG)26 │ │ │ │ +b Fe(:)i Fj(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fl(3)0 390 y(la)n(y)n(ers)e(to)i(the)g(wide)g │ │ │ │ (separator,)e(but)j(the)f(con)n(v)n(erse)e(do)r(es)h(not)h(hold.)37 │ │ │ │ b(W)-7 b(e)27 b(w)n(ere)f(then)i(free)e(to)h(examine)g(wide)g │ │ │ │ (separators)0 490 y(that)f(had)f(more)g(than)g(t)n(w)n(o)g(la)n(y)n │ │ │ │ (ers)e(from)i(whic)n(h)g(to)h(\014nd)g(a)f(minimal)g(w)n(eigh)n(t)g │ │ │ │ (separator.)34 b(It)26 b(turns)f(out)g(that)h(three)f(la)n(y)n(ers)0 │ │ │ │ 589 y(is)i(b)r(etter)h(than)g(t)n(w)n(o,)f(in)h(practice.)125 │ │ │ │ 720 y(W)-7 b(e)34 b(did)g(write)f(a)g(separate)f(ob)5 │ │ │ │ @@ -4609,17 +4598,17 @@ │ │ │ │ 5162 V 30 w(clearData\(\))c Fl(then)23 b(free's)f(the)h(storage)d(for)i │ │ │ │ (the)h(structure)208 5262 y(with)28 b(a)f(call)g(to)h │ │ │ │ Fk(free\(\))p Fl(.)208 5407 y Fj(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fl(If)28 b Fk(bpg)f Fl(is)g Fk(NULL)p Fl(,)f(an)i(error)d(message)i │ │ │ │ (is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(BPG)27 b Fe(:)h Fj(DRAFT)f Fe(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(BPG)27 b Fe(:)g Fj(DRAFT)h Fe(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ 562 y Fl(There)27 b(are)g(t)n(w)n(o)f(initializer)i(metho)r(ds.)101 │ │ │ │ 731 y(1.)42 b Fk(void)f(BPG_init)g(\()i(BPG)f(*bpg,)g(int)g(nX,)g(int)h │ │ │ │ (nY,)f(Graph)g(*graph)f(\))i(;)208 858 y Fl(This)23 b(metho)r(d)i │ │ │ │ (initializes)e(the)h Fk(BPG)f Fl(ob)5 b(ject)23 b(when)h(all)g(three)f │ │ │ │ (of)h(its)g(\014elds)g(are)f(giv)n(en)g(in)h(the)g(calling)f(sequence.) │ │ │ │ 35 b(The)208 958 y Fk(Graph)22 b Fl(ob)5 b(ject)25 b(has)f │ │ │ │ Fk(nX)42 b(+)i(nY)23 b Fl(v)n(ertices.)35 b(Note,)26 │ │ │ │ @@ -4703,17 +4692,17 @@ │ │ │ │ Fj(Err)l(or)i(che)l(cking:)39 b Fl(If)27 b Fk(bpg)p Fl(,)f │ │ │ │ Fk(list)p Fl(,)g Fk(dist)f Fl(or)i Fk(mark)e Fl(is)i │ │ │ │ Fk(NULL)p Fl(,)f(or)g(if)i Fk(root)d Fl(is)i(not)g(in)g │ │ │ │ Fk([0,)43 b(nX+nY\))p Fl(,)25 b(an)h(error)g(message)208 │ │ │ │ 5407 y(is)h(prin)n(ted)h(and)f(the)h(program)e(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1194 4 v 1360 100 a Fk(BPG)26 │ │ │ │ -b Fe(:)i Fj(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fl(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1227 4 v 1393 100 a Fk(BPG)26 │ │ │ │ +b Fe(:)i Fj(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fl(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ b(decomp)s(osition)c(metho)s(d)0 563 y Fl(There)32 b(is)h(one)f(metho)r │ │ │ │ (d)h(to)f(\014nd)h(the)g(Dulmage-Mendelsohn)f(decomp)r(osition)g(that)h │ │ │ │ (uses)f(matc)n(hing)g(when)h(the)g(graph)0 662 y(is)41 │ │ │ │ b(unit)g(w)n(eigh)n(t)f(and)g(a)h(generalized)e(matc)n(hing)h(tec)n │ │ │ │ (hnique)h(otherwise.)75 b(There)40 b(is)h(a)f(second)g(metho)r(d)h(to)g │ │ │ │ (\014nd)g(the)0 762 y(decomp)r(osition)30 b(using)g(a)h(F)-7 │ │ │ │ b(ord-F)g(ulk)n(erson)28 b(algorithm)i(to)g(\014nd)h(a)f(max)h(\015o)n │ │ │ │ @@ -4808,17 +4797,17 @@ │ │ │ │ 208 5280 y(v)-5 b(alue)27 b Fk(1)g Fl(is)h(returned.)36 │ │ │ │ b(If)28 b(an)g(IO)f(error)e(is)j(encoun)n(tered)f(from)g │ │ │ │ Fk(fscanf)p Fl(,)e(zero)i(is)g(returned.)208 5407 y Fj(Err)l(or)j(che)l │ │ │ │ (cking:)38 b Fl(If)28 b Fk(bpg)f Fl(or)g Fk(fp)f Fl(is)i │ │ │ │ Fk(NULL)e Fl(an)h(error)f(message)g(is)i(prin)n(ted)f(and)g(zero)g(is)g │ │ │ │ (returned.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fl(6)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(BPG)27 b Fe(:)h Fj(DRAFT)f Fe(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 101 390 a Fl(3.)42 b Fk(int)g(BPG_readFromBina)o(ry)o(Fil)o │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(BPG)27 b Fe(:)g Fj(DRAFT)h Fe(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 101 390 a Fl(3.)42 b Fk(int)g(BPG_readFromBina)o(ry)o(Fil)o │ │ │ │ (e)37 b(\()44 b(BPG)e(*bpg,)f(FILE)h(*fp)h(\))g(;)208 │ │ │ │ 523 y Fl(This)24 b(metho)r(d)i(reads)e(a)g Fk(BPG)g Fl(ob)5 │ │ │ │ b(ject)25 b(from)f(a)h(binary)f(\014le.)36 b(If)26 b(there)e(are)g(no)h │ │ │ │ (errors)e(in)i(reading)f(the)h(data,)g(the)g(v)-5 b(alue)208 │ │ │ │ 623 y Fk(1)27 b Fl(is)g(returned.)37 b(If)28 b(an)f(IO)g(error)f(is)h │ │ │ │ (encoun)n(tered)g(from)g Fk(fread)p Fl(,)f(zero)h(is)g(returned.)208 │ │ │ │ 756 y Fj(Err)l(or)j(che)l(cking:)38 b Fl(If)28 b Fk(bpg)f │ │ │ │ @@ -4901,17 +4890,17 @@ │ │ │ │ (the)h(input)g(\014le)f(for)g(the)h Fk(BPG)e Fl(ob)5 │ │ │ │ b(ject.)60 b(It)35 b(m)n(ust)h(b)r(e)f(of)h(the)f(form)g │ │ │ │ Fk(*.bpgf)e Fl(or)390 5407 y Fk(*.bpgb)p Fl(.)i(The)27 │ │ │ │ b Fk(BPG)g Fl(ob)5 b(ject)27 b(is)h(read)e(from)i(the)g(\014le)f(via)g │ │ │ │ (the)h Fk(BPG)p 2449 5407 V 31 w(readFromFile\(\))21 │ │ │ │ b Fl(metho)r(d.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1194 4 v 1360 100 a Fk(BPG)26 │ │ │ │ -b Fe(:)i Fj(DRAFT)110 b Fe(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fl(7)307 390 y Fh(\017)41 b Fl(The)33 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1227 4 v 1393 100 a Fk(BPG)26 │ │ │ │ +b Fe(:)i Fj(DRAFT)110 b Fe(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fl(7)307 390 y Fh(\017)41 b Fl(The)33 │ │ │ │ b Fk(outFile)d Fl(parameter)i(is)g(the)i(output)f(\014le)g(for)g(the)g │ │ │ │ Fk(BPG)f Fl(ob)5 b(ject.)52 b(If)33 b Fk(outFile)d Fl(is)j │ │ │ │ Fk(none)f Fl(then)h(the)g Fk(BPG)390 490 y Fl(ob)5 b(ject)30 │ │ │ │ b(is)f(not)h(written)f(to)h(a)f(\014le.)43 b(Otherwise,)30 │ │ │ │ b(the)g Fk(BPG)p 2219 490 27 4 v 30 w(writeToFile\(\))24 │ │ │ │ b Fl(metho)r(d)30 b(is)g(called)f(to)g(write)h(the)390 │ │ │ │ 589 y(graph)c(to)g(a)h(formatted)f(\014le)h(\(if)g Fk(outFile)d │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -29,15 +29,15 @@ │ │ │ │ │ code for the process outweighed (outline’d?) the BPG code for the data. Now if someone wants to modify │ │ │ │ │ (and hopefully improve) the Kernighan-Lin process, they won’t alter the behavior of the bipartite graph │ │ │ │ │ object. │ │ │ │ │ Finding the Dulmage-Mendelsohn decomposition of a bipartite graph is a little less clear cut. When the │ │ │ │ │ vertices in the bipartite graph have unit weight, the process is straightforward. │ │ │ │ │ • Find a maximum matching. │ │ │ │ │ 1 │ │ │ │ │ - 2 BPG : DRAFT December 20, 2018 │ │ │ │ │ + 2 BPG : DRAFT October 11, 2021 │ │ │ │ │ • Drop an alternating level structure from exposed nodes in X. │ │ │ │ │ • Drop an alternating level structure from exposed nodes in Y . │ │ │ │ │ • Based on the two previous steps, partition X into three pieces and Y into three pieces and form a new │ │ │ │ │ separator from the pieces. │ │ │ │ │ (If these terms are not familiar, see [?]; our present purpose is a discussion of software design, not algorithms.) │ │ │ │ │ Amatching is a very common operation on a bipartite graph, so it is not unreasonable to expand the data │ │ │ │ │ object to include some mechanism for matching, e.g., a mate[] vector. Finding a maximum matching is │ │ │ │ │ @@ -78,15 +78,15 @@ │ │ │ │ │ b │ │ │ │ │ separator size. But, if we consider S ∪ (Adj(S) ∩ B) to be a wide separator, the resulting separator S need │ │ │ │ │ not be a separator with minimal weight that is found within the wide separator. The trick is that some │ │ │ │ │ nodes in Adj(S)∩B might be absorbed into W. │ │ │ │ │ Onecanfindaseparatorwith minimal weight from the wide separator S∪(Adj(S)∩B), in fact from any │ │ │ │ │ wide separator that contains S, by solving a max flow problem. The drawback is that the network induced │ │ │ │ │ by S∪(Adj(S)∩B) need not be bipartite. In other words, a bipartite induced graph necessarily implies two │ │ │ │ │ - BPG : DRAFT December 20, 2018 3 │ │ │ │ │ + BPG : DRAFT October 11, 2021 3 │ │ │ │ │ layers to the wide separator, but the converse does not hold. We were then free to examine wide separators │ │ │ │ │ that had more than two layers from which to find a minimal weight separator. It turns out that three layers │ │ │ │ │ is better than two, in practice. │ │ │ │ │ We did write a separate object to solve our max flow problem; see the Network object. To smooth a │ │ │ │ │ separator, i.e., to improve a 2-set partition, we no longer have need of the bipartite graph object. We leave │ │ │ │ │ the two Dulmage-Mendelsohn methods in the BPG object for historical and sentimental reasons. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ @@ -110,15 +110,15 @@ │ │ │ │ │ This method releases the storage for graph via a call to Graph clearData(), and then the structure’s │ │ │ │ │ fields are then set to their default values with a call to BPG setDefaultFields(). │ │ │ │ │ Error checking: If bpg is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void BPG_free ( BPG *bpg ) ; │ │ │ │ │ This method releases any storage by a call to BPG clearData()then free’s the storage for the structure │ │ │ │ │ with a call to free(). │ │ │ │ │ Error checking: If bpg is NULL, an error message is printed and the program exits. │ │ │ │ │ - 4 BPG : DRAFT December 20, 2018 │ │ │ │ │ + 4 BPG : DRAFT October 11, 2021 │ │ │ │ │ 1.2.2 Initializer methods │ │ │ │ │ There are two initializer methods. │ │ │ │ │ 1. void BPG_init ( BPG *bpg, int nX, int nY, Graph *graph ) ; │ │ │ │ │ This method initializes the BPG object when all three of its fields are given in the calling sequence. The │ │ │ │ │ Graphobject has nX + nY vertices. Note, the BPG object now “owns” the Graph object and so will free │ │ │ │ │ the Graph object when it is free’d. The Graph object may contains edges between nodes in X and Y, │ │ │ │ │ but these edges are swapped to the end of each adjacency list and the size of each list is then set. │ │ │ │ │ @@ -151,15 +151,15 @@ │ │ │ │ │ int mark[], int tag ) ; │ │ │ │ │ This method drops a level structure from vertex root, fills the dist[] vector with the distances from │ │ │ │ │ root, and returns the number of levels created. The mark[] vector is used to mark nodes with the tag │ │ │ │ │ value as they are placed in the level structure. The list[] vector is used to accumulate the nodes as │ │ │ │ │ they are placed in the level structure. │ │ │ │ │ Error checking: If bpg, list, dist or mark is NULL, or if root is not in [0, nX+nY), an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - BPG : DRAFT December 20, 2018 5 │ │ │ │ │ + BPG : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.5 Dulmage-Mendelsohn decomposition method │ │ │ │ │ There is one method to find the Dulmage-Mendelsohn decomposition that uses matching when the graph │ │ │ │ │ is unit weight and a generalized matching technique otherwise. There is a second method to find the │ │ │ │ │ decomposition using a Ford-Fulkerson algorithm to find a max flow and a min-cut on a bipartite network. │ │ │ │ │ This has largely been superceded by the Network object. │ │ │ │ │ 1. void BPG_DMdecomposition ( BPG *bpg, int dmflags[], int stats[], │ │ │ │ │ int msglvl, FILE *msgFile ) │ │ │ │ │ @@ -204,15 +204,15 @@ │ │ │ │ │ the value returned from the called routine. │ │ │ │ │ Error checking: If bpg or fn is NULL, or if fn is not of the form *.bpgf (for a formatted file) or *.bpgb │ │ │ │ │ (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 2. int BPG_readFromFormattedFile ( BPG *bpg, FILE *fp ) ; │ │ │ │ │ This method reads a BPG object from a formatted file. If there are no errors in reading the data, the │ │ │ │ │ value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Error checking: If bpg or fp is NULL an error message is printed and zero is returned. │ │ │ │ │ - 6 BPG : DRAFT December 20, 2018 │ │ │ │ │ + 6 BPG : DRAFT October 11, 2021 │ │ │ │ │ 3. int BPG_readFromBinaryFile ( BPG *bpg, FILE *fp ) ; │ │ │ │ │ This method reads a BPG object from a binary file. If there are no errors in reading the data, the value │ │ │ │ │ 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ Error checking: If bpg or fp is NULL an error message is printed and zero is returned. │ │ │ │ │ 4. int BPG_writeToFile ( BPG *bpg, char *fn ) ; │ │ │ │ │ ThismethodwritesaBPGobjecttoafile. Themethodtriestoopenthefileandifitissuccessful,it then │ │ │ │ │ calls BPG writeFromFormattedFile()or BPG writeFromBinaryFile(),closes the file and returns the │ │ │ │ │ @@ -243,15 +243,15 @@ │ │ │ │ │ BPG writeStats() method). │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means the BPG │ │ │ │ │ object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The inFile parameter is the input file for the BPG object. It must be of the form *.bpgf or │ │ │ │ │ *.bpgb. The BPG object is read from the file via the BPG readFromFile() method. │ │ │ │ │ - BPG : DRAFT December 20, 2018 7 │ │ │ │ │ + BPG : DRAFT October 11, 2021 7 │ │ │ │ │ • The outFile parameter is the output file for the BPG object. If outFile is none then the BPG │ │ │ │ │ object is not written to a file. Otherwise, the BPG writeToFile() method is called to write the │ │ │ │ │ graph to a formatted file (if outFile is of the form *.bpgf), or a binary file (if outFile is of the │ │ │ │ │ form *.bpgb). │ │ │ │ │ 2. extractBPG msglvl msgFile inGraphFile inCompidsIVfile │ │ │ │ │ icomp outMapFile outBPGfile │ │ │ │ │ This driver program reads in a Graph object and an IV object that contains the component ids. (A │ │ ├── ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ ├── Chv.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMSY8 CMCSC10 CMSL10 │ │ │ │ %%+ CMSY10 CMBX10 CMMI10 CMMI8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Chv.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2110,22 +2110,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2299,88 +2299,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4934,16 +4923,16 @@ │ │ │ │ 56 56 56 56 56 56 56 56 56 1[31 46[{}39 99.6264 /CMBX12 │ │ │ │ rf /Fd 137[62 1[62 4[62 4[62 1[62 2[62 1[62 62 30[62 │ │ │ │ 67[{}9 119.552 /CMTT12 rf /Fe 134[71 2[71 75 52 53 55 │ │ │ │ 1[75 67 75 112 3[37 75 67 41 61 75 60 1[65 13[75 2[92 │ │ │ │ 11[103 16[67 67 67 2[37 46[{}25 119.552 /CMBX12 rf /Ff │ │ │ │ 132[52 8[43 1[58 52 58 10[46 99[{}6 90.9091 /CMBX10 rf │ │ │ │ /Fg 149[25 2[45 45 60[91 19[71 71 4[45 12[71 1[71{}9 │ │ │ │ -90.9091 /CMSY10 rf /Fh 141[36 4[76 7[40 1[40 51 29[69 │ │ │ │ -9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ +90.9091 /CMSY10 rf /Fh 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Fi 138[56 1[42 55 1[51 2[68 47 58 4[49 51 1[54 1[56 │ │ │ │ 97[{}11 90.9091 /CMCSC10 rf /Fj 163[47 77[35 14[{}2 66.4176 │ │ │ │ /CMSY8 rf /Fk 134[44 42 2[49 30 37 38 42 46 46 51 74 │ │ │ │ 23 42 1[28 46 42 28 42 46 42 42 46 12[65 1[66 11[59 62 │ │ │ │ 69 2[68 6[28 44[53 1[56 11[{}31 90.9091 /CMTI10 rf /Fl │ │ │ │ 133[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 48 48 48 48 │ │ │ │ @@ -5071,34 +5060,34 @@ │ │ │ │ (\(e.g.,)i Fi(umfp)-6 b(a)n(ck)34 b Fm(and)j Fi(superlu)p │ │ │ │ Fm(\),)f(then)h(w)m(e)g(can)g(mo)s(dify)0 5272 y(the)31 │ │ │ │ b Fl(Chv)e Fm(ob)5 b(ject)31 b(to)g(handle)f(unequal)g(ro)m(ws)h(and)e │ │ │ │ (columns.)141 5407 y(During)h(a)h(factorization,)i(a)e(fron)m(t)f(has)h │ │ │ │ (to)g(tak)m(e)h(part)e(in)g(four)g(distinct)g(op)s(erations.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1117 4 v │ │ │ │ -1299 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Decem)m(b)s(er)g(20,)g │ │ │ │ -(2018)p 2783 100 V 111 399 a Fm(1.)46 b(Assem)m(ble)39 │ │ │ │ -b(en)m(tries)g(from)f(the)h(original)g(matrix)g(\(or)g(matrix)f(p)s │ │ │ │ -(encil\).)65 b(\(See)39 b(the)g Fl(Chv)p 3300 399 29 │ │ │ │ -4 v 33 w(addChevron\(\))227 511 y Fm(metho)s(d.\))111 │ │ │ │ -698 y(2.)46 b(Accum)m(ulate)32 b(up)s(dates)e(from)g(descendan)m(t)g │ │ │ │ -(fron)m(ts.)41 b(\(See)31 b(the)f Fl(Chv)p 2548 698 V │ │ │ │ -34 w(update)p Fg(f)p Fl(S,H,N)p Fg(g)p Fl(\(\))e Fm(metho)s(ds.\))111 │ │ │ │ -885 y(3.)46 b(Assem)m(ble)21 b(an)m(y)g(p)s(ostp)s(oned)e(data)i(from)e │ │ │ │ -(its)i(c)m(hildren)f(fron)m(ts.)37 b(\(See)21 b(the)g │ │ │ │ -Fl(Chv)p 2837 885 V 33 w(assemblePostponedData\(\))227 │ │ │ │ -998 y Fm(metho)s(d.\))111 1185 y(4.)46 b(Compute)20 b(the)h │ │ │ │ -(factorization)i(of)d(the)g(completely)i(assem)m(bled)f(fron)m(t.)38 │ │ │ │ -b(\(See)20 b(the)h Fl(Chv)p 3118 1185 V 33 w(factor\(\))d │ │ │ │ -Fm(metho)s(d.\))141 1396 y(The)35 b(implemen)m(tor)h(of)g(a)f(fron)m(t) │ │ │ │ -h(ob)5 b(ject)36 b(has)f(a)h(great)g(deal)g(of)g(freedom)f(to)h(design) │ │ │ │ -f(the)h(underlying)e(data)0 1509 y(structures.)57 b(W)-8 │ │ │ │ -b(e)37 b(ha)m(v)m(e)h(c)m(hosen)e(to)h(store)g(the)f(en)m(tries)h(in)f │ │ │ │ -(eac)m(h)h(single)g(c)m(hevron)f(in)g(con)m(tiguous)h(memory)f(|)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1153 4 v │ │ │ │ +1335 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2747 100 V 111 399 a Fm(1.)46 b(Assem)m(ble)39 b(en)m(tries)g(from)f │ │ │ │ +(the)h(original)g(matrix)g(\(or)g(matrix)f(p)s(encil\).)65 │ │ │ │ +b(\(See)39 b(the)g Fl(Chv)p 3300 399 29 4 v 33 w(addChevron\(\))227 │ │ │ │ +511 y Fm(metho)s(d.\))111 698 y(2.)46 b(Accum)m(ulate)32 │ │ │ │ +b(up)s(dates)e(from)g(descendan)m(t)g(fron)m(ts.)41 b(\(See)31 │ │ │ │ +b(the)f Fl(Chv)p 2548 698 V 34 w(update)p Fg(f)p Fl(S,H,N)p │ │ │ │ +Fg(g)p Fl(\(\))e Fm(metho)s(ds.\))111 885 y(3.)46 b(Assem)m(ble)21 │ │ │ │ +b(an)m(y)g(p)s(ostp)s(oned)e(data)i(from)e(its)i(c)m(hildren)f(fron)m │ │ │ │ +(ts.)37 b(\(See)21 b(the)g Fl(Chv)p 2837 885 V 33 w │ │ │ │ +(assemblePostponedData\(\))227 998 y Fm(metho)s(d.\))111 │ │ │ │ +1185 y(4.)46 b(Compute)20 b(the)h(factorization)i(of)d(the)g │ │ │ │ +(completely)i(assem)m(bled)f(fron)m(t.)38 b(\(See)20 │ │ │ │ +b(the)h Fl(Chv)p 3118 1185 V 33 w(factor\(\))d Fm(metho)s(d.\))141 │ │ │ │ +1396 y(The)35 b(implemen)m(tor)h(of)g(a)f(fron)m(t)h(ob)5 │ │ │ │ +b(ject)36 b(has)f(a)h(great)g(deal)g(of)g(freedom)f(to)h(design)f(the)h │ │ │ │ +(underlying)e(data)0 1509 y(structures.)57 b(W)-8 b(e)37 │ │ │ │ +b(ha)m(v)m(e)h(c)m(hosen)e(to)h(store)g(the)f(en)m(tries)h(in)f(eac)m │ │ │ │ +(h)h(single)g(c)m(hevron)f(in)g(con)m(tiguous)h(memory)f(|)0 │ │ │ │ 1621 y(the)31 b(\014rst)f(en)m(try)h(of)g(a)h(c)m(hevron)f(is)g(in)f │ │ │ │ (the)h(last)h(ro)m(w)f(of)g(the)g(fron)m(t,)g(the)g(last)h(en)m(try)f │ │ │ │ (of)g(a)g(c)m(hevron)h(is)e(in)h(the)g(last)0 1734 y(column)h(of)h(the) │ │ │ │ g(fron)m(t.)47 b(The)32 b(\014gure)g(b)s(elo)m(w)g(sho)m(ws)h(the)f │ │ │ │ (storage)i(lo)s(cations)g(for)e(the)h(en)m(tries)g(|)g(on)f(the)h(left) │ │ │ │ g(is)0 1847 y(a)e(nonsymmetric)f(c)m(hevron,)h(on)f(the)h(righ)m(t)g │ │ │ │ (is)f(a)h(symmetric)f(or)h(hermitian)f(c)m(hevron.)1290 │ │ │ │ @@ -5264,17 +5253,17 @@ │ │ │ │ b(is)f(inheren)m(tly)g(a)h(serial,)g(single)g(threaded)e(ob)5 │ │ │ │ b(ject,)34 b(meaning)e(it)g(is)g(designed)g(so)g(that)h(only)0 │ │ │ │ 5407 y(one)h(thread)g(or)f(pro)s(cess)h(\\o)m(wns")g(or)g(op)s(erates)g │ │ │ │ (on)g(a)g(particular)g Fl(Chv)f Fm(ob)5 b(ject.)51 b(A)34 │ │ │ │ b Fl(Chv)f Fm(ob)5 b(ject)35 b(is)e(an)h(\\atom")p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1117 4 v 1299 100 a Fl(Chv)29 │ │ │ │ -b Fh(:)41 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2736 100 V 1117 w Fm(3)0 399 y(of)38 b(comm)m(unication.)63 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1153 4 v 1335 100 a Fl(Chv)29 │ │ │ │ +b Fh(:)41 b Fk(DRAFT)121 b Fh(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2700 100 V 1153 w Fm(3)0 399 y(of)38 b(comm)m(unication.)63 │ │ │ │ b(It)37 b(stores)h(p)s(ostp)s(oned)e(ro)m(ws)h(and)g(columns)g(to)h(b)s │ │ │ │ (e)f(assem)m(bled)h(in)f(a)g(paren)m(t)h(fron)m(t.)62 │ │ │ │ b(It)0 511 y(migh)m(t)28 b(ha)m(v)m(e)h(to)f(b)s(e)f(written)g(to)h │ │ │ │ (and)f(read)g(from)g(a)h(\014le)f(in)h(an)f(out-of-core)i(implemen)m │ │ │ │ (tation.)41 b(In)27 b(a)h(distributed)0 624 y(en)m(vironmen)m(t,)34 │ │ │ │ b(it)e(is)h(comm)m(unicated)g(b)s(et)m(w)m(een)g(pro)s(cesses.)46 │ │ │ │ b(F)-8 b(or)33 b(these)g(reasons,)g(w)m(e)g(designed)f(the)h(ob)5 │ │ │ │ @@ -5343,19 +5332,19 @@ │ │ │ │ b Fl(int)h(*colind)29 b Fm(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(base)h │ │ │ │ (address)e(of)i(the)f Fl(int)g Fm(v)m(ector)i(that)f(con)m(tains)g │ │ │ │ (column)g(indices.)136 5407 y Fg(\017)46 b Fl(double)g(*entries)22 │ │ │ │ b Fm(:)37 b(p)s(oin)m(ter)23 b(to)h(the)g(base)g(address)e(of)i(the)g │ │ │ │ Fl(double)d Fm(v)m(ector)k(that)g(con)m(tains)f(the)g(en)m(tries.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1117 4 v │ │ │ │ -1299 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Decem)m(b)s(er)g(20,)g │ │ │ │ -(2018)p 2783 100 V 136 399 a Fg(\017)46 b Fl(DV)h(wrkDV)29 │ │ │ │ -b Fm(:)i(ob)5 b(ject)31 b(that)g(manages)g(the)g(o)m(wned)f(w)m(orking) │ │ │ │ -h(storage.)136 586 y Fg(\017)46 b Fl(Chv)h(*next)29 b │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1153 4 v │ │ │ │ +1335 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2747 100 V 136 399 a Fg(\017)46 b Fl(DV)h(wrkDV)29 b │ │ │ │ +Fm(:)i(ob)5 b(ject)31 b(that)g(manages)g(the)g(o)m(wned)f(w)m(orking)h │ │ │ │ +(storage.)136 586 y Fg(\017)46 b Fl(Chv)h(*next)29 b │ │ │ │ Fm(:)41 b(link)30 b(to)h(a)g(next)f(ob)5 b(ject)32 b(in)e(a)h(singly)f │ │ │ │ (link)m(ed)h(list.)141 798 y(One)f(can)h(query)f(the)g(t)m(yp)s(e)h │ │ │ │ (and)e(symmetry)h(of)h(the)f(ob)5 b(ject)32 b(using)e(these)g(simple)h │ │ │ │ (macros.)136 1011 y Fg(\017)46 b Fl(CHV)p 377 1011 29 │ │ │ │ 4 v 34 w(IS)p 507 1011 V 34 w(REAL\(chv\))27 b Fm(is)k │ │ │ │ Fl(1)f Fm(if)g Fl(chv)g Fm(has)g(real)h(en)m(tries)g(and)f │ │ │ │ Fl(0)g Fm(otherwise.)136 1198 y Fg(\017)46 b Fl(CHV)p │ │ │ │ @@ -5413,17 +5402,17 @@ │ │ │ │ (call)i(to)f Fl(Chv)p 2235 5144 V 33 w(clearData\(\))c │ │ │ │ Fm(and)i(then)h(free)g(the)h(space)f(for)227 5257 y Fl(chv)p │ │ │ │ Fm(.)227 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fm(If)30 b Fl(chv)g Fm(is)g Fl(NULL)p Fm(,)g(an)g(error)g(message)h │ │ │ │ (is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1117 4 v 1299 100 a Fl(Chv)29 │ │ │ │ -b Fh(:)41 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2736 100 V 1117 w Fm(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1153 4 v 1335 100 a Fl(Chv)29 │ │ │ │ +b Fh(:)41 b Fk(DRAFT)121 b Fh(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2700 100 V 1153 w Fm(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)111 595 y Fm(1.)46 b Fl(int)h(Chv_id)f(\()i(Chv)f(*chv)f │ │ │ │ (\))i(;)227 746 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ Fk(id)h Fm(of)g(the)f(ob)5 b(ject.)227 897 y Fk(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(chv)g Fm(is)g │ │ │ │ Fl(NULL)p Fm(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(zero)h │ │ │ │ (is)f(returned.)111 1086 y(2.)46 b Fl(int)h(Chv_type)f(\()h(Chv)g(*chv) │ │ │ │ g(\))g(;)227 1236 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ @@ -5483,19 +5472,19 @@ │ │ │ │ Fk(double)k(pr)-5 b(e)g(cision)32 b(c)-5 b(omplex)30 │ │ │ │ b Fm(en)m(tries,)g(equal)f(to)g(one)g(half)g(the)f(n)m(um)m(b)s(er)227 │ │ │ │ 5256 y(of)j(double)f(precision)g(en)m(tries)h(that)g(are)g(stored.)227 │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(chv)g Fm(is)g Fl(NULL)p Fm(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ (ted)f(and)g(zero)h(is)f(returned.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1117 4 v │ │ │ │ -1299 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Decem)m(b)s(er)g(20,)g │ │ │ │ -(2018)p 2783 100 V 111 399 a Fm(8.)46 b Fl(double)g(*)i(Chv_entries)d │ │ │ │ -(\()i(Chv)g(*chv)g(\))g(;)227 548 y Fm(This)40 b(metho)s(d)h(returns)f │ │ │ │ -(the)h Fk(entries)g Fm(\014eld)g(of)g(the)g(ob)5 b(ject,)45 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1153 4 v │ │ │ │ +1335 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2747 100 V 111 399 a Fm(8.)46 b Fl(double)g(*)i(Chv_entries)d(\()i(Chv) │ │ │ │ +g(*chv)g(\))g(;)227 548 y Fm(This)40 b(metho)s(d)h(returns)f(the)h │ │ │ │ +Fk(entries)g Fm(\014eld)g(of)g(the)g(ob)5 b(ject,)45 │ │ │ │ b(a)c(p)s(oin)m(ter)g(to)h(the)f(base)g(lo)s(cation)i(of)e(the)227 │ │ │ │ 661 y(double)30 b(precision)h(arra)m(y)g(that)g(stores)f(the)h(complex) │ │ │ │ g(data.)227 810 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fm(If)30 b Fl(chv)g Fm(is)g Fl(NULL)p Fm(,)g(an)g(error)g(message)h │ │ │ │ (is)g(prin)m(ted)f(and)g(zero)h(is)f(returned.)111 995 │ │ │ │ y(9.)46 b Fl(double)g(*)i(Chv_diagLocation)43 b(\()48 │ │ │ │ b(Chv)f(*chv,)f(int)h(ichv)f(\))i(;)227 1145 y Fm(This)33 │ │ │ │ @@ -5573,17 +5562,17 @@ │ │ │ │ b Fm(+)g Fl(nU)o Fm(.)227 5294 y Fk(Err)-5 b(or)37 b(che)-5 │ │ │ │ b(cking:)45 b Fm(If)32 b Fl(chv)p Fm(,)h Fl(pReal)e Fm(or)i │ │ │ │ Fl(pImag)e Fm(is)i Fl(NULL)p Fm(,)f(or)h(if)g Fl(irow)e │ │ │ │ Fm(or)i Fl(jcol)f Fm(is)h(out)g(of)g(range,)h(an)e(error)227 │ │ │ │ 5407 y(message)g(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1117 4 v 1299 100 a Fl(Chv)29 │ │ │ │ -b Fh(:)41 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2736 100 V 1117 w Fm(7)66 399 y(15.)46 b Fl(Chv_locationOfComplexEntr)o │ │ │ │ +TeXDict begin 7 6 bop 91 100 1153 4 v 1335 100 a Fl(Chv)29 │ │ │ │ +b Fh(:)41 b Fk(DRAFT)121 b Fh(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2700 100 V 1153 w Fm(7)66 399 y(15.)46 b Fl(Chv_locationOfComplexEntr)o │ │ │ │ (y)c(\()47 b(Chv)g(*chv,)g(int)g(irow,)f(int)h(jcol,)1611 │ │ │ │ 511 y(double)f(**ppReal,)g(double)g(**ppImag)f(\))j(;)227 │ │ │ │ 666 y Fm(This)29 b(metho)s(d)g(\014lls)h Fl(*ppReal)e │ │ │ │ Fm(with)h(a)h(p)s(oin)m(ter)g(to)h(the)f(real)g(part)g(and)f │ │ │ │ Fl(*ppImag)f Fm(with)h(a)h(p)s(oin)m(ter)g(to)h(the)227 │ │ │ │ 779 y(imaginary)37 b(part)g(of)f(the)h(en)m(try)f(in)g(ro)m(w)h │ │ │ │ Fl(irow)e Fm(and)h(column)g Fl(jcol)p Fm(.)58 b(Note,)39 │ │ │ │ @@ -5656,30 +5645,29 @@ │ │ │ │ b(,)33 b(the)f(w)m(orkspace)h(bu\013er)e(o)m(wned)h(b)m(y)f(the)h │ │ │ │ Fl(Chv)f Fm(ob)5 b(ject)33 b(is)f(sen)m(t)h(and)227 5253 │ │ │ │ y(receiv)m(ed.)227 5407 y Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fm(If)30 b Fl(chv)g Fm(is)g Fl(NULL)p Fm(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(zero)h(is)f(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1117 4 v │ │ │ │ -1299 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Decem)m(b)s(er)g(20,)g │ │ │ │ -(2018)p 2783 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 │ │ │ │ -b(metho)s(ds)111 604 y Fm(1.)46 b Fl(int)h(Chv_maxabsInDiagonal11)42 │ │ │ │ -b(\()47 b(Chv)g(*chv,)g(int)g(mark[],)e(int)i(tag,)g(double)f(*pmaxval) │ │ │ │ -g(\))h(;)227 763 y Fm(This)34 b(metho)s(d)g(returns)f(the)i(lo)s │ │ │ │ -(cation)h(of)f(the)g(\014rst)f(tagged)i(elemen)m(t)g(with)e(the)h │ │ │ │ -(largest)h(magnitude)e(in)227 876 y(the)i(diagonal)i(of)e(the)g │ │ │ │ -(\(1,1\))i(blo)s(c)m(k.)58 b(Elemen)m(t)37 b Fl(jj)e │ │ │ │ -Fm(m)m(ust)h(ha)m(v)m(e)h Fl(mark[jj])46 b(=)h(tag)36 │ │ │ │ -b Fm(to)g(b)s(e)g(eligible.)59 b(Its)227 989 y(magnitude)30 │ │ │ │ -b(is)g(returned)e(in)i Fl(*pmaxval)p Fm(.)38 b(Note,)31 │ │ │ │ -b(if)f(the)g(c)m(hevron)f(is)h(complex,)h(the)f(lo)s(cation)h(is)f(in)f │ │ │ │ -(terms)227 1101 y(of)g(the)g(complex)g(en)m(tries,)h(not)e(in)h(the)f │ │ │ │ -(real)i(en)m(tries,)f(i.e.,)i(if)d Fl(k)48 b(=)f(Chv)p │ │ │ │ -2654 1101 29 4 v 34 w(maxabsDiagonal11\(chv,..)o(.\))p │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1153 4 v │ │ │ │ +1335 w Fl(Chv)30 b Fh(:)40 b Fk(DRAFT)31 b Fh(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2747 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 b(metho)s(ds)111 │ │ │ │ +604 y Fm(1.)46 b Fl(int)h(Chv_maxabsInDiagonal11)42 b(\()47 │ │ │ │ +b(Chv)g(*chv,)g(int)g(mark[],)e(int)i(tag,)g(double)f(*pmaxval)g(\))h │ │ │ │ +(;)227 763 y Fm(This)34 b(metho)s(d)g(returns)f(the)i(lo)s(cation)h(of) │ │ │ │ +f(the)g(\014rst)f(tagged)i(elemen)m(t)g(with)e(the)h(largest)h │ │ │ │ +(magnitude)e(in)227 876 y(the)i(diagonal)i(of)e(the)g(\(1,1\))i(blo)s │ │ │ │ +(c)m(k.)58 b(Elemen)m(t)37 b Fl(jj)e Fm(m)m(ust)h(ha)m(v)m(e)h │ │ │ │ +Fl(mark[jj])46 b(=)h(tag)36 b Fm(to)g(b)s(e)g(eligible.)59 │ │ │ │ +b(Its)227 989 y(magnitude)30 b(is)g(returned)e(in)i Fl(*pmaxval)p │ │ │ │ +Fm(.)38 b(Note,)31 b(if)f(the)g(c)m(hevron)f(is)h(complex,)h(the)f(lo)s │ │ │ │ +(cation)h(is)f(in)f(terms)227 1101 y(of)g(the)g(complex)g(en)m(tries,)h │ │ │ │ +(not)e(in)h(the)f(real)i(en)m(tries,)f(i.e.,)i(if)d Fl(k)48 │ │ │ │ +b(=)f(Chv)p 2654 1101 29 4 v 34 w(maxabsDiagonal11\(chv,..)o(.\))p │ │ │ │ Fm(,)227 1214 y(then)30 b(the)h(complex)g(en)m(try)g(is)f(found)f(in)h │ │ │ │ Fl(chv->entries[2*kk:2*kk+1])o Fm(.)227 1373 y Fk(Err)-5 │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fm(If)25 b Fl(chv)p Fm(,)g │ │ │ │ Fl(mark)g Fm(or)g Fl(pmaxval)f Fm(is)h Fl(NULL)p Fm(,)g(an)g(error)g │ │ │ │ (message)i(is)f(prin)m(ted)f(and)f(the)i(program)227 │ │ │ │ 1486 y(exits.)111 1692 y(2.)46 b Fl(int)h(Chv_maxabsInRow11)c(\()48 │ │ │ │ b(Chv)f(*chv,)f(int)h(irow,)f(int)h(colmark[],)1373 1804 │ │ │ │ @@ -5735,17 +5723,17 @@ │ │ │ │ b Fm(If)33 b Fl(chv)g Fm(is)h Fl(NULL)f Fm(or)h Fl(irow)f │ │ │ │ Fm(is)h(not)g(in)g Fl([0,n1-1])p Fm(,)f(an)g(error)h(message)h(is)f │ │ │ │ (prin)m(ted)g(and)227 5089 y(the)d(program)f(exits.)111 │ │ │ │ 5294 y(5.)46 b Fl(int)h(Chv_maxabsInColumn)c(\()k(Chv)g(*chv,)g(int)g │ │ │ │ (jcol,)f(int)h(rowmark[],)1420 5407 y(int)g(tag,)g(double)f(*pmaxval)g │ │ │ │ (\))h(;)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1117 4 v 1299 100 a Fl(Chv)29 │ │ │ │ -b Fh(:)41 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2736 100 V 1117 w Fm(9)227 399 y(This)g(metho)s(d)g(returns)g(the)h(lo) │ │ │ │ +TeXDict begin 9 8 bop 91 100 1153 4 v 1335 100 a Fl(Chv)29 │ │ │ │ +b Fh(:)41 b Fk(DRAFT)121 b Fh(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2700 100 V 1153 w Fm(9)227 399 y(This)g(metho)s(d)g(returns)g(the)h(lo) │ │ │ │ s(cation)h(of)f(the)g(\014rst)f(elemen)m(t)i(with)f(the)g(largest)h │ │ │ │ (magnitude)f(in)f(column)227 511 y Fl(jcol)p Fm(.)52 │ │ │ │ b(Elemen)m(t)35 b Fl(jj)f Fm(m)m(ust)g(ha)m(v)m(e)i Fl(rowmark[jj])45 │ │ │ │ b(=)i(tag)33 b Fm(to)j(b)s(e)d(eligible.)55 b(Its)34 │ │ │ │ b(magnitude)h(is)f(returned)227 624 y(in)28 b Fl(*pmaxval)p │ │ │ │ Fm(.)38 b(Note,)30 b(if)e(the)h(c)m(hevron)f(is)g(complex,)i(the)e(lo)s │ │ │ │ (cation)i(is)e(in)g(terms)g(of)h(the)f(complex)h(en)m(tries,)227 │ │ │ │ @@ -5829,17 +5817,17 @@ │ │ │ │ (symmetric,)h(w)m(e)f(can)h(\014nd)d(a)j(1)21 b Fg(\002)g │ │ │ │ Fm(1)33 b(or)f(2)22 b Fg(\002)f Fm(2)32 b(piv)m(ot.)47 │ │ │ │ b(If)31 b(the)i(c)m(hevron)227 5294 y(is)d(nonsymmetric,)g(w)m(e)h │ │ │ │ (only)f(\014nd)e(a)i(1)20 b Fg(\002)f Fm(1)30 b(piv)m(ot.)42 │ │ │ │ b(A)30 b(return)e(v)-5 b(alue)31 b(of)f(zero)h(means)e(that)i(no)f(piv) │ │ │ │ m(ot)h(w)m(as)227 5407 y(found.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1095 4 │ │ │ │ -v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2806 100 V 227 399 a Fk(Err)-5 b(or)47 b(che)-5 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1131 4 │ │ │ │ +v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 227 399 a Fk(Err)-5 b(or)47 b(che)-5 │ │ │ │ b(cking:)67 b Fm(If)43 b Fl(chv)p Fm(,)j Fl(workDV)p │ │ │ │ Fm(,)d Fl(pirow)p Fm(,)j Fl(pjcol)c Fm(or)i Fl(pntest)e │ │ │ │ Fm(is)h Fl(NULL)p Fm(,)g(or)h(if)g Fl(tau)j Fb(<)g Fm(1)p │ │ │ │ Fb(:)p Fm(0,)h(or)c(if)227 511 y Fl(ndelay)24 b Fb(<)h │ │ │ │ Fm(0,)31 b(an)f(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ (program)g(exits.)0 782 y Fc(1.2.6)112 b(Up)s(date)39 │ │ │ │ b(metho)s(ds)111 980 y Fm(1.)46 b Fl(void)h(Chv_updateS)e(\()i(Chv)g │ │ │ │ @@ -5937,17 +5925,17 @@ │ │ │ │ b Fb(<)h Fm(0,)30 b(then)f(the)h(en)m(try)f(is)g(found)f(in)h(lo)s │ │ │ │ (cation)i Fl(\(ichv-off,)45 b(ichv\))28 b Fm(of)h(the)g(matrix.)227 │ │ │ │ 5407 y(The)35 b(v)-5 b(alue\(s\))37 b(in)e Fl(alpha[])e │ │ │ │ Fm(form)i(a)h(scalar)h(used)d(to)i(scale)h(the)f(en)m(tire)g(c)m │ │ │ │ (hevron)g(for)f(its)h(assem)m(bly)-8 b(.)57 b(A)p eop │ │ │ │ end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ +TeXDict begin 11 10 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ g(in)e Fb(A)h Fm(\(from)g(the)g(p)s(encil)g Fb(A)15 b │ │ │ │ Fm(+)g Fb(\033)s(B)5 b Fm(\))28 b(w)m(ould)f(ha)m(v)m(e)i │ │ │ │ Fl(alpha[])46 b(=)i(\(1.0,0.0\))p Fm(;)26 b(to)227 511 │ │ │ │ y(assem)m(ble)32 b(en)m(tries)f(in)f Fb(B)35 b Fm(\(from)30 │ │ │ │ b(the)g(p)s(encil)h Fb(A)20 b Fm(+)g Fb(\033)s(B)5 b │ │ │ │ Fm(\))30 b(w)m(ould)g(ha)m(v)m(e)i Fl(alpha[])23 b Fm(=)i(\()p │ │ │ │ Fb(R)q(eal)r Fm(\()p Fb(\033)s Fm(\))p Fb(;)15 b(I)7 │ │ │ │ @@ -6035,17 +6023,17 @@ │ │ │ │ (functionalit)m(y)-8 b(,)33 b(where)d(if)h(a)g(small)g(or)g(zero)g(en)m │ │ │ │ (try)g(is)g(found)e(in)i(the)g(diagonal)g(elemen)m(t)227 │ │ │ │ 5294 y(that)45 b(is)f(to)h(b)s(e)f(eliminated,)49 b(some)c(action)h │ │ │ │ (can)e(b)s(e)g(tak)m(en.)83 b(The)44 b(return)f(v)-5 │ │ │ │ b(alue)45 b(is)f(the)h(n)m(um)m(b)s(er)e(of)227 5407 │ │ │ │ y(eliminated)32 b(ro)m(ws)e(and)g(columns.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1095 │ │ │ │ -4 v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,) │ │ │ │ -f(2018)p 2806 100 V 227 399 a Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1131 │ │ │ │ +4 v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 227 399 a Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fm(If)30 b Fl(chv)g Fm(is)g Fl(NULL)p Fm(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 │ │ │ │ 588 y(3.)46 b Fl(int)h(Chv_r1upd)e(\()j(Chv)f(*chv)f(\))i(;)227 │ │ │ │ 739 y Fm(This)29 b(metho)s(d)f(is)i(used)e(during)g(the)h │ │ │ │ (factorization)j(of)e(a)f(fron)m(t,)h(p)s(erforming)e(a)i(rank-one)f │ │ │ │ (up)s(date)f(of)i(the)227 852 y(c)m(hevron.)41 b(The)30 │ │ │ │ b(return)f(v)-5 b(alue)31 b(is)g Fl(1)f Fm(if)g(the)h(piv)m(ot)g(is)f │ │ │ │ @@ -6113,17 +6101,17 @@ │ │ │ │ 1172 5260 V 33 w(11)29 b Fm(=)-15 b Fg(\))30 b Fm(coun)m(t)h(strict)g │ │ │ │ (upp)s(er)e(en)m(tries)i(in)f(the)g(\(1,1\))j(blo)s(c)m(k)336 │ │ │ │ 5407 y Fg(\017)46 b Fl(CHV)p 577 5407 V 34 w(UPPER)p │ │ │ │ 851 5407 V 33 w(12)30 b Fm(=)-16 b Fg(\))30 b Fm(coun)m(t)h(upp)s(er)e │ │ │ │ (en)m(tries)i(in)f(the)g(\(1,2\))j(blo)s(c)m(k)p eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(13)227 399 y(This)f(metho)s(d)g(is)g(used)g(to)h │ │ │ │ +TeXDict begin 13 12 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(13)227 399 y(This)f(metho)s(d)g(is)g(used)g(to)h │ │ │ │ (compute)f(the)h(necessary)g(storage)h(to)f(store)g(a)g(c)m(hevron)f │ │ │ │ (as)h(a)g(dense)f(fron)m(t.)227 551 y Fk(Err)-5 b(or)36 │ │ │ │ b(che)-5 b(cking:)45 b Fm(If)32 b Fl(chv)g Fm(is)h Fl(NULL)e │ │ │ │ Fm(or)i(if)g Fl(countflag)d Fm(is)i(not)h(v)-5 b(alid,)34 │ │ │ │ b(an)f(error)f(message)i(is)e(prin)m(ted)h(and)227 664 │ │ │ │ y(the)e(program)f(exits.)111 855 y(2.)46 b Fl(int)h │ │ │ │ (Chv_countBigEntries)c(\()k(Chv)g(*chv,)f(int)h(npivot,)f(int)h │ │ │ │ @@ -6203,17 +6191,17 @@ │ │ │ │ b(che)-5 b(cking:)45 b Fm(If)32 b Fl(chv)g Fm(or)g Fl(dvec)g │ │ │ │ Fm(is)h Fl(NULL)e Fm(or)i(if)f Fl(length)f Fm(is)i(less)g(than)f(the)h │ │ │ │ (n)m(um)m(b)s(er)e(of)i(en)m(tries)g(to)h(b)s(e)227 5294 │ │ │ │ y(copied,)k(or)d(if)g Fl(copyflag)e Fm(or)j Fl(storeflag)c │ │ │ │ Fm(is)k(v)-5 b(alid,)37 b(an)e(error)g(message)i(is)e(prin)m(ted)g(and) │ │ │ │ g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 1095 │ │ │ │ -4 v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,) │ │ │ │ -f(2018)p 2806 100 V 111 399 a Fm(4.)46 b Fl(int)h │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 1131 │ │ │ │ +4 v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 111 399 a Fm(4.)46 b Fl(int)h │ │ │ │ (Chv_copyBigEntriesToVecto)o(r)42 b(\()47 b(Chv)g(*chv,)g(int)f │ │ │ │ (npivot,)g(int)h(pivotsizes[],)1420 511 y(int)g(sizes[],)f(int)h │ │ │ │ (ivec[],)f(double)g(dvec[],)1420 624 y(int)h(copyflag,)f(int)h │ │ │ │ (storeflag,)e(double)h(droptol)f(\))j(;)227 769 y Fm(This)32 │ │ │ │ b(metho)s(d)f(also)j(copies)f(some)g(en)m(tries)g(the)f(c)m(hevron)h │ │ │ │ (ob)5 b(ject)33 b(in)m(to)g(a)g(double)f(precision)g(v)m(ector,)j(but) │ │ │ │ 227 882 y(only)40 b(those)f(en)m(tries)h(whose)f(magnitude)g(is)h │ │ │ │ @@ -6302,17 +6290,17 @@ │ │ │ │ 227 5294 y(width)e Fl(nD)h Fm(of)g(the)g(c)m(hevron.)58 │ │ │ │ b(The)36 b(ro)m(w)g(ids)f(of)i(the)f(t)m(w)m(o)h(ro)m(ws)f(are)g(also)h │ │ │ │ (sw)m(app)s(ed.)57 b(If)35 b(the)i(c)m(hevron)f(is)227 │ │ │ │ 5407 y(symmetric,)31 b(then)f(the)h(metho)s(d)f Fl(Chv)p │ │ │ │ 1540 5407 V 33 w(swapRowsAndColumns\(\))25 b Fm(is)30 │ │ │ │ b(called.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(15)227 399 y Fk(Err)-5 b(or)35 b(che)-5 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(15)227 399 y Fk(Err)-5 b(or)35 b(che)-5 │ │ │ │ b(cking:)43 b Fm(If)31 b Fl(chv)g Fm(is)h Fl(NULL)e Fm(or)i(if)g │ │ │ │ Fl(irow)e Fm(or)i Fl(jrow)e Fm(are)i(less)g(than)f(0)i(or)e(greater)i │ │ │ │ (than)e(or)h(equal)g(to)227 511 y Fl(nD)p Fm(,)e(an)h(error)f(message)h │ │ │ │ (is)f(prin)m(ted)g(and)g(the)h(program)f(exits.)111 699 │ │ │ │ y(2.)46 b Fl(void)h(Chv_swapColumns)d(\()j(Chv)g(*chv,)f(int)h(icol,)g │ │ │ │ (int)f(jcol)h(\))h(;)227 849 y Fm(This)29 b(metho)s(d)g(sw)m(aps)g │ │ │ │ (columns)g Fl(icol)g Fm(and)g Fl(jcol)f Fm(of)h(the)h(c)m(hevron.)41 │ │ │ │ @@ -6382,39 +6370,39 @@ │ │ │ │ Fm(is)i(p)s(ositiv)m(e,)k(the)41 b(\014rst)g Fl(shift)f │ │ │ │ Fm(c)m(hevrons)i(are)g(remo)m(v)m(ed)g(from)f(the)h(c)m(hevron.)75 │ │ │ │ b(If)41 b Fl(shift)f Fm(is)227 5407 y(negativ)m(e,)j(the)38 │ │ │ │ b Fl(shift)f Fm(previous)g(c)m(hevrons)h(are)h(prep)s(ended)d(to)i(the) │ │ │ │ h(c)m(hevron.)64 b(This)37 b(is)h(a)g(dangerous)p eop │ │ │ │ end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 1095 │ │ │ │ -4 v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,) │ │ │ │ -f(2018)p 2806 100 V 227 399 a Fm(metho)s(d)j(as)h(it)g(c)m(hanges)h │ │ │ │ -(the)e(state)i(of)f(the)g(ob)5 b(ject.)54 b(W)-8 b(e)35 │ │ │ │ -b(use)g(it)g(during)e(the)i(factorization)i(of)e(a)g(fron)m(t,)227 │ │ │ │ -511 y(where)c(one)g Fl(Chv)e Fm(ob)5 b(ject)32 b(p)s(oin)m(ts)f(to)g │ │ │ │ -(the)g(en)m(tire)h(c)m(hevron)f(in)f(order)g(to)i(sw)m(ap)e(ro)m(ws)h │ │ │ │ -(and)f(columns,)h(while)227 624 y(another)36 b(c)m(hevron)g(p)s(oin)m │ │ │ │ -(ts)g(to)g(the)g(uneliminated)g(ro)m(ws)g(and)f(columns)g(of)h(the)g │ │ │ │ -(fron)m(t.)57 b(It)36 b(is)g(the)g(latter)227 737 y(c)m(hevron)31 │ │ │ │ -b(that)g(is)f(shifted)g(during)f(the)i(factorization.)227 │ │ │ │ -910 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ -b Fl(chv)g Fm(is)g Fl(NULL)f Fm(an)i(error)f(message)h(is)g(prin)m(ted) │ │ │ │ -f(and)f(the)i(program)f(exits.)111 1142 y(6.)46 b Fl(void)h │ │ │ │ -(Chv_fill11block)d(\()j(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 │ │ │ │ -1315 y Fm(This)27 b(metho)s(d)h(is)g(used)f(to)h(\014ll)g(a)h │ │ │ │ -Fl(A2)e Fm(dense)g(matrix)i(ob)5 b(ject)28 b(with)g(the)g(en)m(tries)h │ │ │ │ -(in)e(the)h(\(1)p Fb(;)15 b Fm(1\))30 b(blo)s(c)m(k)f(of)f(the)227 │ │ │ │ -1428 y(c)m(hevron.)227 1601 y Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fm(If)30 b Fl(chv)g Fm(or)g Fl(mtx)g Fm(is)g │ │ │ │ -Fl(NULL)p Fm(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ -(program)f(exits.)111 1833 y(7.)46 b Fl(void)h(Chv_fill12block)d(\()j │ │ │ │ -(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 2006 y Fm(This)27 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 1131 │ │ │ │ +4 v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 227 399 a Fm(metho)s(d)j(as)h(it)g(c)m(hanges)h(the) │ │ │ │ +e(state)i(of)f(the)g(ob)5 b(ject.)54 b(W)-8 b(e)35 b(use)g(it)g(during) │ │ │ │ +e(the)i(factorization)i(of)e(a)g(fron)m(t,)227 511 y(where)c(one)g │ │ │ │ +Fl(Chv)e Fm(ob)5 b(ject)32 b(p)s(oin)m(ts)f(to)g(the)g(en)m(tire)h(c)m │ │ │ │ +(hevron)f(in)f(order)g(to)i(sw)m(ap)e(ro)m(ws)h(and)f(columns,)h(while) │ │ │ │ +227 624 y(another)36 b(c)m(hevron)g(p)s(oin)m(ts)g(to)g(the)g │ │ │ │ +(uneliminated)g(ro)m(ws)g(and)f(columns)g(of)h(the)g(fron)m(t.)57 │ │ │ │ +b(It)36 b(is)g(the)g(latter)227 737 y(c)m(hevron)31 b(that)g(is)f │ │ │ │ +(shifted)g(during)f(the)i(factorization.)227 910 y Fk(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(chv)g Fm(is)g │ │ │ │ +Fl(NULL)f Fm(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ +(program)f(exits.)111 1142 y(6.)46 b Fl(void)h(Chv_fill11block)d(\()j │ │ │ │ +(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 1315 y Fm(This)27 │ │ │ │ b(metho)s(d)h(is)g(used)f(to)h(\014ll)g(a)h Fl(A2)e Fm(dense)g(matrix)i │ │ │ │ (ob)5 b(ject)28 b(with)g(the)g(en)m(tries)h(in)e(the)h(\(1)p │ │ │ │ +Fb(;)15 b Fm(1\))30 b(blo)s(c)m(k)f(of)f(the)227 1428 │ │ │ │ +y(c)m(hevron.)227 1601 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fm(If)30 b Fl(chv)g Fm(or)g Fl(mtx)g Fm(is)g Fl(NULL)p │ │ │ │ +Fm(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ +(exits.)111 1833 y(7.)46 b Fl(void)h(Chv_fill12block)d(\()j(Chv)g │ │ │ │ +(*chv,)f(A2)h(*mtx)g(\))h(;)227 2006 y Fm(This)27 b(metho)s(d)h(is)g │ │ │ │ +(used)f(to)h(\014ll)g(a)h Fl(A2)e Fm(dense)g(matrix)i(ob)5 │ │ │ │ +b(ject)28 b(with)g(the)g(en)m(tries)h(in)e(the)h(\(1)p │ │ │ │ Fb(;)15 b Fm(2\))30 b(blo)s(c)m(k)f(of)f(the)227 2119 │ │ │ │ y(c)m(hevron.)227 2292 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fm(If)30 b Fl(chv)g Fm(or)g Fl(mtx)g Fm(is)g Fl(NULL)p │ │ │ │ Fm(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)111 2524 y(8.)46 b Fl(void)h(Chv_fill21block)d(\()j(Chv)g │ │ │ │ (*chv,)f(A2)h(*mtx)g(\))h(;)227 2697 y Fm(This)27 b(metho)s(d)h(is)g │ │ │ │ (used)f(to)h(\014ll)g(a)h Fl(A2)e Fm(dense)g(matrix)i(ob)5 │ │ │ │ @@ -6446,17 +6434,17 @@ │ │ │ │ y(12.)46 b Fl(void)h(Chv_zero)e(\()j(Chv)f(*chv)f(\))i(;)227 │ │ │ │ 5234 y Fm(This)30 b(metho)s(d)g(zero)s(es)h(the)f(en)m(tries)h(in)f │ │ │ │ (the)h(c)m(hevron.)227 5407 y Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fm(If)30 b Fl(chv)g Fm(is)g Fl(NULL)p Fm(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ +TeXDict begin 17 16 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ b(metho)s(ds)111 592 y Fm(1.)46 b Fl(void)h(Chv_writeForHumanEye)42 │ │ │ │ b(\()48 b(Chv)f(*chv,)f(FILE)h(*fp)f(\))i(;)227 739 y │ │ │ │ Fm(This)30 b(metho)s(d)g(writes)g(a)h Fl(Chv)e Fm(ob)5 │ │ │ │ b(ject)32 b(to)f(a)f(\014le)h(in)f(an)g(easily)i(readable)f(format.)227 │ │ │ │ 887 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(chv)g Fm(or)g Fl(fp)g Fm(are)h Fl(NULL)p Fm(,)e(an)h(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g(returned.)111 │ │ │ │ @@ -6516,17 +6504,17 @@ │ │ │ │ Fm(is)h(\(1.0,0.0\),)j(when)c(w)m(e)h(are)g(just)g(loading)g(matrix)g │ │ │ │ (en)m(tries)h(in)m(to)g(a)427 5294 y(fron)m(t.)41 b(Ho)m(w)m(ev)m(er,) │ │ │ │ 33 b(when)c(w)m(e)i(factor)g Fb(A)20 b Fm(+)g Fb(\013B)5 │ │ │ │ b Fm(,)31 b(the)f(en)m(tries)h(of)g Fb(B)j Fm(will)d(b)s(e)f(loaded)h │ │ │ │ (with)f Fl(alpha)e Fm(set)427 5407 y(equal)j(to)g Fb(\013)p │ │ │ │ Fm([0)c(:)e(1].)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1095 │ │ │ │ -4 v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,) │ │ │ │ -f(2018)p 2806 100 V 111 399 a Fm(2.)46 b Fl(test_assmbChv)e(msglvl)j │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1131 │ │ │ │ +4 v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 111 399 a Fm(2.)46 b Fl(test_assmbChv)e(msglvl)j │ │ │ │ (msgFile)e(nDJ)i(nUJ)g(nDI)g(nUI)g(type)g(symflag)e(seed)227 │ │ │ │ 553 y Fm(This)30 b(driv)m(er)h(program)g(tests)g(the)h │ │ │ │ Fl(Chv)p 1585 553 29 4 v 33 w(assembleChv)c Fm(metho)s(d.)42 │ │ │ │ b(It)31 b(assem)m(bles)g(a)h(c)m(hevron)f Fb(T)3517 567 │ │ │ │ y Fa(I)3588 553 y Fm(in)m(to)h Fb(T)3826 567 y Fa(J)3875 │ │ │ │ 553 y Fm(,)227 666 y(as)c(is)f(done)h(during)e(the)h(assem)m(bly)h(of)g │ │ │ │ (p)s(ostp)s(oned)e(ro)m(ws)h(and)g(columns)g(during)f(the)i │ │ │ │ @@ -6603,17 +6591,17 @@ │ │ │ │ 881 5144 V 32 w(NONSYMMETRIC)p Fm(.)336 5294 y Fg(\017)46 │ │ │ │ b Fm(The)32 b Fl(pivotingflag)d Fm(parameter)k(is)g(the)g(piv)m(oting)g │ │ │ │ (\015ag)g(|)g Fl(SPOOLES)p 2906 5294 V 32 w(NO)p 3034 │ │ │ │ 5294 V 34 w(PIVOTING)d Fm(for)j(no)f(piv-)427 5407 y(oting,)g │ │ │ │ Fl(SPOOLES)p 1027 5407 V 32 w(PIVOTING)c Fm(for)j(piv)m(oting.)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(19)336 399 y Fg(\017)46 b Fm(The)35 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(19)336 399 y Fg(\017)46 b Fm(The)35 │ │ │ │ b Fl(storeflag)e Fm(parameter)j(is)g(the)g(storage)h(\015ag,)g(to)g │ │ │ │ (store)f(b)m(y)f(ro)m(ws,)i(use)f Fl(SPOOLES)p 3528 399 │ │ │ │ 29 4 v 32 w(BY)p 3656 399 V 34 w(ROWS)p Fm(,)427 511 │ │ │ │ y(to)31 b(store)g(b)m(y)g(columns,)f(use)g Fl(SPOOLES)p │ │ │ │ 1766 511 V 32 w(BY)p 1894 511 V 34 w(COLUMNS)p Fm(.)336 │ │ │ │ 651 y Fg(\017)46 b Fm(The)30 b Fl(seed)f Fm(parameter)i(is)g(a)f │ │ │ │ (random)g(n)m(um)m(b)s(er)f(seed.)111 853 y(4.)46 b Fl │ │ │ │ @@ -6689,21 +6677,21 @@ │ │ │ │ Fm(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fl(msgFile)e Fm(is)i Fl(stdout)p Fm(,)g(then)g(the)427 │ │ │ │ 5294 y(message)27 b(\014le)f(is)g Fk(stdout)p Fm(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fk(app)-5 b(end)28 │ │ │ │ b Fm(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 5407 │ │ │ │ y(data.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 1095 │ │ │ │ -4 v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,) │ │ │ │ -f(2018)p 2806 100 V 336 399 a Fg(\017)46 b Fm(The)30 │ │ │ │ -b Fl(nD)g Fm(parameter)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h │ │ │ │ -(and)e(columns)h(in)h(the)f(\(1,1\))i(blo)s(c)m(k.)336 │ │ │ │ -551 y Fg(\017)46 b Fm(The)30 b Fl(nU)g Fm(parameter)h(is)f(the)h(n)m │ │ │ │ -(um)m(b)s(er)e(of)h(columns)g(in)g(the)h(\(1,2\))h(blo)s(c)m(k.)336 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 1131 │ │ │ │ +4 v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 336 399 a Fg(\017)46 b Fm(The)30 b │ │ │ │ +Fl(nD)g Fm(parameter)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(and) │ │ │ │ +e(columns)h(in)h(the)f(\(1,1\))i(blo)s(c)m(k.)336 551 │ │ │ │ +y Fg(\017)46 b Fm(The)30 b Fl(nU)g Fm(parameter)h(is)f(the)h(n)m(um)m │ │ │ │ +(b)s(er)e(of)h(columns)g(in)g(the)h(\(1,2\))h(blo)s(c)m(k.)336 │ │ │ │ 703 y Fg(\017)46 b Fm(The)30 b Fl(type)f Fm(parameter)i(denotes)g(the)g │ │ │ │ (t)m(yp)s(e)f(of)h(en)m(tries)g(|)f Fl(SPOOLES)p 2818 │ │ │ │ 703 29 4 v 32 w(REAL)g Fm(or)g Fl(SPOOLES)p 3519 703 │ │ │ │ V 32 w(COMPLEX)336 855 y Fg(\017)46 b Fm(The)20 b Fl(symflag)e │ │ │ │ Fm(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g Fl(SPOOLES)p │ │ │ │ 2640 855 V 33 w(SYMMETRIC)p Fm(,)e Fl(SPOOLES)p 3484 │ │ │ │ 855 V 32 w(HERMITIAN)427 968 y Fm(or)31 b Fl(SPOOLES)p │ │ │ │ @@ -6771,17 +6759,17 @@ │ │ │ │ b Fl(rowerror)p Fm(,)f Fl(colerror)p Fm(,)h Fl(rowerror11)p │ │ │ │ Fm(,)e Fl(colerror11)f Fm(and)h Fl(diag11error)p Fm(.)59 │ │ │ │ b(All)38 b(should)f(b)s(e)227 5067 y(zero.)336 5294 y │ │ │ │ Fg(\017)46 b Fm(The)e Fl(msglvl)e Fm(parameter)j(determines)f(the)g │ │ │ │ (amoun)m(t)h(of)f(output.)82 b(Use)44 b Fl(msglvl)i(=)i(1)c │ │ │ │ Fm(for)g(just)427 5407 y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(21)336 399 y Fg(\017)46 b Fm(The)33 │ │ │ │ +TeXDict begin 21 20 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(21)336 399 y Fg(\017)46 b Fm(The)33 │ │ │ │ b Fl(msgFile)e Fm(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fl(msgFile)e Fm(is)i Fl(stdout)p Fm(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fk(stdout)p Fm(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fk(app)-5 b(end)28 │ │ │ │ b Fm(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)336 772 y Fg(\017)46 b Fm(The)30 b Fl(nD)g Fm(parameter)h(is)f │ │ │ │ (the)h(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(and)e(columns)h(in)h(the)f │ │ │ │ @@ -6851,18 +6839,18 @@ │ │ │ │ (\(1,1\))i(blo)s(c)m(k.)336 5259 y Fg(\017)46 b Fm(The)30 │ │ │ │ b Fl(nU)g Fm(parameter)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h(columns)g │ │ │ │ (in)g(the)h(\(1,2\))h(blo)s(c)m(k.)336 5407 y Fg(\017)46 │ │ │ │ b Fm(The)30 b Fl(type)f Fm(parameter)i(denotes)g(the)g(t)m(yp)s(e)f(of) │ │ │ │ h(en)m(tries)g(|)f Fl(SPOOLES)p 2818 5407 V 32 w(REAL)g │ │ │ │ Fm(or)g Fl(SPOOLES)p 3519 5407 V 32 w(COMPLEX)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1095 │ │ │ │ -4 v 1277 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Decem)m(b)s(er)i(20,) │ │ │ │ -f(2018)p 2806 100 V 336 399 a Fg(\017)46 b Fm(The)20 │ │ │ │ -b Fl(symflag)e Fm(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1131 │ │ │ │ +4 v 1313 w Fl(Chv)29 b Fh(:)41 b Fk(DRAFT)30 b Fh(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2770 100 V 336 399 a Fg(\017)46 b Fm(The)20 b │ │ │ │ +Fl(symflag)e Fm(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g │ │ │ │ Fl(SPOOLES)p 2640 399 29 4 v 33 w(SYMMETRIC)p Fm(,)e │ │ │ │ Fl(SPOOLES)p 3484 399 V 32 w(HERMITIAN)427 511 y Fm(or)31 │ │ │ │ b Fl(SPOOLES)p 881 511 V 32 w(NONSYMMETRIC)p Fm(.)336 │ │ │ │ 659 y Fg(\017)46 b Fm(The)30 b Fl(seed)f Fm(parameter)i(is)g(a)f │ │ │ │ (random)g(n)m(um)m(b)s(er)f(seed.)66 876 y(10.)46 b Fl(test_swap)g │ │ │ │ (msglvl)g(msgFile)f(nD)j(nU)f(type)f(symflag)g(seed)227 │ │ │ │ 1027 y Fm(This)26 b(driv)m(er)g(program)g(tests)h(three)g(metho)s(ds:) │ │ │ │ @@ -6937,17 +6925,17 @@ │ │ │ │ 5260 y Fg(\017)46 b Fm(The)30 b Fl(ncolT)f Fm(parameter)i(is)f(the)h(n) │ │ │ │ m(um)m(b)s(er)e(of)i(columns)f(in)g(the)g(\(1,1\))i(and)e(\(1,2\))i │ │ │ │ (blo)s(c)m(ks)f(of)g Fb(T)13 b Fm(.)336 5407 y Fg(\017)46 │ │ │ │ b Fm(The)30 b Fl(nDT)g Fm(parameter)g(is)h(the)f(n)m(um)m(b)s(er)g(of)g │ │ │ │ (ro)m(ws)g(and)g(columns)g(in)g(the)h(\(1,1\))h(blo)s(c)m(k)f(of)f │ │ │ │ Fb(T)13 b Fm(.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 1095 4 v 1276 100 a Fl(Chv)30 │ │ │ │ -b Fh(:)40 b Fk(DRAFT)121 b Fh(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2713 100 V 1095 w Fm(23)336 399 y Fg(\017)46 b Fm(The)30 │ │ │ │ +TeXDict begin 23 22 bop 91 100 1131 4 v 1312 100 a Fl(Chv)30 │ │ │ │ +b Fh(:)40 b Fk(DRAFT)121 b Fh(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2677 100 V 1131 w Fm(23)336 399 y Fg(\017)46 b Fm(The)30 │ │ │ │ b Fl(ncolU)f Fm(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f │ │ │ │ (in)g Fb(U)10 b Fm(.)336 545 y Fg(\017)46 b Fm(The)30 │ │ │ │ b Fl(nrowD)f Fm(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f │ │ │ │ (and)g(columns)g(in)g Fb(D)s Fm(.)336 691 y Fg(\017)46 │ │ │ │ b Fm(The)30 b Fl(nentU)f Fm(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e │ │ │ │ (en)m(tries)i(in)f Fb(U)10 b Fm(,)31 b(ignored)f(if)h │ │ │ │ Fl(sparsityflag)44 b(=)j(0)p Fm(.)336 837 y Fg(\017)f │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ unnecessary, that we put on the Chv object — the number of rows in the (2,1) block and number of │ │ │ │ │ columns in the (1,2) block are equal. The Chv object is used within the context of a factorization of │ │ │ │ │ a sparse matrix that is assumed to have symmetric structure. If we ever extend the code to handle │ │ │ │ │ a true nonsymmetric structure factorization (e.g., umfpack and superlu), then we can modify │ │ │ │ │ the Chv object to handle unequal rows and columns. │ │ │ │ │ During a factorization, a front has to take part in four distinct operations. │ │ │ │ │ 1 │ │ │ │ │ - 2 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 2 Chv : DRAFT October 11, 2021 │ │ │ │ │ 1. Assemble entries from the original matrix (or matrix pencil). (See the Chv addChevron() │ │ │ │ │ method.) │ │ │ │ │ 2. Accumulate updates from descendant fronts. (See the Chv update{S,H,N}() methods.) │ │ │ │ │ 3. Assembleanypostponeddatafromitschildrenfronts. (SeetheChv assemblePostponedData() │ │ │ │ │ method.) │ │ │ │ │ 4. Computethefactorization ofthecompletely assembledfront. (SeetheChv factor()method.) │ │ │ │ │ The implementor of a front object has a great deal of freedom to design the underlying data │ │ │ │ │ @@ -65,15 +65,15 @@ │ │ │ │ │ defineitsrowsandcolumns. ForasymmetricorHermitianmatrix, weonlystorethecolumnindices. │ │ │ │ │ For a nonsymmetric matrix, we store the both the row and column indices. This second case may │ │ │ │ │ seem unnecessary, since we assume that the larger global matrix has symmetric structure. However, │ │ │ │ │ during a factorization with pivoting enabled, a pivot element may be chosen from anywhere in the │ │ │ │ │ (1,1) block, so the row indices and column indices may no longer be identical. │ │ │ │ │ AChv object is inherently a serial, single threaded object, meaning it is designed so that only │ │ │ │ │ one thread or process “owns” or operates on a particular Chv object. A Chv object is an “atom” │ │ │ │ │ - Chv : DRAFT December 20, 2018 3 │ │ │ │ │ + Chv : DRAFT October 11, 2021 3 │ │ │ │ │ of communication. It stores postponed rows and columns to be assembled in a parent front. It │ │ │ │ │ might have to be written to and read from a file in an out-of-core implementation. In a distributed │ │ │ │ │ environment, it is communicated between processes. For these reasons, we designed the object so │ │ │ │ │ that its data (the scalars that describe its dimensions, id and type, the row and column indices, │ │ │ │ │ and its entries) are found in contiguous storage managed by a DV object. A file operation can be │ │ │ │ │ done with a single read or write, a message can be sent without packing and unpacking data, or │ │ │ │ │ defining a new datatype. Managing working storage for a number of Chv objects is now simpler. │ │ │ │ │ @@ -100,15 +100,15 @@ │ │ │ │ │ • int symflag : symmetry flag │ │ │ │ │ – SPOOLES SYMMETRIC =⇒ symmetric entries │ │ │ │ │ – SPOOLES HERMITIAN =⇒ Hermitian entries │ │ │ │ │ – SPOOLES NONSYMMETRIC =⇒ nonsymmetric entries │ │ │ │ │ • int *rowind : pointer to the base address of the int vector that contains row indices. │ │ │ │ │ • int *colind : pointer to the base address of the int vector that contains column indices. │ │ │ │ │ • double *entries: pointer to the base address of the double vector that contains the entries. │ │ │ │ │ - 4 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 4 Chv : DRAFT October 11, 2021 │ │ │ │ │ • DV wrkDV : object that manages the owned working storage. │ │ │ │ │ • Chv *next : link to a next object in a singly linked list. │ │ │ │ │ One can query the type and symmetry of the object using these simple macros. │ │ │ │ │ • CHV IS REAL(chv) is 1 if chv has real entries and 0 otherwise. │ │ │ │ │ • CHV IS COMPLEX(chv) is 1 if chv has complex entries and 0 otherwise. │ │ │ │ │ • CHV IS SYMMETRIC(chv) is 1 if chv is symmetric and 0 otherwise. │ │ │ │ │ • CHV IS HERMITIAN(chv) is 1 if chv is Hermitian and 0 otherwise. │ │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ This method clears the object and free’s any owned data by invoking the clearData() │ │ │ │ │ methods for its internal DV object. There is a concluding call to Chv setDefaultFields(). │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void Chv_free ( Chv *chv ) ; │ │ │ │ │ This method releases any storage by a call to Chv clearData() and then free the space for │ │ │ │ │ chv. │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ - Chv : DRAFT December 20, 2018 5 │ │ │ │ │ + Chv : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ 1. int Chv_id ( Chv *chv ) ; │ │ │ │ │ This method returns the id of the object. │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and zero is returned. │ │ │ │ │ 2. int Chv_type ( Chv *chv ) ; │ │ │ │ │ This method returns the type of the object. │ │ │ │ │ • SPOOLES REAL =⇒ real entries │ │ │ │ │ @@ -167,15 +167,15 @@ │ │ │ │ │ Error checking: If chv, pncol or pcolind is NULL, an error message is printed and zero is │ │ │ │ │ returned. │ │ │ │ │ 7. int Chv_nent ( Chv *chv ) ; │ │ │ │ │ This method returns number of matrix entries that the object contains. Note, for a complex │ │ │ │ │ chevron, this is the number of double precision complex entries, equal to one half the number │ │ │ │ │ of double precision entries that are stored. │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and zero is returned. │ │ │ │ │ - 6 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 6 Chv : DRAFT October 11, 2021 │ │ │ │ │ 8. double * Chv_entries ( Chv *chv ) ; │ │ │ │ │ This method returns the entries field of the object, a pointer to the base location of the │ │ │ │ │ double precision array that stores the complex data. │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and zero is returned. │ │ │ │ │ 9. double * Chv_diagLocation ( Chv *chv, int ichv ) ; │ │ │ │ │ This method returns a pointer to the address of the entry in the ichv’th diagonal location. │ │ │ │ │ For a real chevron, to find the entry k places to the right of the diagonal entry, add k to the │ │ │ │ │ @@ -205,15 +205,15 @@ │ │ │ │ │ 14. void Chv_complexEntry ( Chv *chv, int irow, int jcol, │ │ │ │ │ double *pReal, double *pImag ) ; │ │ │ │ │ This method fills *pReal with the real part and *pImag with the imaginary part of the the │ │ │ │ │ entry in row irow and column jcol. Note, irow and jcol are local indices, i.e., 0 ≤ irow < │ │ │ │ │ nD+nLand0≤jcolentries[2*kk:2*kk+1]. │ │ │ │ │ @@ -281,15 +281,15 @@ │ │ │ │ │ in *pmaxval. Note, if the chevron is complex, the location is in terms of the complex entries, │ │ │ │ │ not in the real entries, i.e., if k = Chv maxabsRow(chv,...), then the complex entry is found │ │ │ │ │ in chv->entries[2*kk:2*kk+1]. │ │ │ │ │ Error checking: If chv is NULL or irow is not in [0,n1-1], an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 5. int Chv_maxabsInColumn ( Chv *chv, int jcol, int rowmark[], │ │ │ │ │ int tag, double *pmaxval ) ; │ │ │ │ │ - Chv : DRAFT December 20, 2018 9 │ │ │ │ │ + Chv : DRAFT October 11, 2021 9 │ │ │ │ │ This method returns the location of the first element with the largest magnitude in column │ │ │ │ │ jcol. Element jj must have rowmark[jj] = tag to be eligible. Its magnitude is returned │ │ │ │ │ in *pmaxval. Note, if the chevron is complex, the location is in terms of the complex entries, │ │ │ │ │ not in the real entries, i.e., if k = Chv maxabsColumn11(chv,...), then the complex entry │ │ │ │ │ is found in chv->entries[2*kk:2*kk+1]. │ │ │ │ │ Error checking: If chv is NULL or irow is not in [0,n1-1], an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ @@ -322,15 +322,15 @@ │ │ │ │ │ number of leading rows and columns to ignore, useful when delayed rows and columns have │ │ │ │ │ been placed in the leading portion of the chevron. The pirow, pjcol and pntest addresses │ │ │ │ │ are filled with the pivot row, pivot column, and number of pivot tests performed to find the │ │ │ │ │ pivot. If no pivot was found, pirow and pjcol are filled with -1. The return value is the size │ │ │ │ │ of the pivot. If the chevron is symmetric, we can find a 1 × 1 or 2 × 2 pivot. If the chevron │ │ │ │ │ is nonsymmetric, we only find a 1×1 pivot. A return value of zero means that no pivot was │ │ │ │ │ found. │ │ │ │ │ - 10 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 10 Chv : DRAFT October 11, 2021 │ │ │ │ │ Error checking: If chv, workDV, pirow, pjcol or pntest is NULL, or if tau < 1.0, or if │ │ │ │ │ ndelay < 0, an error message is printed and the program exits. │ │ │ │ │ 1.2.6 Update methods │ │ │ │ │ 1. void Chv_updateS ( Chv *chv, SubMtx *mtxD, SubMtx *mtxU, DV *tempDV ) ; │ │ │ │ │ void Chv_updateH ( Chv *chv, SubMtx *mtxD, SubMtx *mtxU, DV *tempDV ) ; │ │ │ │ │ void Chv_updateN ( Chv *chv, SubMtx *mtxL, SubMtx *mtxD, SubMtx *mtxU, │ │ │ │ │ DV *tempDV ) ; │ │ │ │ │ @@ -364,15 +364,15 @@ │ │ │ │ │ This method is used to assemble entries from the matrix pencil A+σB into the block chevron │ │ │ │ │ object. Typically the entries from A or B will come from a InpMtx object, one of whose modes │ │ │ │ │ of storage is by single chevrons. The value ichvis the row and column location of the diagonal │ │ │ │ │ entry. The indices found in chvind[] are offsets. Let off = chvind[ii] be the offset for one │ │ │ │ │ of the chevron’s entries. If off ≥ 0, then the entry is found in location (ichv, ichv+off) of │ │ │ │ │ the matrix. If off < 0, then the entry is found in location (ichv-off, ichv) of the matrix. │ │ │ │ │ The value(s) in alpha[] form a scalar used to scale the entire chevron for its assembly. A │ │ │ │ │ - Chv : DRAFT December 20, 2018 11 │ │ │ │ │ + Chv : DRAFT October 11, 2021 11 │ │ │ │ │ call to assemble entries in A (from the pencil A+σB) would have alpha[] = (1.0,0.0); to │ │ │ │ │ assemble entries in B (from the pencil A+σB) would have alpha[] = (Real(σ),Imag(σ)). │ │ │ │ │ Error checking: If chv, chvind, chvent or alpha is NULL, or if ichv or chvsize are less than │ │ │ │ │ zero, an error message is printed and the program exits. │ │ │ │ │ 2. void Chv_assembleChv ( Chv *chvJ, Chv *chvI ) ; │ │ │ │ │ This method is used to assemble entries from one Chv object into another. The application │ │ │ │ │ is during a factorization with pivoting, postponed entries from the children are stored in the │ │ │ │ │ @@ -404,15 +404,15 @@ │ │ │ │ │ chevron is symmetric or Hermitian, pivotflag == SPOOLES PIVOTING and pivotsizesIV is │ │ │ │ │ NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int Chv_factorWithNoPivoting ( Chv *chv, PatchAndGoInfo *info ) ; │ │ │ │ │ This method factors a front without using pivoting for numerical stability. It does support │ │ │ │ │ “patch-and-go” functionality, where if a small or zero entry is found in the diagonal element │ │ │ │ │ that is to be eliminated, some action can be taken. The return value is the number of │ │ │ │ │ eliminated rows and columns. │ │ │ │ │ - 12 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 12 Chv : DRAFT October 11, 2021 │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. int Chv_r1upd ( Chv *chv ) ; │ │ │ │ │ This method is used during the factorization of a front, performing a rank-one update of the │ │ │ │ │ chevron. The return value is 1 if the pivot is nonzero, 0 otherwise. │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. int Chv_r2upd ( Chv *chv ) ; │ │ │ │ │ This method is used during the factorization of a front, performing a rank-two update of the │ │ │ │ │ @@ -440,15 +440,15 @@ │ │ │ │ │ • CHV STRICT LOWER =⇒ count strict lower entries │ │ │ │ │ • CHV DIAGONAL =⇒ count diagonal entries │ │ │ │ │ • CHV STRICT UPPER =⇒ count strict upper entries │ │ │ │ │ • CHV STRICT LOWER 11 =⇒ count strict lower entries in the (1,1) block │ │ │ │ │ • CHV LOWER 21 =⇒ count lower entries in the (2,1) block │ │ │ │ │ • CHV STRICT UPPER 11 =⇒ count strict upper entries in the (1,1) block │ │ │ │ │ • CHV UPPER 12 =⇒ count upper entries in the (1,2) block │ │ │ │ │ - Chv : DRAFT December 20, 2018 13 │ │ │ │ │ + Chv : DRAFT October 11, 2021 13 │ │ │ │ │ This method is used to compute the necessary storage to store a chevron as a dense front. │ │ │ │ │ Error checking: If chv is NULL or if countflag is not valid, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 2. int Chv_countBigEntries ( Chv *chv, int npivot, int pivotsizes[], │ │ │ │ │ int countflag, double droptol ) ; │ │ │ │ │ This method counts the number of entries in the chevron that are larger in magnitude than │ │ │ │ │ droptol. countflag has the following meaning. │ │ │ │ │ @@ -477,15 +477,15 @@ │ │ │ │ │ • CHV STRICT UPPER 11 =⇒ copy strict upper entries in the (1,1) block │ │ │ │ │ • CHV UPPER 12 =⇒ copy upper entries in the (1,2) block │ │ │ │ │ If storeflagisCHV BY ROWS,theentriesarestoredbyrowsandifstoreflagisCHV BY COLUMNS, │ │ │ │ │ the entries are stored by columns. │ │ │ │ │ Error checking: If chv or dvec is NULL or if length is less than the number of entries to be │ │ │ │ │ copied, or if copyflag or storeflag is valid, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 14 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 14 Chv : DRAFT October 11, 2021 │ │ │ │ │ 4. int Chv_copyBigEntriesToVector ( Chv *chv, int npivot, int pivotsizes[], │ │ │ │ │ int sizes[], int ivec[], double dvec[], │ │ │ │ │ int copyflag, int storeflag, double droptol ) ; │ │ │ │ │ This method also copies some entries the chevron object into a double precision vector, but │ │ │ │ │ only those entries whose magnitude is greater than or equal to droptol are copied. This │ │ │ │ │ method is called after a front has been factored and is used to store the factor entries of large │ │ │ │ │ magnitude into the storage for the factor matrix. If the front is nonsymmetric, the front │ │ │ │ │ @@ -517,15 +517,15 @@ │ │ │ │ │ Error checking: If chvI or chvJ is NULL, or if offset < 0 or offset is greater than the │ │ │ │ │ number of chevrons in chvJ, an error message is printed and the program exits. │ │ │ │ │ 1.2.10 Swap methods │ │ │ │ │ 1. void Chv_swapRows ( Chv *chv, int irow, int jrow ) ; │ │ │ │ │ This method swaps rows irow and jrow of the chevron. Both rows must be less than the │ │ │ │ │ width nD of the chevron. The row ids of the two rows are also swapped. If the chevron is │ │ │ │ │ symmetric, then the method Chv swapRowsAndColumns() is called. │ │ │ │ │ - Chv : DRAFT December 20, 2018 15 │ │ │ │ │ + Chv : DRAFT October 11, 2021 15 │ │ │ │ │ Error checking: If chv is NULL or if irow or jrow are less than 0 or greater than or equal to │ │ │ │ │ nD, an error message is printed and the program exits. │ │ │ │ │ 2. void Chv_swapColumns ( Chv *chv, int icol, int jcol ) ; │ │ │ │ │ This method swaps columns icol and jcol of the chevron. Both columns must be less than │ │ │ │ │ the width nD of the chevron. The column ids of the two columns are also swapped. If the │ │ │ │ │ chevron is symmetric, then the method Chv swapRowsAndColumns() is called. │ │ │ │ │ Error checking: If chv is NULL or if icol or jcol are less than 0 or greater than or equal to │ │ │ │ │ @@ -553,15 +553,15 @@ │ │ │ │ │ This method sets the scalar fields and rowind, colind and entries pointers. │ │ │ │ │ Error checking: If chv is NULL, or if nD ≤ 0, or if nL or nU are less than zero, or if type or │ │ │ │ │ symflag are not valid, an error message is printed and the program exits. │ │ │ │ │ 5. void Chv_shift ( Chv *chv, int shift ) ; │ │ │ │ │ This method is used to shift the base of the entries and adjust dimensions of the Chv object. │ │ │ │ │ If shift is positive, the first shift chevrons are removed from the chevron. If shift is │ │ │ │ │ negative, the shift previous chevrons are prepended to the chevron. This is a dangerous │ │ │ │ │ - 16 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 16 Chv : DRAFT October 11, 2021 │ │ │ │ │ method as it changes the state of the object. We use it during the factorization of a front, │ │ │ │ │ where one Chv object points to the entire chevron in order to swap rows and columns, while │ │ │ │ │ another chevron points to the uneliminated rows and columns of the front. It is the latter │ │ │ │ │ chevron that is shifted during the factorization. │ │ │ │ │ Error checking: If chv is NULL an error message is printed and the program exits. │ │ │ │ │ 6. void Chv_fill11block ( Chv *chv, A2 *mtx ) ; │ │ │ │ │ This method is used to fill a A2 dense matrix object with the entries in the (1,1) block of the │ │ │ │ │ @@ -584,15 +584,15 @@ │ │ │ │ │ 11. void Chv_sub ( Chv *chvJ, Chv *chvI ) ; │ │ │ │ │ This method subtracts chvI from chvJ. │ │ │ │ │ Error checking: If chvJ or chvI is NULL, or if their dimensions are not the same, or if either │ │ │ │ │ of their entries fields are NULL, an error message is printed and the program exits. │ │ │ │ │ 12. void Chv_zero ( Chv *chv ) ; │ │ │ │ │ This method zeroes the entries in the chevron. │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ - Chv : DRAFT December 20, 2018 17 │ │ │ │ │ + Chv : DRAFT October 11, 2021 17 │ │ │ │ │ 1.2.12 IO methods │ │ │ │ │ 1. void Chv_writeForHumanEye ( Chv *chv, FILE *fp ) ; │ │ │ │ │ This method writes a Chv object to a file in an easily readable format. │ │ │ │ │ Error checking: If chv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 2. void Chv_writeForMatlab ( Chv *chv, char *chvname, FILE *fp ) ; │ │ │ │ │ This method writes a Chv object to a file in a matlab format. For a real chevron, a sample │ │ │ │ │ line is │ │ │ │ │ @@ -619,15 +619,15 @@ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The alphareal and alphaimag parameters form a complex number that is a scaling │ │ │ │ │ parameter. Normally alpha is (1.0,0.0), when we are just loading matrix entries into a │ │ │ │ │ front. However, when we factor A+αB, the entries of B will be loaded with alpha set │ │ │ │ │ equal to α[0 : 1]. │ │ │ │ │ - 18 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 18 Chv : DRAFT October 11, 2021 │ │ │ │ │ 2. test_assmbChv msglvl msgFile nDJ nUJ nDI nUI type symflag seed │ │ │ │ │ This driver program tests the Chv assembleChv method. It assembles a chevron T into T , │ │ │ │ │ I J │ │ │ │ │ as is done during the assembly of postponed rows and columns during the factorization when │ │ │ │ │ pivoting is enabled. Use the script file do assmbChv for testing. When the output file is │ │ │ │ │ loaded into matlab, the last line to the screen is the error of the assembly. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ @@ -658,15 +658,15 @@ │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The pivotingflag parameter is the pivoting flag — SPOOLES NO PIVOTING for no piv- │ │ │ │ │ oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ - Chv : DRAFT December 20, 2018 19 │ │ │ │ │ + Chv : DRAFT October 11, 2021 19 │ │ │ │ │ • The storeflag parameter is the storage flag, to store by rows, use SPOOLES BY ROWS, │ │ │ │ │ to store by columns, use SPOOLES BY COLUMNS. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 4. test_copyBigEntriesToVector msglvl msgFile nD nU type symflag │ │ │ │ │ pivotingflag storeflag seed droptol │ │ │ │ │ This driver program tests the Chv copyBigEntriesToVector method which is used when │ │ │ │ │ after a front has been factored to store the entries into sparse L and U submatrices. Use │ │ │ │ │ @@ -698,15 +698,15 @@ │ │ │ │ │ three entries. The first entry is the error in the factorization. The second and third entries │ │ │ │ │ are the maximum magnitudes of the entries in L and U, respectively. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ - 20 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 20 Chv : DRAFT October 11, 2021 │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The pivotingflag parameter is the pivoting flag — SPOOLES NO PIVOTING for no piv- │ │ │ │ │ oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ @@ -735,15 +735,15 @@ │ │ │ │ │ ThisdriverprogramteststheChv maxabsInRow(),Chv maxabsInRow11(),Chv maxabsInColumn(), │ │ │ │ │ Chv maxabsInColumn11() and Chv maxabsInDiagonal11() methods. Use the script file │ │ │ │ │ do maxabs for testing. When the output file is loaded into matlab, look on the screen for the │ │ │ │ │ variables rowerror, colerror, rowerror11, colerror11 and diag11error. All should be │ │ │ │ │ zero. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ - Chv : DRAFT December 20, 2018 21 │ │ │ │ │ + Chv : DRAFT October 11, 2021 21 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ @@ -772,15 +772,15 @@ │ │ │ │ │ timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ - 22 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 22 Chv : DRAFT October 11, 2021 │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 10. test_swap msglvl msgFile nD nU type symflag seed │ │ │ │ │ This driver program tests three methods: Chv swapRowsAndColumns(), Chv swapRows() and │ │ │ │ │ Chv swapColumns(). Use the script file do swap for testing. When the output file is loaded │ │ │ │ │ into matlab, look for the maxerrrowswap1, maxerrcolswap1, maxerrswap, maxerrsymswap1 │ │ │ │ │ @@ -810,15 +810,15 @@ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The sparsityflag parameter should be zero for dense U and L, or 1 for sparse U and │ │ │ │ │ L. │ │ │ │ │ • The ncolT parameter is the number of columns in the (1,1) and (1,2) blocks of T. │ │ │ │ │ • The nDT parameter is the number of rows and columns in the (1,1) block of T. │ │ │ │ │ - Chv : DRAFT December 20, 2018 23 │ │ │ │ │ + Chv : DRAFT October 11, 2021 23 │ │ │ │ │ • The ncolU parameter is the number of columns in U. │ │ │ │ │ • The nrowD parameter is the number of rows and columns in D. │ │ │ │ │ • The nentU parameter is the number entries in U, ignored if sparsityflag = 0. │ │ │ │ │ • The offset parameter is the offset of first index in T from the last index in D. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ Index │ │ │ │ │ Chv addChevron(), 10 Chv new(), 4 │ │ ├── ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ ├── ChvList.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ChvList.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1060,22 +1060,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1249,88 +1249,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2840,16 +2829,16 @@ │ │ │ │ @start /Fa 133[50 59 4[44 44 3[56 62 93 31 2[31 62 2[51 │ │ │ │ 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 │ │ │ │ 99.6264 /CMBX12 rf /Fb 137[62 1[62 62 9[62 62 27[62 8[62 │ │ │ │ 67[{}7 119.552 /CMTT12 rf /Fc 134[71 3[75 52 53 55 1[75 │ │ │ │ 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf /Fd 141[38 2[46 │ │ │ │ 51 2[42 1[28 46 42 1[42 1[42 14[65 1[66 11[59 62 69 2[68 │ │ │ │ -6[28 58[{}16 90.9091 /CMTI10 rf /Fe 141[36 4[76 7[40 │ │ │ │ -1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Fe 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ /CMSL10 rf /Ff 235[71 4[45 15[{}2 90.9091 /CMSY10 rf │ │ │ │ /Fg 134[48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 48 48 2[48 │ │ │ │ 48 48 48 3[48 48 48 48 2[48 48 1[48 48 48 48 5[48 1[48 │ │ │ │ 8[48 48 48 3[48 1[48 48 48 48 39[{}53 90.9091 /CMTT10 │ │ │ │ rf /Fh 133[40 48 48 66 48 51 35 36 36 48 51 45 51 76 │ │ │ │ 25 48 28 25 51 45 28 40 51 40 51 45 8[68 2[68 66 51 67 │ │ │ │ @@ -2926,17 +2915,17 @@ │ │ │ │ (not)h(y)m(et)h(zero.)141 5294 y(Ha)m(ving)27 b(a)g(lo)s(c)m(k)g(asso)s │ │ │ │ (ciated)g(with)f(a)h Fg(ChvList)d Fh(ob)5 b(ject)27 b(is)f(optional,)i │ │ │ │ (for)e(example,)i(it)e(is)g(not)g(needed)g(during)0 5407 │ │ │ │ y(a)31 b(serial)h(factorization)i(nor)c(a)i(MPI)f(factorization.)45 │ │ │ │ b(In)31 b(the)g(latter)h(case)g(there)g(is)f(one)g Fg(ChvList)e │ │ │ │ Fh(p)s(er)h(pro)s(cess.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1022 4 v │ │ │ │ -1204 w Fg(ChvList)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 0 399 a Fh(F)-8 b(or)35 b(a)g(m)m(ultithreaded)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1058 4 v │ │ │ │ +1240 w Fg(ChvList)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 0 399 a Fh(F)-8 b(or)35 b(a)g(m)m(ultithreaded)g │ │ │ │ (factorization)i(there)d(is)h(one)f Fg(ChvList)f Fh(ob)5 │ │ │ │ b(ject)35 b(that)g(is)g(shared)e(b)m(y)i(all)g(threads.)52 │ │ │ │ b(The)0 511 y(m)m(utual)22 b(exclusion)h(lo)s(c)m(k)g(that)f(is)g │ │ │ │ (\(optionally\))i(em)m(b)s(edded)d(in)h(the)g Fg(ChvList)e │ │ │ │ Fh(ob)5 b(ject)23 b(is)f(a)g Fg(Lock)f Fh(ob)5 b(ject)23 │ │ │ │ b(from)e(this)0 624 y(library)-8 b(.)39 b(It)27 b(is)f(inside)g(the)g │ │ │ │ Fg(Lock)f Fh(ob)5 b(ject)27 b(that)g(w)m(e)f(ha)m(v)m(e)i(a)e(m)m │ │ │ │ @@ -2989,17 +2978,17 @@ │ │ │ │ (and)d Fg(heads)p Fh(,)227 5251 y Fg(counts)p Fh(,)29 │ │ │ │ b Fg(lock)g Fh(and)h Fg(flags)f Fh(are)i(set)g(to)g Fg(NULL)e │ │ │ │ Fh(.)227 5407 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fh(If)30 b Fg(list)g Fh(is)g Fg(NULL)p Fh(,)f(an)i(error)f(message)h │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1022 4 v 1203 100 a Fg(ChvList)29 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)122 b Fe(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2831 100 V 1022 w Fh(3)111 399 y(3.)46 b Fg(void)h(ChvList_clearData)c │ │ │ │ +TeXDict begin 3 2 bop 91 100 1058 4 v 1239 100 a Fg(ChvList)29 │ │ │ │ +b Fe(:)40 b Fd(DRAFT)121 b Fe(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2795 100 V 1058 w Fh(3)111 399 y(3.)46 b Fg(void)h(ChvList_clearData)c │ │ │ │ (\()k(ChvList)f(*list)h(\))g(;)227 555 y Fh(This)41 b(metho)s(d)g │ │ │ │ (clears)h(the)g(ob)5 b(ject)42 b(and)f(free's)h(an)m(y)g(o)m(wned)f │ │ │ │ (data)i(b)m(y)e(calling)i Fg(Chv)p 3220 555 29 4 v 34 │ │ │ │ w(free\(\))c Fh(for)j(eac)m(h)227 668 y(ob)5 b(ject)36 │ │ │ │ b(on)f(the)h(free)f(list.)56 b(If)35 b Fg(heads)f Fh(is)h(not)g │ │ │ │ Fg(NULL)p Fh(,)g(it)g(is)h(free'd.)55 b(If)35 b Fg(counts)e │ │ │ │ Fh(is)i(not)h Fg(NULL)p Fh(,)e(it)i(is)f(free'd)227 781 │ │ │ │ @@ -3062,18 +3051,18 @@ │ │ │ │ 5138 y(metho)s(d)e(returns)f(0.)227 5294 y Fd(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)29 b Fg(list)g Fh(is)h │ │ │ │ Fg(NULL)p Fh(,)f(or)h(if)g Fg(ilist)e Fh(is)i(not)h(in)e(the)h(range)h │ │ │ │ Fg([0,nlist\))p Fh(,)c(an)j(error)g(message)227 5407 │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop │ │ │ │ end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1022 4 v │ │ │ │ -1204 w Fg(ChvList)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 111 399 a Fh(3.)46 b Fg(Chv)h(*)h(ChvList_getList) │ │ │ │ -43 b(\()48 b(ChvList)e(*list,)g(int)h(ilist)f(\))h(;)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1058 4 v │ │ │ │ +1240 w Fg(ChvList)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 111 399 a Fh(3.)46 b Fg(Chv)h(*)h(ChvList_getList)43 │ │ │ │ +b(\()48 b(ChvList)e(*list,)g(int)h(ilist)f(\))h(;)227 │ │ │ │ 549 y Fh(If)28 b(list)h Fg(ilist)e Fh(is)h(empt)m(y)-8 │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fg(NULL)p Fh(.)g(Otherwise,)i(if)f │ │ │ │ (the)h(list)g(needs)f(to)h(b)s(e)e(lo)s(c)m(k)m(ed,)k(the)227 │ │ │ │ 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m(ed.)57 b(The)34 │ │ │ │ b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f(p)s(oin)m(ter)h │ │ │ │ (and)e(then)h(the)h(head)f(is)g(set)h(to)g Fg(NULL)p │ │ │ │ Fh(.)227 775 y(If)c(the)h(list)g(w)m(as)f(lo)s(c)m(k)m(ed,)j(the)d(n)m │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ Having a lock associated with a ChvList object is optional, for example, it is not needed during │ │ │ │ │ a serial factorization nor a MPI factorization. In the latter case there is one ChvList per process. │ │ │ │ │ 1 │ │ │ │ │ - 2 ChvList : DRAFT December 20, 2018 │ │ │ │ │ + 2 ChvList : DRAFT October 11, 2021 │ │ │ │ │ For a multithreaded factorization there is one ChvList object that is shared by all threads. The │ │ │ │ │ mutualexclusion lock that is (optionally) embedded in the ChvListobject is a Lock object from this │ │ │ │ │ library. It is inside the Lock object that we have a mutual exclusion lock. Presently we support the │ │ │ │ │ Solaris and POSIX thread packages. Porting the multithreaded codes to another platform should │ │ │ │ │ be simple if the POSIX thread package is present. Another type of thread package will require │ │ │ │ │ some modifications to the Lock object, but none to the ChvList objects. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ 1. ChvList * ChvList_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the ChvList structure and then sets the default │ │ │ │ │ fields by a call to ChvList setDefaultFields(). │ │ │ │ │ 2. void ChvList_setDefaultFields ( ChvList *list ) ; │ │ │ │ │ The structure’s fields are set to default values: nlist and nlocks set to zero, and heads, │ │ │ │ │ counts, lock and flags are set to NULL . │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ - ChvList : DRAFT December 20, 2018 3 │ │ │ │ │ + ChvList : DRAFT October 11, 2021 3 │ │ │ │ │ 3. void ChvList_clearData ( ChvList *list ) ; │ │ │ │ │ This method clears the object and free’s any owned data by calling Chv free() for each │ │ │ │ │ object on the free list. If heads is not NULL, it is free’d. If counts is not NULL, it is free’d │ │ │ │ │ via a call to IVfree(). If flags is not NULL, it is free’d via a call to CVfree(). If the │ │ │ │ │ lock is not NULL, it is destroyed via a call to Lock free(). There is a concluding call to │ │ │ │ │ ChvList setDefaultFields(). │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ 2. int ChvList_isCountZero ( ChvList *list, int ilist ) ; │ │ │ │ │ If counts is NULL, or if counts[ilist] equal to zero, the method returns 1. Otherwise, the │ │ │ │ │ method returns 0. │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ - 4 ChvList : DRAFT December 20, 2018 │ │ │ │ │ + 4 ChvList : DRAFT October 11, 2021 │ │ │ │ │ 3. Chv * ChvList_getList ( ChvList *list, int ilist ) ; │ │ │ │ │ If list ilist is empty, the method returns NULL. Otherwise, if the list needs to be locked, the │ │ │ │ │ lock is locked. The head of the list is saved to a pointer and then the head is set to NULL. │ │ │ │ │ If the list was locked, the number of locks is incremented and the lock unlocked. The saved │ │ │ │ │ pointer is returned. │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ is printed and zero is returned. │ │ ├── ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ ├── ChvManager.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMTI10 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ChvManager.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -699,22 +699,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -888,88 +888,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2879,15 +2868,15 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 3[56 62 93 31 2[31 62 2[51 │ │ │ │ 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 │ │ │ │ 99.6264 /CMBX12 rf /Fb 137[62 3[62 3[62 5[62 62 1[62 │ │ │ │ 3[62 19[62 9[62 67[{}9 119.552 /CMTT12 rf /Fc 134[71 │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ -rf /Fd 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 │ │ │ │ +rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 │ │ │ │ 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 134[44 4[30 │ │ │ │ 37 38 2[46 51 74 23 42 1[28 46 42 1[42 46 42 1[46 12[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 12[33 45[{}24 90.9091 /CMTI10 │ │ │ │ rf /Ff 240[45 15[{}1 90.9091 /CMSY10 rf /Fg 133[48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 1[48 1[48 1[48 5[48 1[48 3[48 48 48 │ │ │ │ 48 2[48 48 1[48 48 48 48 5[48 1[48 8[48 48 48 3[48 1[48 │ │ │ │ @@ -2972,21 +2961,21 @@ │ │ │ │ (recycling)i(mo)s(de.)141 5294 y(A)39 b(m)m(ultithreaded)g(en)m │ │ │ │ (vironmen)m(t)g(creates)h(some)f(di\016culties.)66 b(Should)37 │ │ │ │ b(there)i(b)s(e)f(one)h(manager)g(ob)5 b(ject)0 5407 │ │ │ │ y(p)s(er)30 b(thread,)h(or)g(should)e(all)j(the)f(threads)g(share)f │ │ │ │ (one)h(ob)5 b(ject?)43 b(W)-8 b(e)32 b(ha)m(v)m(e)g(c)m(hosen)f(the)g │ │ │ │ (latter)i(course,)e(but)f(this)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 998 4 v │ │ │ │ -1180 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 0 399 a Fh(requires)e(that)i(a)f(lo)s(c)m(k)h │ │ │ │ -(b)s(e)e(presen)m(t)h(to)h(guard)e(the)h(critical)i(section)f(of)f(co)s │ │ │ │ -(de)g(where)f(one)h(searc)m(hes)h(or)f(adds)f(an)0 511 │ │ │ │ -y(ob)5 b(ject)38 b(to)g(the)f(list.)61 b(The)36 b(lo)s(c)m(k)i(w)m(e)g │ │ │ │ -(use)e(is)h(a)h Fg(Lock)d Fh(ob)5 b(ject,)40 b(and)d(so)g(the)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1034 4 v │ │ │ │ +1216 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 0 399 a Fh(requires)e(that)i(a)f(lo)s(c)m(k)h(b)s(e) │ │ │ │ +e(presen)m(t)h(to)h(guard)e(the)h(critical)i(section)f(of)f(co)s(de)g │ │ │ │ +(where)f(one)h(searc)m(hes)h(or)f(adds)f(an)0 511 y(ob)5 │ │ │ │ +b(ject)38 b(to)g(the)f(list.)61 b(The)36 b(lo)s(c)m(k)i(w)m(e)g(use)e │ │ │ │ +(is)h(a)h Fg(Lock)d Fh(ob)5 b(ject,)40 b(and)d(so)g(the)g │ │ │ │ Fg(ChvManager)d Fh(co)s(de)j(is)g(completely)0 624 y(indep)s(enden)m(t) │ │ │ │ c(of)i(the)f(thread)g(pac)m(k)-5 b(age.)55 b(P)m(orting)35 │ │ │ │ b(to)g(a)g(new)e(system)i(migh)m(t)g(require)f(some)h(mo)s │ │ │ │ (di\014cation)f(to)0 737 y(the)d Fg(Lock)p Fh(,)e(but)h(none)g(to)h │ │ │ │ (the)g(manager)f(ob)5 b(ject.)141 873 y(Eac)m(h)46 b(manager)g(ob)5 │ │ │ │ b(ject)46 b(k)m(eeps)f(trac)m(k)i(of)e(certain)h(statistics,)51 │ │ │ │ b(b)m(ytes)46 b(in)f(their)g(w)m(orkspaces,)50 b(the)45 │ │ │ │ @@ -3035,17 +3024,17 @@ │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 5146 y(1.)46 b Fg(ChvManager)f(*)j │ │ │ │ (ChvManager_new)c(\()j(void)g(\))g(;)227 5294 y Fh(This)28 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fg(ChvManager)e Fh(structure)h(and)h(then)g(sets)g(the)h(default)227 │ │ │ │ 5407 y(\014elds)h(b)m(y)g(a)h(call)h(to)f Fg(ChvManager)p │ │ │ │ 1426 5407 V 32 w(setDefaultFields\(\))p Fh(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 998 4 v 1179 100 a Fg(DChvList)29 │ │ │ │ -b Fd(:)40 b Fe(DRAFT)121 b Fd(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fh(3)111 399 y(2.)46 b Fg(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1034 4 v 1215 100 a Fg(DChvList)29 │ │ │ │ +b Fd(:)40 b Fe(DRAFT)121 b Fd(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fh(3)111 399 y(2.)46 b Fg(void)h │ │ │ │ (ChvManager_setDefaultFie)o(lds)41 b(\()48 b(ChvManager)d(*manager)g │ │ │ │ (\))j(;)227 548 y Fh(The)20 b(structure's)g(\014elds)g(are)g(set)h(to)g │ │ │ │ (default)g(v)-5 b(alues:)36 b Fg(mode)p Fh(,)21 b Fg(nactive)p │ │ │ │ Fh(,)g Fg(nbytesactive)p Fh(,)e Fg(nbytesrequested)p │ │ │ │ Fh(,)227 661 y Fg(nbytesalloc)p Fh(,)26 b Fg(nrequests)p │ │ │ │ Fh(,)h Fg(nreleases)p Fh(,)g Fg(nlocks)g Fh(and)h Fg(nunlocks)e │ │ │ │ Fh(set)j(to)h(zero,)g(and)e Fg(head)f Fh(and)h Fg(lock)227 │ │ │ │ @@ -3112,19 +3101,19 @@ │ │ │ │ Fg(Chv)f Fh(ob)5 b(jects)33 b(in)m(to)g(the)g(free)f(p)s(o)s(ol)g(of)g │ │ │ │ (ob)5 b(jects.)47 b(The)32 b(head)g(of)g(the)g(list)227 │ │ │ │ 5258 y(is)f(the)f Fg(chv)g Fh(instance.)227 5407 y Fe(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 b Fg(manager)f │ │ │ │ Fh(is)h Fg(NULL)p Fh(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ (zero)j(is)e(returned.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 998 4 v │ │ │ │ -1180 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 0 399 a Fa(1.2.4)112 b(IO)38 │ │ │ │ -b(metho)s(ds)111 595 y Fh(1.)46 b Fg(void)h(ChvManager_writeForHuman)o │ │ │ │ -(Eye)41 b(\()48 b(ChvManager)d(*manager,)g(FILE)i(*fp)g(\))g(;)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1034 4 v │ │ │ │ +1216 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ +595 y Fh(1.)46 b Fg(void)h(ChvManager_writeForHuman)o(Eye)41 │ │ │ │ +b(\()48 b(ChvManager)d(*manager,)g(FILE)i(*fp)g(\))g(;)227 │ │ │ │ 745 y Fh(This)30 b(metho)s(d)g(writes)g(the)h(statistics)h(to)f(a)g │ │ │ │ (\014le)f(in)g(user)g(readable)h(form.)227 896 y Fe(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 b Fg(manager)f │ │ │ │ Fh(or)h Fg(fp)g Fh(are)h Fg(NULL)p Fh(,)e(an)h(error)g(message)i(is)e │ │ │ │ (prin)m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ TeXDict begin 5 4 bop 0 866 a Fi(Index)0 1289 y Fg(ChvManager)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ finds a smallest object of that size or larger.) If there is no object on the free pool of sufficient │ │ │ │ │ size, one is created and returned. When the user releases an object to the manager, the object │ │ │ │ │ is placed on the free pool. │ │ │ │ │ For the factorization, serial, multithreaded or MPI, we recommend using the recycling mode. │ │ │ │ │ A multithreaded environment creates some difficulties. Should there be one manager object │ │ │ │ │ per thread, or should all the threads share one object? We have chosen the latter course, but this │ │ │ │ │ 1 │ │ │ │ │ - 2 DChvList : DRAFT December 20, 2018 │ │ │ │ │ + 2 DChvList : DRAFT October 11, 2021 │ │ │ │ │ requires that a lock be present to guard the critical section of code where one searches or adds an │ │ │ │ │ object to the list. The lock we use is a Lock object, and so the ChvManager code is completely │ │ │ │ │ independent of the thread package. Porting to a new system might require some modification to │ │ │ │ │ the Lock, but none to the manager object. │ │ │ │ │ Each manager object keeps track of certain statistics, bytes in their workspaces, the total │ │ │ │ │ number of bytes requested, the number of requests for a Chv objects, the number of releases, and │ │ │ │ │ the number of locks and unlocks. │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ ChvManager object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. ChvManager * ChvManager_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the ChvManager structure and then sets the default │ │ │ │ │ fields by a call to ChvManager setDefaultFields(). │ │ │ │ │ - DChvList : DRAFT December 20, 2018 3 │ │ │ │ │ + DChvList : DRAFT October 11, 2021 3 │ │ │ │ │ 2. void ChvManager_setDefaultFields ( ChvManager *manager ) ; │ │ │ │ │ Thestructure’sfieldsaresettodefaultvalues: mode,nactive,nbytesactive,nbytesrequested, │ │ │ │ │ nbytesalloc, nrequests, nreleases, nlocks and nunlocks set to zero, and head and lock │ │ │ │ │ are set to NULL . │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. void ChvManager_clearData ( ChvManager *manager ) ; │ │ │ │ │ This method clears the object and free’s any owned data by calling Chv free() for each │ │ │ │ │ @@ -89,15 +89,15 @@ │ │ │ │ │ 2. void ChvManager_releaseObject ( ChvManager *manager, Chv *chv ) ; │ │ │ │ │ This method releases the chv instance into the free pool of objects. │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and zero is returned. │ │ │ │ │ 3. void ChvManager_releaseListOfObjects ( ChvManager *manager, Chv *chv ) ; │ │ │ │ │ This method releases a list of Chv objects into the free pool of objects. The head of the list │ │ │ │ │ is the chv instance. │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and zero is returned. │ │ │ │ │ - 4 DChvList : DRAFT December 20, 2018 │ │ │ │ │ + 4 DChvList : DRAFT October 11, 2021 │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ 1. void ChvManager_writeForHumanEye ( ChvManager *manager, FILE *fp ) ; │ │ │ │ │ This method writes the statistics to a file in user readable form. │ │ │ │ │ Error checking: If manager or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ Index │ │ │ │ │ ChvManager clearData(), 3 │ │ │ │ │ ChvManager free(), 3 │ │ ├── ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ ├── Coords.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMSY10 CMR8 CMSL10 │ │ │ │ %%+ CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Coords.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -540,22 +540,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -729,88 +729,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3434,16 +3423,16 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 138[49 30 37 38 1[46 46 51 2[42 1[28 46 42 │ │ │ │ 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}22 │ │ │ │ -90.9091 /CMTI10 rf /Fb 141[36 4[76 7[40 1[40 51 29[69 │ │ │ │ -9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ +90.9091 /CMTI10 rf /Fb 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Fc 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 │ │ │ │ 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}24 │ │ │ │ 99.6264 /CMBX12 rf /Fd 140[62 62 2[62 10[62 32[62 67[{}5 │ │ │ │ 119.552 /CMTT12 rf /Fe 199[35 35 35 3[35 35 35 48[{}6 │ │ │ │ 66.4176 /CMR8 rf /Ff 240[45 12[71 2[{}2 90.9091 /CMSY10 │ │ │ │ rf /Fg 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 │ │ │ │ 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 │ │ │ │ @@ -3515,17 +3504,17 @@ │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 4808 y Fi(Coords)29 │ │ │ │ b Fj(ob)5 b(ject.)0 5092 y Fc(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 5294 y Fj(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 5407 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(Coords)28 b Fb(:)41 b Fa(DRAFT)30 b Fb(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 111 399 a Fj(1.)46 b Fi(Coords)g(*)i(Coords_new)d │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(Coords)28 b Fb(:)41 b Fa(DRAFT)30 b Fb(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 111 399 a Fj(1.)46 b Fi(Coords)g(*)i(Coords_new)d │ │ │ │ (\()i(void)g(\))g(;)227 555 y Fj(This)25 b(metho)s(d)g(simply)f(allo)s │ │ │ │ (cates)k(storage)f(for)e(the)h Fi(Coords)d Fj(structure)i(and)g(then)g │ │ │ │ (sets)g(the)h(default)f(\014elds)227 668 y(b)m(y)31 b(a)f(call)i(to)f │ │ │ │ Fi(Coords)p 1001 668 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ Fj(.)111 867 y(2.)46 b Fi(void)h(Coords_setDefaultFields)41 │ │ │ │ b(\()48 b(Coords)e(*coords)g(\))h(;)227 1023 y Fj(This)34 │ │ │ │ b(metho)s(d)g(sets)h(the)g(structure's)f(\014elds)g(are)h(set)h(to)f │ │ │ │ @@ -3594,17 +3583,17 @@ │ │ │ │ Fi(n2)e Fj(or)h Fi(ncomp)e Fj(are)j(nonp)s(ositiv)m(e,)h(an)d(error)h │ │ │ │ (message)h(is)f(prin)m(ted)f(and)g(the)h(program)227 │ │ │ │ 5095 y(exits.)111 5294 y(3.)46 b Fi(void)h(Coords_init27P)d(\()j │ │ │ │ (Coords)f(*coords,)g(float)g(bbox[],)g(int)h(type,)1277 │ │ │ │ 5407 y(int)g(n1,)g(int)g(n2,)g(int)g(n3,)g(int)g(ncomp)f(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1046 4 v 1227 100 a Fi(Coords)29 │ │ │ │ -b Fb(:)41 b Fa(DRAFT)121 b Fb(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fj(3)227 399 y(This)g(metho)s(d)g(initializes)i(a)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1263 100 a Fi(Coords)29 │ │ │ │ +b Fb(:)41 b Fa(DRAFT)121 b Fb(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fj(3)227 399 y(This)g(metho)s(d)g(initializes)i(a)f │ │ │ │ Fi(Coords)e Fj(ob)5 b(ject)32 b(for)f(a)h(27-p)s(oin)m(t)h(op)s(erator) │ │ │ │ e(on)h(a)f Fi(n1)21 b Ff(\002)f Fi(n2)h Ff(\002)f Fi(n3)31 │ │ │ │ b Fj(grid)g(with)227 511 y Fi(ncomp)42 b Fj(degrees)j(of)e(freedom)h │ │ │ │ (at)g(a)g(grid)f(p)s(oin)m(t.)81 b(The)43 b(grid's)g(lo)s(cation)i(is)f │ │ │ │ (giv)m(en)h(b)m(y)e(the)h(b)s(ounding)227 624 y(b)s(o)m(x)34 │ │ │ │ b(v)m(ector,)i Fi(bbox[0])31 b Fj(=)i Fh(x)p Fj(-co)s(ordinate)i(of)f │ │ │ │ (the)f(south)m(w)m(est)i(p)s(oin)m(t,)f Fi(bbox[1])e │ │ │ │ @@ -3685,17 +3674,17 @@ │ │ │ │ Fj(2,)34 b Fi(Coords)p 3110 5294 V 32 w(setValue\(coords,)227 │ │ │ │ 5407 y(2,)47 b(16,)g(3.3\))30 b Fj(sets)g Fh(y)1005 5421 │ │ │ │ y Fe(16)1105 5407 y Fj(=)25 b(3)p Fh(:)p Fj(3,)32 b(and)d │ │ │ │ Fi(Coords)p 1843 5407 V 33 w(setValue\(coords,)43 b(3,)48 │ │ │ │ b(118,)e(0\))30 b Fj(sets)h Fh(z)3409 5421 y Fe(118)3544 │ │ │ │ 5407 y Fj(=)25 b(0.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(Coords)28 b Fb(:)41 b Fa(DRAFT)30 b Fb(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 227 399 a Fa(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(Coords)28 b Fb(:)41 b Fa(DRAFT)30 b Fb(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 227 399 a Fa(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fj(If)29 b Fi(coords)g Fj(is)h Fi(NULL)p │ │ │ │ Fj(,)f(or)h(if)g Fi(idim)f Fj(do)s(es)g(not)h(lie)h(in)f(the)g(range)g │ │ │ │ Fi([1,ndim])p Fj(,)e(or)i(if)g Fi(icoor)227 511 y Fj(do)s(es)g(not)h │ │ │ │ (lie)g(in)f(the)h(range)g Fi([0,ncoor\))p Fj(,)d(an)i(error)g(message)h │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)0 790 │ │ │ │ y Fc(1.2.4)112 b(IO)38 b(metho)s(ds)0 989 y Fj(There)29 │ │ │ │ b(are)g(the)g(usual)g(eigh)m(t)i(IO)d(routines.)40 b(The)29 │ │ │ │ @@ -3772,17 +3761,17 @@ │ │ │ │ 5253 y(data,)32 b(the)e(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fi(fwrite)p Fj(,)f(zero)i(is)g(returned.)227 5407 y Fa(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(coords)f │ │ │ │ Fj(or)h Fi(fp)g Fj(are)h Fi(NULL)e Fj(an)h(error)g(message)i(is)e(prin) │ │ │ │ m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1046 4 v 1227 100 a Fi(Coords)29 │ │ │ │ -b Fb(:)41 b Fa(DRAFT)121 b Fb(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fj(5)111 399 y(7.)46 b Fi(int)h │ │ │ │ +TeXDict begin 5 4 bop 91 100 1082 4 v 1263 100 a Fi(Coords)29 │ │ │ │ +b Fb(:)41 b Fa(DRAFT)121 b Fb(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fj(5)111 399 y(7.)46 b Fi(int)h │ │ │ │ (Coords_writeForHumanEye)42 b(\()47 b(Coords)f(*coords,)g(FILE)g(*fp)h │ │ │ │ (\))h(;)227 554 y Fj(This)43 b(metho)s(d)g(write)h(the)g │ │ │ │ Fi(Coords)e Fj(ob)5 b(ject)45 b(to)f(a)g(\014le)g(in)g(an)f(easy)i(to)f │ │ │ │ (read)g(fashion.)80 b(The)43 b(metho)s(d)227 667 y Fi(Coords)p │ │ │ │ 521 667 29 4 v 33 w(writeStats\(\))24 b Fj(is)k(called)h(to)f(write)g │ │ │ │ (out)g(the)g(header)g(and)f(statistics.)42 b(The)27 b │ │ │ │ Fi(coors[])f Fj(v)m(ector)j(is)227 780 y(then)h(prin)m(ted)g(out.)41 │ │ │ │ @@ -3846,17 +3835,17 @@ │ │ │ │ 5181 y Ff(\017)46 b Fj(The)33 b Fi(msgFile)e Fj(parameter)j(determines) │ │ │ │ f(the)h(message)g(\014le)f(|)h(if)f Fi(msgFile)e Fj(is)i │ │ │ │ Fi(stdout)p Fj(,)g(then)g(the)427 5294 y(message)24 b(\014le)e(is)h │ │ │ │ Fa(stdout)p Fj(,)i(otherwise)e(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ Fa(app)-5 b(end)24 b Fj(status)f(to)g(receiv)m(e)h(an)m(y)f(message)427 │ │ │ │ 5407 y(data.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(Coords)28 b Fb(:)41 b Fa(DRAFT)30 b Fb(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 336 399 a Ff(\017)46 b Fj(The)20 b │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(Coords)28 b Fb(:)41 b Fa(DRAFT)30 b Fb(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 336 399 a Ff(\017)46 b Fj(The)20 b │ │ │ │ Fi(outCoordsFile)d Fj(parameter)j(is)h(the)f(output)g(\014le)g(for)h │ │ │ │ (the)f Fi(Coords)f Fj(ob)5 b(ject.)38 b(If)20 b Fi(outCoordsFile)427 │ │ │ │ 511 y Fj(is)h Fi(none)e Fj(then)h(the)g Fi(Coords)f Fj(ob)5 │ │ │ │ b(ject)21 b(is)f(not)h(written)f(to)h(a)g(\014le.)37 │ │ │ │ b(Otherwise,)22 b(the)f Fi(Coords)p 3409 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fj(metho)s(d)27 b(is)h(called)h(to)f(write) │ │ │ │ g(the)g(ob)5 b(ject)29 b(to)f(a)g(formatted)g(\014le)g(\(if)g │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -18,15 +18,15 @@ │ │ │ │ │ 1.2 Prototypes and descriptions of Coords methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ Coords object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1 │ │ │ │ │ - 2 Coords : DRAFT December 20, 2018 │ │ │ │ │ + 2 Coords : DRAFT October 11, 2021 │ │ │ │ │ 1. Coords * Coords_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Coords structure and then sets the default fields │ │ │ │ │ by a call to Coords setDefaultFields(). │ │ │ │ │ 2. void Coords_setDefaultFields ( Coords *coords ) ; │ │ │ │ │ This method sets the structure’s fields are set to default values: type = COORDS BY TUPLE, │ │ │ │ │ ndim = ncoor = 0 and coors = NULL. │ │ │ │ │ Error checking: If coords is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ point, bbox[2] = x-coordinate of the northeast point, and bbox[3] = y-coordinate of the │ │ │ │ │ northeast point. │ │ │ │ │ Error checking: If coordsbboxisNULL,oriftypeisnotCOORDS BY TUPLEorCOORDS BY COORD, │ │ │ │ │ or if any of n1, n2 or ncomp are nonpositive, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 3. void Coords_init27P ( Coords *coords, float bbox[], int type, │ │ │ │ │ int n1, int n2, int n3, int ncomp ) ; │ │ │ │ │ - Coords : DRAFT December 20, 2018 3 │ │ │ │ │ + Coords : DRAFT October 11, 2021 3 │ │ │ │ │ This method initializes a Coords object for a 27-point operator on a n1 ×n2 ×n3 grid with │ │ │ │ │ ncomp degrees of freedom at a grid point. The grid’s location is given by the bounding │ │ │ │ │ box vector, bbox[0] = x-coordinate of the southwest point, bbox[1] = y-coordinate of the │ │ │ │ │ southwest point, bbox[2] = z-coordinate of the southwest point, bbox[3] = x-coordinate │ │ │ │ │ of the northeast point, bbox[4] = y-coordinate of the northeast point, and bbox[5] = z- │ │ │ │ │ coordinate of the northeast point. │ │ │ │ │ Error checking: If coordsbboxisNULL,oriftypeisnotCOORDS BY TUPLEorCOORDS BY COORD, │ │ │ │ │ @@ -94,15 +94,15 @@ │ │ │ │ │ does not lie in the range [0,ncoor), an error message is printed and the program exits. │ │ │ │ │ 5. void Coords_setValue ( Coords *coords, int idim, int icoor, float val ) ; │ │ │ │ │ Thismethodsetsthefloatvalueoftheidim-thcoordinateoftheicoor-thgridpoint. Forex- │ │ │ │ │ ample, Coords setValue(coords, 1, 27, 1.2) sets x =1.2, Coords setValue(coords, │ │ │ │ │ 27 │ │ │ │ │ 2, 16, 3.3) sets y =3.3, and Coords setValue(coords, 3, 118, 0) sets z =0. │ │ │ │ │ 16 118 │ │ │ │ │ - 4 Coords : DRAFT December 20, 2018 │ │ │ │ │ + 4 Coords : DRAFT October 11, 2021 │ │ │ │ │ Error checking: If coords is NULL, or if idim does not lie in the range [1,ndim], or if icoor │ │ │ │ │ does not lie in the range [0,ncoor), an error message is printed and the program exits. │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ There are the usual eight IO routines. The file structure of a Coords object is simple: type, ndim, │ │ │ │ │ ncoor followed by the coors[] vector. │ │ │ │ │ 1. int Coords_readFromFile ( Coords *coords, char *filename ) ; │ │ │ │ │ This method read a Coords object from a file. It tries to open the file and if it is successful, it │ │ │ │ │ @@ -129,15 +129,15 @@ │ │ │ │ │ This method writes a Coords object to a formatted file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If coords or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 6. int Coords_writeToBinaryFile ( Coords *coords, FILE *fp ) ; │ │ │ │ │ This method writes a Coords object to a binary file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If coords or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ - Coords : DRAFT December 20, 2018 5 │ │ │ │ │ + Coords : DRAFT October 11, 2021 5 │ │ │ │ │ 7. int Coords_writeForHumanEye ( Coords *coords, FILE *fp ) ; │ │ │ │ │ This method write the Coords object to a file in an easy to read fashion. The method │ │ │ │ │ Coords writeStats() is called to write out the header and statistics. The coors[] vector is │ │ │ │ │ then printed out. The value 1 is returned. │ │ │ │ │ Error checking: If coords or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 8. int Coords_writeStats ( Coords *coords, FILE *fp ) ; │ │ │ │ │ The header and statistics are written. The value 1 is returned. │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ This driver program creates a Coords object for 9-point finite difference operator on a n1×n2 │ │ │ │ │ grid and optionally writes it to a file. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ that all objects are written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any message │ │ │ │ │ data. │ │ │ │ │ - 6 Coords : DRAFT December 20, 2018 │ │ │ │ │ + 6 Coords : DRAFT October 11, 2021 │ │ │ │ │ • TheoutCoordsFileparameteristheoutputfilefortheCoordsobject. IfoutCoordsFile │ │ │ │ │ is nonethentheCoordsobjectisnotwrittentoafile. Otherwise,theCoords writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if outCoordsFile is of the form │ │ │ │ │ *.coordsf), or a binary file (if outCoordsFile is of the form *.coordsb). │ │ │ │ │ Index │ │ │ │ │ Coords clearData(), 2 │ │ │ │ │ Coords free(), 2 │ │ ├── ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ ├── DSTree.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMMI10 CMSY10 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o DSTree.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -709,22 +709,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -898,88 +898,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3197,16 +3186,16 @@ │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 56 1[51 62 50 1[54 11[86 1[62 3[84 5[42 6[80 11[56 56 │ │ │ │ 56 56 56 56 2[31 46[{}28 99.6264 /CMBX12 rf /Fb 141[62 │ │ │ │ -12[62 16[62 62 14[62 68[{}5 119.552 /CMTT12 rf /Fc 141[36 │ │ │ │ -4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 │ │ │ │ +12[62 16[62 62 14[62 68[{}5 119.552 /CMTT12 rf /Fc 139[35 │ │ │ │ +1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 │ │ │ │ 90.9091 /CMSL10 rf /Fd 154[40 40 84[45 15[{}3 90.9091 │ │ │ │ /CMSY10 rf /Fe 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 │ │ │ │ 67 67 2[37 46[{}27 119.552 /CMBX12 rf /Ff 148[47 23[56 │ │ │ │ 21[45 61[{}3 90.9091 /CMMI10 rf /Fg 136[60 1[49 30 37 │ │ │ │ 38 1[46 46 51 2[42 1[28 46 42 1[42 46 42 42 46 12[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}24 90.9091 /CMTI10 rf │ │ │ │ @@ -3289,17 +3278,17 @@ │ │ │ │ 5074 y Fd(\017)46 b Fh(Tree)h(*tree)29 b Fi(:)41 b(p)s(oin)m(ter)30 │ │ │ │ b(to)h(the)g Fh(Tree)e Fi(ob)5 b(ject)136 5294 y Fd(\017)46 │ │ │ │ b Fh(IV)h(*mapIV)d Fi(:)h(p)s(oin)m(ter)g(to)h(the)f │ │ │ │ Fh(IV)g Fi(ob)5 b(ject)46 b(that)g(holds)e(the)i(map)e(from)h(v)m │ │ │ │ (ertices)i(to)f(domains)f(and)227 5407 y(separators.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1094 4 v │ │ │ │ -1275 w Fh(Tree)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 0 399 a Fe(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1130 4 v │ │ │ │ +1311 w Fh(Tree)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 0 399 a Fe(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fb(DSTree)d Fe(metho)t(ds)0 │ │ │ │ 636 y Fi(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ (elong)f(to)h(the)0 749 y Fh(DSTree)29 b Fi(ob)5 b(ject.)0 │ │ │ │ 1047 y Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1253 y │ │ │ │ Fi(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s │ │ │ │ (ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h │ │ │ │ @@ -3354,17 +3343,17 @@ │ │ │ │ 5247 y Fi(This)27 b(metho)s(d)f(returns)g(a)h(p)s(oin)m(ter)g(to)h(its) │ │ │ │ g Fh(IV)e Fi(ob)5 b(ject)28 b(that)g(maps)e(v)m(ertices)j(to)f(domains) │ │ │ │ f(and)f(separators.)227 5407 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fi(If)30 b Fh(dstree)f Fi(is)h Fh(NULL)p │ │ │ │ Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1094 4 v 1275 100 a Fh(Tree)29 │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fi(3)0 399 y Fa(1.2.3)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1311 100 a Fh(Tree)29 │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fi(3)0 399 y Fa(1.2.3)112 b(Initializer)38 │ │ │ │ b(metho)s(ds)0 602 y Fi(There)c(are)h(three)f(initializers)j(and)d(t)m │ │ │ │ (w)m(o)h(help)s(er)f(functions)g(to)h(set)g(the)g(dimensions)e(of)i │ │ │ │ (the)g(dstree,)g(allo)s(cate)0 715 y(the)c(three)f(v)m(ectors,)i(and)e │ │ │ │ (\014ll)g(the)h(information.)111 969 y(1.)46 b Fh(void)h(DSTree_init1)d │ │ │ │ (\()k(DSTree)e(*dstree,)f(int)i(ndomsep,)f(int)h(nvtx)f(\))i(;)227 │ │ │ │ 1126 y Fi(This)28 b(metho)s(d)f(initializes)k(an)d(ob)5 │ │ │ │ b(ject)29 b(giv)m(en)g(the)f(n)m(um)m(b)s(er)f(of)h(v)m(ertices,)j │ │ │ │ @@ -3432,17 +3421,17 @@ │ │ │ │ (k,)f(its)f(stage)i(is)f Fd(d)p Ff(k)s(=)p Fi(2)p Fd(e)p │ │ │ │ Fi(.)227 5294 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ b Fi(If)29 b Fh(dstree)g Fi(is)i Fh(NULL)p Fi(,)e(or)h(if)h(the)f(ob)5 │ │ │ │ b(ject)32 b(has)e(not)g(b)s(een)g(initialized,)j(an)d(error)g(message) │ │ │ │ 227 5407 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1094 4 v │ │ │ │ -1275 w Fh(Tree)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 111 399 a Fi(3.)46 b Fh(IV)h(*)h(DSTree_MS2stages)43 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1130 4 v │ │ │ │ +1311 w Fh(Tree)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 111 399 a Fi(3.)46 b Fh(IV)h(*)h(DSTree_MS2stages)43 │ │ │ │ b(\()48 b(DSTree)e(*dstree)g(\))95 b(;)227 553 y Fi(This)40 │ │ │ │ b(metho)s(d)g(returns)f(the)i(stages)h(for)e(the)h(standard)f(m)m │ │ │ │ (ultisection)i(ordering.)71 b(The)40 b(lev)m(els)i(of)f(the)227 │ │ │ │ 666 y(domains)34 b(and)f(separators)h(are)g(obtained)g(via)g(a)g(call)h │ │ │ │ (to)g Fh(Tree)p 2455 666 29 4 v 33 w(setHeightImetric\(\))p │ │ │ │ Fi(.)45 b(A)34 b Fh(stagesIV)227 779 y(IV)40 b Fi(ob)5 │ │ │ │ b(ject)41 b(is)f(created)h(of)f(size)h Fh(nvtx)47 b(=)g(mapIV->size)p │ │ │ │ @@ -3513,17 +3502,17 @@ │ │ │ │ (in)h(the)f(tree)h(via)g(a)g(p)s(ost-order)f(tra)m(v)m(ersal.)227 │ │ │ │ 5294 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)41 b Fi(If)29 │ │ │ │ b Fh(dstree)g Fi(is)i Fh(NULL)p Fi(,)e(or)h(if)h(the)f(ob)5 │ │ │ │ b(ject)32 b(has)e(not)g(b)s(een)g(initialized,)j(an)d(error)g(message) │ │ │ │ 227 5407 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1094 4 v 1275 100 a Fh(Tree)29 │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fi(5)111 399 y(3.)46 b Fh(int)h(DSTree_domainWeight)c │ │ │ │ +TeXDict begin 5 4 bop 91 100 1130 4 v 1311 100 a Fh(Tree)29 │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fi(5)111 399 y(3.)46 b Fh(int)h(DSTree_domainWeight)c │ │ │ │ (\()k(DSTree)f(*dstree,)g(int)h(vwghts[])e(\))j(;)227 │ │ │ │ 560 y Fi(This)25 b(metho)s(d)g(returns)g(the)h(w)m(eigh)m(t)h(of)f(the) │ │ │ │ g(v)m(ertices)h(in)f(the)g(domains.)38 b(If)26 b Fh(vwghts)e │ │ │ │ Fi(is)i Fh(NULL)p Fi(,)e(the)i(v)m(ertices)227 673 y(ha)m(v)m(e)32 │ │ │ │ b(unit)e(w)m(eigh)m(t.)227 834 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fi(If)30 b Fh(dstree)f Fi(is)h Fh(NULL)p │ │ │ │ Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ @@ -3590,21 +3579,21 @@ │ │ │ │ b Fh(dstree)e Fi(or)h Fh(fn)g Fi(are)i Fh(NULL)p Fi(,)d(or)i(if)g │ │ │ │ Fh(fn)f Fi(is)h(not)g(of)f(the)h(form)g Fh(*.dstreef)d │ │ │ │ Fi(\(for)j(a)227 5294 y(formatted)32 b(\014le\))g(or)f │ │ │ │ Fh(*.dstreeb)e Fi(\(for)j(a)f(binary)g(\014le\),)h(an)f(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(metho)s(d)227 │ │ │ │ 5407 y(returns)e(zero.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fi(6)p 136 100 1094 4 v │ │ │ │ -1275 w Fh(Tree)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 111 399 a Fi(5.)46 b Fh(int)h │ │ │ │ -(DSTree_writeToFormattedFi)o(le)42 b(\()47 b(DSTree)f(*dstree,)g(FILE)g │ │ │ │ -(*fp)h(\))h(;)227 548 y Fi(This)30 b(metho)s(d)g(writes)g(a)h │ │ │ │ -Fh(DSTree)e Fi(ob)5 b(ject)31 b(to)g(a)g(formatted)g(\014le.)41 │ │ │ │ -b(If)30 b(there)h(are)g(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fi(6)p 136 100 1130 4 v │ │ │ │ +1311 w Fh(Tree)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 111 399 a Fi(5.)46 b Fh(int)h(DSTree_writeToFormattedFi)o │ │ │ │ +(le)42 b(\()47 b(DSTree)f(*dstree,)g(FILE)g(*fp)h(\))h(;)227 │ │ │ │ +548 y Fi(This)30 b(metho)s(d)g(writes)g(a)h Fh(DSTree)e │ │ │ │ +Fi(ob)5 b(ject)31 b(to)g(a)g(formatted)g(\014le.)41 b(If)30 │ │ │ │ +b(there)h(are)g(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ 661 y(data,)h(the)e(v)-5 b(alue)31 b Fh(1)f Fi(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fh(fprintf)p Fi(,)f(zero)i(is)f(returned.)227 810 y Fg(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(dstree)f │ │ │ │ Fi(or)h Fh(fp)g Fi(is)h Fh(NULL)p Fi(,)e(an)h(error)g(message)i(is)e │ │ │ │ (prin)m(ted)g(and)g(zero)h(is)f(returned.)111 996 y(6.)46 │ │ │ │ b Fh(int)h(DSTree_writeToBinaryFile)41 b(\()48 b(DSTree)e(*dstree,)f │ │ │ │ @@ -3674,17 +3663,17 @@ │ │ │ │ 5181 V 33 w(writeToFile\(\))17 b Fi(metho)s(d)427 5294 │ │ │ │ y(is)31 b(called)h(to)f(write)g(the)g(ob)5 b(ject)32 │ │ │ │ b(to)f(a)g(formatted)h(\014le)f(\(if)g Fh(outFile)d Fi(is)j(of)g(the)g │ │ │ │ (form)f Fh(*.dinpmtxf)p Fi(\),)427 5407 y(or)h(a)f(binary)g(\014le)g │ │ │ │ (\(if)h Fh(outFile)e Fi(is)h(of)g(the)h(form)f Fh(*.dinpmtxb)p │ │ │ │ Fi(\).)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1094 4 v 1275 100 a Fh(Tree)29 │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fi(7)111 399 y(2.)46 b Fh(writeStagesIV)e(msglvl)j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1130 4 v 1311 100 a Fh(Tree)29 │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fi(7)111 399 y(2.)46 b Fh(writeStagesIV)e(msglvl)j │ │ │ │ (msgFile)e(inFile)h(type)h(outFile)227 544 y Fi(This)28 │ │ │ │ b(driv)m(er)h(program)g(reads)f(in)h(a)g Fh(DSTree)e │ │ │ │ Fi(from)h(a)i(\014le,)f(creates)h(a)g(stages)g Fh(IV)e │ │ │ │ Fi(ob)5 b(ject)30 b(and)e(writes)h(it)g(to)227 657 y(a)i(\014le.)336 │ │ │ │ 855 y Fd(\017)46 b Fi(The)28 b Fh(msglvl)f Fi(parameter)i(determines)g │ │ │ │ (the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fh(msglvl)46 │ │ │ │ b(>=)h(3)28 b Fi(means)427 968 y(the)j Fh(DSTree)e Fi(ob)5 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ The DSTree object has a very simple data structure. It contains a Tree object to represent the │ │ │ │ │ tree fields of the domains and separators, and an IV object to hold the map from the vertices to │ │ │ │ │ the domains and separators. │ │ │ │ │ • Tree *tree : pointer to the Tree object │ │ │ │ │ • IV *mapIV : pointer to the IV object that holds the map from vertices to domains and │ │ │ │ │ separators. │ │ │ │ │ 1 │ │ │ │ │ - 2 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 2 Tree : DRAFT October 11, 2021 │ │ │ │ │ 1.2 Prototypes and descriptions of DSTree methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ DSTree object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. DSTree * DSTree_new ( void ) ; │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ 1. Tree * DSTree_tree ( DSTree *dstree ) ; │ │ │ │ │ This method returns a pointer to its Tree object. │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. IV * DSTree_mapIV ( DSTree *dstree ) ; │ │ │ │ │ This method returns a pointer to its IV object that maps vertices to domains and separators. │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ - Tree : DRAFT December 20, 2018 3 │ │ │ │ │ + Tree : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ There are three initializers and two helper functions to set the dimensions of the dstree, allocate │ │ │ │ │ the three vectors, and fill the information. │ │ │ │ │ 1. void DSTree_init1 ( DSTree *dstree, int ndomsep, int nvtx ) ; │ │ │ │ │ This method initializes an object given the number of vertices, (the dimension of mapIV) and │ │ │ │ │ domains and separators (the number of nodes in tree). It then clears any previous data │ │ │ │ │ with a call to DSTree clearData(). The tree field is created and initialized via a call to │ │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ │ This method returns the stages for a nested dissection variant, separators on two adjacent │ │ │ │ │ levels are put into the same stage. The levels of the domains and separators are obtained │ │ │ │ │ via a call to Tree setHeightImetric(). A stagesIV IV object is created of size nvtx = │ │ │ │ │ mapIV->size, filled and then returned. If a vertex is found in a domain, its stage is zero. If │ │ │ │ │ a vertex is found in a separator at level k, its stage is ⌈k/2⌉. │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - 4 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 4 Tree : DRAFT October 11, 2021 │ │ │ │ │ 3. IV * DSTree_MS2stages ( DSTree *dstree ) ; │ │ │ │ │ This method returns the stages for the standard multisection ordering. The levels of the │ │ │ │ │ domains and separators are obtained via a call to Tree setHeightImetric(). A stagesIV │ │ │ │ │ IV object is created of size nvtx = mapIV->size, filled and then returned. If a vertex is │ │ │ │ │ found in a domain, its stage is zero. If a vertex is found in a separator, its stage is one. │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ @@ -125,15 +125,15 @@ │ │ │ │ │ If dstree is NULL, an error message is printed and the program exits. Otherwise, the number │ │ │ │ │ of bytes taken by this object is returned. │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. void DSTree_renumberViaPostOT ( DSTree *dstree ) ; │ │ │ │ │ This method renumbers the fronts in the tree via a post-order traversal. │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - Tree : DRAFT December 20, 2018 5 │ │ │ │ │ + Tree : DRAFT October 11, 2021 5 │ │ │ │ │ 3. int DSTree_domainWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ This method returns the weight of the vertices in the domains. If vwghts is NULL, the vertices │ │ │ │ │ have unit weight. │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. int DSTree_separatorWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ This method returns the weight of the vertices in the separators. If vwghts is NULL, the │ │ │ │ │ vertices have unit weight. │ │ │ │ │ @@ -159,15 +159,15 @@ │ │ │ │ │ 4. int DSTree_writeToFile ( DSTree *dstree, char *fn ) ; │ │ │ │ │ This method writes a DSTree object to a file. It tries to open the file and if it is successful, │ │ │ │ │ it then calls DSTree writeFromFormattedFile()or DSTree writeFromBinaryFile(),closes │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ Error checking: If dstree or fn are NULL, or if fn is not of the form *.dstreef (for a │ │ │ │ │ formatted file) or *.dstreeb (for a binary file), an error message is printed and the method │ │ │ │ │ returns zero. │ │ │ │ │ - 6 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 6 Tree : DRAFT October 11, 2021 │ │ │ │ │ 5. int DSTree_writeToFormattedFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ This method writes a DSTree object to a formatted file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If dstree or fp is NULL, an error message is printed and zero is returned. │ │ │ │ │ 6. int DSTree_writeToBinaryFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ This method writes a DSTree object to a binary file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ @@ -195,15 +195,15 @@ │ │ │ │ │ • The inFile parameter is the input file for the DSTree object. It must be of the │ │ │ │ │ form *.dinpmtxf or *.dinpmtxb. The DSTree object is read from the file via the │ │ │ │ │ DSTree readFromFile() method. │ │ │ │ │ • The outFileparameter is the output file for the DSTree object. If outFile is none then │ │ │ │ │ the DSTreeobject is not written to a file. Otherwise, the DSTree writeToFile()method │ │ │ │ │ is called to write the object to a formatted file (if outFile is of the form *.dinpmtxf), │ │ │ │ │ or a binary file (if outFile is of the form *.dinpmtxb). │ │ │ │ │ - Tree : DRAFT December 20, 2018 7 │ │ │ │ │ + Tree : DRAFT October 11, 2021 7 │ │ │ │ │ 2. writeStagesIV msglvl msgFile inFile type outFile │ │ │ │ │ This driver program reads in a DSTree from a file, creates a stages IV object and writes it to │ │ │ │ │ a file. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the DSTree object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ ├── ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ ├── DV.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMBX10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%+ CMMI10 CMR8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o DV.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1654,22 +1654,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1843,88 +1843,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3742,16 +3731,16 @@ │ │ │ │ @start /Fa 206[35 35 48[{}2 66.4176 /CMR8 rf /Fb 128[25 │ │ │ │ 64[71 1[71 1[25 58[{}4 90.9091 /CMMI10 rf /Fc 133[50 │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ 5[84 5[42 6[80 12[56 56 56 56 56 2[31 46[{}25 99.6264 │ │ │ │ /CMBX12 rf /Fd 139[62 4[62 4[62 4[62 1[62 62 11[62 17[62 │ │ │ │ 68[{}8 119.552 /CMTT12 rf /Fe 138[49 30 37 38 1[46 46 │ │ │ │ 51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 1[66 11[59 │ │ │ │ -62 69 2[68 6[28 58[{}25 90.9091 /CMTI10 rf /Ff 141[36 │ │ │ │ -4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 │ │ │ │ +62 69 2[68 6[28 58[{}25 90.9091 /CMTI10 rf /Ff 139[35 │ │ │ │ +1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 │ │ │ │ 90.9091 /CMSL10 rf /Fg 134[71 2[71 75 52 53 55 1[75 67 │ │ │ │ 75 112 3[37 75 67 41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ 16[67 67 67 2[37 46[{}25 119.552 /CMBX12 rf /Fh 235[71 │ │ │ │ 4[45 15[{}2 90.9091 /CMSY10 rf /Fi 169[79 17[80 68[{}2 │ │ │ │ 90.9091 /CMBX10 rf /Fj 130[48 1[48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 2[48 48 48 48 48 48 48 48 │ │ │ │ 48 1[48 1[48 1[48 4[48 48 48 48 3[48 48 48 48 2[48 48 │ │ │ │ @@ -3832,17 +3821,17 @@ │ │ │ │ Fj(DV)g Fk(ob)5 b(ject.)41 b(On)29 b(the)g(other)h(hand,)e(the)i(con)m │ │ │ │ (v)m(enience)0 4684 y(mak)m(es)h(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ b(ject.)0 4989 y Fg(1.1)135 b(Data)46 b(Structure)0 5214 │ │ │ │ y Fk(The)30 b Fj(DV)g Fk(structure)g(has)g(three)g(\014elds.)136 │ │ │ │ 5407 y Fh(\017)46 b Fj(int)h(size)29 b Fk(:)41 b(presen)m(t)30 │ │ │ │ b(size)i(of)e(the)h(v)m(ector.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1146 4 v │ │ │ │ -1328 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 136 399 a Fh(\017)46 b Fj(int)h(maxsize)29 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1182 4 v │ │ │ │ +1364 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 136 399 a Fh(\017)46 b Fj(int)h(maxsize)29 │ │ │ │ b Fk(:)40 b(maxim)m(um)30 b(size)i(of)e(the)h(v)m(ector.)136 │ │ │ │ 608 y Fh(\017)46 b Fj(int)h(owned)27 b Fk(:)40 b(o)m(wner)28 │ │ │ │ b(\015ag)h(for)f(the)h(data.)41 b(When)28 b Fj(owned)46 │ │ │ │ b(=)i(1)p Fk(,)28 b(storage)i(for)f Fj(owned)e(double)p │ │ │ │ Fk('s)f(has)j(b)s(een)227 721 y(allo)s(cated)k(b)m(y)d(this)h(ob)5 │ │ │ │ b(ject)31 b(and)f(can)h(b)s(e)f(free'd)g(b)m(y)h(the)f(ob)5 │ │ │ │ b(ject.)42 b(When)31 b Fj(owned)46 b(==)h(0)30 b Fk(but)g │ │ │ │ @@ -3896,17 +3885,17 @@ │ │ │ │ (storage)i(b)m(y)d(a)i(call)g(to)f Fj(DV)p 2148 5133 │ │ │ │ V 34 w(clearData\(\))d Fk(then)i(free's)h(the)g(storage)h(for)f(the)227 │ │ │ │ 5246 y(structure)h(with)g(a)h(call)h(to)f Fj(free\(\))p │ │ │ │ Fk(.)227 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fk(If)30 b Fj(dv)g Fk(is)h Fj(NULL)e Fk(an)h(error)g(message)h(is)g │ │ │ │ (prin)m(ted)f(and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1146 4 v 1328 100 a Fj(DV)29 │ │ │ │ -b Ff(:)i Fe(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fk(3)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1182 4 v 1364 100 a Fj(DV)29 │ │ │ │ +b Ff(:)i Fe(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fk(3)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)0 610 y Fk(These)33 b(metho)s(d)f(allo)m(w)j(access)g(to)e │ │ │ │ (information)h(in)f(the)g(data)h(\014elds)e(without)i(explicitly)g │ │ │ │ (follo)m(wing)h(p)s(oin)m(ters.)0 723 y(There)g(is)h(o)m(v)m(erhead)h │ │ │ │ (in)m(v)m(olv)m(ed)h(with)d(these)h(metho)s(d)g(due)f(to)h(the)g │ │ │ │ (function)g(call)h(and)e(error)h(c)m(hec)m(king)h(inside)0 │ │ │ │ 835 y(the)31 b(metho)s(ds.)111 1110 y(1.)46 b Fj(int)h(DV_owned)f(\()h │ │ │ │ (DV)g(*dv)g(\))h(;)227 1276 y Fk(This)24 b(metho)s(d)g(returns)g(the)g │ │ │ │ @@ -3960,17 +3949,17 @@ │ │ │ │ (double)h(value)f(\))h(;)227 5242 y Fk(This)30 b(metho)s(d)g(sets)g │ │ │ │ (the)h Fj(loc)p Fk('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ Fj(value)p Fk(.)227 5407 y Fe(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)40 b Fk(If)28 b Fj(dv)h Fk(is)g Fj(NULL)e Fk(or)j │ │ │ │ Fj(loc)46 b(<)i(0)p Fk(,)29 b(an)g(error)g(message)h(is)f(prin)m(ted)f │ │ │ │ (and)h(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1146 4 v │ │ │ │ -1328 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 0 399 a Fc(1.2.3)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1182 4 v │ │ │ │ +1364 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 0 399 a Fc(1.2.3)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ 592 y Fk(There)30 b(are)h(three)f(initializer)j(metho)s(ds.)111 │ │ │ │ 806 y(1.)46 b Fj(void)h(DV_init)f(\()h(DV)g(*dv,)g(int)g(size,)f │ │ │ │ (double)g(*entries)g(\))h(;)227 953 y Fk(This)36 b(metho)s(d)g │ │ │ │ (initializes)j(the)d(ob)5 b(ject)38 b(giv)m(en)f(a)g(size)h(for)e(the)h │ │ │ │ (v)m(ector)h(and)e(a)h(p)s(ossible)f(p)s(oin)m(ter)g(to)i(the)227 │ │ │ │ 1066 y(v)m(ectors')30 b(storage.)42 b(An)m(y)28 b(previous)g(data)h(is) │ │ │ │ g(cleared)g(with)f(a)h(call)h(to)f Fj(DV)p 2716 1066 │ │ │ │ @@ -4046,17 +4035,17 @@ │ │ │ │ (offset)f(\))h(;)227 5294 y Fk(This)32 b(metho)s(d)h(shifts)f(the)i │ │ │ │ (base)f(en)m(tries)g(of)h(the)f(v)m(ector)h(and)f(decremen)m(ts)g(the)g │ │ │ │ (presen)m(t)g(size)h(and)f(max-)227 5407 y(im)m(um)g(size)g(of)g(the)f │ │ │ │ (v)m(ector)j(b)m(y)d Fj(offset)p Fk(.)46 b(This)31 b(is)i(a)g │ │ │ │ (dangerous)f(metho)s(d)g(to)h(use)g(b)s(ecause)f(the)h(state)h(of)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1146 4 v 1328 100 a Fj(DV)29 │ │ │ │ -b Ff(:)i Fe(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fk(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1182 4 v 1364 100 a Fj(DV)29 │ │ │ │ +b Ff(:)i Fe(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fk(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ (namely)e Fj(vec)p Fk(,)g(the)g(base)f(of)h(the)f(en)m(tries,)j(is)e │ │ │ │ (corrupted.)58 b(If)35 b(the)i(ob)5 b(ject)37 b(o)m(wns)g(its)227 │ │ │ │ 511 y(en)m(tries)29 b(and)e Fj(DV)p 792 511 29 4 v 34 │ │ │ │ w(free\(\))p Fk(,)g Fj(DV)p 1262 511 V 34 w(setSize\(\))e │ │ │ │ Fk(or)j Fj(DV)p 1958 511 V 34 w(setMaxsize\(\))d Fk(is)j(called)h(b)s │ │ │ │ (efore)f(the)g(base)g(has)g(b)s(een)227 624 y(shifted)h(bac)m(k)g(to)g │ │ │ │ (its)h(original)f(p)s(osition,)h(a)f(segmen)m(tation)i(violation)f │ │ │ │ @@ -4115,17 +4104,17 @@ │ │ │ │ 5088 y(7.)46 b Fj(int)h(DV_sizeOf)e(\()j(DV)f(*dv)g(\))g(;)227 │ │ │ │ 5247 y Fk(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ (b)m(ytes)g(tak)m(en)g(b)m(y)g(the)f(ob)5 b(ject.)227 │ │ │ │ 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(dv)g Fk(is)h Fj(NULL)e Fk(an)h(error)g(message)h(is)g(prin)m(ted)f │ │ │ │ (and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1146 4 v │ │ │ │ -1328 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 111 399 a Fk(8.)46 b Fj(double)g(*)i(DV_first)d(\()j(DV)f │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1182 4 v │ │ │ │ +1364 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 111 399 a Fk(8.)46 b Fj(double)g(*)i(DV_first)d(\()j(DV)f │ │ │ │ (*dv)g(\))g(;)227 511 y(double)f(*)i(DV_next)e(\()h(DV)g(*dv,)g(int)g │ │ │ │ (*pd)g(\))g(;)227 671 y Fk(These)30 b(t)m(w)m(o)i(metho)s(ds)e(are)h │ │ │ │ (used)e(as)i(iterators,)h(e.g.,)227 921 y Fj(for)47 b(\()h(pd)f(=)g │ │ │ │ (DV_first\(dv\))e(;)i(pd)g(!=)h(NULL)e(;)i(pd)f(=)g(DV_next\(dv,)e │ │ │ │ (pd\))i(\))g({)370 1033 y(do)h(something)d(with)i(entry)f(*pd)227 │ │ │ │ 1146 y(})227 1396 y Fk(Eac)m(h)41 b(metho)s(d)f(c)m(hec)m(ks)i(to)f │ │ │ │ (see)g(if)f Fj(dv)g Fk(or)g Fj(pd)g Fk(is)g Fj(NULL)p │ │ │ │ @@ -4185,17 +4174,17 @@ │ │ │ │ b(are)i(the)f(usual)f(eigh)m(t)i(IO)f(routines.)40 b(The)30 │ │ │ │ b(\014le)f(structure)h(of)g(a)g Fj(DV)f Fk(ob)5 b(ject)31 │ │ │ │ b(is)f(simple:)41 b(the)30 b(\014rst)f(en)m(try)h(is)0 │ │ │ │ 5407 y Fj(size)p Fk(,)f(follo)m(w)m(ed)j(b)m(y)f(the)f │ │ │ │ Fj(size)g Fk(en)m(tries)h(found)e(in)h Fj(vec[])p Fk(.)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1146 4 v 1328 100 a Fj(DV)29 │ │ │ │ -b Ff(:)i Fe(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fk(7)111 399 y(1.)46 b Fj(int)h(DV_readFromFile)d(\() │ │ │ │ +TeXDict begin 7 6 bop 91 100 1182 4 v 1364 100 a Fj(DV)29 │ │ │ │ +b Ff(:)i Fe(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fk(7)111 399 y(1.)46 b Fj(int)h(DV_readFromFile)d(\() │ │ │ │ j(DV)g(*dv,)g(char)g(*fn)g(\))g(;)227 547 y Fk(This)33 │ │ │ │ b(metho)s(d)g(reads)g(a)h Fj(DV)f Fk(ob)5 b(ject)35 b(from)e(a)h │ │ │ │ (\014le.)50 b(It)34 b(tries)f(to)i(op)s(en)e(the)g(\014le)h(and)f(if)g │ │ │ │ (it)h(is)g(successful,)g(it)227 660 y(then)j(calls)g │ │ │ │ Fj(DV)p 751 660 29 4 v 34 w(readFromFormattedFile\(\))30 │ │ │ │ b Fk(or)37 b Fj(DV)p 2133 660 V 34 w(readFromBinaryFile\(\))p │ │ │ │ Fk(,)32 b(closes)38 b(the)f(\014le)g(and)227 772 y(returns)29 │ │ │ │ @@ -4276,17 +4265,17 @@ │ │ │ │ (\))h(;)227 5259 y Fk(This)30 b(metho)s(d)g(writes)g(the)h(header)f │ │ │ │ (and)g(statistics)i(to)f(a)g(\014le.)41 b(The)29 b(v)-5 │ │ │ │ b(alue)31 b Fj(1)f Fk(is)h(returned.)227 5407 y Fe(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(dv)g Fk(or)g │ │ │ │ Fj(fp)g Fk(are)h Fj(NULL)p Fk(,)e(an)i(error)f(message)h(is)g(prin)m │ │ │ │ (ted)f(and)f(zero)i(is)g(returned.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1146 4 v │ │ │ │ -1328 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 111 399 a Fk(9.)46 b Fj(int)h(DV_writeForMatlab)c(\()48 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1182 4 v │ │ │ │ +1364 w Fj(DV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 111 399 a Fk(9.)46 b Fj(int)h(DV_writeForMatlab)c(\()48 │ │ │ │ b(DV)f(*dv,)g(char)f(*name,)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ 549 y Fk(This)37 b(metho)s(d)h(writes)f(the)i(en)m(tries)f(of)g(the)g │ │ │ │ (v)m(ector)i(to)e(a)g(\014le)g(suitable)h(to)f(b)s(e)g(read)f(b)m(y)h │ │ │ │ (Matlab.)64 b(The)227 662 y(c)m(haracter)31 b(string)e │ │ │ │ Fj(name)f Fk(is)h(the)g(name)g(of)g(the)g(v)m(ector,)i(e.g,)g(if)e │ │ │ │ Fj(name)46 b(=)i("A")p Fk(,)28 b(then)h(w)m(e)g(ha)m(v)m(e)h(lines)g │ │ │ │ (of)f(the)227 775 y(form)227 1000 y Fj(A\(1\))47 b(=)g │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ simplest operations, and so when we need to manipulate an double vector inside a loop, we extract │ │ │ │ │ out the size and pointer to the base array from the DV object. On the other hand, the convenience │ │ │ │ │ makes it a widely used object. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The DV structure has three fields. │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ 1 │ │ │ │ │ - 2 DV : DRAFT December 20, 2018 │ │ │ │ │ + 2 DV : DRAFT October 11, 2021 │ │ │ │ │ • int maxsize : maximum size of the vector. │ │ │ │ │ • int owned : owner flag for the data. When owned = 1, storage for owned double’s has been │ │ │ │ │ allocated by this object and can be free’d by the object. When owned == 0 but size > 0 , │ │ │ │ │ this object points to entries that have been allocated elsewhere, and these entries will not be │ │ │ │ │ free’d by this object. │ │ │ │ │ • double *vec : pointer to the base address of the double vector │ │ │ │ │ The size, maxsize, nowned and vec fields need never be accessed directly — see the DV size(), │ │ │ │ │ @@ -53,15 +53,15 @@ │ │ │ │ │ the storage for vec is free’d by a call to DVfree(). The structure’s default fields are then set │ │ │ │ │ with a call to DV setDefaultFields(). │ │ │ │ │ Error checking: If dv is NULL an error message is printed and the program exits. │ │ │ │ │ 4. void DV_free ( DV *dv ) ; │ │ │ │ │ This method releases any storage by a call to DV clearData() then free’s the storage for the │ │ │ │ │ structure with a call to free(). │ │ │ │ │ Error checking: If dv is NULL an error message is printed and the program exits. │ │ │ │ │ - DV : DRAFT December 20, 2018 3 │ │ │ │ │ + DV : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ These method allow access to information in the data fields without explicitly following pointers. │ │ │ │ │ There is overhead involved with these method due to the function call and error checking inside │ │ │ │ │ the methods. │ │ │ │ │ 1. int DV_owned ( DV *dv ) ; │ │ │ │ │ This method returns the value of owned. If owned > 0, then the object owns the data pointed │ │ │ │ │ to by vec and will free this data with a call to DVfree() when its data is cleared by a call to │ │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ │ This method fills *psize with the size of the vector and **pentries with the base address │ │ │ │ │ of the vector. │ │ │ │ │ Error checking: If dv, psize or pentriesis NULL, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 7. void DV_setEntry ( DV *dv, int loc, double value ) ; │ │ │ │ │ This method sets the loc’th entry of the vector to value. │ │ │ │ │ Error checking: If dv is NULL or loc < 0, an error message is printed and the program exits. │ │ │ │ │ - 4 DV : DRAFT December 20, 2018 │ │ │ │ │ + 4 DV : DRAFT October 11, 2021 │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ There are three initializer methods. │ │ │ │ │ 1. void DV_init ( DV *dv, int size, double *entries ) ; │ │ │ │ │ This method initializes the object given a size for the vector and a possible pointer to the │ │ │ │ │ vectors’ storage. Any previous data is cleared with a call to DV clearData(). If entries != │ │ │ │ │ NULL then the vec field is set to entries, the size and maxsize fields are set to size, and │ │ │ │ │ owned is set to zero because the object does not own the entries. If entries is NULL and size │ │ │ │ │ @@ -123,15 +123,15 @@ │ │ │ │ │ increased with a call to DV setMaxsize(). The size field is set to newsize. │ │ │ │ │ Error checking: If dv is NULL, or newsize < 0, or if 0 < maxsize < newsize and owned = │ │ │ │ │ 0, an error message is printed and the program exits. │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ 1. void DV_shiftBase ( DV *dv, int offset ) ; │ │ │ │ │ This method shifts the base entries of the vector and decrements the present size and max- │ │ │ │ │ imum size of the vector by offset. This is a dangerous method to use because the state of │ │ │ │ │ - DV : DRAFT December 20, 2018 5 │ │ │ │ │ + DV : DRAFT October 11, 2021 5 │ │ │ │ │ the vector is lost, namely vec, the base of the entries, is corrupted. If the object owns its │ │ │ │ │ entries and DV free(), DV setSize() or DV setMaxsize() is called before the base has been │ │ │ │ │ shifted back to its original position, a segmentation violation will likely result. This is a very │ │ │ │ │ useful method, but use with caution. │ │ │ │ │ Error checking: If dv is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. void DV_push ( DV *dv, double val ) ; │ │ │ │ │ This method pushes an entry onto the vector. If the vector is full, i.e., if size == maxsize │ │ │ │ │ @@ -159,15 +159,15 @@ │ │ │ │ │ This method shuffles the entries in the vector using seed as a seed to a random number │ │ │ │ │ generator. │ │ │ │ │ Error checking: If dv is NULL, size <= 0 or if vec == NULL, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 7. int DV_sizeOf ( DV *dv ) ; │ │ │ │ │ This method returns the number of bytes taken by the object. │ │ │ │ │ Error checking: If dv is NULL an error message is printed and the program exits. │ │ │ │ │ - 6 DV : DRAFT December 20, 2018 │ │ │ │ │ + 6 DV : DRAFT October 11, 2021 │ │ │ │ │ 8. double * DV_first ( DV *dv ) ; │ │ │ │ │ double * DV_next ( DV *dv, int *pd ) ; │ │ │ │ │ These two methods are used as iterators, e.g., │ │ │ │ │ for ( pd = DV_first(dv) ; pd != NULL ; pd = DV_next(dv, pd) ) { │ │ │ │ │ do something with entry *pd │ │ │ │ │ } │ │ │ │ │ Each method checks to see if dv or pd is NULL, if so an error message is printed and the │ │ │ │ │ @@ -193,15 +193,15 @@ │ │ │ │ │ smaller than tausmall, or larger than taubig are placed into pnzero, *pnsmall and *pnbig, │ │ │ │ │ respectively. On return, the size of the xDV and yDV objects is npts. │ │ │ │ │ Error checking: If dv, xDV, yDV, pnsmall or pnbig are NULL, or if npts ≤ 0, or if taubig < 0.0 │ │ │ │ │ or if tausmall > taubig, an error message is printed and the program exits. │ │ │ │ │ 1.2.5 IO methods │ │ │ │ │ There are the usual eight IO routines. The file structure of a DV object is simple: the first entry is │ │ │ │ │ size, followed by the size entries found in vec[]. │ │ │ │ │ - DV : DRAFT December 20, 2018 7 │ │ │ │ │ + DV : DRAFT October 11, 2021 7 │ │ │ │ │ 1. int DV_readFromFile ( DV *dv, char *fn ) ; │ │ │ │ │ This method reads a DV object from a file. It tries to open the file and if it is successful, it │ │ │ │ │ then calls DV readFromFormattedFile() or DV readFromBinaryFile(), closes the file and │ │ │ │ │ returns the value returned from the called routine. │ │ │ │ │ Error checking: If dv or fn are NULL, or if fn is not of the form *.dvf (for a formatted file) │ │ │ │ │ or *.dvb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 2. int DV_readFromFormattedFile ( DV *dv, FILE *fp ) ; │ │ │ │ │ @@ -230,15 +230,15 @@ │ │ │ │ │ This method writes a DV object to a file in a human readable format. is called to write out │ │ │ │ │ the header and statistics. The entries of the vector then follow in eighty column format using │ │ │ │ │ the DVfprintf() method. The value 1 is returned. │ │ │ │ │ Error checking: If dv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 8. int DV_writeStats ( DV *dv, FILE *fp ) ; │ │ │ │ │ This method writes the header and statistics to a file. The value 1 is returned. │ │ │ │ │ Error checking: If dv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - 8 DV : DRAFT December 20, 2018 │ │ │ │ │ + 8 DV : DRAFT October 11, 2021 │ │ │ │ │ 9. int DV_writeForMatlab ( DV *dv, char *name, FILE *fp ) ; │ │ │ │ │ This method writes the entries of the vector to a file suitable to be read by Matlab. The │ │ │ │ │ character string name is the name of the vector, e.g, if name = "A", then we have lines of the │ │ │ │ │ form │ │ │ │ │ A(1) = 1.000000000000e0 ; │ │ │ │ │ A(2) = 2.000000000000e0 ; │ │ │ │ │ ... │ │ ├── ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ ├── DenseMtx.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMSY10 CMSL10 CMMI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o DenseMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -921,22 +921,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1110,88 +1110,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3224,17 +3213,17 @@ │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 195[65 60[{}1 83.022 /CMMI10 rf /Fb 133[50 │ │ │ │ 59 4[44 44 3[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ 5[84 5[42 6[80 12[56 56 56 56 56 2[31 46[{}24 99.6264 │ │ │ │ /CMBX12 rf /Fc 135[62 3[62 62 4[62 8[62 23[62 8[62 68[{}7 │ │ │ │ -119.552 /CMTT12 rf /Fd 141[33 4[69 7[37 1[37 46 29[63 │ │ │ │ -9[23 1[42 5[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Fe │ │ │ │ -234[65 5[42 15[{}2 83.022 /CMSY10 rf /Ff 134[71 3[75 │ │ │ │ +119.552 /CMTT12 rf /Fd 139[32 1[33 2[42 9[37 1[37 46 │ │ │ │ +18[65 20[23 7[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf │ │ │ │ +/Fe 234[65 5[42 15[{}2 83.022 /CMSY10 rf /Ff 134[71 3[75 │ │ │ │ 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 │ │ │ │ 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf │ │ │ │ /Fg 136[55 38 45 28 34 35 2[42 47 1[21 38 1[25 42 38 │ │ │ │ 1[38 42 38 1[42 12[59 1[61 11[54 56 63 2[62 6[25 58[{}24 │ │ │ │ 83.022 /CMTI10 rf /Fh 133[44 44 44 44 44 44 44 44 44 │ │ │ │ 1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 │ │ │ │ 1[44 1[44 2[44 44 44 44 44 44 44 1[44 44 44 44 44 2[44 │ │ │ │ @@ -3322,17 +3311,17 @@ │ │ │ │ b Fi(returns)j Fh(1)g Fi(if)h(the)g(matrix)f(has)g(real)g(en)n(tries,)g │ │ │ │ (and)h Fh(0)f Fi(otherwise.)125 5407 y Fe(\017)41 b Fh(DENSEMTX)p │ │ │ │ 565 5407 V 28 w(IS)p 681 5407 V 30 w(COMPLEX\(mtx\))23 │ │ │ │ b Fi(returns)k Fh(1)g Fi(if)h(the)g(matrix)f(has)g(complex)g(en)n │ │ │ │ (tries,)g(and)h Fh(0)f Fi(otherwise.)1929 5656 y(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 125 100 1081 4 v │ │ │ │ -1246 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Decem)n(b)r(er)h │ │ │ │ -(20,)f(2018)p 2820 100 V 0 390 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 125 100 1114 4 v │ │ │ │ +1279 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2787 100 V 0 390 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fc(DenseMtx)c Ff(metho)t(ds)0 │ │ │ │ 598 y Fi(This)35 b(section)f(con)n(tains)g(brief)h(descriptions)f │ │ │ │ (including)h(protot)n(yp)r(es)f(of)h(all)f(metho)r(ds)i(that)f(b)r │ │ │ │ (elong)f(to)h(the)g Fh(DenseMtx)0 698 y Fi(ob)5 b(ject.)0 │ │ │ │ 958 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1138 y Fi(As)21 │ │ │ │ b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g(to)h(supp)r(ort)f │ │ │ │ (ob)5 b(ject)20 b(creation,)h(setting)f(default)h(\014elds,)h(clearing) │ │ │ │ @@ -3396,17 +3385,17 @@ │ │ │ │ f(the)i(ro)n(w)e(incremen)n(t)g(of)h(the)h(ob)5 b(ject,)24 │ │ │ │ b(the)h(di\013erence)f(in)g(memory)f(lo)r(cations)h(of)g(t)n(w)n(o)f │ │ │ │ (en)n(tries)208 5273 y(in)k(consecutiv)n(e)g(columns)g(in)h(the)g(same) │ │ │ │ f(ro)n(w.)208 5407 y Fg(Err)l(or)j(che)l(cking:)38 b │ │ │ │ Fi(If)28 b Fh(mtx)f Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)d(message)i(is) │ │ │ │ g(prin)n(ted)h(and)f(the)h(program)e(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1081 4 v 1246 100 a Fh(DenseMtx)25 │ │ │ │ -b Fd(:)37 b Fg(DRAFT)110 b Fd(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2780 100 V 1081 w Fi(3)101 390 y(5.)42 b Fh(int)g(DenseMtx_rowIncr)o │ │ │ │ +TeXDict begin 3 2 bop 83 100 1114 4 v 1279 100 a Fh(DenseMtx)25 │ │ │ │ +b Fd(:)37 b Fg(DRAFT)110 b Fd(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2747 100 V 1114 w Fi(3)101 390 y(5.)42 b Fh(int)g(DenseMtx_rowIncr)o │ │ │ │ (em)o(ent)37 b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 529 │ │ │ │ y Fi(This)24 b(metho)r(d)g(returns)f(the)i(ro)n(w)e(incremen)n(t)g(of)h │ │ │ │ (the)h(ob)5 b(ject,)24 b(the)h(di\013erence)f(in)g(memory)f(lo)r │ │ │ │ (cations)h(of)g(t)n(w)n(o)f(en)n(tries)208 629 y(in)k(consecutiv)n(e)g │ │ │ │ (ro)n(ws)f(in)i(the)g(same)f(column.)208 767 y Fg(Err)l(or)j(che)l │ │ │ │ (cking:)38 b Fi(If)28 b Fh(mtx)f Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)d │ │ │ │ (message)i(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 │ │ │ │ @@ -3477,18 +3466,18 @@ │ │ │ │ Fh(jcol)f Fi(to)i(b)r(e)208 5169 y Fh(\(real,imag\))p │ │ │ │ Fi(.)208 5308 y Fg(Err)l(or)31 b(che)l(cking:)42 b Fi(If)29 │ │ │ │ b Fh(mtx)f Fi(is)h Fh(NULL)p Fi(,)e(or)h(if)i(the)f(matrix)g(is)g(not)g │ │ │ │ (complex,)g(or)f(if)h Fh(irow)f Fi(or)g Fh(jcol)f Fi(is)i(out)g(of)g │ │ │ │ (range,)f(an)208 5407 y(error)d(message)h(is)i(prin)n(ted)f(and)h(the)g │ │ │ │ (program)d(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 125 100 1081 4 v │ │ │ │ -1246 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Decem)n(b)r(er)h │ │ │ │ -(20,)f(2018)p 2820 100 V 60 390 a Fi(14.)41 b Fh(int)h(DenseMtx_row)d │ │ │ │ -(\()k(DenseMtx)d(*mtx,)h(int)i(irow,)e(double)g(**prowent)f(\))j(;)208 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 125 100 1114 4 v │ │ │ │ +1279 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2787 100 V 60 390 a Fi(14.)41 b Fh(int)h(DenseMtx_row)d(\()k │ │ │ │ +(DenseMtx)d(*mtx,)h(int)i(irow,)e(double)g(**prowent)f(\))j(;)208 │ │ │ │ 517 y Fi(This)27 b(metho)r(d)h(\014lls)g Fh(*prowent)c │ │ │ │ Fi(with)k(the)g(\014rst)g(lo)r(cation)f(of)g(the)h(en)n(tries)f(in)h │ │ │ │ (ro)n(w)e Fh(irow)p Fi(.)208 644 y Fg(R)l(eturn)31 b(c)l(o)l(des:)45 │ │ │ │ b Fh(1)31 b Fi(is)g(a)g(normal)f(return,)i Fh(-1)e Fi(means)h │ │ │ │ Fh(mtx)f Fi(is)h Fh(NULL)p Fi(,)f Fh(-2)g Fi(means)h(in)n(v)-5 │ │ │ │ b(alid)31 b(t)n(yp)r(e)g(for)g Fh(mtx)p Fi(,)g Fh(-3)g │ │ │ │ Fi(means)208 744 y Fh(irow)26 b Fi(is)h(out-of-range,)f │ │ │ │ @@ -3574,17 +3563,17 @@ │ │ │ │ y Fi(This)27 b(metho)r(d)h(initializes)g(the)g Fh(a2)f │ │ │ │ Fi(ob)5 b(ject)27 b(to)g(p)r(oin)n(t)h(in)n(to)f(the)h(en)n(tries)f(of) │ │ │ │ h(the)g(matrix.)208 5407 y Fg(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fi(If)28 b Fh(mtx)f Fi(or)g Fh(a2)f Fi(is)i Fh(NULL)p │ │ │ │ Fi(,)e(an)h(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1081 4 v 1246 100 a Fh(DenseMtx)25 │ │ │ │ -b Fd(:)37 b Fg(DRAFT)110 b Fd(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2780 100 V 1081 w Fi(5)0 390 y Fb(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1114 4 v 1279 100 a Fh(DenseMtx)25 │ │ │ │ +b Fd(:)37 b Fg(DRAFT)110 b Fd(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2747 100 V 1114 w Fi(5)0 390 y Fb(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)101 570 y Fi(1.)k Fh(int)g(DenseMtx_nbytesN)o(ee)o(ded)37 │ │ │ │ b(\()43 b(int)f(type,)g(int)g(nrow,)g(int)g(ncol)g(\))h(;)208 │ │ │ │ 705 y Fi(This)27 b(metho)r(d)h(returns)f(the)h(n)n(um)n(b)r(er)f(of)h │ │ │ │ (b)n(ytes)f(required)g(to)g(store)g(the)h(ob)5 b(ject's)27 │ │ │ │ b(information)g(in)h(its)g(bu\013er.)208 839 y Fg(Err)l(or)h(che)l │ │ │ │ (cking:)38 b Fi(If)27 b Fh(type)e Fi(is)i(neither)f Fh(SPOOLES)p │ │ │ │ 1758 839 27 4 v 29 w(REAL)f Fi(nor)g Fh(SPOOLES)p 2442 │ │ │ │ @@ -3663,28 +3652,28 @@ │ │ │ │ Fh(irowB)e Fi(is)h(out)h(of)f(range,)h(or)f(if)h Fh(mtxA)e │ │ │ │ Fi(is)h Fh(NULL)p Fi(,)f(or)h(if)h Fh(irowA)e Fi(is)h(out)h(of)208 │ │ │ │ 5308 y(range,)23 b(or)h(if)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f(in) │ │ │ │ g Fh(mtxB)f Fi(and)h Fh(mtxA)f Fi(are)g(not)h(the)h(same,)g(an)f(error) │ │ │ │ e(message)h(is)h(prin)n(ted)g(and)208 5407 y(the)k(program)d(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fi(6)p 125 100 1081 4 v │ │ │ │ -1246 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Decem)n(b)r(er)h │ │ │ │ -(20,)f(2018)p 2820 100 V 101 390 a Fi(9.)42 b Fh(void)f │ │ │ │ -(DenseMtx_addRow)d(\()43 b(DenseMtx)d(*mtxB,)h(int)i(irowB,)e(DenseMtx) │ │ │ │ -f(*mtxA,)h(int)i(irowA)85 b(\))43 b(;)208 525 y Fi(This)27 │ │ │ │ -b(metho)r(d)h(adds)f(ro)n(w)g Fh(irowA)e Fi(from)j(matrix)f │ │ │ │ -Fh(mtxA)f Fi(in)n(to)h(ro)n(w)f Fh(irowB)g Fi(of)i(matrix)f │ │ │ │ -Fh(mtxB)p Fi(.)208 659 y Fg(Err)l(or)34 b(che)l(cking:)46 │ │ │ │ -b Fi(If)32 b Fh(mtxB)e Fi(is)i Fh(NULL)p Fi(,)e(or)h(if)h │ │ │ │ -Fh(irowB)e Fi(is)h(out)h(of)f(range,)h(or)f(if)h Fh(mtxA)e │ │ │ │ -Fi(is)h Fh(NULL)p Fi(,)f(or)h(if)h Fh(irowA)e Fi(is)h(out)h(of)208 │ │ │ │ -759 y(range,)23 b(or)h(if)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f(in)g │ │ │ │ -Fh(mtxB)f Fi(and)h Fh(mtxA)f Fi(are)g(not)h(the)h(same,)g(an)f(error)e │ │ │ │ -(message)h(is)h(prin)n(ted)g(and)208 859 y(the)k(program)d(exits.)60 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fi(6)p 125 100 1114 4 v │ │ │ │ +1279 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2787 100 V 101 390 a Fi(9.)42 b Fh(void)f(DenseMtx_addRow)d(\() │ │ │ │ +43 b(DenseMtx)d(*mtxB,)h(int)i(irowB,)e(DenseMtx)f(*mtxA,)h(int)i │ │ │ │ +(irowA)85 b(\))43 b(;)208 525 y Fi(This)27 b(metho)r(d)h(adds)f(ro)n(w) │ │ │ │ +g Fh(irowA)e Fi(from)j(matrix)f Fh(mtxA)f Fi(in)n(to)h(ro)n(w)f │ │ │ │ +Fh(irowB)g Fi(of)i(matrix)f Fh(mtxB)p Fi(.)208 659 y │ │ │ │ +Fg(Err)l(or)34 b(che)l(cking:)46 b Fi(If)32 b Fh(mtxB)e │ │ │ │ +Fi(is)i Fh(NULL)p Fi(,)e(or)h(if)h Fh(irowB)e Fi(is)h(out)h(of)f │ │ │ │ +(range,)h(or)f(if)h Fh(mtxA)e Fi(is)h Fh(NULL)p Fi(,)f(or)h(if)h │ │ │ │ +Fh(irowA)e Fi(is)h(out)h(of)208 759 y(range,)23 b(or)h(if)g(the)h(n)n │ │ │ │ +(um)n(b)r(er)f(of)h(columns)f(in)g Fh(mtxB)f Fi(and)h │ │ │ │ +Fh(mtxA)f Fi(are)g(not)h(the)h(same,)g(an)f(error)e(message)h(is)h │ │ │ │ +(prin)n(ted)g(and)208 859 y(the)k(program)d(exits.)60 │ │ │ │ 1028 y(10.)41 b Fh(void)g(DenseMtx_zero)e(\()k(DenseMtx)d(*mtx)i(\))h │ │ │ │ (;)208 1163 y Fi(This)27 b(metho)r(d)h(zeros)e(the)i(en)n(tries)f(in)h │ │ │ │ (the)g(matrix.)208 1298 y Fg(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fi(If)28 b Fh(mtx)f Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)d(message)i │ │ │ │ (is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)60 1467 │ │ │ │ y(11.)41 b Fh(void)g(DenseMtx_fillRand)o(omE)o(nt)o(rie)o(s)c(\()43 │ │ │ │ b(DenseMtx)e(*mtx,)g(Drand)h(*drand)f(\))i(;)208 1602 │ │ │ │ @@ -3746,17 +3735,17 @@ │ │ │ │ Fi(in)n(to)j(ro)n(w)e Fh(irow)g Fi(of)i(matrix)f Fh(mtx)p │ │ │ │ Fi(.)208 5308 y Fg(Err)l(or)j(che)l(cking:)39 b Fi(If)28 │ │ │ │ b Fh(mtx)e Fi(or)h Fh(vec)f Fi(is)i Fh(NULL)p Fi(,)e(or)h(if)h │ │ │ │ Fh(irow)22 b Fa(<)g Fi(0)28 b(or)e Fh(irow)c Fe(\025)h │ │ │ │ Fh(nrow)n Fi(,)28 b(an)f(error)f(message)g(is)i(prin)n(ted)f(and)208 │ │ │ │ 5407 y(the)h(program)d(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1081 4 v 1246 100 a Fh(DenseMtx)25 │ │ │ │ -b Fd(:)37 b Fg(DRAFT)110 b Fd(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2780 100 V 1081 w Fi(7)0 390 y Fb(1.2.5)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1114 4 v 1279 100 a Fh(DenseMtx)25 │ │ │ │ +b Fd(:)37 b Fg(DRAFT)110 b Fd(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2747 100 V 1114 w Fi(7)0 390 y Fb(1.2.5)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ 573 y Fi(The)23 b(\014le)g(structure)f(of)h(a)g Fh(DenseMtx)c │ │ │ │ Fi(ob)5 b(ject)23 b(is)g(simple.)35 b(First)23 b(comes)f(sev)n(en)g │ │ │ │ (scalars,)g Fh(type)p Fi(,)h Fh(rowid)p Fi(,)e Fh(colid)p │ │ │ │ Fi(,)h Fh(nrow)p Fi(,)h Fh(ncol)p Fi(,)0 672 y Fh(inc1)g │ │ │ │ Fi(and)h Fh(inc2)p Fi(,)f(follo)n(w)n(ed)g(b)n(y)h(the)h(ro)n(w)e │ │ │ │ (indices,)i(follo)n(w)n(ed)e(b)n(y)h(the)g(column)g(indices,)h(and)f │ │ │ │ (then)h(follo)n(w)n(ed)e(b)n(y)h(the)h(matrix)0 772 y(en)n(tries.)101 │ │ │ │ @@ -3843,22 +3832,21 @@ │ │ │ │ 5270 y Fi(This)27 b(metho)r(d)h(writes)f(a)h Fh(DenseMtx)c │ │ │ │ Fi(ob)5 b(ject)27 b(to)h(a)f(\014le)h(in)g(an)f(easily)g(readable)f │ │ │ │ (format.)208 5407 y Fg(Err)l(or)k(che)l(cking:)38 b Fi(If)28 │ │ │ │ b Fh(mtx)f Fi(or)g Fh(fp)f Fi(are)h Fh(NULL)p Fi(,)f(an)h(error)f │ │ │ │ (message)g(is)i(prin)n(ted)f(and)h(zero)e(is)i(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fi(8)p 125 100 1081 4 v │ │ │ │ -1246 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Decem)n(b)r(er)h │ │ │ │ -(20,)f(2018)p 2820 100 V 101 390 a Fi(9.)42 b Fh(void)f │ │ │ │ -(DenseMtx_writeFor)o(Mat)o(la)o(b)d(\()43 b(DenseMtx)d(*mtx,)i(char)f │ │ │ │ -(*mtxname,)f(FILE)i(*fp)h(\))g(;)208 523 y Fi(This)27 │ │ │ │ -b(metho)r(d)h(writes)f(out)h(a)f Fh(DenseMtx)e Fi(ob)5 │ │ │ │ -b(ject)27 b(to)g(a)h(\014le)f(in)h(a)f(Matlab)h(format.)36 │ │ │ │ -b(A)28 b(sample)f(line)h(is)208 722 y Fh(a\(10,5\))40 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fi(8)p 125 100 1114 4 v │ │ │ │ +1279 w Fh(DenseMtx)24 b Fd(:)37 b Fg(DRAFT)27 b Fd(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2787 100 V 101 390 a Fi(9.)42 b Fh(void)f(DenseMtx_writeFor)o │ │ │ │ +(Mat)o(la)o(b)d(\()43 b(DenseMtx)d(*mtx,)i(char)f(*mtxname,)f(FILE)i │ │ │ │ +(*fp)h(\))g(;)208 523 y Fi(This)27 b(metho)r(d)h(writes)f(out)h(a)f │ │ │ │ +Fh(DenseMtx)e Fi(ob)5 b(ject)27 b(to)g(a)h(\014le)f(in)h(a)f(Matlab)h │ │ │ │ +(format.)36 b(A)28 b(sample)f(line)h(is)208 722 y Fh(a\(10,5\))40 │ │ │ │ b(=)87 b(-1.550328201511e)o(-01)37 b(+)130 b(1.848033378871e+)o(00*)o │ │ │ │ (i)37 b(;)208 922 y Fi(for)27 b(complex)g(matrices,)g(or)208 │ │ │ │ 1121 y Fh(a\(10,5\))40 b(=)87 b(-1.550328201511e)o(-01)37 │ │ │ │ b(;)208 1320 y Fi(for)27 b(real)g(matrices,)h(where)f(m)n(txname)h(=)g │ │ │ │ Fh("a")p Fi(.)38 b(The)28 b(matrix)f(indices)h(come)g(from)g(the)g │ │ │ │ Fh(rowind[])d Fi(and)j Fh(colind[])208 1420 y Fi(v)n(ectors,)e(and)h │ │ │ │ (are)g(incremen)n(ted)g(b)n(y)g(one)h(to)f(follo)n(w)g(the)h(Matlab)f │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ • double *entries : pointer to the base address of the double vector that contains the entries. │ │ │ │ │ • DV wrkDV : object that manages the owned working storage. │ │ │ │ │ • DenseMtx *next : link to a next object in a singly linked list. │ │ │ │ │ One can query the type of entries via two macros. │ │ │ │ │ • DENSEMTX IS REAL(mtx) returns 1 if the matrix has real entries, and 0 otherwise. │ │ │ │ │ • DENSEMTX IS COMPLEX(mtx) returns 1 if the matrix has complex entries, and 0 otherwise. │ │ │ │ │ 1 │ │ │ │ │ - 2 DenseMtx : DRAFT December 20, 2018 │ │ │ │ │ + 2 DenseMtx : DRAFT October 11, 2021 │ │ │ │ │ 1.2 Prototypes and descriptions of DenseMtx methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the DenseMtx │ │ │ │ │ object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ 1. DenseMtx * DenseMtx_new ( void ) ; │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ 3. void DenseMtx_dimensions ( DenseMtx *mtx, int *pnrow, int *pncol ) ; │ │ │ │ │ This method fills *pnrow and *pncol with nrow and ncol. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. int DenseMtx_columnIncrement ( DenseMtx *mtx ) ; │ │ │ │ │ This method returns the row increment of the object, the difference in memory locations of two entries │ │ │ │ │ in consecutive columns in the same row. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ - DenseMtx : DRAFT December 20, 2018 3 │ │ │ │ │ + DenseMtx : DRAFT October 11, 2021 3 │ │ │ │ │ 5. int DenseMtx_rowIncrement ( DenseMtx *mtx ) ; │ │ │ │ │ This method returns the row increment of the object, the difference in memory locations of two entries │ │ │ │ │ in consecutive rows in the same column. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 6. void DenseMtx_rowIndices ( DenseMtx *mtx, int *pnrow, **prowind ) ; │ │ │ │ │ This method fills *pnrow with nrow, the number of rows, and *prowind with rowind, a pointer to the │ │ │ │ │ row indices. │ │ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ 13. void DenseMtx_setComplexEntry ( DenseMtx *mtx, int irow, int jcol, │ │ │ │ │ double real, double imag ) ; │ │ │ │ │ This method sets the real and imaginary parts of the entry in row irow and column jcol to be │ │ │ │ │ (real,imag). │ │ │ │ │ Error checking: If mtx is NULL, or if the matrix is not complex, or if irow or jcol is out of range, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ - 4 DenseMtx : DRAFT December 20, 2018 │ │ │ │ │ + 4 DenseMtx : DRAFT October 11, 2021 │ │ │ │ │ 14. int DenseMtx_row ( DenseMtx *mtx, int irow, double **prowent ) ; │ │ │ │ │ This method fills *prowent with the first location of the entries in row irow. │ │ │ │ │ Return codes: 1 is a normal return, -1 means mtx is NULL, -2 means invalid type for mtx, -3 means │ │ │ │ │ irow is out-of-range, -4 means prowent is NULL. │ │ │ │ │ 15. int DenseMtx_column ( DenseMtx *mtx, int jcol, double **pcolent ) ; │ │ │ │ │ This method fills *pcolent with the first location of the entries in column jcol. │ │ │ │ │ Return codes: 1 is a normal return, -1 means mtx is NULL, -2 means invalid type for mtx, -3 means │ │ │ │ │ @@ -139,15 +139,15 @@ │ │ │ │ │ 4. void DenseMtx_initFromBuffer ( DenseMtx *mtx ) ; │ │ │ │ │ This method initializes the object using information present in the workspace buffer. This method is │ │ │ │ │ used to initialize the DenseMtx object when it has been received as an MPI message. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 5. void DenseMtx_setA2 ( DenseMtx *mtx, A2 *a2 ) ; │ │ │ │ │ This method initializes the a2 object to point into the entries of the matrix. │ │ │ │ │ Error checking: If mtx or a2 is NULL, an error message is printed and the program exits. │ │ │ │ │ - DenseMtx : DRAFT December 20, 2018 5 │ │ │ │ │ + DenseMtx : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ 1. int DenseMtx_nbytesNeeded ( int type, int nrow, int ncol ) ; │ │ │ │ │ This method returns the number of bytes required to store the object’s information in its buffer. │ │ │ │ │ Error checking: If type is neither SPOOLES REAL nor SPOOLES COMPLEX, or if nrow or ncol is less than │ │ │ │ │ zero, an error message is printed and the program exits. │ │ │ │ │ 2. int DenseMtx_nbytesInWorkspace ( DenseMtx *mtx ) ; │ │ │ │ │ This method returns the number of bytes in the workspace owned by this object. │ │ │ │ │ @@ -180,15 +180,15 @@ │ │ │ │ │ 8. void DenseMtx_copyRowAndIndex ( DenseMtx *mtxB, int irowB, │ │ │ │ │ DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ This method copies row irowA from matrix mtxA into row irowB of matrix mtxB, and copies the index │ │ │ │ │ of row irowA of mtxA into location irowB of the row indices for mtxB. │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ - 6 DenseMtx : DRAFT December 20, 2018 │ │ │ │ │ + 6 DenseMtx : DRAFT October 11, 2021 │ │ │ │ │ 9. void DenseMtx_addRow ( DenseMtx *mtxB, int irowB, DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ This method adds row irowA from matrix mtxA into row irowB of matrix mtxB. │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 10. void DenseMtx_zero ( DenseMtx *mtx ) ; │ │ │ │ │ This method zeros the entries in the matrix. │ │ │ │ │ @@ -219,15 +219,15 @@ │ │ │ │ │ This method copies vector vec[] into row irow of matrix mtx. │ │ │ │ │ Error checking: If mtx or vec is NULL, or if irow < 0 or irow ≥ nrow, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 18. double DenseMtx_addVectorIntoRow ( DenseMtx *mtx, int irow, double vec[] ) ; │ │ │ │ │ This method adds vector vec[] into row irow of matrix mtx. │ │ │ │ │ Error checking: If mtx or vec is NULL, or if irow < 0 or irow ≥ nrow, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ - DenseMtx : DRAFT December 20, 2018 7 │ │ │ │ │ + DenseMtx : DRAFT October 11, 2021 7 │ │ │ │ │ 1.2.5 IO methods │ │ │ │ │ Thefile structure of a DenseMtxobject is simple. First comes seven scalars, type, rowid, colid, nrow, ncol, │ │ │ │ │ inc1 and inc2, followed by the row indices, followed by the column indices, and then followed by the matrix │ │ │ │ │ entries. │ │ │ │ │ 1. int DenseMtx_readFromFile ( DenseMtx *mtx, char *fn ) ; │ │ │ │ │ This method reads an DenseMtx object from a file. If the the file can be opened successfully, the │ │ │ │ │ method calls DenseMtx readFromFormattedFile() or DenseMtx readFromBinaryFile(), closes the │ │ │ │ │ @@ -258,15 +258,15 @@ │ │ │ │ │ Error checking: If mtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 7. int DenseMtx_writeStats ( DenseMtx *mtx, FILE *fp ) ; │ │ │ │ │ This method writes out a header and statistics to a file. The value 1 is returned. │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 8. void DenseMtx_writeForHumanEye ( DenseMtx *mtx, FILE *fp ) ; │ │ │ │ │ This method writes a DenseMtx object to a file in an easily readable format. │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - 8 DenseMtx : DRAFT December 20, 2018 │ │ │ │ │ + 8 DenseMtx : DRAFT October 11, 2021 │ │ │ │ │ 9. void DenseMtx_writeForMatlab ( DenseMtx *mtx, char *mtxname, FILE *fp ) ; │ │ │ │ │ This method writes out a DenseMtx object to a file in a Matlab format. A sample line is │ │ │ │ │ a(10,5) = -1.550328201511e-01 + 1.848033378871e+00*i ; │ │ │ │ │ for complex matrices, or │ │ │ │ │ a(10,5) = -1.550328201511e-01 ; │ │ │ │ │ for real matrices, where mtxname = "a". The matrix indices come from the rowind[] and colind[] │ │ │ │ │ vectors, and are incremented by one to follow the Matlab and FORTRAN convention. │ │ ├── ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ ├── Drand.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMBX10 CMTT10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Drand.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1014,22 +1014,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1203,88 +1203,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3144,16 +3133,16 @@ │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 2[51 62 50 1[54 11[86 11[42 6[80 14[56 56 56 2[31 46[{}22 │ │ │ │ 99.6264 /CMBX12 rf /Fb 138[49 30 37 38 1[46 46 51 2[42 │ │ │ │ 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 │ │ │ │ -6[28 58[{}22 90.9091 /CMTI10 rf /Fc 141[36 4[76 7[40 │ │ │ │ -1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ +6[28 58[{}22 90.9091 /CMTI10 rf /Fc 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ /CMSL10 rf /Fd 141[62 3[62 9[62 2[62 28[62 68[{}5 119.552 │ │ │ │ /CMTT12 rf /Fe 234[71 71 4[45 15[{}3 90.9091 /CMSY10 │ │ │ │ rf /Ff 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 │ │ │ │ 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 │ │ │ │ 2[37 46[{}27 119.552 /CMBX12 rf /Fg 136[48 48 48 48 48 │ │ │ │ 48 1[48 48 48 48 48 2[48 1[48 48 48 48 48 48 48 1[48 │ │ │ │ 1[48 1[48 48 4[48 1[48 4[48 1[48 2[48 2[48 1[48 5[48 │ │ │ │ @@ -3211,17 +3200,17 @@ │ │ │ │ b(ject,)31 b(uniform)e(is)i Fg(1)p Fi(,)f(normal)g(is)h │ │ │ │ Fg(2)0 5064 y Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ (of)g Fd(Drand)e Ff(metho)t(ds)0 5294 y Fi(This)e(section)j(con)m │ │ │ │ (tains)f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f │ │ │ │ (all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 │ │ │ │ y Fg(Drand)29 b Fi(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1070 4 v │ │ │ │ -1252 w Fg(Drand)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fg(Drand)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 602 y Fi(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 715 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 972 y(1.)46 b Fg(Drand)h(*)g │ │ │ │ (Drand_new)e(\()j(void)e(\))i(;)227 1130 y Fi(This)28 │ │ │ │ b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ Fg(Drand)f Fi(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ @@ -3269,17 +3258,17 @@ │ │ │ │ (b)s(er)f(seeds)h(using)g(a)h(single)g(input)e(seed.)227 │ │ │ │ 5294 y Fb(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fi(If)25 │ │ │ │ b Fg(drand)f Fi(is)h Fg(NULL)p Fi(,)g(or)h(if)f Fg(seed1)f │ │ │ │ Fe(\024)h Fi(0,)i(or)f(if)f Fg(seed1)f Fe(\025)h Fi(2147483563,)31 │ │ │ │ b(an)26 b(error)f(message)227 5407 y(is)31 b(prin)m(ted)f(and)f(the)i │ │ │ │ (program)f(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1070 4 v 1251 100 a Fg(Drand)29 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fi(3)111 399 y(3.)46 b Fg(void)h(Drand_setSeeds)d(\() │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1287 100 a Fg(Drand)29 │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fi(3)111 399 y(3.)46 b Fg(void)h(Drand_setSeeds)d(\() │ │ │ │ j(Drand)g(*drand,)e(int)i(seed1,)f(int)h(seed2)g(\))g(;)227 │ │ │ │ 553 y Fi(This)30 b(metho)s(d)g(sets)g(the)h(random)f(n)m(um)m(b)s(er)f │ │ │ │ (seeds)h(using)g(t)m(w)m(o)i(input)d(seeds.)227 707 y │ │ │ │ Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fg(drand)f │ │ │ │ Fi(is)i Fg(NULL)p Fi(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(program)f(exits.)227 862 y Fb(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)39 b Fi(If)29 b Fg(drand)e Fi(is)i Fg(NULL)p │ │ │ │ @@ -3334,17 +3323,17 @@ │ │ │ │ Fg(n)47 b(<)h(0)f Fi(,)35 b(an)f(error)f(message)i(is)e(prin)m(ted)h │ │ │ │ (and)f(the)227 4852 y(program)d(exits.)0 5175 y Ff(1.3)135 │ │ │ │ b(Driv)l(er)46 b(programs)g(for)f(the)g Fd(Drand)d Ff(ob)7 │ │ │ │ b(ject)0 5407 y Fi(This)30 b(section)h(con)m(tains)h(brief)e │ │ │ │ (descriptions)g(of)g(the)h(driv)m(er)f(programs.)p eop │ │ │ │ end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1070 4 v │ │ │ │ -1252 w Fg(Drand)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 111 399 a Fi(1.)46 b Fg(testDrand)g(msglvl)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fg(Drand)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 111 399 a Fi(1.)46 b Fg(testDrand)g(msglvl)g │ │ │ │ (msgFile)f(distribution)g(param1)h(param2)g(seed1)g(seed2)h(n)227 │ │ │ │ 549 y Fi(This)30 b(driv)m(er)g(program)g(test)h(the)g │ │ │ │ Fg(Drand)e Fi(random)g(n)m(um)m(b)s(er)h(generator.)336 │ │ │ │ 761 y Fe(\017)46 b Fi(The)30 b Fg(msglvl)f Fi(parameter)i(determines)f │ │ │ │ (the)h(amoun)m(t)f(of)h(output.)336 907 y Fe(\017)46 │ │ │ │ b Fi(The)33 b Fg(msgFile)e Fi(parameter)j(determines)f(the)h(message)g │ │ │ │ (\014le)f(|)h(if)f Fg(msgFile)e Fi(is)i Fg(stdout)p Fi(,)g(then)g(the) │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -15,15 +15,15 @@ │ │ │ │ │ • double mean : mean for a normal distribution │ │ │ │ │ • double sigma : variation for a normal distribution │ │ │ │ │ • int mode: mode of the object, uniform is 1, normal is 2 │ │ │ │ │ 1.2 Prototypes and descriptions of Drand methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ Drand object. │ │ │ │ │ 1 │ │ │ │ │ - 2 Drand : DRAFT December 20, 2018 │ │ │ │ │ + 2 Drand : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Drand * Drand_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Drand structure and then sets the default fields │ │ │ │ │ by a call to Drand setDefaultFields(). │ │ │ │ │ 2. void Drand_setDefaultFields ( Drand *drand ) ; │ │ │ │ │ @@ -47,15 +47,15 @@ │ │ │ │ │ 1. void Drand_init ( Drand *drand ) ; │ │ │ │ │ This initializer simply sets the default fields with a call to Drand setDefaultFields(). │ │ │ │ │ Error checking: If drand is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. void Drand_setSeed ( Drand *drand, int seed1 ) ; │ │ │ │ │ This method sets the random number seeds using a single input seed. │ │ │ │ │ Error checking: If drand is NULL, or if seed1 ≤ 0, or if seed1 ≥ 2147483563, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - Drand : DRAFT December 20, 2018 3 │ │ │ │ │ + Drand : DRAFT October 11, 2021 3 │ │ │ │ │ 3. void Drand_setSeeds ( Drand *drand, int seed1, int seed2 ) ; │ │ │ │ │ This method sets the random number seeds using two input seeds. │ │ │ │ │ Error checking: If drand is NULL, an error message is printed and the program exits. │ │ │ │ │ Error checking: If drand is NULL, or if seed1 ≤ 0, or if seed1 ≥ 2147483563, or if seed2 ≤ 0, │ │ │ │ │ or if seed2 ≥ 2147483399, an error message is printed and the program exits. │ │ │ │ │ 4. void Drand_setNormal ( Drand *drand, double mean, double sigma ) ; │ │ │ │ │ This method sets the mode to be a normal distribution with mean mean and variation sigma. │ │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │ │ program exits. │ │ │ │ │ 4. void Drand_fillIvector ( Drand *drand, int n, int vec[] ) ; │ │ │ │ │ This method fills vec[] with n int random numbers. │ │ │ │ │ Error checking: If drand or vec are NULL or if n < 0 , an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 1.3 Driver programs for the Drand object │ │ │ │ │ This section contains brief descriptions of the driver programs. │ │ │ │ │ - 4 Drand : DRAFT December 20, 2018 │ │ │ │ │ + 4 Drand : DRAFT October 11, 2021 │ │ │ │ │ 1. testDrand msglvl msgFile distribution param1 param2 seed1 seed2 n │ │ │ │ │ This driver program test the Drand random number generator. │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The distribution parameter specifies the mode of the object. If 1, the distribution is │ │ ├── ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ ├── EGraph.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMMI8 CMTI10 CMSY10 │ │ │ │ %%+ CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o EGraph.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -709,22 +709,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -898,88 +898,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3443,16 +3432,16 @@ │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 │ │ │ │ 46[{}24 99.6264 /CMBX12 rf /Fb 141[62 1[62 7[62 6[62 │ │ │ │ -25[62 1[62 69[{}6 119.552 /CMTT12 rf /Fc 141[36 4[76 │ │ │ │ -7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 │ │ │ │ +25[62 1[62 69[{}6 119.552 /CMTT12 rf /Fc 139[35 1[36 │ │ │ │ +2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 │ │ │ │ 90.9091 /CMSL10 rf /Fd 240[45 12[71 2[{}2 90.9091 /CMSY10 │ │ │ │ rf /Fe 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 │ │ │ │ 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 │ │ │ │ 2[37 46[{}27 119.552 /CMBX12 rf /Ff 138[49 30 37 38 1[46 │ │ │ │ 46 51 2[42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 │ │ │ │ 62 69 2[68 6[28 58[{}22 90.9091 /CMTI10 rf /Fg 171[41 │ │ │ │ 84[{}1 66.4176 /CMMI8 rf /Fh 149[37 31 39[68 5[25 59[{}4 │ │ │ │ @@ -3539,17 +3528,17 @@ │ │ │ │ (ts.)0 5294 y(A)37 b(correctly)i(initialized)g(and)d(non)m(trivial)i │ │ │ │ Fi(EGraph)e Fj(ob)5 b(ject)38 b(will)f(ha)m(v)m(e)i(p)s(ositiv)m(e)f │ │ │ │ Fi(nelem)e Fj(and)g Fi(nvtx)g Fj(v)-5 b(alues,)40 b(a)0 │ │ │ │ 5407 y(v)-5 b(alid)31 b Fi(adjIVL)d Fj(\014eld.)41 b(If)30 │ │ │ │ b Fi(type)46 b(=)i(1)p Fj(,)30 b(the)h Fi(vwghts)d Fj(will)j(b)s(e)f │ │ │ │ (non-)p Fi(NULL)p Fj(.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(EGraph)28 b Fc(:)41 b Ff(DRAFT)30 b Fc(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 0 399 a Fe(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(EGraph)28 b Fc(:)41 b Ff(DRAFT)30 b Fc(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 0 399 a Fe(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fb(EGraph)d Fe(metho)t(ds)0 │ │ │ │ 631 y Fj(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ (elong)f(to)h(the)0 744 y Fi(EGraph)29 b Fj(ob)5 b(ject.)0 │ │ │ │ 1025 y Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1226 y │ │ │ │ Fj(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s │ │ │ │ (ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h │ │ │ │ @@ -3610,17 +3599,17 @@ │ │ │ │ V 33 w(type)f Fj(parameter.)227 5294 y Ff(Err)-5 b(or)36 │ │ │ │ b(che)-5 b(cking:)45 b Fj(If)32 b Fi(egraph)f Fj(is)i │ │ │ │ Fi(NULL)f Fj(or)g Fi(type)g Fj(is)h(not)g(zero)g(or)g(one,)h(or)e(if)h │ │ │ │ (either)g Fi(nelem)e Fj(or)i Fi(nvtx)f Fj(are)227 5407 │ │ │ │ y(nonp)s(ositiv)m(e,)f(an)g(error)f(message)h(is)g(prin)m(ted)e(and)h │ │ │ │ (the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1046 4 v 1227 100 a Fi(EGraph)29 │ │ │ │ -b Fc(:)41 b Ff(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fj(3)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1263 100 a Fi(EGraph)29 │ │ │ │ +b Fc(:)41 b Ff(DRAFT)121 b Fc(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fj(3)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 591 y Fj(1.)46 b Fi(Graph)h(EGraph_mkAdjGraph)c(\()k │ │ │ │ (EGraph)f(*egraph)g(\))i(;)227 736 y Fj(This)26 b(metho)s(d)h(creates)h │ │ │ │ (and)f(returns)f(a)h Fi(Graph)f Fj(ob)5 b(ject)27 b(with)g(v)m(ertex)h │ │ │ │ (adjacency)g(lists)g(from)e(the)h(elemen)m(t)227 849 │ │ │ │ y(graph)j(ob)5 b(ject.)227 995 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fj(If)30 b Fi(egraph)f Fj(is)h Fi(NULL)p │ │ │ │ Fj(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ @@ -3692,17 +3681,17 @@ │ │ │ │ 5261 y(the)d(data,)h(the)f(v)-5 b(alue)30 b Fi(1)f Fj(is)h(returned.)39 │ │ │ │ b(If)29 b(an)h(IO)f(error)g(is)h(encoun)m(tered)g(from)f │ │ │ │ Fi(fread)p Fj(,)g(zero)h(is)g(returned.)227 5407 y Ff(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(egraph)f │ │ │ │ Fj(or)h Fi(fp)g Fj(are)h Fi(NULL)e Fj(an)h(error)g(message)i(is)e(prin) │ │ │ │ m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(EGraph)28 b Fc(:)41 b Ff(DRAFT)30 b Fc(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 111 399 a Fj(4.)46 b Fi(int)h(EGraph_writeToFile)c │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(EGraph)28 b Fc(:)41 b Ff(DRAFT)30 b Fc(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 111 399 a Fj(4.)46 b Fi(int)h(EGraph_writeToFile)c │ │ │ │ (\()k(EGraph)g(*egraph,)e(char)i(*fn)g(\))g(;)227 546 │ │ │ │ y Fj(This)29 b(metho)s(d)h(writes)g(an)g Fi(EGraph)e │ │ │ │ Fj(ob)5 b(ject)31 b(to)g(a)f(\014le.)41 b(It)30 b(tries)h(to)f(op)s(en) │ │ │ │ g(the)g(\014le)g(and)f(if)h(it)h(is)f(successful,)227 │ │ │ │ 658 y(it)25 b(then)e(calls)i Fi(EGraph)p 1002 658 29 │ │ │ │ 4 v 33 w(writeFromFormattedFile\(\))17 b Fj(or)24 b Fi(EGraph)p │ │ │ │ 2597 658 V 33 w(writeFromBinaryFile\(\))p Fj(,)c(closes)227 │ │ │ │ @@ -3774,17 +3763,17 @@ │ │ │ │ y Fd(\017)46 b Fj(The)33 b Fi(msgFile)e Fj(parameter)j(determines)f │ │ │ │ (the)h(message)g(\014le)f(|)h(if)f Fi(msgFile)e Fj(is)i │ │ │ │ Fi(stdout)p Fj(,)g(then)g(the)427 5294 y(message)27 b(\014le)f(is)g │ │ │ │ Ff(stdout)p Fj(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ Ff(app)-5 b(end)28 b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ 5407 y(data.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1046 4 v 1227 100 a Fi(EGraph)29 │ │ │ │ -b Fc(:)41 b Ff(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fj(5)336 399 y Fd(\017)46 b Fj(The)35 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1082 4 v 1263 100 a Fi(EGraph)29 │ │ │ │ +b Fc(:)41 b Ff(DRAFT)121 b Fc(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fj(5)336 399 y Fd(\017)46 b Fj(The)35 │ │ │ │ b Fi(inFile)e Fj(parameter)i(is)g(the)h(input)e(\014le)h(for)f(the)h │ │ │ │ Fi(EGraph)f Fj(ob)5 b(ject.)55 b(It)35 b(m)m(ust)g(b)s(e)f(of)h(the)g │ │ │ │ (form)427 511 y Fi(*.egraphf)18 b Fj(or)i Fi(*.egraphb)p │ │ │ │ Fj(.)35 b(The)20 b Fi(EGraph)e Fj(ob)5 b(ject)22 b(is)e(read)g(from)g │ │ │ │ (the)g(\014le)h(via)g(the)f Fi(EGraph)p 3559 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fj(metho)s(d.)336 780 │ │ │ │ y Fd(\017)46 b Fj(The)25 b Fi(outFile)e Fj(parameter)j(is)f(the)h │ │ │ │ @@ -3856,17 +3845,17 @@ │ │ │ │ (b)s(e)g(greater)i(than)f(or)g(equal)g(to)427 5139 y(one.)336 │ │ │ │ 5294 y Fd(\017)46 b Fi(ncomp)26 b Fj(is)g(the)h(n)m(um)m(b)s(er)f(of)h │ │ │ │ (comp)s(onen)m(ts)f(\(i.e.,)k(the)c(n)m(um)m(b)s(er)g(of)h(degrees)g │ │ │ │ (of)g(freedom\))g(at)g(eac)m(h)h(grid)427 5407 y(p)s(oin)m(t,)j(m)m │ │ │ │ (ust)f(b)s(e)g(greater)h(than)g(or)f(equal)h(to)g(one.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(EGraph)28 b Fc(:)41 b Ff(DRAFT)30 b Fc(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 336 399 a Fd(\017)46 b Fj(The)20 b │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(EGraph)28 b Fc(:)41 b Ff(DRAFT)30 b Fc(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 336 399 a Fd(\017)46 b Fj(The)20 b │ │ │ │ Fi(outEGraphFile)d Fj(parameter)j(is)h(the)f(output)g(\014le)g(for)h │ │ │ │ (the)f Fi(EGraph)f Fj(ob)5 b(ject.)38 b(If)20 b Fi(outEGraphFile)427 │ │ │ │ 511 y Fj(is)h Fi(none)e Fj(then)h(the)g Fi(EGraph)f Fj(ob)5 │ │ │ │ b(ject)21 b(is)f(not)h(written)f(to)h(a)g(\014le.)37 │ │ │ │ b(Otherwise,)22 b(the)f Fi(EGraph)p 3409 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fj(metho)s(d)27 b(is)h(called)h(to)f(write) │ │ │ │ g(the)g(ob)5 b(ject)29 b(to)f(a)g(formatted)g(\014le)g(\(if)g │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ • int nvtx : number of vertices in the graph │ │ │ │ │ • IVL *adjIVL : pointer to a IVL structure that holds the vertex lists for the elements. │ │ │ │ │ • int *vwghts : when type = 1, vwghts points to an int vector of size nvtx that holds the │ │ │ │ │ node weights. │ │ │ │ │ A correctly initialized and nontrivial EGraph object will have positive nelem and nvtx values, a │ │ │ │ │ valid adjIVL field. If type = 1, the vwghts will be non-NULL. │ │ │ │ │ 1 │ │ │ │ │ - 2 EGraph : DRAFT December 20, 2018 │ │ │ │ │ + 2 EGraph : DRAFT October 11, 2021 │ │ │ │ │ 1.2 Prototypes and descriptions of EGraph methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ EGraph object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. EGraph * EGraph_new ( void ) ; │ │ │ │ │ @@ -55,15 +55,15 @@ │ │ │ │ │ This method initializes an EGraph object given the type of vertices, number of elements, │ │ │ │ │ number of vertices, and storage type for the IVL element list object. It then clears any │ │ │ │ │ previous data with a call to EGraph clearData(). The IVL object is initialized by a call │ │ │ │ │ to IVL init1(). If type = 1, the vwghts is initialized via a call to IVinit(). See the IVL │ │ │ │ │ object for a description of the IVL type parameter. │ │ │ │ │ Error checking: If egraph is NULL or type is not zero or one, or if either nelem or nvtx are │ │ │ │ │ nonpositive, an error message is printed and the program exits. │ │ │ │ │ - EGraph : DRAFT December 20, 2018 3 │ │ │ │ │ + EGraph : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. Graph EGraph_mkAdjGraph ( EGraph *egraph ) ; │ │ │ │ │ This method creates and returns a Graph object with vertex adjacency lists from the element │ │ │ │ │ graph object. │ │ │ │ │ Error checking: If egraph is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. EGraph * EGraph_make9P ( int n1, int n2, int ncomp ) ; │ │ │ │ │ This method creates and returns a EGraph object for a n1 × n2 grid for a 9-point operator │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ This method reads in an EGraph object from a formatted file. If there are no errors in reading │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Error checking: If egraph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 3. int EGraph_readFromBinaryFile ( EGraph *egraph, FILE *fp ) ; │ │ │ │ │ This method reads in an EGraph object from a binary file. If there are no errors in reading │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ Error checking: If egraph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ - 4 EGraph : DRAFT December 20, 2018 │ │ │ │ │ + 4 EGraph : DRAFT October 11, 2021 │ │ │ │ │ 4. int EGraph_writeToFile ( EGraph *egraph, char *fn ) ; │ │ │ │ │ This method writes an EGraph object to a file. It tries to open the file and if it is successful, │ │ │ │ │ it then calls EGraph writeFromFormattedFile()or EGraph writeFromBinaryFile(),closes │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ Error checking: If egraph or fn are NULL, or if fn is not of the form *.egraphf (for a │ │ │ │ │ formatted file) or *.egraphb (for a binary file), an error message is printed and the method │ │ │ │ │ returns zero. │ │ │ │ │ @@ -128,15 +128,15 @@ │ │ │ │ │ binary files and vice versa. One can also read in a EGraph file and print out just the header │ │ │ │ │ information (see the EGraph writeStats() method). │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the EGraph object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ - EGraph : DRAFT December 20, 2018 5 │ │ │ │ │ + EGraph : DRAFT October 11, 2021 5 │ │ │ │ │ • The inFile parameter is the input file for the EGraph object. It must be of the form │ │ │ │ │ *.egraphfor*.egraphb. TheEGraphobjectisreadfromthefileviatheEGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The outFileparameter is the output file for the EGraph object. If outFile is none then │ │ │ │ │ the EGraphobject is not written to a file. Otherwise, the EGraph writeToFile()method │ │ │ │ │ is called to write the object to a formatted file (if outFile is of the form *.egraphf), │ │ │ │ │ or a binary file (if outFile is of the form *.egraphb). │ │ │ │ │ @@ -166,15 +166,15 @@ │ │ │ │ │ data. │ │ │ │ │ • n1 is the number of grid points in the first direction, must be greater than one. │ │ │ │ │ • n2 is the number of grid points in the second direction, must be greater than one. │ │ │ │ │ • n3 is the number of grid points in the third direction, must be greater than or equal to │ │ │ │ │ one. │ │ │ │ │ • ncomp is the number of components (i.e., the number of degrees of freedom) at each grid │ │ │ │ │ point, must be greater than or equal to one. │ │ │ │ │ - 6 EGraph : DRAFT December 20, 2018 │ │ │ │ │ + 6 EGraph : DRAFT October 11, 2021 │ │ │ │ │ • TheoutEGraphFileparameteristheoutputfilefortheEGraphobject. IfoutEGraphFile │ │ │ │ │ is nonethentheEGraphobjectisnotwrittentoafile. Otherwise,theEGraph writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if outEGraphFile is of the form │ │ │ │ │ *.egraphf), or a binary file (if outEGraphFile is of the form *.egraphb). │ │ │ │ │ Index │ │ │ │ │ EGraph clearData(), 2 │ │ │ │ │ EGraph free(), 2 │ │ ├── ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ ├── ETree.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMSL10 CMTI10 CMMI10 │ │ │ │ %%+ CMBX10 CMR8 CMMI8 CMEX10 CMCSC10 Helvetica │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ETree.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2923,22 +2923,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3112,88 +3112,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5010,15 +4999,15 @@ │ │ │ │ /Fg 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ 56 34 51 62 50 1[54 11[86 78 62 2[77 84 1[106 2[58 42 │ │ │ │ 5[81 80 8[56 56 56 56 56 56 56 56 56 56 1[31 33[62 12[{}41 │ │ │ │ 99.6264 /CMBX12 rf /Fh 141[62 12[62 16[62 14[62 69[{}4 │ │ │ │ 119.552 /CMTT12 rf /Fi 135[42 60 1[49 30 37 38 1[46 46 │ │ │ │ 51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 51 66 4[82 │ │ │ │ 6[59 62 69 2[68 6[28 12[33 45[{}30 90.9091 /CMTI10 rf │ │ │ │ -/Fj 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 │ │ │ │ +/Fj 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 │ │ │ │ 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fk 149[25 2[45 45 │ │ │ │ 80[71 71 4[45 12[71 1[71{}8 90.9091 /CMSY10 rf /Fl 134[71 │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 │ │ │ │ 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}27 119.552 │ │ │ │ /CMBX12 rf /Fm 131[48 1[48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 1[48 │ │ │ │ 1[48 1[48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 │ │ │ │ @@ -5098,17 +5087,17 @@ │ │ │ │ b Fn(:)i(p)s(oin)m(ter)h(to)g(an)f Fm(IV)g Fn(ob)5 b(ject)31 │ │ │ │ b(to)g(hold)f(fron)m(t)h(w)m(eigh)m(ts,)h(size)f Fm(nfront)136 │ │ │ │ 5294 y Fk(\017)46 b Fm(IV)h(*bndwghtsIV)28 b Fn(:)i(p)s(oin)m(ter)h(to) │ │ │ │ g(an)f Fm(IV)g Fn(ob)5 b(ject)31 b(to)g(hold)f(the)h(w)m(eigh)m(ts)g │ │ │ │ (of)g(the)f(fron)m(ts')h(b)s(oundaries,)e(size)227 5407 │ │ │ │ y Fm(nfront)1927 5656 y Fn(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 136 399 a Fk(\017)46 b Fm(IV)h(*vtxToFrontIV)35 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 136 399 a Fk(\017)46 b Fm(IV)h(*vtxToFrontIV)35 │ │ │ │ b Fn(:)j(p)s(oin)m(ter)h(to)g(an)f Fm(IV)f Fn(ob)5 b(ject)39 │ │ │ │ b(to)g(hold)f(the)g(map)g(from)g(v)m(ertices)i(to)f(fron)m(ts,)h(size) │ │ │ │ 227 511 y Fm(nfront)0 727 y Fn(A)d(correctly)i(initialized)g(and)d(non) │ │ │ │ m(trivial)i Fm(ETree)e Fn(ob)5 b(ject)38 b(will)g(ha)m(v)m(e)g(p)s │ │ │ │ (ositiv)m(e)g Fm(nfront)e Fn(and)g Fm(nvtx)g Fn(v)-5 │ │ │ │ b(alues,)40 b(a)0 840 y(v)-5 b(alid)31 b Fm(tree)e Fn(\014eld)h(and)g │ │ │ │ (non-)p Fm(NULL)f(nodwghtsIV)p Fn(,)e Fm(bndwghtsIV)h │ │ │ │ @@ -5161,17 +5150,17 @@ │ │ │ │ b(metho)s(ds)111 5104 y Fn(1.)46 b Fm(int)h(ETree_nfront)e(\()i(ETree)f │ │ │ │ (*etree)h(\))g(;)227 5255 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(n) │ │ │ │ m(um)m(b)s(er)f(of)i(fron)m(ts.)227 5407 y Fi(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(etree)f │ │ │ │ Fn(is)i Fm(NULL)p Fn(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1070 4 v 1251 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(3)111 399 y(2.)46 b Fm(int)h(ETree_nvtx)e(\()j │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1287 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(3)111 399 y(2.)46 b Fm(int)h(ETree_nvtx)e(\()j │ │ │ │ (ETree)e(*etree)g(\))i(;)227 556 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(v)m(ertices.)227 713 y │ │ │ │ Fi(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(etree)f │ │ │ │ Fn(is)i Fm(NULL)p Fn(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(program)f(exits.)111 915 y(3.)46 b Fm(Tree)h(*)g(ETree_tree)e │ │ │ │ (\()j(ETree)e(*etree)g(\))i(;)227 1072 y Fn(This)30 b(metho)s(d)g │ │ │ │ (returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fm(Tree)e Fn(ob)5 │ │ │ │ @@ -5219,17 +5208,17 @@ │ │ │ │ b(ETree)e(*etree)g(\))i(;)227 5250 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ (a)i(p)s(oin)m(ter)f(to)h(the)g Fm(bndwghtsIV)c Fn(ob)5 │ │ │ │ b(ject.)227 5407 y Fi(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(etree)f Fn(is)i Fm(NULL)p Fn(,)e(an)h(error)g(message)i │ │ │ │ (is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 66 399 a Fn(11.)46 b Fm(int)h(*)h(ETree_bndwghts)c │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 66 399 a Fn(11.)46 b Fm(int)h(*)h(ETree_bndwghts)c │ │ │ │ (\()j(ETree)f(*etree)g(\))i(;)227 551 y Fn(This)30 b(metho)s(d)g │ │ │ │ (returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fm(bndwghts)d │ │ │ │ Fn(v)m(ector.)227 703 y Fi(Err)-5 b(or)32 b(che)-5 b(cking:)39 │ │ │ │ b Fn(If)27 b Fm(etree)f Fn(or)i Fm(etree->bndwghtsIV)23 │ │ │ │ b Fn(is)k Fm(NULL)p Fn(,)g(an)h(error)f(message)i(is)e(prin)m(ted)h │ │ │ │ (and)f(the)227 816 y(program)j(exits.)66 1008 y(12.)46 │ │ │ │ b Fm(IV)h(*)h(ETree_vtxToFrontIV)43 b(\()k(ETree)g(*etree)f(\))h(;)227 │ │ │ │ @@ -5287,17 +5276,17 @@ │ │ │ │ Fn(ob)5 b(ject)34 b(giv)m(en)g(the)f(n)m(um)m(b)s(er)f(of)h(fron)m(ts)g │ │ │ │ (and)f(n)m(um)m(b)s(er)g(of)h(v)m(ertices.)227 5407 y(An)m(y)26 │ │ │ │ b(previous)f(data)h(is)f(cleared)i(with)e(a)h(call)g(to)h │ │ │ │ Fm(ETree)p 2153 5407 V 33 w(clearData\(\))p Fn(,)c(The)i │ │ │ │ Fm(Tree)f Fn(ob)5 b(ject)27 b(is)e(initialized)p eop │ │ │ │ end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1070 4 v 1251 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(5)227 399 y(with)j(a)g(call)i(to)e │ │ │ │ +TeXDict begin 5 4 bop 91 100 1106 4 v 1287 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(5)227 399 y(with)j(a)g(call)i(to)e │ │ │ │ Fm(Tree)p 1000 399 29 4 v 34 w(init1\(\))p Fn(.)49 b(The)34 │ │ │ │ b Fm(nodwghtsIV)p Fn(,)d Fm(bndwghtsIV)h Fn(and)h Fm(vtxToFrontIV)e │ │ │ │ Fn(ob)5 b(jects)35 b(are)227 511 y(initialized)d(with)e(calls)h(to)g │ │ │ │ Fm(IV)p 1268 511 V 34 w(init\(\))p Fn(.)39 b(The)30 b(en)m(tries)h(in)f │ │ │ │ Fm(nodwghtsIV)d Fn(and)i Fm(bndwghtsIV)f Fn(are)i(set)h(to)g │ │ │ │ Fm(0)p Fn(,)227 624 y(while)g(the)f(en)m(tries)h(in)f │ │ │ │ Fm(vtxToFrontIV)d Fn(are)k(set)g(to)g Fm(-1)p Fn(.)227 │ │ │ │ @@ -5375,17 +5364,17 @@ │ │ │ │ 5294 y Fn(This)f(metho)s(d)g(initializes)j Fm(subtree)c │ │ │ │ Fn(from)h Fm(tree)f Fn(using)h(the)h(no)s(des)f(of)h │ │ │ │ Fm(etree)e Fn(that)i(are)g(found)e(in)227 5407 y Fm(nodeidsIV)p │ │ │ │ Fn(.)28 b(The)i(map)g(from)g(no)s(des)g(in)g Fm(subtree)e │ │ │ │ Fn(to)j(no)s(des)f(in)g Fm(etree)f Fn(is)h(returned)f(in)h │ │ │ │ Fm(vtxIV)p Fn(.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 227 399 a Fi(R)-5 b(eturn)40 b(c)-5 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 227 399 a Fi(R)-5 b(eturn)40 b(c)-5 │ │ │ │ b(o)g(de:)111 b Fn(1)38 b(for)f(a)h(normal)g(return,)g(-1)h(if)e │ │ │ │ Fm(subtree)f Fn(is)h Fm(NULL)p Fn(,)g(-2)h(if)g Fm(nodeidsIV)d │ │ │ │ Fn(is)i Fm(NULL)p Fn(,)g(-3)h(if)227 511 y Fm(etree)29 │ │ │ │ b Fn(is)i Fm(NULL)p Fn(,)e(-4)i(if)f Fm(nodeidsIV)e Fn(is)j(in)m(v)-5 │ │ │ │ b(alid,)31 b(-5)g(if)f Fm(vtxIV)f Fn(is)i Fm(NULL)p Fn(.)0 │ │ │ │ 809 y Fg(1.2.4)112 b(Utilit)m(y)38 b(metho)s(ds)0 1015 │ │ │ │ y Fn(The)23 b(utilit)m(y)h(metho)s(ds)f(return)f(the)h(n)m(um)m(b)s(er) │ │ │ │ @@ -5460,17 +5449,17 @@ │ │ │ │ b Fn(If)37 b Fm(etree)f Fn(or)h Fm(tree)g Fn(is)g Fm(NULL)p │ │ │ │ Fn(,)g(or)h(if)f Fm(nfront)f Ff(<)h Fn(1,)j(or)d(if)h │ │ │ │ Fm(symflag)e Fn(is)h(in)m(v)-5 b(alid,)40 b(or)e(if)227 │ │ │ │ 5407 y Fm(J)25 b Ff(<)g Fn(0,)31 b(or)g(if)f Fm(J)25 │ │ │ │ b Fk(\025)g Fm(nfront)n Fn(,)31 b(an)f(error)g(message)i(is)e(prin)m │ │ │ │ (ted)g(and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1070 4 v 1251 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(7)111 399 y(6.)46 b Fm(double)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1106 4 v 1287 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(7)111 399 y(6.)46 b Fm(double)g │ │ │ │ (ETree_nInternalOpsInFront)41 b(\()48 b(ETree)e(*etree,)g(int)h(type,)f │ │ │ │ (int)h(symflag,)f(int)h(J)g(\))g(;)227 554 y Fn(This)20 │ │ │ │ b(metho)s(d)f(returns)h(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(op)s │ │ │ │ (erations)g(p)s(erformed)e(b)m(y)h(fron)m(t)g Fm(J)g │ │ │ │ Fn(on)h(its)f(\(1)p Ff(;)15 b Fn(1\),)25 b(\(2)p Ff(;)15 │ │ │ │ b Fn(1\),)227 667 y(and)37 b(\(1)p Ff(;)15 b Fn(2\))38 │ │ │ │ b(blo)s(c)m(ks)g(during)d(a)j(factorization.)63 b(The)36 │ │ │ │ @@ -5556,17 +5545,17 @@ │ │ │ │ 39 b(The)27 b(map)f(from)227 5138 y(compressed)k(v)m(ertices)i(to)f │ │ │ │ (uncompressed)f(v)m(ertices)i(is)e(found)f(in)h(the)h │ │ │ │ Fm(eqmapIV)d Fn(ob)5 b(ject.)227 5294 y Fi(Err)-5 b(or)39 │ │ │ │ b(che)-5 b(cking:)50 b Fn(If)34 b Fm(etree)g Fn(or)h │ │ │ │ Fm(eqmapIV)e Fn(is)j Fm(NULL)p Fn(,)e(an)h(error)g(message)h(is)f(prin) │ │ │ │ m(ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 66 399 a Fn(12.)46 b Fm(ETree)h(*)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(ETree)28 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 66 399 a Fn(12.)46 b Fm(ETree)h(*)g │ │ │ │ (ETree_spliceTwoEtrees)42 b(\()48 b(ETree)e(*etree0,)f(Graph)i(*graph,) │ │ │ │ f(IV)h(*mapIV,)f(ETree)g(*etree1)g(\))h(;)227 562 y Fn(This)38 │ │ │ │ b(metho)s(d)h(creates)h(and)e(returns)g(an)h Fm(ETree)e │ │ │ │ Fn(ob)5 b(ject)40 b(that)g(is)f(formed)f(b)m(y)h(splicing)g(together)i │ │ │ │ (t)m(w)m(o)227 675 y(fron)m(t)28 b(trees,)h Fm(etree0)c │ │ │ │ Fn(for)j(the)f(v)m(ertices)i(the)f(eliminated)g(domains,)g │ │ │ │ Fm(etree1)e Fn(for)h(the)h(v)m(ertices)h(the)f(Sc)m(h)m(ur)227 │ │ │ │ @@ -5635,17 +5624,17 @@ │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(etree)f Fn(is)i │ │ │ │ Fm(NULL)p Fn(,)f(or)h(if)g Fm(nfront)28 b Ff(<)h Fn(1,)34 │ │ │ │ b(or)f(if)f Fm(nvtx)d Ff(<)g Fn(1,)34 b(or)f(if)g Fm(type)e │ │ │ │ Fn(or)i Fm(symflag)e Fn(is)227 5407 y(in)m(v)-5 b(alid,)31 │ │ │ │ b(an)g(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1070 4 v 1251 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(9)0 399 y Fg(1.2.6)112 b(Compression)39 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1106 4 v 1287 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(9)0 399 y Fg(1.2.6)112 b(Compression)39 │ │ │ │ b(metho)s(ds)0 604 y Fn(F)-8 b(requen)m(tly)30 b(an)f │ │ │ │ Fm(ETree)f Fn(ob)5 b(ject)30 b(will)g(need)e(to)i(b)s(e)f(compressed)g │ │ │ │ (in)f(some)i(manner.)40 b(Elimination)29 b(trees)h(usually)0 │ │ │ │ 717 y(ha)m(v)m(e)42 b(long)g(c)m(hains)g(of)f(v)m(ertices)i(at)f(the)f │ │ │ │ (higher)g(lev)m(els,)46 b(where)41 b(eac)m(h)h(c)m(hain)g(of)f(v)m │ │ │ │ (ertices)i(corresp)s(onds)d(to)i(a)0 830 y(sup)s(erno)s(de.)d(Liu's)30 │ │ │ │ b(generalized)i(ro)m(w)e(en)m(v)m(elop)s(e)i(metho)s(ds)e(partition)h │ │ │ │ @@ -5713,18 +5702,18 @@ │ │ │ │ b(then)j(returned.)227 5294 y Fi(Err)-5 b(or)35 b(che)-5 │ │ │ │ b(cking:)41 b Fn(If)31 b Fm(etree)e Fn(or)i Fm(tree)f │ │ │ │ Fn(is)h Fm(NULL)p Fn(,)f(or)h(if)g Fm(nfront)24 b Ff(<)i │ │ │ │ Fn(1,)32 b(or)f(if)g Fm(nvtx)25 b Ff(<)h Fn(1,)31 b(an)g(error)g │ │ │ │ (message)227 5407 y(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1047 4 │ │ │ │ -v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2853 100 V 111 399 a Fn(3.)46 b Fm(ETree)h(*)g(ETree_compress) │ │ │ │ -d(\()j(ETree)g(*etree,)f(IV)h(*frontMapIV)e(\))i(;)227 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1083 4 │ │ │ │ +v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 111 399 a Fn(3.)46 b Fm(ETree)h(*)g(ETree_compress)d │ │ │ │ +(\()j(ETree)g(*etree,)f(IV)h(*frontMapIV)e(\))i(;)227 │ │ │ │ 562 y Fn(Using)41 b Fm(frontMapIV)p Fn(,)d(a)j(new)f │ │ │ │ Fm(ETree)f Fn(ob)5 b(ject)41 b(is)g(created)g(and)f(returned.)70 │ │ │ │ b(If)40 b Fm(frontMapIV)e Fn(do)s(es)i(not)227 675 y(de\014ne)30 │ │ │ │ b(eac)m(h)i(in)m(v)m(erse)f(map)f(of)h(a)g(new)f(no)s(de)g(to)h(b)s(e)f │ │ │ │ (connected)i(set)f(of)f(no)s(des)g(in)g(the)h(old)g Fm(ETree)e │ │ │ │ Fn(ob)5 b(ject,)227 788 y(the)31 b(new)f Fm(ETree)f Fn(ob)5 │ │ │ │ b(ject)31 b(will)g(not)f(b)s(e)g(w)m(ell)h(de\014ned.)227 │ │ │ │ @@ -5787,17 +5776,17 @@ │ │ │ │ (ectiv)m(e)g Fm(Tree)e Fn(metho)s(ds.)227 5294 y Fi(Err)-5 │ │ │ │ b(or)31 b(che)-5 b(cking:)38 b Fn(If)26 b Fm(etree)e │ │ │ │ Fn(is)j Fm(NULL)p Fn(,)e(or)h(if)h Fm(nfront)c Ff(<)i │ │ │ │ Fn(1,)j(or)e(if)h Fm(nvtx)d Ff(<)h Fn(1,)i(an)g(error)f(message)h(is)f │ │ │ │ (prin)m(ted)227 5407 y(and)k(the)h(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(11)111 399 y(2.)46 b Fm(IV)h(*)h │ │ │ │ +TeXDict begin 11 10 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(11)111 399 y(2.)46 b Fm(IV)h(*)h │ │ │ │ (ETree_newToOldVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h(;)227 │ │ │ │ 511 y(IV)g(*)h(ETree_oldToNewVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h │ │ │ │ (;)227 663 y Fn(An)29 b Fm(IV)f Fn(ob)5 b(ject)30 b(is)g(created)g │ │ │ │ (with)f(size)h Fm(nvtx)p Fn(.)39 b(First)29 b(w)m(e)h(\014nd)d(a)j │ │ │ │ (new-to-old)g(p)s(erm)m(utation)f(of)g(the)h(fron)m(ts.)227 │ │ │ │ 776 y(Then)j(w)m(e)i(searc)m(h)f(o)m(v)m(er)h(the)g(fron)m(ts)f(in)f │ │ │ │ (their)h(new)g(order)f(to)i(\014ll)f(the)g(v)m(ertex)h(new-to-old)g(p)s │ │ │ │ @@ -5869,26 +5858,26 @@ │ │ │ │ b(Multisector)47 b(no)s(des)227 5294 y(ha)m(v)m(e)36 │ │ │ │ b(their)e(comp)s(onen)m(t)g(id)g(zero,)i(domain)e(no)s(des)f(ha)m(v)m │ │ │ │ (e)i(their)f(comp)s(onen)m(t)h(id)e(one.)52 b(Inclusion)34 │ │ │ │ b(in)g(the)227 5407 y(m)m(ultisector)g(is)e(based)f(on)h(the)g(n)m(um)m │ │ │ │ (b)s(er)e(of)i(factor)h(en)m(tries)g(in)e(the)i(subtree)e(that)h(a)h(v) │ │ │ │ m(ertex)g(b)s(elongs,)f(or)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 227 399 a Fn(strictly)k(sp)s(eaking,)f(the)f │ │ │ │ -(n)m(um)m(b)s(er)f(of)i(factor)g(en)m(tries)g(in)f(the)g(subtree)g(of)g │ │ │ │ -(the)h(fron)m(t)f(to)h(whic)m(h)f(a)h(v)m(ertex)227 511 │ │ │ │ -y(b)s(elongs.)63 b(If)37 b(w)m(eigh)m(t)i(of)f(the)g(subtree)g(is)f │ │ │ │ -(more)h(than)g Fm(cutoff)e Fn(times)i(the)g(n)m(um)m(b)s(er)e(of)i │ │ │ │ -(factor)h(en)m(tries,)227 624 y(the)31 b(v)m(ertex)h(is)f(in)g(the)g(m) │ │ │ │ -m(ultisector.)44 b(The)31 b Fm(symflag)e Fn(parameter)i(can)g(b)s(e)f │ │ │ │ -(one)i(of)f Fm(SPOOLES)p 3419 624 29 4 v 32 w(SYMMETRIC)p │ │ │ │ -Fn(,)227 737 y Fm(SPOOLES)p 569 737 V 33 w(HERMITIAN)d │ │ │ │ -Fn(or)i Fm(SPOOLES)p 1509 737 V 32 w(NONSYMMETRIC)p Fn(.)227 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 227 399 a Fn(strictly)k(sp)s(eaking,)f(the)f(n)m(um) │ │ │ │ +m(b)s(er)f(of)i(factor)g(en)m(tries)g(in)f(the)g(subtree)g(of)g(the)h │ │ │ │ +(fron)m(t)f(to)h(whic)m(h)f(a)h(v)m(ertex)227 511 y(b)s(elongs.)63 │ │ │ │ +b(If)37 b(w)m(eigh)m(t)i(of)f(the)g(subtree)g(is)f(more)h(than)g │ │ │ │ +Fm(cutoff)e Fn(times)i(the)g(n)m(um)m(b)s(er)e(of)i(factor)h(en)m │ │ │ │ +(tries,)227 624 y(the)31 b(v)m(ertex)h(is)f(in)g(the)g(m)m(ultisector.) │ │ │ │ +44 b(The)31 b Fm(symflag)e Fn(parameter)i(can)g(b)s(e)f(one)i(of)f │ │ │ │ +Fm(SPOOLES)p 3419 624 29 4 v 32 w(SYMMETRIC)p Fn(,)227 │ │ │ │ +737 y Fm(SPOOLES)p 569 737 V 33 w(HERMITIAN)d Fn(or)i │ │ │ │ +Fm(SPOOLES)p 1509 737 V 32 w(NONSYMMETRIC)p Fn(.)227 │ │ │ │ 905 y Fi(Err)-5 b(or)37 b(che)-5 b(cking:)47 b Fn(If)33 │ │ │ │ b Fm(etree)f Fn(is)h Fm(NULL)p Fn(,)g(or)h(if)f Fm(nfront)c │ │ │ │ Ff(<)h Fn(1,)35 b(or)f(if)f Fm(nvtx)d Ff(<)g Fn(1,)35 │ │ │ │ b(or)e(if)h Fm(symflag)e Fn(is)h(in)m(v)-5 b(alid,)227 │ │ │ │ 1018 y(an)31 b(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h(program) │ │ │ │ f(exits.)111 1239 y(4.)46 b Fm(IV)h(*)h(ETree_msByNopsCutoff)42 │ │ │ │ b(\()48 b(ETree)e(*etree,)g(double)g(cutoff,)g(int)h(type,)f(int)h │ │ │ │ @@ -5972,17 +5961,17 @@ │ │ │ │ b Fn(means)227 5127 y(that)31 b Fm(J)f Fn(is)h(in)f(domain)g │ │ │ │ Fm(compids[J])p Fn(.)227 5294 y Fi(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)41 b Fn(If)30 b Fm(etree)p Fn(,)g Fm(graph)f │ │ │ │ Fn(or)h Fm(symbfacIVL)e Fn(is)j Fm(NULL)p Fn(,)f(an)g(error)g(message)i │ │ │ │ (is)f(prin)m(ted)f(and)g(the)227 5407 y(program)g(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(13)0 399 y Fg(1.2.10)113 b(T)-9 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(13)0 399 y Fg(1.2.10)113 b(T)-9 │ │ │ │ b(ransformation)38 b(metho)s(ds)0 592 y Fn(Often)g(the)h(elimination)h │ │ │ │ (tree)g(or)e(fron)m(t)h(tree)g(that)h(w)m(e)f(obtain)g(from)f(an)h │ │ │ │ (ordering)f(of)h(the)g(graph)f(is)h(not)g(as)0 705 y(appropriate)30 │ │ │ │ b(for)h(a)f(factorization)j(as)e(w)m(e)g(w)m(ould)f(lik)m(e.)42 │ │ │ │ b(There)30 b(are)h(t)m(w)m(o)g(imp)s(ortan)m(t)g(cases.)136 │ │ │ │ 898 y Fk(\017)46 b Fn(Near)g(the)g(lea)m(v)m(es)i(of)d(the)h(tree)g │ │ │ │ (the)g(fron)m(ts)f(are)h(t)m(ypically)i(small)e(in)f(size.)87 │ │ │ │ @@ -6071,17 +6060,17 @@ │ │ │ │ (recom-)0 5294 y(mend)32 b(\014rst)g(using)h Fm(ETree)p │ │ │ │ 927 5294 V 33 w(mergeFrontsOne\(\))c Fn(follo)m(w)m(ed)34 │ │ │ │ b(b)m(y)f Fm(ETree)p 2479 5294 V 33 w(mergeFrontsAll\(\))p │ │ │ │ Fn(.)45 b(See)33 b(the)g(driv)m(er)0 5407 y(programs)d │ │ │ │ Fm(testTransform)d Fn(and)j Fm(mkNDETree)d Fn(for)k(examples)f(of)h(ho) │ │ │ │ m(w)f(to)h(call)h(the)f(metho)s(ds.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 111 399 a Fn(1.)46 b Fm(ETree)h(*)g │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 111 399 a Fn(1.)46 b Fm(ETree)h(*)g │ │ │ │ (ETree_mergeFrontsOne)42 b(\()48 b(ETree)e(*etree,)g(int)h(maxzeros,)e │ │ │ │ (IV)i(*nzerosIV)f(\))h(;)227 549 y Fn(This)27 b(metho)s(d)g(only)g │ │ │ │ (tries)h(to)g(merge)g(a)g(fron)m(t)f(with)g(its)h(only)f(c)m(hild.)40 │ │ │ │ b(It)28 b(returns)e(an)h Fm(ETree)f Fn(ob)5 b(ject)28 │ │ │ │ b(where)227 662 y(one)34 b(or)g(more)f(subtrees)g(that)h(con)m(tain)h │ │ │ │ (m)m(ultiple)f(fron)m(ts)g(ha)m(v)m(e)g(b)s(een)f(merged)h(in)m(to)g │ │ │ │ (single)g(fron)m(ts.)50 b(The)227 775 y(parameter)28 │ │ │ │ @@ -6161,17 +6150,17 @@ │ │ │ │ b(or)f(if)f Fm(maxfrontsize)26 b Fk(\024)i Fn(0,)227 │ │ │ │ 5106 y(an)j(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ (exits.)111 5294 y(5.)46 b Fm(ETree)h(*)g(ETree_transform)91 │ │ │ │ b(\()48 b(ETree)e(*etree,)g(int)h(vwghts[],)e(int)i(maxzeros,)1516 │ │ │ │ 5407 y(int)g(maxfrontsize,)d(int)j(seed)g(\))g(;)p eop │ │ │ │ end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(15)227 399 y Fm(ETree)47 b(*)g(ETree_transform2)c │ │ │ │ +TeXDict begin 15 14 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(15)227 399 y Fm(ETree)47 b(*)g(ETree_transform2)c │ │ │ │ (\()48 b(ETree)e(*etree,)g(int)h(vwghts[],)e(int)i(maxzeros,)1516 │ │ │ │ 511 y(int)g(maxfrontsize,)d(int)j(seed)g(\))g(;)227 675 │ │ │ │ y Fn(These)37 b(metho)s(ds)g(returns)f(an)i Fm(ETree)e │ │ │ │ Fn(ob)5 b(ject)38 b(where)f(one)h(or)f(more)h(subtrees)e(that)i(con)m │ │ │ │ (tain)h(m)m(ultiple)227 788 y(fron)m(ts)28 b(ha)m(v)m(e)g(b)s(een)f │ │ │ │ (merged)h(in)m(to)g(single)g(fron)m(ts)g(and)f(where)g(one)g(or)h(more) │ │ │ │ f(large)i(fron)m(ts)e(ha)m(v)m(e)i(b)s(een)e(split)227 │ │ │ │ @@ -6236,18 +6225,18 @@ │ │ │ │ 5181 y(assigned)i(to)f(all)h(pro)s(cessors.\))49 b(The)33 │ │ │ │ b(tree)h(is)f(then)g(visited)g(in)g(a)h(p)s(ost-order)e(tra)m(v)m │ │ │ │ (ersal,)k(and)d(eac)m(h)427 5294 y(fron)m(t)27 b(is)g(assigned)g(to)g │ │ │ │ (an)g(eligible)h(thread)e(or)h(pro)s(cessor)f(with)h(the)f(least)i(n)m │ │ │ │ (um)m(b)s(er)e(of)h(accum)m(ulated)427 5407 y(ops)j(so)h(far.)p │ │ │ │ eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 336 399 a Fk(\017)46 b Fn(The)28 │ │ │ │ -b Fi(domain)k(de)-5 b(c)g(omp)g(osition)34 b(map)c Fn(is)e(also)h │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 336 399 a Fk(\017)46 b Fn(The)28 b │ │ │ │ +Fi(domain)k(de)-5 b(c)g(omp)g(osition)34 b(map)c Fn(is)e(also)h │ │ │ │ (complex,)h(where)e(domains)g(are)g(mapp)s(ed)f(to)i(threads,)427 │ │ │ │ 511 y(then)d(the)h(fron)m(ts)f(in)g(the)g(sc)m(h)m(ur)g(complemen)m(t)i │ │ │ │ (are)e(mapp)s(ed)f(to)i(threads,)g(b)s(oth)e(using)h(indep)s(enden)m(t) │ │ │ │ 427 624 y(balanced)38 b(maps.)61 b(The)36 b(metho)s(d)h │ │ │ │ Fm(ETree)p 1884 624 29 4 v 33 w(ddMapNew\(\))e Fn(is)i(more)g(robust)g │ │ │ │ (than)g Fm(ETree)p 3514 624 V 33 w(ddMap\(\))p Fn(,)427 │ │ │ │ 737 y(and)c(is)h(more)g(general)g(in)g(the)f(sense)h(that)g(it)g(tak)m │ │ │ │ @@ -6315,17 +6304,17 @@ │ │ │ │ (of)f(stac)m(k)i(storage)g(to)f(solv)m(e)h(for)e Fm(J)g │ │ │ │ Fn(using)g(the)g(m)m(ultifron)m(tal-)227 5249 y(based)30 │ │ │ │ b(forw)m(ard)g(solv)m(e.)227 5407 y Fi(Err)-5 b(or)29 │ │ │ │ b(che)-5 b(cking:)38 b Fn(If)25 b Fm(etree)e Fn(or)j │ │ │ │ Fm(dvec)d Fn(are)j Fm(NULL)p Fn(,)e(an)h(error)g(message)h(is)f(prin)m │ │ │ │ (ted)g(and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(17)111 399 y(5.)46 b Fm(void)h │ │ │ │ +TeXDict begin 17 16 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(17)111 399 y(5.)46 b Fm(void)h │ │ │ │ (ETree_backSolveProfile)42 b(\()47 b(ETree)f(*etree,)g(double)g(dvec[]) │ │ │ │ g(\))i(;)227 555 y Fn(On)24 b(return,)g Fm(dvec[J])f │ │ │ │ Fn(con)m(tains)i(the)g(amoun)m(t)g(of)f(stac)m(k)i(storage)g(to)f(solv) │ │ │ │ m(e)h(for)e Fm(J)g Fn(using)g(the)g(m)m(ultifron)m(tal-)227 │ │ │ │ 668 y(based)30 b(bac)m(kw)m(ard)h(solv)m(e.)227 825 y │ │ │ │ Fi(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fn(If)25 b Fm(etree)e │ │ │ │ Fn(or)j Fm(dvec)d Fn(are)j Fm(NULL)p Fn(,)e(an)h(error)g(message)h(is)f │ │ │ │ @@ -6399,17 +6388,17 @@ │ │ │ │ e(v)-5 b(alue)34 b Fm(1)e Fn(is)i(returned.)47 b(If)33 │ │ │ │ b(an)g(IO)f(error)h(is)227 5250 y(encoun)m(tered)e(from)f │ │ │ │ Fm(fprintf)p Fn(,)f(zero)i(is)f(returned.)227 5407 y │ │ │ │ Fi(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(etree)f │ │ │ │ Fn(or)i Fm(fp)e Fn(are)i Fm(NULL)p Fn(,)f(an)g(error)g(message)h(is)g │ │ │ │ (prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 111 399 a Fn(6.)46 b Fm(int)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 111 399 a Fn(6.)46 b Fm(int)h │ │ │ │ (ETree_writeToBinaryFile)42 b(\()47 b(ETree)f(*etree,)g(FILE)h(*fp)g │ │ │ │ (\))g(;)227 557 y Fn(This)37 b(metho)s(d)g(writes)g(an)h │ │ │ │ Fm(ETree)e Fn(ob)5 b(ject)38 b(to)g(a)g(binary)f(\014le.)62 │ │ │ │ b(If)37 b(there)h(are)g(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ 670 y(data,)32 b(the)e(v)-5 b(alue)31 b Fm(1)f Fn(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fm(fwrite)p Fn(,)f(zero)i(is)g(returned.)227 829 y Fi(Err)-5 │ │ │ │ @@ -6480,17 +6469,17 @@ │ │ │ │ w(writeToFile\(\))22 b Fn(metho)s(d)i(is)i(called)g(to)g(write)g(the)f │ │ │ │ (ob)5 b(ject)26 b(to)g(a)g(formatted)g(\014le)f(\(if)g │ │ │ │ Fm(outIVfile)427 5407 y Fn(is)31 b(of)f(the)h(form)f │ │ │ │ Fm(*.ivf)p Fn(\),)f(or)i(a)f(binary)g(\014le)g(\(if)h │ │ │ │ Fm(outIVfile)d Fn(is)i(of)h(the)f(form)g Fm(*.ivb)p Fn(\).)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(19)336 399 y Fk(\017)46 b Fn(The)24 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(19)336 399 y Fk(\017)46 b Fn(The)24 │ │ │ │ b Fm(outETreeFile)d Fn(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ (the)h Fm(ETree)d Fn(ob)5 b(ject.)40 b(If)24 b Fm(outETreeFile)d │ │ │ │ Fn(is)427 511 y Fm(none)g Fn(then)h(the)g Fm(ETree)f │ │ │ │ Fn(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ b(Otherwise,)23 b(the)g Fm(ETree)p 3253 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fn(metho)s(d)30 b(is)h(called)h(to)f(write) │ │ │ │ g(the)g(ob)5 b(ject)31 b(to)h(a)f(formatted)g(\014le)g(\(if)g │ │ │ │ @@ -6562,19 +6551,19 @@ │ │ │ │ b(39661)47 b(indices,)141 b(367237)46 b(|L|,)g(63215265)g(ops)275 │ │ │ │ 5294 y(merge2)142 b(:)g(511)47 b(fronts,)189 b(29525)47 │ │ │ │ b(indices,)141 b(373757)46 b(|L|,)g(63590185)g(ops)275 │ │ │ │ 5407 y(split)190 b(:)142 b(536)47 b(fronts,)189 b(34484)47 │ │ │ │ b(indices,)141 b(373757)46 b(|L|,)g(63590185)g(ops)p │ │ │ │ eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 336 399 a Fk(\017)46 b Fn(The)28 │ │ │ │ -b Fm(msglvl)f Fn(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ -(output)h(|)f(taking)i Fm(msglvl)46 b(>=)h(3)28 b Fn(means)427 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 336 399 a Fk(\017)46 b Fn(The)28 b │ │ │ │ +Fm(msglvl)f Fn(parameter)i(determines)g(the)g(amoun)m(t)g(of)f(output)h │ │ │ │ +(|)f(taking)i Fm(msglvl)46 b(>=)h(3)28 b Fn(means)427 │ │ │ │ 511 y(the)j Fm(ETree)e Fn(ob)5 b(ject)31 b(is)f(written)h(to)g(the)g │ │ │ │ (message)g(\014le.)336 660 y Fk(\017)46 b Fn(The)33 b │ │ │ │ Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 773 y(message)27 b(\014le)f(is)g Fi(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 885 │ │ │ │ @@ -6642,17 +6631,17 @@ │ │ │ │ h(n)m(um)m(b)s(er)e(of)h(v)m(ertices)i(in)e(a)h(fron)m(t)f(|)h(an)m(y) │ │ │ │ 427 5146 y(original)j(fron)m(t)f(that)g(con)m(tains)h(more)f(than)f │ │ │ │ Fm(maxsize)f Fn(v)m(ertices)j(will)f(b)s(e)f(brok)m(en)g(up)g(in)m(to)h │ │ │ │ (smaller)427 5259 y(fron)m(ts.)336 5407 y Fk(\017)46 │ │ │ │ b Fn(The)30 b Fm(nthread)f Fn(parameter)h(is)h(the)f(n)m(um)m(b)s(er)f │ │ │ │ (of)i(threads.)p eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(21)336 399 y Fk(\017)46 b Fn(The)30 │ │ │ │ +TeXDict begin 21 20 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(21)336 399 y Fk(\017)46 b Fn(The)30 │ │ │ │ b Fm(maptype)f Fn(parameter)h(is)h(the)f(t)m(yp)s(e)h(of)f(map.)500 │ │ │ │ 540 y Fe({)45 b Fm(1)30 b Fn(|)h(wrap)e(map)500 667 y │ │ │ │ Fe({)45 b Fm(2)30 b Fn(|)h(balanced)f(map)500 794 y Fe({)45 │ │ │ │ b Fm(3)30 b Fn(|)h(subtree-subset)e(map)500 921 y Fe({)45 │ │ │ │ b Fm(4)30 b Fn(|)h(domain)f(decomp)s(osition)h(map)336 │ │ │ │ 1062 y Fk(\017)46 b Fn(The)c Fm(cutoff)e Fn(parameter)i(is)g(used)f(b)m │ │ │ │ (y)h(the)g(domain)g(decomp)s(osition)g(map)g(only)-8 │ │ │ │ @@ -6735,17 +6724,17 @@ │ │ │ │ b(Otherwise,)37 b(the)g Fm(IV)p 3252 5181 V 34 w(writeToFile\(\))427 │ │ │ │ 5294 y Fn(metho)s(d)i(is)h(called)h(to)f(write)g(the)g(ob)5 │ │ │ │ b(ject)40 b(to)g(a)g(formatted)h(\014le)e(\(if)h Fm(outIVFile)d │ │ │ │ Fn(is)j(of)g(the)f(form)427 5407 y Fm(*.ivf)p Fn(\),)30 │ │ │ │ b(or)g(a)h(binary)f(\014le)g(\(if)h Fm(outIVFile)d Fn(is)i(of)g(the)h │ │ │ │ (form)f Fm(*.ivb)p Fn(\).)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 111 399 a Fn(6.)46 b Fm(testExpand)f(msglvl)h │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 111 399 a Fn(6.)46 b Fm(testExpand)f(msglvl)h │ │ │ │ (msgFile)g(inETreeFile)f(inEqmapFile)g(outETreeFile)227 │ │ │ │ 553 y Fn(This)39 b(driv)m(er)h(program)g(is)g(used)f(to)i(translate)g │ │ │ │ (an)f Fm(ETree)e Fn(ob)5 b(ject)41 b(for)f(a)g(compressed)g(graph)f(in) │ │ │ │ m(to)i(an)227 666 y Fm(ETree)29 b Fn(ob)5 b(ject)31 b(for)g(the)f(unit) │ │ │ │ g(w)m(eigh)m(t)i(graph.)336 888 y Fk(\017)46 b Fn(The)28 │ │ │ │ b Fm(msglvl)f Fn(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ (output)h(|)f(taking)i Fm(msglvl)46 b(>=)h(3)28 b Fn(means)427 │ │ │ │ @@ -6820,17 +6809,17 @@ │ │ │ │ h(t)m(w)m(o)g(plots.)336 5058 y Fk(\017)46 b Fn(Eac)m(h)31 │ │ │ │ b(no)s(de)f(will)h(ha)m(v)m(e)g(a)g(circle)h(with)e(radius)f │ │ │ │ Fm(radius)p Fn(.)336 5208 y Fk(\017)46 b Fn(The)34 b │ │ │ │ Fm(firstEPSfile)e Fn(and)i Fm(secondEPSfile)d Fn(parameters)j(is)h(the) │ │ │ │ g(output)f(EPS)g(\014le)g(for)h(the)g(t)m(w)m(o)427 5321 │ │ │ │ y(plots.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ +TeXDict begin 23 22 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ Fa(GRD7x7)p Fn(:)f(W)-8 b(orking)26 b(storage)i(for)d(the)h(forw)m(ard) │ │ │ │ f(sparse)g(factorization)k(of)d(the)g(nested)f(dissection)0 │ │ │ │ 566 y(ordering.)40 b(On)28 b(the)h(left)h(is)e(the)h(storage)i │ │ │ │ (required)d(to)i(factor)2159 540 y Fb(b)2137 566 y Ff(J)38 │ │ │ │ b Fn(and)29 b(its)g(up)s(date)f(matrix.)40 b(On)28 b(the)h(righ)m(t)h │ │ │ │ (is)f(the)0 679 y(storage)j(required)d(to)j(factor)f │ │ │ │ Ff(J)39 b Fn(and)30 b(all)h(of)g(its)g(ancestors.)41 │ │ │ │ @@ -7229,18 +7218,18 @@ │ │ │ │ 5053 y(information)d(\(see)g(the)g Fm(ETree)p 1305 5053 │ │ │ │ V 33 w(writeStats\(\))c Fn(metho)s(d\).)336 5294 y Fk(\017)46 │ │ │ │ b Fn(The)28 b Fm(msglvl)f Fn(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ (of)f(output)h(|)f(taking)i Fm(msglvl)46 b(>=)h(3)28 │ │ │ │ b Fn(means)427 5407 y(the)j Fm(ETree)e Fn(ob)5 b(ject)31 │ │ │ │ b(is)f(written)h(to)g(the)g(message)g(\014le.)p eop end │ │ │ │ %%Page: 24 24 │ │ │ │ -TeXDict begin 24 23 bop 0 100 a Fn(24)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 336 399 a Fk(\017)46 b Fn(The)33 │ │ │ │ -b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fn(24)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 336 399 a Fk(\017)46 b Fn(The)33 b │ │ │ │ +Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fi(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)336 770 y Fk(\017)46 b Fn(The)37 b Fm(inFile)f │ │ │ │ Fn(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ Fm(ETree)e Fn(ob)5 b(ject.)64 b(It)37 b(m)m(ust)h(b)s(e)f(of)h(the)f │ │ │ │ @@ -7320,17 +7309,17 @@ │ │ │ │ Fn(ob)5 b(ject.)40 b(It)25 b(partitions)h(the)227 5294 │ │ │ │ y(v)m(ertices)37 b(in)m(to)f(domains)f(and)g(a)g(m)m(ultisector,)j │ │ │ │ (where)d(eac)m(h)h(domain)f(is)h(a)f(subtree)g(of)g(the)h(elimination) │ │ │ │ 227 5407 y(tree)i(and)e(the)h(m)m(ultisector)h(is)f(the)g(rest)g(of)g │ │ │ │ (the)g(v)m(ertices.)61 b(The)37 b(c)m(hoice)h(of)f(the)g(subtrees)f │ │ │ │ (dep)s(ends)f(on)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(25)227 399 y(the)g Fm(flag)e Fn(and)h │ │ │ │ +TeXDict begin 25 24 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(25)227 399 y(the)g Fm(flag)e Fn(and)h │ │ │ │ Fm(cutoff)f Fn(parameters)i(|)f(it)h(can)g(b)s(e)f(based)g(on)h(depth)f │ │ │ │ (of)g(a)h(subtree)f(or)h(the)g(n)m(um)m(b)s(er)e(of)227 │ │ │ │ 511 y(v)m(ertices,)36 b(factor)e(en)m(tries)g(or)f(factor)h(op)s │ │ │ │ (erations)f(asso)s(ciated)i(with)e(the)g(subtree.)48 │ │ │ │ b(The)33 b(comp)s(onen)m(t)g(ids)227 624 y Fm(IV)27 b │ │ │ │ Fn(ob)5 b(ject)28 b(is)g(optionally)h(written)e(to)h(a)g(\014le.)40 │ │ │ │ b(Here)28 b(is)f(some)h(sample)g(output)f(for)g Fm(BCSSTK30)e │ │ │ │ @@ -7394,18 +7383,18 @@ │ │ │ │ (\014le.)40 b(Otherwise,)30 b(the)f Fm(IV)p 2832 5181 │ │ │ │ V 34 w(writeToFile\(\))c Fn(metho)s(d)k(is)427 5294 y(called)35 │ │ │ │ b(to)f(write)g(the)f(ob)5 b(ject)35 b(to)f(a)g(formatted)g(\014le)f │ │ │ │ (\(if)h Fm(outIVFile)d Fn(is)i(of)h(the)g(form)f Fm(*.ivf)p │ │ │ │ Fn(\),)g(or)h(a)427 5407 y(binary)c(\014le)g(\(if)h Fm(outIVFile)d │ │ │ │ Fn(is)i(of)h(the)f(form)g Fm(*.ivb)p Fn(\).)p eop end │ │ │ │ %%Page: 26 26 │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fn(26)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 336 399 a Fk(\017)46 b Fn(The)30 │ │ │ │ -b Fm(flag)f Fn(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s(e)f(of)h(m)m │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fn(26)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 336 399 a Fk(\017)46 b Fn(The)30 b │ │ │ │ +Fm(flag)f Fn(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s(e)f(of)h(m)m │ │ │ │ (ultisector.)500 548 y Fe({)45 b Fm(flag)i(==)g(1)30 │ │ │ │ b Fn(|)h(the)g(m)m(ultisector)h(is)f(based)f(on)g(the)h(depth)f(of)h │ │ │ │ (the)g(fron)m(t,)g(i.e.,)h(if)e(the)h(fron)m(t)g(is)597 │ │ │ │ 661 y(more)g(than)f Fm(depth)f Fn(steps)h(remo)m(v)m(ed)i(from)d(the)i │ │ │ │ (ro)s(ot,)g(it)g(forms)f(the)g(ro)s(ot)h(of)f(a)h(domain.)500 │ │ │ │ 792 y Fe({)45 b Fm(flag)i(==)g(2)32 b Fn(|)h(the)g(m)m(ultisector)h(is) │ │ │ │ f(based)g(on)f(the)h(n)m(um)m(b)s(er)f(of)g(v)m(ertices)j(in)d(a)h │ │ │ │ @@ -7474,17 +7463,17 @@ │ │ │ │ (the)h(input)e(\014le)i(for)f(the)g Fm(Graph)f Fn(ob)5 │ │ │ │ b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f(form)427 │ │ │ │ 5294 y Fm(*.graphf)18 b Fn(or)j Fm(*.graphb)p Fn(.)35 │ │ │ │ b(The)19 b Fm(Graph)g Fn(ob)5 b(ject)21 b(is)g(read)f(from)g(the)g │ │ │ │ (\014le)h(via)f(the)h Fm(Graph)p 3368 5294 V 33 w(readFromFile\(\))427 │ │ │ │ 5407 y Fn(metho)s(d.)p eop end │ │ │ │ %%Page: 27 27 │ │ │ │ -TeXDict begin 27 26 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(27)336 399 y Fk(\017)46 b Fn(The)30 │ │ │ │ +TeXDict begin 27 26 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(27)336 399 y Fk(\017)46 b Fn(The)30 │ │ │ │ b Fm(outEPSfile)e Fn(parameter)j(is)f(the)h(name)f(of)h(the)f(EPS)g │ │ │ │ (\014le)g(to)h(hold)f(the)h(tree.)336 542 y Fk(\017)46 │ │ │ │ b Fn(The)34 b Fm(metricType)e Fn(parameter)j(de\014nes)f(the)h(t)m(yp)s │ │ │ │ (e)g(of)g(metric)g(to)g(b)s(e)f(illustrated.)54 b(See)35 │ │ │ │ b(ab)s(o)m(v)m(e)h(for)427 655 y(v)-5 b(alues.)336 799 │ │ │ │ y Fk(\017)46 b Fn(F)-8 b(or)31 b(information)g(ab)s(out)f(the)h │ │ │ │ Fm(heightflag)c Fn(and)j Fm(coordflag)e Fn(parameters,)j(see)g(Section) │ │ │ │ @@ -9287,18 +9276,18 @@ │ │ │ │ b Fi(Mer)-5 b(ging)31 b Fn(the)h(fron)m(t)g(tree)h(means)f(com)m │ │ │ │ (bining)g(fron)m(ts)g(together)h(that)227 5407 y(do)26 │ │ │ │ b(not)g(in)m(tro)s(duce)f(more)h(than)f Fm(maxzeros)e │ │ │ │ Fn(zero)k(en)m(tries)f(in)f(a)h(fron)m(t.)40 b(\(See)26 │ │ │ │ b([)p Fe(?)p Fn(])g(and)f([)p Fe(?)q Fn(])h(for)f(a)h(description)p │ │ │ │ eop end │ │ │ │ %%Page: 28 28 │ │ │ │ -TeXDict begin 28 27 bop 0 100 a Fn(28)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 0 731 a Fn(Figure)27 b(1.2:)39 │ │ │ │ -b Fa(GRD7x7x7)p Fn(:)h(F)-8 b(our)26 b(tree)h(plots)g(for)f(a)g(7)12 │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fn(28)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(ETree)29 b Fj(:)41 b Fi(DRAFT)30 b Fj(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 0 731 a Fn(Figure)27 b(1.2:)39 b Fa(GRD7x7x7)p │ │ │ │ +Fn(:)h(F)-8 b(our)26 b(tree)h(plots)g(for)f(a)g(7)12 │ │ │ │ b Fk(\002)g Fn(7)g Fk(\002)g Fn(7)27 b(grid)f(matrix)g(ordered)g(using) │ │ │ │ g(nested)g(dissection.)0 844 y(The)j(top)h(left)h(tree)g(measure)e(n)m │ │ │ │ (um)m(b)s(er)g(of)h(original)h(matrix)f(en)m(tries)h(in)f(a)g(fron)m │ │ │ │ (t.)40 b(The)30 b(top)g(righ)m(t)g(tree)h(measure)0 957 │ │ │ │ y(n)m(um)m(b)s(er)20 b(of)i(factor)h(matrix)f(en)m(tries)h(in)e(a)h │ │ │ │ (fron)m(t.)38 b(The)22 b(b)s(ottom)g(left)g(tree)h(measure)e(n)m(um)m │ │ │ │ (b)s(er)g(of)h(factor)h(op)s(erations)0 1070 y(in)30 │ │ │ │ @@ -11568,17 +11557,17 @@ │ │ │ │ 60 60 480 480 rectstroke │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial 3879 5026 V 1965 5029 1918 4 v eop end │ │ │ │ %%Page: 29 29 │ │ │ │ -TeXDict begin 29 28 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(29)227 399 y(of)i(this)g(sup)s(erno)s(de)d │ │ │ │ +TeXDict begin 29 28 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(29)227 399 y(of)i(this)g(sup)s(erno)s(de)d │ │ │ │ (amalgamation)36 b(or)e(relaxation.\))53 b Fi(Splitting)34 │ │ │ │ b Fn(a)g(fron)m(t)g(means)f(breaking)h(a)g(fron)m(t)g(up)227 │ │ │ │ 511 y(in)m(to)39 b(a)f(c)m(hain)g(of)g(smaller)g(fron)m(ts;)j(this)d │ │ │ │ (allo)m(ws)h(more)e(pro)s(cessors)g(to)i(w)m(ork)f(on)f(the)h(original) │ │ │ │ h(fron)m(t)e(in)227 624 y(a)g(straigh)m(tforw)m(ard)f(manner.)57 │ │ │ │ b(The)35 b(new)h(fron)m(t)g(tree)g(is)g(optionally)i(written)e(to)g(a)h │ │ │ │ (\014le.)57 b(Here)37 b(is)f(some)227 737 y(output)30 │ │ │ │ @@ -11739,17 +11728,17 @@ │ │ │ │ Fn(,)d(8)1992 4950 y Fm(ETree)p 2238 4950 V 33 w(splitFronts\(\))p │ │ │ │ Fn(,)i(14)1992 5064 y Fm(ETree)p 2238 5064 V 33 w(subtreeSubsetMap\(\)) │ │ │ │ p Fn(,)e(15)1992 5178 y Fm(ETree)p 2238 5178 V 33 w(transform\(\))p │ │ │ │ Fn(,)i(15)1992 5293 y Fm(ETree)p 2238 5293 V 33 w(transform2\(\))p │ │ │ │ Fn(,)g(15)1992 5407 y Fm(ETree)p 2238 5407 V 33 w(tree\(\))p │ │ │ │ Fn(,)h(3)1905 5656 y(30)p eop end │ │ │ │ %%Page: 31 31 │ │ │ │ -TeXDict begin 31 30 bop 91 100 1047 4 v 1228 100 a Fm(ETree)29 │ │ │ │ -b Fj(:)41 b Fi(DRAFT)121 b Fj(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(31)0 399 y Fm(ETree)p 246 399 29 │ │ │ │ +TeXDict begin 31 30 bop 91 100 1083 4 v 1264 100 a Fm(ETree)29 │ │ │ │ +b Fj(:)41 b Fi(DRAFT)121 b Fj(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(31)0 399 y Fm(ETree)p 246 399 29 │ │ │ │ 4 v 33 w(vtxToFront\(\))p Fn(,)27 b(4)0 511 y Fm(ETree)p │ │ │ │ 246 511 V 33 w(vtxToFrontIV\(\))p Fn(,)g(4)0 624 y Fm(ETree)p │ │ │ │ 246 624 V 33 w(wrapMap\(\))p Fn(,)h(15)0 737 y Fm(ETree)p │ │ │ │ 246 737 V 33 w(writeForHumanEye\(\))p Fn(,)e(18)0 850 │ │ │ │ y Fm(ETree)p 246 850 V 33 w(writeStats\(\))p Fn(,)h(18)0 │ │ │ │ 963 y Fm(ETree)p 246 963 V 33 w(writeToBinaryFile\(\))p │ │ │ │ Fn(,)e(18)0 1076 y Fm(ETree)p 246 1076 V 33 w(writeToFile\(\))p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ • int nfront : number of fronts in the tree │ │ │ │ │ • int nvtx : number of vertices in the tree │ │ │ │ │ • Tree *tree : pointer to a Tree structure │ │ │ │ │ • IV *nodwghtsIV : pointer to an IV object to hold front weights, size nfront │ │ │ │ │ • IV *bndwghtsIV : pointer to an IV object to hold the weights of the fronts’ boundaries, size │ │ │ │ │ nfront │ │ │ │ │ 1 │ │ │ │ │ - 2 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 2 ETree : DRAFT October 11, 2021 │ │ │ │ │ • IV *vtxToFrontIV : pointer to an IV object to hold the map from vertices to fronts, size │ │ │ │ │ nfront │ │ │ │ │ A correctly initialized and nontrivial ETree object will have positive nfront and nvtx values, a │ │ │ │ │ valid tree field and non-NULL nodwghtsIV, bndwghtsIV and vtxToFrontIV pointers. │ │ │ │ │ 1.2 Prototypes and descriptions of ETree methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ ETree object. │ │ │ │ │ @@ -53,15 +53,15 @@ │ │ │ │ │ This method releases any storage by a call to ETree clearData() then free’s the storage for │ │ │ │ │ the structure with a call to free(). │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ 1. int ETree_nfront ( ETree *etree ) ; │ │ │ │ │ This method returns the number of fronts. │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ - ETree : DRAFT December 20, 2018 3 │ │ │ │ │ + ETree : DRAFT October 11, 2021 3 │ │ │ │ │ 2. int ETree_nvtx ( ETree *etree ) ; │ │ │ │ │ This method returns the number of vertices. │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. Tree * ETree_tree ( ETree *etree ) ; │ │ │ │ │ This method returns a pointer to the Tree object. │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. int ETree_root ( ETree *etree ) ; │ │ │ │ │ @@ -86,15 +86,15 @@ │ │ │ │ │ 9. int * ETree_nodwghts ( ETree *etree ) ; │ │ │ │ │ This method returns a pointer to the nodwghts vector. │ │ │ │ │ Error checking: If etree or etree->nodwghtsIV is NULL, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 10. IV * ETree_bndwghtsIV ( ETree *etree ) ; │ │ │ │ │ This method returns a pointer to the bndwghtsIV object. │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ - 4 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 4 ETree : DRAFT October 11, 2021 │ │ │ │ │ 11. int * ETree_bndwghts ( ETree *etree ) ; │ │ │ │ │ This method returns a pointer to the bndwghts vector. │ │ │ │ │ Error checking: If etree or etree->bndwghtsIV is NULL, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 12. IV * ETree_vtxToFrontIV ( ETree *etree ) ; │ │ │ │ │ This method returns a pointer to the vtxToFrontIV object. │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -121,15 +121,15 @@ │ │ │ │ │ Error checking: If etree is NULL, or if symflag is invalid, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ There are four initializer methods. │ │ │ │ │ 1. void ETree_init1 ( ETree *etree, int nfront, int nvtx ) ; │ │ │ │ │ This method initializes an ETree object given the number of fronts and number of vertices. │ │ │ │ │ Anyprevious data is cleared with a call to ETree clearData(), The Tree object is initialized │ │ │ │ │ - ETree : DRAFT December 20, 2018 5 │ │ │ │ │ + ETree : DRAFT October 11, 2021 5 │ │ │ │ │ with a call to Tree init1(). The nodwghtsIV, bndwghtsIV and vtxToFrontIV objects are │ │ │ │ │ initialized with calls to IV init(). The entries in nodwghtsIV and bndwghtsIV are set to 0, │ │ │ │ │ while the entries in vtxToFrontIV are set to -1. │ │ │ │ │ Error checking: If etree is NULL, or if nfront is negative, or if nvtx < nfront, an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ 2. void ETree_initFromGraph ( ETree *etree, Graph *g ) ; │ │ │ │ │ This method generates an elimination tree from a graph. The nodwghtsIV vector object is │ │ │ │ │ @@ -160,15 +160,15 @@ │ │ │ │ │ permutes to vertex-to-front map, and returns an IV object that contains the old-to-new │ │ │ │ │ permutation. │ │ │ │ │ Error checking: If etree is NULL or inETreeFileName is “none”, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 6. int ETree_initFromSubtree ( ETree *subtree, IV *nodeidsIV, ETree *etree, IV *vtxIV ) ; │ │ │ │ │ This method initializes subtree from tree using the nodes of etree that are found in │ │ │ │ │ nodeidsIV. The map from nodes in subtree to nodes in etree is returned in vtxIV. │ │ │ │ │ - 6 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 6 ETree : DRAFT October 11, 2021 │ │ │ │ │ Return code: 1 for a normal return, -1 if subtree is NULL, -2 if nodeidsIV is NULL, -3 if │ │ │ │ │ etree is NULL, -4 if nodeidsIV is invalid, -5 if vtxIV is NULL. │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ Theutility methods return the number of bytes taken by the object, or the number of factor indices, │ │ │ │ │ entries or operations required by the object. │ │ │ │ │ 1. int ETree_sizeOf ( ETree *etree ) ; │ │ │ │ │ This method returns the number of bytes taken by this object (which includes the bytes taken │ │ │ │ │ @@ -195,15 +195,15 @@ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if nvtx < 1, or if type or │ │ │ │ │ symflag is invalid, an error message is printed and the program exits. │ │ │ │ │ 5. double ETree_nFactorEntriesInFront ( ETree *etree, int symflag, int J ) ; │ │ │ │ │ ThismethodreturnsthenumberofentriesinfrontJforanLU factorization. Thesymflagpa- │ │ │ │ │ rameter can be one of SPOOLES SYMMETRIC, SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if symflag is invalid, or if │ │ │ │ │ J < 0, or if J ≥ nfront, an error message is printed and the program exits. │ │ │ │ │ - ETree : DRAFT December 20, 2018 7 │ │ │ │ │ + ETree : DRAFT October 11, 2021 7 │ │ │ │ │ 6. double ETree_nInternalOpsInFront ( ETree *etree, int type, int symflag, int J ) ; │ │ │ │ │ ThismethodreturnsthenumberofinternaloperationsperformedbyfrontJonits(1,1), (2,1), │ │ │ │ │ and (1,2) blocks during a factorization. The type parameter can be one of SPOOLES REAL │ │ │ │ │ or SPOOLES COMPLEX. symflag must be one of SPOOLES SYMMETRIC, SPOOLES HERMITIAN or │ │ │ │ │ SPOOLES NONSYMMETRIC. │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if type or symflag is invalid, │ │ │ │ │ or if J < 0, or if J ≥ nfront, an error message is printed and the program exits. │ │ │ │ │ @@ -233,15 +233,15 @@ │ │ │ │ │ Error checking: If etree is NULL, or if type or symflag is invalid, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 11. ETree * ETree_expand ( ETree *etree, IV *eqmapIV ) ; │ │ │ │ │ This method creates and returns an ETree object for an uncompressed graph. The map from │ │ │ │ │ compressed vertices to uncompressed vertices is found in the eqmapIV object. │ │ │ │ │ Error checking: If etree or eqmapIV is NULL, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 8 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 8 ETree : DRAFT October 11, 2021 │ │ │ │ │ 12. ETree * ETree_spliceTwoEtrees ( ETree *etree0, Graph *graph, IV *mapIV, ETree *etree1 ) ; │ │ │ │ │ This method creates and returns an ETree object that is formed by splicing together two │ │ │ │ │ front trees, etree0 for the vertices the eliminated domains, etree1 for the vertices the Schur │ │ │ │ │ complement. The mapIV object maps vertices to domains or the Schur complement — if the │ │ │ │ │ entry is 0, the vertex is in the Schur complement, otherwise it is in a domain. │ │ │ │ │ Error checking: If etree0, graph, mapIV or etree1 is NULL, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ @@ -266,15 +266,15 @@ │ │ │ │ │ 3. DV * ETree_nopsMetric ( ETree *etree, int type, int symflag ) ; │ │ │ │ │ AnDVobjectofsize nfrontis created and returned. Each entry of the vector is filled with the │ │ │ │ │ number of factor operations associated with the corresponding front. The type parameter │ │ │ │ │ can be one of SPOOLES REAL or SPOOLES COMPLEX. The symflag parameter can be one of │ │ │ │ │ SPOOLES SYMMETRIC, SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, or if type or symflag is │ │ │ │ │ invalid, an error message is printed and the program exits. │ │ │ │ │ - ETree : DRAFT December 20, 2018 9 │ │ │ │ │ + ETree : DRAFT October 11, 2021 9 │ │ │ │ │ 1.2.6 Compression methods │ │ │ │ │ Frequently an ETree object will need to be compressed in some manner. Elimination trees usually │ │ │ │ │ have long chains of vertices at the higher levels, where each chain of vertices corresponds to a │ │ │ │ │ supernode. Liu’s generalized row envelope methods partition the vertices by longest chains [?]. In │ │ │ │ │ both cases, we can construct a map from each node to a set of nodes to define a smaller, more │ │ │ │ │ compact ETree object. Given such a map, we construct the smaller etree. │ │ │ │ │ Afundamental chain is a set of vertices v ,...,v such that │ │ │ │ │ @@ -308,15 +308,15 @@ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if nvtx < 1, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 2. IV * ETree_fundSupernodeMap ( ETree *etree ) ; │ │ │ │ │ An IV object of size nfront is created, filled with the map from vertices to fundamental │ │ │ │ │ supernodes, then returned. │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if nvtx < 1, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - 10 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 10 ETree : DRAFT October 11, 2021 │ │ │ │ │ 3. ETree * ETree_compress ( ETree *etree, IV *frontMapIV ) ; │ │ │ │ │ Using frontMapIV, a new ETree object is created and returned. If frontMapIV does not │ │ │ │ │ define each inverse map of a new node to be connected set of nodes in the old ETree object, │ │ │ │ │ the new ETree object will not be well defined. │ │ │ │ │ Error checking: If etree or frontMapIV is NULL, or if nfront < 1, or if nvtx < 1, an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ 1.2.7 Justification methods │ │ │ │ │ @@ -342,15 +342,15 @@ │ │ │ │ │ 1. IV * ETree_newToOldFrontPerm ( ETree *etree ) ; │ │ │ │ │ IV * ETree_oldToNewFrontPerm ( ETree *etree ) ; │ │ │ │ │ An IV object is created with size nfront. A post-order traversal of the Tree object fills │ │ │ │ │ the new-to-old permutation. A reversal of the new-to-old permutation gives the old-to-new │ │ │ │ │ permutation. Both methods are simply wrappers around the respective Tree methods. │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ - ETree : DRAFT December 20, 2018 11 │ │ │ │ │ + ETree : DRAFT October 11, 2021 11 │ │ │ │ │ 2. IV * ETree_newToOldVtxPerm ( ETree *etree ) ; │ │ │ │ │ IV * ETree_oldToNewVtxPerm ( ETree *etree ) ; │ │ │ │ │ AnIVobject is created with size nvtx. First we find a new-to-old permutation of the fronts. │ │ │ │ │ Then we search over the fronts in their new order to fill the vertex new-to-old permutation │ │ │ │ │ vector. The old-to-new vertex permutation vector is found by first finding the new-to-old │ │ │ │ │ vertex permutation vector, then inverting it. │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, an error message is printed │ │ │ │ │ @@ -380,15 +380,15 @@ │ │ │ │ │ of the subtree is more than cutoff times the vertex weight, the vertex is in the multisector. │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 3. IV * ETree_msByNentCutoff ( ETree *etree, double cutoff, int symflag ) ; │ │ │ │ │ An IV object is created to hold the multisector nodes and returned. Multisector nodes │ │ │ │ │ have their component id zero, domain nodes have their component id one. Inclusion in the │ │ │ │ │ multisector is based on the number of factor entries in the subtree that a vertex belongs, or │ │ │ │ │ - 12 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 12 ETree : DRAFT October 11, 2021 │ │ │ │ │ strictly speaking, the number of factor entries in the subtree of the front to which a vertex │ │ │ │ │ belongs. If weight of the subtree is more than cutoff times the number of factor entries, │ │ │ │ │ the vertex is in the multisector. The symflag parameter can be one of SPOOLES SYMMETRIC, │ │ │ │ │ SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, or if symflag is invalid, │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 4. IV * ETree_msByNopsCutoff ( ETree *etree, double cutoff, int type, int symflag ) ; │ │ │ │ │ @@ -423,15 +423,15 @@ │ │ │ │ │ ∂J,J ∂J,J J,J │ │ │ │ │ α = 0, we minimize active storage, when α = 1, we minimize solve operations. On return, │ │ │ │ │ *ptotalgain is filled with the total gain. The return value is a pointer to compidsIV, where │ │ │ │ │ compids[J] = 0 means that J is in the Schur complement, and compids[J] != 0 means │ │ │ │ │ that J is in domain compids[J]. │ │ │ │ │ Error checking: If etree, graph or symbfacIVL is NULL, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ - ETree : DRAFT December 20, 2018 13 │ │ │ │ │ + ETree : DRAFT October 11, 2021 13 │ │ │ │ │ 1.2.10 Transformation methods │ │ │ │ │ Often the elimination tree or front tree that we obtain from an ordering of the graph is not as │ │ │ │ │ appropriate for a factorization as we would like. There are two important cases. │ │ │ │ │ • Near the leaves of the tree the fronts are typically small in size. There is an overhead │ │ │ │ │ associated with each front, and though the overhead varies with regard to the factorization │ │ │ │ │ algorithm, it can be beneficial to group small subtrees together into one front. The expense is │ │ │ │ │ added storage for the logically zero entries and the factor operations on them. In this library, │ │ │ │ │ @@ -464,15 +464,15 @@ │ │ │ │ │ restriction. │ │ │ │ │ • The method ETree mergeFrontsAll() tries to merge a front with all of its children, if the │ │ │ │ │ resulting front does not contain too many zero entries. This has the effect of merging small │ │ │ │ │ bushy subtrees, but will not merge a top level separator with one of its children. │ │ │ │ │ For a serial application, ETree mergeFrontsAny()is suitable. For a parallel application, we recom- │ │ │ │ │ mend first using ETree mergeFrontsOne() followed by ETree mergeFrontsAll(). See the driver │ │ │ │ │ programs testTransform and mkNDETree for examples of how to call the methods. │ │ │ │ │ - 14 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 14 ETree : DRAFT October 11, 2021 │ │ │ │ │ 1. ETree * ETree_mergeFrontsOne ( ETree *etree, int maxzeros, IV *nzerosIV ) ; │ │ │ │ │ This method only tries to merge a front with its only child. It returns an ETree object where │ │ │ │ │ one or more subtrees that contain multiple fronts have been merged into single fronts. The │ │ │ │ │ parameter that governs the merging process is maxzeros, the number of zero entries that can │ │ │ │ │ be introduced by merging a child and parent front together. On input, nzerosIV contains │ │ │ │ │ the number of zeros presently in each front. It is modified on output to correspond with the │ │ │ │ │ new front tree. This method only tries to merge a front with its only child. │ │ │ │ │ @@ -505,15 +505,15 @@ │ │ │ │ │ is NULL, then the vertices have unit weight. The way the vertices in a front to be split are │ │ │ │ │ assigned to smaller fronts is random; the seed parameter is a seed to a random number │ │ │ │ │ generator that permutes the vertices in a front. │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, or if maxfrontsize ≤ 0, │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 5. ETree * ETree_transform ( ETree *etree, int vwghts[], int maxzeros, │ │ │ │ │ int maxfrontsize, int seed ) ; │ │ │ │ │ - ETree : DRAFT December 20, 2018 15 │ │ │ │ │ + ETree : DRAFT October 11, 2021 15 │ │ │ │ │ ETree * ETree_transform2 ( ETree *etree, int vwghts[], int maxzeros, │ │ │ │ │ int maxfrontsize, int seed ) ; │ │ │ │ │ These methods returns an ETree object where one or more subtrees that contain multiple │ │ │ │ │ fronts have been merged into single fronts and where one or more large fronts have been split │ │ │ │ │ into smaller fronts. The two methods differ slightly. ETree transform2() is better suited │ │ │ │ │ for parallel computing because it tends to preserve the tree branching properties. (A front is │ │ │ │ │ merged with either an only child or all children. ETree transform() can merge a front with │ │ │ │ │ @@ -544,15 +544,15 @@ │ │ │ │ │ where the fronts are visited in a post-order traversal of the tree and a front is assigned │ │ │ │ │ to a thread or processor with the least number of accumulated operations thus far. │ │ │ │ │ • The subtree-subset map is the most complex, where subsets of threads or processors are │ │ │ │ │ assigned to subtrees via a pre-order traversal of the tree. (Each root of the tree can be │ │ │ │ │ assigned to all processors.) The tree is then visited in a post-order traversal, and each │ │ │ │ │ front is assigned to an eligible thread or processor with the least number of accumulated │ │ │ │ │ ops so far. │ │ │ │ │ - 16 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 16 ETree : DRAFT October 11, 2021 │ │ │ │ │ • The domain decomposition map is also complex, where domains are mapped to threads, │ │ │ │ │ then the fronts in the schur complement are mapped to threads, both using independent │ │ │ │ │ balanced maps. The method ETree ddMapNew() is more robust than ETree ddMap(), │ │ │ │ │ and is more general in the sense that it takes a multisector vector as input. The msIV │ │ │ │ │ object is a map from the vertices to {0,1}. A vertex mapped to 0 lies in the Schur │ │ │ │ │ complement, a vertex mapped to 1 lies in a domain. │ │ │ │ │ Error checking: If etree or cumopsDV is NULL, or if type or symflag is invalid, an error │ │ │ │ │ @@ -580,15 +580,15 @@ │ │ │ │ │ can be one of SPOOLES SYMMETRIC, SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ Error checking: If etree or dvec are NULL, or if symflag is invalid, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 4. void ETree_forwSolveProfile ( ETree *etree, double dvec[] ) ; │ │ │ │ │ Onreturn, dvec[J] contains the amount of stack storage to solve for J using the multifrontal- │ │ │ │ │ based forward solve. │ │ │ │ │ Error checking: If etree or dvec are NULL, an error message is printed and the program exits. │ │ │ │ │ - ETree : DRAFT December 20, 2018 17 │ │ │ │ │ + ETree : DRAFT October 11, 2021 17 │ │ │ │ │ 5. void ETree_backSolveProfile ( ETree *etree, double dvec[] ) ; │ │ │ │ │ Onreturn, dvec[J] contains the amount of stack storage to solve for J using the multifrontal- │ │ │ │ │ based backward solve. │ │ │ │ │ Error checking: If etree or dvec are NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.13 IO methods │ │ │ │ │ There are the usual eight IO routines. The file structure of a tree object is simple: nfront, nvtx, │ │ │ │ │ a Tree object followed by the nodwghtsIV, bndwghtsIV and vtxToFrontIV objects. │ │ │ │ │ @@ -615,15 +615,15 @@ │ │ │ │ │ Error checking: If etree or fn are NULL, or if fn is not of the form *.etreef (for a formatted │ │ │ │ │ file) or *.etreeb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 5. int ETree_writeToFormattedFile ( ETree *etree, FILE *fp ) ; │ │ │ │ │ This method writes an ETree object to a formatted file. Otherwise, the data is written to │ │ │ │ │ the file. If there are no errors in writing the data, the value 1 is returned. If an IO error is │ │ │ │ │ encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If etree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - 18 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 18 ETree : DRAFT October 11, 2021 │ │ │ │ │ 6. int ETree_writeToBinaryFile ( ETree *etree, FILE *fp ) ; │ │ │ │ │ This method writes an ETree object to a binary file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If etree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 7. int ETree_writeForHumanEye ( ETree *etree, FILE *fp ) ; │ │ │ │ │ This method writes an ETree object to a file in a readable format. Otherwise, the method │ │ │ │ │ ETree writeStats() is called to write out the header and statistics. Then the parent, first │ │ │ │ │ @@ -650,15 +650,15 @@ │ │ │ │ │ • The inPermFile parameter is the input file for the Perm object. It must be of the form │ │ │ │ │ *.permfor*.permb. ThePermobjectisreadfromthefileviathePerm readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The outIVfile parameter is the output file for the vertex-to-front map IV object. │ │ │ │ │ If outIVfile is none then the IV object is not written to a file. Otherwise, the │ │ │ │ │ IV writeToFile()methodis called to write the object to a formatted file (if outIVfile │ │ │ │ │ is of the form *.ivf), or a binary file (if outIVfile is of the form *.ivb). │ │ │ │ │ - ETree : DRAFT December 20, 2018 19 │ │ │ │ │ + ETree : DRAFT October 11, 2021 19 │ │ │ │ │ • TheoutETreeFileparameter is the output file for the ETree object. If outETreeFileis │ │ │ │ │ nonethentheETreeobjectisnotwrittentoafile. Otherwise,theETree writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if outETreeFile is of the form │ │ │ │ │ *.etreef), or a binary file (if outETreeFile is of the form *.etreeb). │ │ │ │ │ 2. extractTopSep msglvl msgFile inETreeFile outIVfile │ │ │ │ │ ThisdriverprogramcreatesanIVobjectthatcontainsacompids[]vector, wherecompids[v] │ │ │ │ │ = 0 if vertex v is in the top level separator and -1 otherwise. The IV object is optionally │ │ │ │ │ @@ -689,15 +689,15 @@ │ │ │ │ │ Here is some typical output for a 15×15×15 grid matrix with maxzeros = 64 and maxsize │ │ │ │ │ = 32. │ │ │ │ │ vtx tree : 3375 fronts, 367237 indices, 367237 |L|, 63215265 ops │ │ │ │ │ fs tree : 1023 fronts, 39661 indices, 367237 |L|, 63215265 ops │ │ │ │ │ merge1 : 1023 fronts, 39661 indices, 367237 |L|, 63215265 ops │ │ │ │ │ merge2 : 511 fronts, 29525 indices, 373757 |L|, 63590185 ops │ │ │ │ │ split : 536 fronts, 34484 indices, 373757 |L|, 63590185 ops │ │ │ │ │ - 20 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 20 ETree : DRAFT October 11, 2021 │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the ETree object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • n1 is the number of grid points in the first direction. │ │ │ │ │ • n2 is the number of grid points in the second direction. │ │ │ │ │ @@ -729,15 +729,15 @@ │ │ │ │ │ • n3 is the number of grid points in the third direction. │ │ │ │ │ • The maxzeros parameter is an upper bound on the number of logically zero entries that │ │ │ │ │ will be allowed in a new front. │ │ │ │ │ • The maxsize parameter is an upper bound on the number of vertices in a front — any │ │ │ │ │ original front that contains more than maxsize vertices will be broken up into smaller │ │ │ │ │ fronts. │ │ │ │ │ • The nthread parameter is the number of threads. │ │ │ │ │ - ETree : DRAFT December 20, 2018 21 │ │ │ │ │ + ETree : DRAFT October 11, 2021 21 │ │ │ │ │ • The maptype parameter is the type of map. │ │ │ │ │ – 1 — wrap map │ │ │ │ │ – 2 — balanced map │ │ │ │ │ – 3 — subtree-subset map │ │ │ │ │ – 4 — domain decomposition map │ │ │ │ │ • The cutoff parameter is used by the domain decomposition map only. Try setting │ │ │ │ │ cutoff = 1/nthread or cutoff = 1/(2*nthread). │ │ │ │ │ @@ -771,15 +771,15 @@ │ │ │ │ │ nonethentheETreeobjectisnotwrittentoafile. Otherwise,theETree writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if outETreeFile is of the form │ │ │ │ │ *.etreef), or a binary file (if outETreeFile is of the form *.etreeb). │ │ │ │ │ • The outIVFile parameter is the output file for the old-to-new IV object. If outIVFile │ │ │ │ │ is none then the IV object is not written to a file. Otherwise, the IV writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if outIVFile is of the form │ │ │ │ │ *.ivf), or a binary file (if outIVFile is of the form *.ivb). │ │ │ │ │ - 22 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 22 ETree : DRAFT October 11, 2021 │ │ │ │ │ 6. testExpand msglvl msgFile inETreeFile inEqmapFile outETreeFile │ │ │ │ │ This driver program is used to translate an ETree object for a compressed graph into an │ │ │ │ │ ETree object for the unit weight graph. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the ETree object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ @@ -812,15 +812,15 @@ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • If labelflag = 1, the node ids are written on the nodes in the two plots. │ │ │ │ │ • Each node will have a circle with radius radius. │ │ │ │ │ • The firstEPSfile and secondEPSfile parameters is the output EPS file for the two │ │ │ │ │ plots. │ │ │ │ │ - ETree : DRAFT December 20, 2018 23 │ │ │ │ │ + ETree : DRAFT October 11, 2021 23 │ │ │ │ │ Figure 1.1: GRD7x7: Working storage for the forward sparse factorization of the nested dissection │ │ │ │ │ b │ │ │ │ │ ordering. On the left is the storage required to factor J and its update matrix. On the right is the │ │ │ │ │ storage required to factor J and all of its ancestors. Both plots have the same scale. │ │ │ │ │ 29 30 14 22 16 10 4 │ │ │ │ │ 23 15 11 3 │ │ │ │ │ 26 25 24 19 18 17 12 8 7 5 1 0 │ │ │ │ │ @@ -846,15 +846,15 @@ │ │ │ │ │ method. │ │ │ │ │ 9. testIO msglvl msgFile inFile outFile │ │ │ │ │ This driver program reads and writes ETree files, useful for converting formatted files to │ │ │ │ │ binary files and vice versa. One can also read in a ETree file and print out just the header │ │ │ │ │ information (see the ETree writeStats() method). │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the ETree object is written to the message file. │ │ │ │ │ - 24 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 24 ETree : DRAFT October 11, 2021 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The inFile parameter is the input file for the ETree object. It must be of the form │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The outFile parameter is the output file for the ETree object. If outFile is none then │ │ │ │ │ @@ -886,15 +886,15 @@ │ │ │ │ │ Thecutoff defines the multisector, 0 ≤ cutoff ≤ 1. If front J has a subtree metric based │ │ │ │ │ on forward operations that is greater than or equalt to cutoff times the total number │ │ │ │ │ of operations, then front J belongs to the multisector. │ │ │ │ │ 11. testMS msglvl msgFile inETreeFile outIVfile flag cutoff │ │ │ │ │ This program is used to extract a multisector from a front tree ETree object. It partitions the │ │ │ │ │ vertices into domains and a multisector, where each domain is a subtree of the elimination │ │ │ │ │ tree and the multisector is the rest of the vertices. The choice of the subtrees depends on │ │ │ │ │ - ETree : DRAFT December 20, 2018 25 │ │ │ │ │ + ETree : DRAFT October 11, 2021 25 │ │ │ │ │ the flag and cutoff parameters — it can be based on depth of a subtree or the number of │ │ │ │ │ vertices, factor entries or factor operations associated with the subtree. The component ids │ │ │ │ │ IV object is optionally written to a file. Here is some sample output for BCSSTK30 ordered by │ │ │ │ │ nested dissection, where the multisector is defined by subtree vertex weight (flag = 2) with │ │ │ │ │ cutoff = 0.125. │ │ │ │ │ region vertices entries operations metric/(avg domain) │ │ │ │ │ 0 1671 597058 255691396 0.797 2.201 3.967 │ │ │ │ │ @@ -927,15 +927,15 @@ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The outIVFile parameter is the output file for the IV object. If outIVFile is none │ │ │ │ │ then the IV object is not written to a file. Otherwise, the IV writeToFile() method is │ │ │ │ │ called to write the object to a formatted file (if outIVFile is of the form *.ivf), or a │ │ │ │ │ binary file (if outIVFile is of the form *.ivb). │ │ │ │ │ - 26 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 26 ETree : DRAFT October 11, 2021 │ │ │ │ │ • The flag parameter specifies the type of multisector. │ │ │ │ │ – flag == 1 — the multisector is based on the depth of the front, i.e., if the front is │ │ │ │ │ more than depth steps removed from the root, it forms the root of a domain. │ │ │ │ │ – flag == 2 — the multisector is based on the number of vertices in a subtree, i.e., │ │ │ │ │ if the subtree rooted at a front contains more than cutoff times the total number │ │ │ │ │ of vertices, it is a domain. │ │ │ │ │ – flag == 3 — the multisector is based on the number of factor entries in a subtree, │ │ │ │ │ @@ -967,15 +967,15 @@ │ │ │ │ │ data. │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ - ETree : DRAFT December 20, 2018 27 │ │ │ │ │ + ETree : DRAFT October 11, 2021 27 │ │ │ │ │ • The outEPSfile parameter is the name of the EPS file to hold the tree. │ │ │ │ │ • The metricType parameter defines the type of metric to be illustrated. See above for │ │ │ │ │ values. │ │ │ │ │ • For information about the heightflag and coordflag parameters, see Section ??. │ │ │ │ │ • If labelflag = 1, the node ids are written on the nodes in the two plots. │ │ │ │ │ • The fontscale parameter is the font size when labels are drawn. │ │ │ │ │ 13. testStorage msglvl msgFile inETreeFile inGraphFile │ │ │ │ │ @@ -1007,21 +1007,21 @@ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ 14. testTransform msglvl msgFile inETreeFile inGraphFile │ │ │ │ │ outETreeFile maxzeros maxsize seed │ │ │ │ │ This driver program is used to transform a front tree ETree object into a (possibly) merged │ │ │ │ │ and (possibly) split front tree. Merging the front tree means combining fronts together that │ │ │ │ │ do not introduce more than maxzeros zero entries in a front. (See [?] and [?] for a description │ │ │ │ │ - 28 ETree : DRAFT December 20, 2018 │ │ │ │ │ + 28 ETree : DRAFT October 11, 2021 │ │ │ │ │ Figure 1.2: GRD7x7x7: Four tree plots for a 7×7×7 grid matrix ordered using nested dissection. │ │ │ │ │ The top left tree measure number of original matrix entries in a front. The top right tree measure │ │ │ │ │ numberoffactormatrixentries inafront. Thebottomlefttree measurenumberoffactor operations │ │ │ │ │ in a front for a forward looking factorization, e.g., forward sparse. The bottom right tree measure │ │ │ │ │ number of factor operations in a front for a backward looking factorization, e.g., general sparse. │ │ │ │ │ - ETree : DRAFT December 20, 2018 29 │ │ │ │ │ + ETree : DRAFT October 11, 2021 29 │ │ │ │ │ of this supernode amalgamation or relaxation.) Splitting a front means breaking a front up │ │ │ │ │ into a chain of smaller fronts; this allows more processors to work on the original front in │ │ │ │ │ a straightforward manner. The new front tree is optionally written to a file. Here is some │ │ │ │ │ output for the R3D13824 matrix using maxzeros = 1000 and maxsize = 64. │ │ │ │ │ CPU #fronts #indices #entries #ops │ │ │ │ │ original : 6001 326858 3459359 1981403337 │ │ │ │ │ merge one : 0.209 3477 158834 3497139 2000297117 │ │ │ │ │ @@ -1094,15 +1094,15 @@ │ │ │ │ │ ETree mergeFrontsAll(), 14 ETree spliceTwoEtrees(), 8 │ │ │ │ │ ETree mergeFrontsAny(), 14 ETree splitFronts(), 14 │ │ │ │ │ ETree mergeFrontsOne(), 14 ETree subtreeSubsetMap(), 15 │ │ │ │ │ ETree MFstackProfile(), 16 ETree transform(), 15 │ │ │ │ │ ETree msByDepth(), 11 ETree transform2(), 15 │ │ │ │ │ ETree msByNentCutoff(), 11 ETree tree(), 3 │ │ │ │ │ 30 │ │ │ │ │ - ETree : DRAFT December 20, 2018 31 │ │ │ │ │ + ETree : DRAFT October 11, 2021 31 │ │ │ │ │ ETree vtxToFront(), 4 │ │ │ │ │ ETree vtxToFrontIV(), 4 │ │ │ │ │ ETree wrapMap(), 15 │ │ │ │ │ ETree writeForHumanEye(), 18 │ │ │ │ │ ETree writeStats(), 18 │ │ │ │ │ ETree writeToBinaryFile(), 18 │ │ │ │ │ ETree writeToFile(), 17 │ │ ├── ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ ├── Eigen.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMTT9 CMBX10 CMR10 │ │ │ │ %%+ CMTT10 CMMI10 CMSY10 CMEX10 CMMI7 CMSL10 CMTT12 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Eigen.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0527 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1136,22 +1136,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1325,88 +1325,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6076,20 +6065,19 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ -dup 68 /D put │ │ │ │ dup 74 /J put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 87 /W put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ dup 102 /f put │ │ │ │ @@ -6278,182 +6266,179 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547F9B0793E20128D03B122C74288283D9B583378FBA48950DCBDF887D │ │ │ │ -0A4C231FE009050F8A0C02473587E1D076F0BDC5458931FB26937C4EF7A7AB76 │ │ │ │ -DF14BDA8C5E27BDD9EC959C6F3FCF0C55E52847705744EE3D80EF426B9760775 │ │ │ │ -F4BD72DF213B715BE0AB9CEF5A9038E3EED7AF454E08ACBBD037E6307A04F331 │ │ │ │ -224C39B55908AC9FA0B8E560F8E78D5027B8266331C62EDF750CC08C0E2EB573 │ │ │ │ -082BB774BD853932B7C0C88BBE5F6E5E9D985792FA21B3180EE9911F823439DE │ │ │ │ -C430774263982682D4B1B76C287D1856702887A9A99B2B5A466FE6CC5B0851DF │ │ │ │ -EFBE62D59C80A0B97E81D0EEF577494C78F03924465B9042C7C6C1FD732CA57D │ │ │ │ -099755095F57ED2389501E3BF0969584ECE08D55FD8D7E95F92B4A0D405E5D61 │ │ │ │ -D10A7CF6B540B64594532EF90FA00CF28271462CB7F96D210E554AE285907A38 │ │ │ │ -EF66F57A40E2302CA4D3864994EC113AA35017C6D9890D1F4990AED4E5E395BA │ │ │ │ -51A1FED7F0E799614AEEFBD6FA24180F06F18DAC1D48FCC97C637130FF5C49AB │ │ │ │ -65E3E993F2CF6A2ED14A5A5CB71EDDAC41F58897B17750F761C131E1951F0F61 │ │ │ │ -1F97660E665F72B8E5106D357D7F673A61FA9399DF549ED13478B0335D7E97DA │ │ │ │ -DB74852BFFEBA827ACFD99EAD434BC753CF4E821275943118CF97A260781E068 │ │ │ │ -B184EEDC5879DC8787E93AAF61C0A4D418A86C33B89A2B8AAF6F49094930434D │ │ │ │ -D0C2E3E47E4C849694F27DD241F3BE91C3DB064D79677FE30BB4275A02AB5703 │ │ │ │ -C2264DE0968934F25B5A855A153CFC062AA83B31F1C6E8FB1AFEB58A64A14B09 │ │ │ │ -67E7B6AF2DA17860B7543EEB6ADCDD16D4B7D4F18D5821F8CC3CF845F541802D │ │ │ │ -31F91BAA407C510AACDF484FA42DE011EF5107CDB3BB4F4C8569CE9A5CAA9A58 │ │ │ │ -75C1AF292A4F156BC07B5191744373C59AB6A504232128A0CE99994DE077C61F │ │ │ │ -25FB4934AAF7A4EC99C4E8626CF617EEED20B7EA43D00D719F20AD56331D458D │ │ │ │ -93DAEE15B80512BED69DC167E8EED86D335AC02A3BB40EAF53254ED65EA764F2 │ │ │ │ -2E32CF0A9BA02125A16BFB186404AA7D603AB740D3F8CE7C05371B143F33FD37 │ │ │ │ -78024A3CBA3CC00EDAC91193DEF18487EC688EFB7FF42622575023ED6657F2F3 │ │ │ │ -160476BEE9BEF78FEE57BB7FDB4336276B8EAD4841CFAEDDCACC4928E5D5B632 │ │ │ │ -B79194AC0433332846C19DC968234C010E40AC206808129E5EFA84763E050235 │ │ │ │ -3A7245964FCD8E71DE356842AC427ED3AE73DDDFEF3098A9CC665D937996BE55 │ │ │ │ -09F705FA7C4FFD304DBC69EFE8771C1354201DBC7B3C74994E53A3D64A615C14 │ │ │ │ -E396BB414149B1D56D045FF99D120F43032DB599C67D37DFF63865FA288D3F3A │ │ │ │ -389EAEF0E2908A3EF9ED9D29A5D4E9667EA2EF20F264D32F5C1D499A9EB93CA7 │ │ │ │ -A201B536C64C5C0B2900CC00B604FC91F5DB006A12FD8E7DEF1EF122661B6DBE │ │ │ │ -DA58C1356C67DB9940E8A9EAF9064317BBD16ABADEC9CB934003936974988F80 │ │ │ │ -13A07F5012165BC64C34C9A4DCF70945E0B4106058FF9F38B58B4D2E90D6B466 │ │ │ │ -85772206612608C7CBCA79DD88476B7E28F199541E76E90BEB7045267905483E │ │ │ │ -A68CCC15EBB9843B1D594ED5734B92B61AC064BF43F0AEDAEE46C0AC7B91FE73 │ │ │ │ -17596036E647FDC87204F550188BDF71AB4F705B9B574615B154782E233617A8 │ │ │ │ -6D94DFFD89E1E2A7C2EA1139DF8BEF705827D40DCA2804BFB6FE214C7037D284 │ │ │ │ -152997161DC01F63D81B0C4DBD8EA8FF202BBA0C1E4545FDE4E528D54DB0FFF2 │ │ │ │ -6A610755C947672420356F231787E351918857F0A3F1BB0EEF92B253A3F63E58 │ │ │ │ -C9C0964B8C01D75BE6779C8AF9CB174312195F7B2D67EC9A0CAD801783B34040 │ │ │ │ -41EB011170ED2140E2AF4C5A041D5A0FE46D40BE74ADE427920C0196816A4428 │ │ │ │ -B83D711B4616F9DBCEA00D9230A696AE8010E2E8A0C9DA10C4FDEE77402E75E3 │ │ │ │ -A9299B95B1D1497876F6C1E90F49E317E74DB03B4420A9CDAC3A194D9659ACEF │ │ │ │ -B6400063A0E77220CED05A985A915A829C6E4F0AA7B4F8AD321A7D513F809584 │ │ │ │ -1E742BEBCC25EA395A485C3076AE4C6E435D580DE88455E993E07924B27B0D9B │ │ │ │ -7B1EC44890C25797490DEAAA6E0AF897872E80E5859205FFCF98C00104160774 │ │ │ │ -80B9C6077F7155F88CEF68F1B162D443190F820582E18095E5CD7D9A442D0340 │ │ │ │ -AE8102E5CD6ED30177555BF4CE80F62BB43A07EFCF2D450925049188B9D91BF7 │ │ │ │ -D5A3FC9479ED45873866B187ECA7538ADF2CCFDF89B711C1D2BAD29A5A93D676 │ │ │ │ -F208A59517848CC96A8E137A6D3784FA9FC8D922E1E0784793A2E466D59933F1 │ │ │ │ -F8DC94011C8BA5ACFE6C2EF9DA33E515239572F19303861FC91E8D964B35DC3D │ │ │ │ -8A9E6574BF72DD9C11A063D39AE4A87DE0E9D1C41217AFE9629544844D837138 │ │ │ │ -482E51C47C7BD360A28D28E85212029B044BF34C2100023D2EE348D4D5651F95 │ │ │ │ -83E83F2E7BA8EAD71F529B5755D5B4A9DDFCFAC262DB825BED56A3976BF84647 │ │ │ │ -F8F146A143486068652A17FD678B861E00AFCA2EE6A28D13B67581F5D5D67757 │ │ │ │ -BB86B0EC62DB28E337B058D20A1BFD2C316E641D7F8A1A2FF2160848EE6BECBF │ │ │ │ -00FA074D0B2247695E97D4B5553F6E1140067A523F8FFBF079C979E7D6B29086 │ │ │ │ -5BA8E35AB8AB1EF315B0F43EF3B6B0CEA485B9AC4462A7EB5BEFF810422B9B4C │ │ │ │ -71FCA36D9C8D72FA3E40D30609CCD623CDE34FBB884EA8BDC110D1D02A6E352F │ │ │ │ -111A01BF6AF02EED4489ED0406375136906530F6662D12F2309E6BDB8EC15156 │ │ │ │ -DE7F236E3338520879E77A1CD4B13A4511E5CDAE23D3046DD867697D2B13444A │ │ │ │ -3473DF3CB1109F6B2AE67AECD089FC3D20482D07C371118B8A6E39968E655D95 │ │ │ │ -26562B91205F9DAB27CE4F8BF0B640705C6F295C44EAD70213907CF6EB96BB55 │ │ │ │ -BF5157412B312352BCCB0349CA4CE808532A69D53F0ADE4CEAAD885ABC768D54 │ │ │ │ -7335E95B76D0D17825E480EB46820A34756285214140ADF46ACE36BD93C1600D │ │ │ │ -340E17FBD84B14E49FE508D9A3910CB9975C6D879E6B527BC16699FE5156624A │ │ │ │ -2DCB6E9BCCE10732F6A93FF2133D5BD69A9697425763C3CD093A9BD11EBB8C3B │ │ │ │ -A371F1DA43FB1B0194AB0B1994654C2004BFFC5C7B75A333CA84BBBDF20A10B4 │ │ │ │ -CEACB592E56035DF0E94ACB7915123B14375BAF5721BD92673A7677A059184FA │ │ │ │ -8DE6E1755994817516C4BF5A19E63F52E4150A5D5CD002FA22FD64E95027EA59 │ │ │ │ -A74C0030DF9A6DF5C16FF197125AF3CAB42D1423D6A76A68508030B2B32B773B │ │ │ │ -39A428AB9A47DFAC13100C579F41C8706BB6F7E95074519AD2D3A578F023951D │ │ │ │ -8EA6665E926F98A949F0FD8FAADDB0739B3C9F835166E1E6AC299BC78153786A │ │ │ │ -177F5C1564850346E0C33F950310375036AAD0DF7B0404DCC377CB578A9851AC │ │ │ │ -D61B0856D74F56564447682834F08098ED544718742D51EFE13C218876E29AB7 │ │ │ │ -C48D33D4379EF3F64D381F06CB36883AEDF860E24CD82BED0333067E38C3179D │ │ │ │ -E7FC7EA52B59D9EF0F13F255E91ECD25E85F6FFE5B32523084858583E550E37F │ │ │ │ -B7495F715F2267B98285697D701340375E0D19F6CE72220A397BCB98B4A516EF │ │ │ │ -354FB30F4D752A53A5CBF31B4AFF6CC54CD33510C8EC4C84669E382B25EF1157 │ │ │ │ -97B9543599E31C7A96BEF40561829D36F6BCAC7B536D5C78A4CE3C87158E85BF │ │ │ │ -E47374D6A8B297A5541AB5BAA7453F76881BA37436CE30C93D951B595AF117F9 │ │ │ │ -B54A535A41F68FA56AA3D5C69FB2F9539BE91B0AD849405666C36AE17717D9C9 │ │ │ │ -C7A136452189AA351D7FFB0C33E0508309A1AF4A85E18B3C52999C0F4CEDEB52 │ │ │ │ -C195615C034BAE347C6BA37519F3345AFEC311F4596664F982C1F548030B5DBD │ │ │ │ -4B5E73AB5CE710CCB276B39B8AAF44D7091F024B39A2D753FA3A2700F48742F2 │ │ │ │ -4502ADA9DE7038D3B2504A46B53FF260E0FAD932FB7BF2409B689A8C8B88E232 │ │ │ │ -FF75E43294BDA9CF6C6CAD37E284B85FB32382652B8A9723C07B89E9D78CE4A1 │ │ │ │ -1813E1DCA4D9950A9C07F266831650092DE7CA80D81B9445BB58F9C3C1DD5752 │ │ │ │ -88F85E5A02DC1F610952B390E19DFE50383B28ED26F43A234F008D27938521F4 │ │ │ │ -8C2938A8453635843902D85B6E9BDAE660C4CC8FDA9B4DA3ABD6B6050CBF3ABD │ │ │ │ -A1246E13B5F95B88080CE5A7EFBA66DFCBA43271634A4090C3CE9CBBB76E3C95 │ │ │ │ -9F8F41ECBF5B7D48C9A49FE9B5E8D8B029886475986B292798CE15A7A4FD04CC │ │ │ │ -069C199E68A53A7FEB9848D43611BAF472E563BEBB63C7359BC94A1F52F57F43 │ │ │ │ -B1232102850B4D88B9E705D7CB238092F017415C813D3EA8C829A1C5C7766B4B │ │ │ │ -FFC6B88D2E78B46A9E2EB0557B73AAC4BAA10EAB0793C8666B96DBB9AFF56168 │ │ │ │ -1D2E5567B87F406E9079F8BC12298C757570792A92B8CDA85256F7BAD161A83C │ │ │ │ -CD96F877562393E98F1E7B38B6B0E29B34FBFF42B6C35962135DD04A6EC1561C │ │ │ │ -11F35939A02C249221D8F6E2A807C552D2E2C3CC6B63640E1EA027544F97E66B │ │ │ │ -F5CEBF2859B0C92119113A4D20B9F96F4B10C7684CA3301494807B364EA52C18 │ │ │ │ -8191ADB4FBD21E24A5B0025C7066BD2F822CB989BF7C8F0CADD247AF5363BEB1 │ │ │ │ -4B436149A6375D325799424E011C63A2FCF50C731504B439F5C7F851D4B0CFB8 │ │ │ │ -943C5EA6CC51C37336F07D76CCACCCB1A5EDB41BF361486C0497A23689E18F83 │ │ │ │ -C39F44F016E20CB863C6CAAAD6F9C06C42E154C1B777ADC109BE2119F657DDFB │ │ │ │ -36776333575AFE48122D75526AAF7BB98AC861BC42EC3714D97FE4C278979E49 │ │ │ │ -7591E8EFE4FBDD9A15C6A5E207C91169E421F84B4116A0F8F53694EB5486512B │ │ │ │ -F08DBB7F23CD393D7B491CDB5EFECEC10EB44B8F8F5F0DCC49476634C3B3BBED │ │ │ │ -230456C447743FDD7A68BA6E0106D1FC0EFAEDBA7FEF55ED6C13E3181BB09072 │ │ │ │ -EE9B0237F31D9FD47E6CBDF5D0884CF6AC081E9FC6A17DBDA59BF98E902ACA9E │ │ │ │ -3F2D6BFDD9FBF8FFE24DA61394FF95C86A1856F12867DFDF2E92F99C5A73888B │ │ │ │ -C15114890038F691E2D91F77A058FC7E53D50CC0F5B5048A22A20B9DD1B07DFF │ │ │ │ -92B2784F56E8108D5FE871814354206133DFDEA1E7BA4FC843C5F0E95249BE42 │ │ │ │ -1D8F6C037D6E98E39CA3A9188CDFCAB3A0C4E2FEE32818FD5F187C94CBCE5CFE │ │ │ │ -CAB419D0F038C72C74937A3CC4A1F3BFB40E3983F3F614DB8E7C3ABCBB666DF4 │ │ │ │ -4C458A627B261C3F2CB4E1C5445A280471D326AC63FAFEBFB32BF83312AAD01F │ │ │ │ -82070D77EBB68CE094F99AD38C332DAC67BFE029A7C3FC235A8A42F97C89601C │ │ │ │ -C53132F9BF219F2E3E923368A48C12E8475924A699BF6754934E2EAF345DEB88 │ │ │ │ -0674B2419B48550ABF17B8078655BE5E59B4C724BE35D7D25EF3350569CF521F │ │ │ │ -1BA882A09684274C35D6EB6F091720D106E6ADA06AD0FE1AEFA202384BDEFF16 │ │ │ │ -545DF18DF0F138676A125CAE42E92D633FB8ACE6D254C9B0AA415BD0741C9805 │ │ │ │ -C64347218AAA68EB92EFB99B8AD9631A710214593F0E7B445EC3FE763DD5E926 │ │ │ │ -D10D957336DF5F173AECB771E6AEC163D53437740C11C1FE39C23007DB56EFFD │ │ │ │ -BDB5523C3ECC3303D499DB10C8CB3DE63E11476BB3F06032BEF094D3C76D67F8 │ │ │ │ -4C60C64E3084907060ED9953610A986DAC0850AA0E7F3FE5AEEC331079DF0A66 │ │ │ │ -E69452CC1546B28F0EA07A3CE73B921F589F1D432B2FDC5F5BF960AC827E8969 │ │ │ │ -4A8239FEC1D42ED09E6DE496321E9313476A2714DF7AB8737A18D0EB2951AEA7 │ │ │ │ -63579B4F66BF61DEE954E290959A944B214BE367AF6DCD421F5D06D806F71FAF │ │ │ │ -66C3605E10F80F6B014F9A5355DA09B27A1211F54F0FAE8BF84423504F0C8886 │ │ │ │ -5B81BFFB9C89FC6558C3D6833BA76978EC63D8625CA9B950E5F36A23750F8B09 │ │ │ │ -959C57B5FF3891F4F5B49B463513403747A10F015ED52DC943B07FA73FFDA214 │ │ │ │ -6AD54F56669864924C917243C441E3AF8A76DFC1CEDED89F283BA62617C1F412 │ │ │ │ -6EE61517D7CFE540915683E6EF06269EF69B7077A89346ED36CDDADBED9A337A │ │ │ │ -70B4C56CFFB93F97AD16A46EA7E48BD91329899C989B2535AFEA54A0066D1E4A │ │ │ │ -9309B42D51ECE8E298B5FE6CC21B7B64C1D12C4F07342574E8F785DDB39953DC │ │ │ │ -C4595D9C4674CCC6C682CE1FCF12E744E6F1117D1AE5E6935D9F38F496E5862E │ │ │ │ -25B741BB9E2D4C363A6322782096FA9EFC591ED33D19A1FBA9795DBDF5321592 │ │ │ │ -FB18B040589E760C5AF44BA0EAE870FC4D65014E6FBC6BFFA1A5FE9A24255766 │ │ │ │ -95587DD4A95E25DC0C9E2D7666D835C21AA3E75EB44C1CE807BDAE909D4198A2 │ │ │ │ -E5634B2799EA204349377966FD62F749934AE2F89F9E024BF051E8812E2EC3A0 │ │ │ │ -797E472E9724621E23C7C63EF47B8E265154DF0C15BD3F9060BE3C24F17A5843 │ │ │ │ -535B10079A5E6D63C4451E341E6AE7B7CC7470F48BA07D11A2D5723BB8A82721 │ │ │ │ -7EA77567A7BFA10F208B230F9FA7B30CD5523CB5019A084108370AB6DEE9AA7C │ │ │ │ -C3077A774054962CF668411FE7A47B4CBF48CFB32888E81E7CBFAF7C29F202BB │ │ │ │ -5BFAD508770BE98768E1384EAD67450E7E7E1C39FEE1DF3C98D9C9CF34F23148 │ │ │ │ -6AC4096236BA66959EA8DDE30D0E366D85E38C489EF6DD2418855669581477FB │ │ │ │ -FD61E0ED398513D1E5BF6BD534E80C133BDD39DDBC9C706912F0113DFD6A2DCD │ │ │ │ -DC62E95D305B467EBABE74D931F6DD8A9AF800600CF2EA301520BC69CEC9DD96 │ │ │ │ -13123CE7F89669D9391674ACDD38DCB521211F41614F946A717A30380854D5AF │ │ │ │ -F8561404788490F97F173031F3890F51F220C29D9D95B459DA6014FEB4029336 │ │ │ │ -C35E8FB7749B1FD3FF0457A7FADDA752F24638384619F4BABC4E47C7591EE012 │ │ │ │ -C9DA898B185A4C3B8AFBCB8B3C7B20572579891A63DE41C959407C7B5658A1D8 │ │ │ │ -87A936EBA9A5F96E38CF5F8E1554E4B6860938F84831B8DB95BF4358C7AB52E4 │ │ │ │ -716874EAE8B372535D7819D9C9C931EDF1746FFB55B1F03464E5D80FA9C3C49B │ │ │ │ -8608B4DCE802682DB365CC7928A595D8B0EB03B922BF71DBFAD7F638C1156721 │ │ │ │ -2F28A8565ACEA770B0C6067D18356F2F45DBAEB95690AE54084FC83337A5C9D8 │ │ │ │ -5DE6BAA1524D680E83C207FB55ADAC43959C4093F88C2B4AAF9CDFB400AA8336 │ │ │ │ -537F7AFF3D27F8082C042ECF8E5BC6F0D6CE33684A5C6759D6C534CAAB65DD03 │ │ │ │ -804E9FBB995B7F9BEA5702C113469BD71956ABB1D56FEB026AB00EB97CE6AFE4 │ │ │ │ -2EEE3573F7FE98549A7A8EA448E3056FA9C042AA71A1B8956C22F99AB90D3B98 │ │ │ │ -1BD167A83FEC31E671E3C6FEE442A9684C3910E5DF5BAAFD0048F24CE5B32BB3 │ │ │ │ -D9548712118D4820CC31AD6D152FA3E11909B9B7C776884ABC726CCE08B36A48 │ │ │ │ -B2FA90291D11276C8C529B3578214C8836F5E539121AD8B159412946EF683E94 │ │ │ │ -1BA4793F9A7E8E9E23B672B8C4BAABE815E146B23028E9A7F23EB1648E79E8EF │ │ │ │ -E7C236BA149A952F001C4F │ │ │ │ +B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ +98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ +7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ +5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ +8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ +9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ +CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ +AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB9F59A469D6B95 │ │ │ │ +700C765017DA971CDCAAE135651604027ECAD256D688E2687090C0C95AFEFFB3 │ │ │ │ +F711DB73D9D448F9B585AD85A46B1139AA1DF43C36E9E45CDCA1CFC14E2EEB01 │ │ │ │ +AB39FB145FAC5CCB6536B17ACF74C99E1D07BCDF568A30857341501116BDD859 │ │ │ │ +DD2C74D58856B7A4776E34E8A15906D76397CD57DBCF823E7181EA83B4FEDCB1 │ │ │ │ +B0122B97030B487961C06BF9D134D68FCF49C60734039BA64C612CDE27FF04CE │ │ │ │ +C797FFEF788ABBFF4E7517AEAF96E5C5BECAAE2B8F3BD336D153F872578A6AE5 │ │ │ │ +B8815B436EEC6DCF2CD679FBF07A93FAB82985B988711438DB7A2109302DC004 │ │ │ │ +E446A58285920F6C2E75665599651A34355946FDCFE3FD5B36BC70AEC22FECA0 │ │ │ │ +E8FE8DEF62224151769A6B300CA4371D9A07E5D0820DAAD0F3B6A3F41426A315 │ │ │ │ +E3EBF67C35EDAEC12032483761C89182ADF9F74F51677CCEEE43320D24867624 │ │ │ │ +62E020A96C6F3D9CC413CAC6B20C1F2EB3D5FB742FBD99D0A04E53DBD9A2C1B0 │ │ │ │ +5A49D459FA09E10575DFD19801554C53AAD02578ABA329230297A0BA4F560CD4 │ │ │ │ +786DC5912D612912F1D598D535A0236FF50C5026F1F38B5149AAF5CF54B02B55 │ │ │ │ +4301464EA76036931DF975451597BA19DF5EBFF5EF8E05B42A9826DC692A63C8 │ │ │ │ +56C853C375F0C016849B90DBF7184C4D3DDA1C9162562130CD8E2FB390039A45 │ │ │ │ +4EB464A937C7C813568E780CCA2D2AFE5B1830696D4B53F75704FFD2AFE26DCF │ │ │ │ +9D14367E60AAE55A1D317CDAE70AFFCBA0F814FB036113499BF9347F6027D5F8 │ │ │ │ +A584CDECB1F040AAA3C77044204C48AA33BABFF78FED44934DC9290B8F0F5AC5 │ │ │ │ +E297943683B2A3E2A0A40CEC38C8D4E2DFC75C0F145FBE1AF8FB9DFBF4802888 │ │ │ │ +001F4BB3B7BB13C9FD9C0CC46F7B49B18C29C8C4ED4EA3A062B4AFE53329411D │ │ │ │ +EF056CE8B289DEC6CECD247AA80DBAB8DDE0966A9ED02713BF9383CC2E236010 │ │ │ │ +39B52E95987382ADE2ADFB4E75B3C9FEA516B5D0BB2E5BD5A396A32D45005145 │ │ │ │ +350EA46C4E6E14BFBF390603A733CDDE8536AEFE857755335C643B4C359B4CD1 │ │ │ │ +CEA2821871A7E3184214B4ED1F6AE9F6B0810CD92E6ACC25D97C59935679DF7C │ │ │ │ +1830773AA1985BF6D7D105B1D88F501D0290A5E66BA0671083EBC0601DFD4A4E │ │ │ │ +CD441F6C52E10838E269F5A5083378153907DF53BFEAB0DDDCFE77F1FF824252 │ │ │ │ +9CD18B7C9349F251D73B1F7784C534BF8E4B4DF147D9CBCD1E2E895DD2B60761 │ │ │ │ +D01546FF2EFFD9AE3E0A8BE93F0ECFE19206A1029A07696A0CCD883ED1D08888 │ │ │ │ +FEEBDB55D49B4A38E60A399DE72ACA487D1FCE8AA98F5D97F75C45E87945DCA2 │ │ │ │ +3BC5E1B8D934F27F2D17DBBCEDB57DCA319E290457DB7DE52767A31E77AE1282 │ │ │ │ +A949DCE6F28F677BE19BA95D104561EB8ADD8C10F03B56482AD45D96B8F099B8 │ │ │ │ +4F00BA570D14038F85AA8398E113C47509A3DE2633FD5EFB84235E39032C1E48 │ │ │ │ +F994BF408E5732FF9598B8F85373200ACBBE050F7D77031722A4DA2ED2D0B736 │ │ │ │ +74AE1AE83D7C51C17B10C01848565B328D93FEACBB335B0B154970C746E57724 │ │ │ │ +2373C00AED98F6D1706473DAB1ECFA96B16AF9E044066353D3F78BDF514D86E6 │ │ │ │ +26F32E18BA04B65E83675D6FDFDBC6C643B93C8C56DC2BF7135B6CE95FE0C4F0 │ │ │ │ +30A922C61BAEB7613C4E9BE754BCFB3650387B18FA050D17B12130320CCDB229 │ │ │ │ +A8E20068252AF915B66F44E6D34E33703F8A43809F3467754D27CBBEFA0C6F6D │ │ │ │ +841728F2D66A2695C608D580AF9C2578567DEE0D233F58014027D23453B2866E │ │ │ │ +7F1888B7361F7864291A3B3F75F78DE5B3EC9255BA5672FEE2E4FE8D8A082E0E │ │ │ │ +E887647341A4B96BA12654CD1DD456F39DBAD3F7727F5AD8BBF9D84BCD9EF728 │ │ │ │ +54E266B54ACC398DD54C9CEC91995E34F97013FC15FDF323A7899AA5EB4A8864 │ │ │ │ +967045ECAC67FAEF88B0E45568438410EB2BDF2D547BE000F61547DD5A2D866B │ │ │ │ +222AABFE644F21BF3BEC0D0BDEB466189F6C0AEF96D9D9E92DB689AAC77ACB4D │ │ │ │ +1941865FD47CCA4F7222989930639FBF13832C9F147FE3AACD356D76BF34E18D │ │ │ │ +FD7B72782849961DB100855BD74C14014C4CF5149E874A7FF19875C1C6FC33A6 │ │ │ │ +3967087FB8FB0B8608D1F5D1670257026676E95A14F16E409A0832DAB624A248 │ │ │ │ +F2B3FB6CE79D6798C77CF43122A2E46559187C17003822C71F1C222569DD034D │ │ │ │ +97E56749AE3C4556D06D84C6494FB314A16826F424CFC1B6BDE763BD26410CE7 │ │ │ │ +8B0189E5A44459632C8885520A2F547D7C990891660B3457D6297766F5C2342B │ │ │ │ +D98CD371959D48E5984BD4B28D2430ED1251038C86F4DE03EAE34A8F7A22E3A9 │ │ │ │ +65C0AC486B78B3CA3535AFF1097FDE8E2362AA751F47A07D37CD0D7C22028F18 │ │ │ │ +33CDA46FE1373E5FBEE00DC3A94E43EEF31ACA94C5585E96540A0890C2E920C5 │ │ │ │ +0FE97A86D40A25762CD413ED369704E91A5BBAD7F5A2842FFBCC9063184FCEB4 │ │ │ │ +6558096EEFFCBFB9713DEA3CB16471DA59DCECE61DE6C1F9B24E1DEFA08A7A85 │ │ │ │ +017D5DD56A8956EF330074FD7E358E2F1B2082B857E34EB3F8D10D9B8AD5672C │ │ │ │ +6B10B27244A551B929EAB6E5EDDE0CA7DBEDB0F58430FE3468186ECD90E24DF8 │ │ │ │ +741DF9F991EF471DBD3CB8516FCF821878139B93D820114C3F20B2EE61589FB2 │ │ │ │ +018B6A51EC2FC37EB70EEEB161E1D1DF75EEE39FFCFFE277F7C03227E254EB15 │ │ │ │ +382B59C16B33B363E405086BA14E5E37CF01E4FC241C02EFFB41182866855A7E │ │ │ │ +D0B5144B4B872F27C37AA47BD719229D5144602F5E27D65AFD3B9E7A17A64D83 │ │ │ │ +E0BF59DEB4FC1162A1753FFDDDC3B4D4EE53EE552116EE07F737442414B5F4D7 │ │ │ │ +FE7FA966CFCF412B991671527F11B980984F8BDC8688B7E50570E8A876876110 │ │ │ │ +6A939BD43C22FC3A5E4BEE749430B82CDDA03ACB569BCB405CCAC60B0AC0F0A7 │ │ │ │ +6F3DA65C3865D05A88DC381794279AFA9FB6BEB26A9F1860768FED2283A2B6EA │ │ │ │ +23EAC2868E0100C5971935D53E5951993BFCD57B88CBC11404596B57B294B41B │ │ │ │ +35C55CC7116F1FD7D1BD15BCF40776259E94BB00F0759A0ADD9A16715CB699C4 │ │ │ │ +6D13DFF795D87B0BA74FF8C1E166AA18719331012677709172F3457238DCA842 │ │ │ │ +65B18CE513A1653EA9D0EA0983E1DB92A0FAD59237728E57ECDC0AE416A4CCE9 │ │ │ │ +A6BB9F248A88A3AA27F7E9FB990C83FAC34D24ACFFC702CB1FA384D2D7749C43 │ │ │ │ +47792550A69A3069493CFA5DBB04FEA818AD299278D81257A2A7CDAD63A0DB6D │ │ │ │ +F2D07C5FD3B281E2E42E579307859B60BE07B14C2D8882CBDCFBE6C45ED12225 │ │ │ │ +817B79F25C911A455DF8E0E6F5DCBD44DF6137F6058576887D4F1327899CE805 │ │ │ │ +9C95A156A352945CDED59E5CD3E91D5CA7B2802B25C229AECA1CC345E8CA52D5 │ │ │ │ +D6A6610C1CE013682F6E41F31DA68F9508D84444628C7E73746B4845C1AD7871 │ │ │ │ +48644268809195512ECBD38E547931215B5F5EEEDD61352C701A0FBFF04C1D5B │ │ │ │ +C107862F2CB2F70A7CD9FCAF4246187AB006C242FFDD82F93216A54777DA7917 │ │ │ │ +8B91912B19E6C4675A72891E7B6A8E9EC6F59C73DC2A8C424D9BC0F8E3A19FCA │ │ │ │ +93822297ED867D20BA65E5E92B6980268642CA03D36610285AC0E5C8C2F9DFAC │ │ │ │ +C82457FE2108EC5CEFBCC8FEA1E6CAC3C270E41964C2671A405DF76A52F4DDC2 │ │ │ │ +7C2DA43A81766250F3C4ADB907D7AA37C42D5B002819D2B5B55EC4653A22F652 │ │ │ │ +3A17A56BD990032BDF125D8C9AF90EFE9AC861DDB84A0D25DB990981B778CF18 │ │ │ │ +AC3646D1A5ED5A746C1C758B355D42E84276F74A492BEFC54E2BAF1DEB3A6189 │ │ │ │ +9FD2DCD6DBDB7E1A07A8A499494B465E91B05F47D9ED62DBD2AC6A696C4BF8B6 │ │ │ │ +E7B7602802F5C249653705C9F5FE8995E866FDB19DC7617E3B64409391161525 │ │ │ │ +CCFB0CD1D5A9FC684278E426A574992565C20CB71FF098361451B12D30E9383C │ │ │ │ +9E99778BCE7419D7C67819B02D1961752B880027C6E997477EDD04E85F885E72 │ │ │ │ +15DAE5341255D4976878522014C17A205B32A20DDDE74B84BB76728B1291C07E │ │ │ │ +5C4696A46FBBF7B6978A08198FDC0073F032192DE9AFF19CF89CA0FD60C2A93B │ │ │ │ +3AB248DB9D414E5A3511A2A8788E51AD64EF41748A97AAA35F2EDDA2FB7D73E1 │ │ │ │ +B8C73C54DA2D7ACE9968C51E08D0678193BD5F5328D140D657D43448912D4701 │ │ │ │ +716B75E6F58F2F6869F8022AC14C908A03A6FCB1C4EA37A5675D727BF93611AD │ │ │ │ +48408515F9B43231F114FC1D6BEA9EFF0BCB57BA297D5FED68BC5F1FFDA728E3 │ │ │ │ +F430E0E858DCACCB8A727C6F90CAA820305A1E19DB064C402B680C16AC4036F1 │ │ │ │ +4465405857725E3F8ED2AAF62D2621A6A001DE89F97D6CA2631A8176FF6E2282 │ │ │ │ +17B5B7536BBF9EC24B9550BD16C3ED0A3343BEE7F841AC1F60D78689B6DA2CFD │ │ │ │ +26DCFBBB7621D3A1881D722C9D8A318596EBEE2B50D460E8188EA0F29AEB92AE │ │ │ │ +5222E5C7CEDBB0B815EA9BD856E672D27CFD3F9E2E997E3A1F982E98C9A53295 │ │ │ │ +276AB2AEAB25D20AD19FD02DE1DFC254F6506AD30C438425AF65127AF0FB82E6 │ │ │ │ +7012309A24195350BDDC6DD3CA705141C55D14A984590BA9B942A00BF2901E7F │ │ │ │ +55E1B5E0B69A5334161D60E302A85D71EFA615B86ECAA1FC0AF94614DC66BA7D │ │ │ │ +E669FE8C331D433C5B5EC3F61B5F8E3B2881AC6D06787DBF0F8604A5849D06B6 │ │ │ │ +0F659EE89C5B24256110C2C8C7CD887AFC26FF01CF625CEB6AE1ADF2599DAF53 │ │ │ │ +8065AB0F9EEE18776CD338479C90C91900D26310F87AE1D0B5855B0072E06306 │ │ │ │ +DF9DA2E443B52C60DC2455D60CCA74D51B1C9D224AC0432B5AB669612697DC3C │ │ │ │ +AEB3360F6E924A67B9E1907424B3D36049474E683215E126CFE423615E940AFA │ │ │ │ +90E64595737ACADAEB7C13AACEDA8DF357954380C571464C96E89150CB1475B9 │ │ │ │ +65E3C1DB4A52E602E4FD1F12D2D5B8F4C13B1504B9F7F030B41D1B9CF7BA564A │ │ │ │ +E54BBDDA6C0000C3FCD77B6369C7A00BCCB0243D3561C728001577124F828900 │ │ │ │ +3AE71E83C6AFCA32678FC15F386F6EC6D7DAFD650B1DB7AC48CDA907271F6EE7 │ │ │ │ +12CDE7CB71455A1F84DEBF258E1BD036DFA658251100960464147E5643337946 │ │ │ │ +D4A6E34CD8BA649273734B4E45DDB19C83AF062CE1450C929C877482AC6ADB58 │ │ │ │ +57DD72AEC255D01E5F51379C26C07801BBF780E6ADB46EF3CE5357FCB3AB408F │ │ │ │ +B8130393643BC0DED16C5B09F49BE658A23A98F670FF629B4C7DEB8AC9013B53 │ │ │ │ +7655B77280BEDA1185B85808FAB6286A5ED4E853D7EC0AA7F8FD60C5D91BB4DF │ │ │ │ +85C15EECCB1F1022DA4B5BCFC4A312089780410BC2649BF2EFF4B840F1965C53 │ │ │ │ +939D76BE050747FF705EEB035C669563AF8C3C6D06C14FF3D8B960B27268A61B │ │ │ │ +1F4B510ECAEB483A0C7F55BD7628C05F71BDBB654FB81DFA25B5FDEE05E9A1FD │ │ │ │ +D0FDD39B76C00043B468ABF38E762C8230961AE594723D02D7F03205199D83FD │ │ │ │ +647F57D2A849CAAB7D460656C80C3231643A889C5B979802AA34A4FBC9EB4E04 │ │ │ │ +737362364140FA579BC3F49F8FFCEEC8E4191729CEAE45FAE421BCA9D895E4BE │ │ │ │ +8E0A3BA9F7A0164F207690B26084FB1E8FFE500EAA092BB709FCF1D2F48F2DF3 │ │ │ │ +9AF2FB76E5454A0E1E56D4F39CC0C231F60070BC54EB7C1DFF51AD955FBAB0AC │ │ │ │ +C2315768042078EA76E340F5B2603AC0534DC7B264837030AFFBA58D9BA9387D │ │ │ │ +EE5A4077E8F32714603C895A17C9EF28F7DA9AA232E8A510CA1182452DA39409 │ │ │ │ +779A54708EC8C474A1846BF770F1E1AF8A376BECA5C4AB892E9C5479C332F1BE │ │ │ │ +A180379F640CEA5B187A43A8410FDD86A510F3C8D340DBCC5D92DAC9735B4909 │ │ │ │ +76F8F7D814AC1319F76FB169376CA339B487ED041AF458E029E3A1C2291F8577 │ │ │ │ +577FFCA54F8E863080F9D6F54C1A9D769C699B9CDE5C15122CE99E7BF9ED2E2A │ │ │ │ +9449CD6339CC9951B8606C728080545F31A773411163592BDB947523B6E42126 │ │ │ │ +675DB5C28B84D624DF992A83547D5D90B714B48CE8FB1A3B7BA2438C2B7492D7 │ │ │ │ +2B36945EB9754C7EB12BC7BDEBD6F8262C81E85072750B57EA82DD70371486F1 │ │ │ │ +47C688757FCD4B03CD83CD233B06637AFECDDAA7F1FE10CDF6C02DC6A560B6CA │ │ │ │ +1593645338F24705FB081D9BC00C3D25A38A5C0589FB891801121B5D803DC631 │ │ │ │ +3152D4957E3D2DA537AF4F784C191954F63ED0BAE757404E15EF599219BF7605 │ │ │ │ +C4E377AF6F429EE849E233843CC898402ED3560A101D88735ED8172CC97673E2 │ │ │ │ +308FAA84C71A889F6ADEF1248E5EBB8FA7F59E6656572E682B336962FA42521E │ │ │ │ +1752B54D1D5D1C4DB302C4AB7BCAA1B1CB8B75E5F38BA375285A1ABBFF72392B │ │ │ │ +338C092D70346CB6E1D793CABE69DF08E60FC4A463826C3832FC992B5150046C │ │ │ │ +8341231DE89826E9020980B977E3D2F14404BC9A76F94D34209FEEA91D0A0BD3 │ │ │ │ +15373D0E27853A01DD3F4FE6B0405749D2C3F01CF8ACE8C5EA5EB1C66120C4BD │ │ │ │ +1F3BCFB7E6E1E1DA91C41008F595CEE8B4D056AAD51A3055C3406D00F07A0CD7 │ │ │ │ +398EBDE9C0C0E43528B8A771540B651BD772106175309FACB04BB414DD028D2C │ │ │ │ +8297A31A3362C7D8E1E31F8CCB489A9FD06305F18B5FD1ADBD781EE6D65C6210 │ │ │ │ +2AA9A267225C8E17CF1B43326E3112839458655BE2736E58B1F0DF8B0E84A2B5 │ │ │ │ +750AD821E3B31232C924949D6845AD30BF63E3748FB69674877D41B26F96761D │ │ │ │ +BE354A2034A7CDD87172EB05E296229143349579F78056016F0EF7ABEB880B96 │ │ │ │ +C79E4C4FC5A9DD5A6A526839B597386E13FA40ACC91AA1B2308F4BB307C20564 │ │ │ │ +CC23F1AE222700C98D409FEC6139D4CEC2CBE24FCD7CA019F10EF68377FABA1C │ │ │ │ +BA48A96B45721EA026864871A12FE62AC20EF808F6A2B21B64716E27671DEB2C │ │ │ │ +047E2E4F57716D70E0C65906ED926E2A143B9B035370DCD8FAF028D672C17827 │ │ │ │ +0BC7C11FEF5905753C492385420154324852FCBBCC2F0C77470B8C30A140A50F │ │ │ │ +5556F5637F1932CE7C4E13D3BE7057E68BF9FA5D5F2BF940D1B9E89D045348A5 │ │ │ │ +176047C7217C832EA3B629C599A78A5A99E14CD9E274F5810D8148B9AEEB044A │ │ │ │ +D52C5AEF2FC46914D292C79C7E4C2895DF164D5915483F96B331439C7CF717F7 │ │ │ │ +02EE5BAAD19EEA1403ECFC058838E8DBF197B2830B43DF1C24A0A7823E43851E │ │ │ │ +E16CA5332846 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6878,16 +6863,16 @@ │ │ │ │ 12[106 106 2[106 2[106 3[106 26[106 46[{}14 206.559 /CMTT12 │ │ │ │ rf /Fb 137[38 45 28 1[35 2[42 47 1[21 4[38 1[38 1[38 │ │ │ │ 38 42 14[61 23[25 58[{}14 83.022 /CMTI10 rf /Fc 139[62 │ │ │ │ 62 62 5[62 2[62 1[62 1[62 62 2[62 12[62 62 2[62 2[62 │ │ │ │ 3[62 6[62 66[{}15 119.552 /CMTT12 rf /Fd 134[71 2[71 │ │ │ │ 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 1[65 │ │ │ │ 12[94 75 2[92 11[103 15[67 67 67 67 2[37 46[{}27 119.552 │ │ │ │ -/CMBX12 rf /Fe 141[33 4[69 7[37 1[37 46 29[63 9[23 1[42 │ │ │ │ -5[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Ff 171[39 │ │ │ │ +/CMBX12 rf /Fe 139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 │ │ │ │ +7[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Ff 171[39 │ │ │ │ 84[{}1 58.1154 /CMMI7 rf /Fg 157[46 98[{}1 83.022 /CMEX10 │ │ │ │ rf /Fh 222[83 17[42 11[42 2[65{}4 83.022 /CMSY10 rf /Fi │ │ │ │ 143[42 1[50 19[57 48 69 2[57 4[53 3[57 2[36 4[69 1[63 │ │ │ │ 62 2[65 42 1[23 23 30[47 27[{}17 83.022 /CMMI10 rf /Fj │ │ │ │ 135[102 3[75 1[79 1[108 1[108 4[54 108 2[88 108 2[94 │ │ │ │ 29[140 138 146 12[97 97 97 97 49[{}17 172.188 /CMBX12 │ │ │ │ rf /Fk 130[44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ @@ -6911,17 +6896,17 @@ │ │ │ │ 39 39 2[39 39 39 39 39 39 39 39 39 32[39 17[39 46[{}21 │ │ │ │ 74.7198 /CMTT9 rf /Fp 133[34 41 41 55 41 43 30 30 30 │ │ │ │ 1[43 38 43 64 21 2[21 43 38 23 34 43 34 43 38 9[79 2[55 │ │ │ │ 43 57 1[52 60 1[70 48 2[28 58 3[59 55 54 58 7[38 38 38 │ │ │ │ 38 38 38 38 38 38 38 1[21 26 21 44[{}50 74.7198 /CMR9 │ │ │ │ rf /Fq 205[30 30 49[{}2 49.8132 /CMR6 rf /Fr 205[35 35 │ │ │ │ 49[{}2 66.4176 /CMR8 rf /Fs 137[51 1[38 38 38 2[49 54 │ │ │ │ -81 27 51 1[27 54 49 30 43 1[43 54 49 9[100 6[66 5[50 │ │ │ │ -5[75 70 69 73 8[49 5[49 49 49 3[27 44[{}29 99.6264 /CMR12 │ │ │ │ -rf /Ft 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ +81 27 51 1[27 54 49 30 43 1[43 54 49 9[100 6[66 76 4[50 │ │ │ │ +6[70 69 73 14[49 49 49 3[27 44[{}28 99.6264 /CMR12 rf │ │ │ │ +/Ft 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ 65[{}9 143.462 /CMBX12 rf /Fu 133[58 70 2[70 1[51 52 │ │ │ │ 51 1[73 66 73 1[36 70 1[36 73 66 40 58 73 58 73 66 13[73 │ │ │ │ 6[83 2[47 3[90 2[94 99 14[66 3[36 43 45[{}29 143.462 │ │ │ │ /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ @@ -6937,16 +6922,16 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 109 1940 a Fu(In)l(tegrating)43 │ │ │ │ b(the)g Ft(SPOOLES)h Fu(2.2)e(Sparse)i(Linear)f(Algebra)g(Library)326 │ │ │ │ 2123 y(in)l(to)g(the)h Ft(LANCZOS)e Fu(Blo)t(c)l(k-shifted)h(Lanczos)g │ │ │ │ (Eigensolv)l(er)950 2513 y Fs(Clev)m(e)35 b(Ashcraft)737 │ │ │ │ 2629 y(Bo)s(eing)d(Phan)m(tom)i(W)-8 b(orks)1753 2593 │ │ │ │ y Fr(1)2334 2513 y Fs(Jim)33 b(P)m(atterson)2107 2629 │ │ │ │ -y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fr(2)1547 │ │ │ │ -2891 y Fs(Decem)m(b)s(er)34 b(20,)e(2018)104 4919 y Fq(1)138 │ │ │ │ +y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fr(2)1586 │ │ │ │ +2891 y Fs(Octob)s(er)32 b(11,)g(2021)104 4919 y Fq(1)138 │ │ │ │ 4951 y Fp(P)-6 b(.)36 b(O.)g(Bo)n(x)g(24346,)41 b(Mail)c(Stop)e(7L-22,) │ │ │ │ 40 b(Seattle,)f(W)-6 b(ashington)36 b(98124,)k Fo │ │ │ │ (cleve.ashcraft@boeing.com)p Fp(.)71 b(This)36 b(researc)n(h)0 │ │ │ │ 5042 y(w)n(as)f(supp)r(orted)e(in)h(part)g(b)n(y)f(the)h(D)n(ARP)-6 │ │ │ │ b(A)32 b(Con)n(tract)i(D)n(ABT63-95-C-0122)i(and)e(the)g(DoD)f(High)h │ │ │ │ (P)n(erformance)i(Computing)0 5133 y(Mo)r(dernization)27 │ │ │ │ b(Program)g(Common)g(HPC)f(Soft)n(w)n(are)g(Supp)r(ort)f(Initiativ)n │ │ │ │ @@ -7077,18 +7062,18 @@ │ │ │ │ b(data)g(structures)g(m)n(ust)h(b)r(e)g(initialized.)38 │ │ │ │ b(In)28 b(a)g(parallel)e(en)n(vironmen)n(t,)h(there)h(is)g(ev)n(en)f │ │ │ │ (more)g(setup)h(w)n(ork)f(to)g(do,)0 5396 y(analyzing)20 │ │ │ │ b(the)h(factorization)f(and)h(solv)n(es)f(and)h(sp)r(ecifying)g(whic)n │ │ │ │ (h)g(threads)g(or)f(pro)r(cessors)f(p)r(erform)h(what)i(computations) │ │ │ │ 1929 5656 y(2)p eop end │ │ │ │ %%Page: 3 4 │ │ │ │ -TeXDict begin 3 3 bop 83 100 748 4 v 913 100 a Fm(SPOOLES)32 │ │ │ │ +TeXDict begin 3 3 bop 83 100 781 4 v 946 100 a Fm(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fl(3)0 │ │ │ │ -390 y(and)h(store)f(what)h(data.)37 b(In)28 b(a)g(distributed)g(en)n │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fl(3)0 │ │ │ │ +390 y(and)i(store)f(what)h(data.)37 b(In)28 b(a)g(distributed)g(en)n │ │ │ │ (vironmen)n(t,)g(the)g(en)n(tries)f(of)h Fi(A)g Fl(and)g │ │ │ │ Fi(B)k Fl(m)n(ust)c(also)f(b)r(e)i(distributed)f(among)0 │ │ │ │ 490 y(the)g(pro)r(cessors)d(in)j(preparation)e(for)h(the)h(factors)e │ │ │ │ (and)i(m)n(ultiplies.)125 614 y(F)-7 b(or)37 b(eac)n(h)h(of)h(the)f │ │ │ │ (three)h(en)n(vironmen)n(ts)e(|)i(serial,)h(m)n(ultithreaded)e(and)h │ │ │ │ (MPI)f(|)g(the)h Fm(SPOOLES)g Fl(solv)n(er)e(has)0 714 │ │ │ │ y(constructed)c(a)h(\\bridge")e(ob)5 b(ject)33 b(to)h(span)f(the)i(in)n │ │ │ │ @@ -7152,17 +7137,17 @@ │ │ │ │ (utation)i(v)n(ector.)125 5243 y Fh(\017)41 b Fk(DenseMtx)f(*X)27 │ │ │ │ b Fl(:)g(dense)h(matrix)f(ob)5 b(ject)27 b(that)h(is)g(used)f(during)g │ │ │ │ (the)h(matrix)f(m)n(ultiples)h(and)g(solv)n(es.)125 5407 │ │ │ │ y Fh(\017)41 b Fk(DenseMtx)f(*Y)27 b Fl(:)g(dense)h(matrix)f(ob)5 │ │ │ │ b(ject)27 b(that)h(is)g(used)f(during)g(the)h(matrix)f(m)n(ultiples)h │ │ │ │ (and)g(solv)n(es.)1929 5656 y(4)p eop end │ │ │ │ %%Page: 5 6 │ │ │ │ -TeXDict begin 5 5 bop 83 100 748 4 v 913 100 a Fm(SPOOLES)32 │ │ │ │ +TeXDict begin 5 5 bop 83 100 781 4 v 946 100 a Fm(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fl(5)125 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fl(5)125 │ │ │ │ 390 y Fh(\017)41 b Fk(int)h(msglvl)30 b Fl(:)48 b(message)31 │ │ │ │ b(lev)n(el)h(for)h(output.)53 b(When)33 b(0,)h(no)e(output,)j(When)e │ │ │ │ (1,)h(just)g(statistics)e(and)h(cpu)g(times.)208 490 │ │ │ │ y(When)28 b(greater)e(than)h(1,)g(more)g(and)h(more)e(output.)125 │ │ │ │ 654 y Fh(\017)41 b Fk(FILE)g(*msgFile)25 b Fl(:)37 b(message)26 │ │ │ │ b(\014le)i(for)f(output.)37 b(When)28 b Fk(msglvl)e Fi(>)h │ │ │ │ Fl(0,)g Fk(msgFile)e Fl(m)n(ust)j(not)f(b)r(e)h Fk(NULL)p │ │ │ │ @@ -7236,17 +7221,17 @@ │ │ │ │ (in)n(to)f(the)i(upp)r(er)e(triangle,)i(and)e(the)i(storage)c(mo)r(des) │ │ │ │ j(of)g Fk(A)f Fl(and)h Fk(B)f Fl(are)390 5276 y(c)n(hanged)27 │ │ │ │ b(to)g(c)n(hevrons)f(and)i(v)n(ectors,)e(in)i(preparation)d(for)j(the)g │ │ │ │ (\014rst)f(factorization.)307 5407 y Fh(\017)41 b Fl(The)28 │ │ │ │ b(sym)n(b)r(olic)f(factorization)f(is)i(then)g(computed)g(and)f(loaded) │ │ │ │ g(in)h(the)g Fk(Bridge)d Fl(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 6 7 │ │ │ │ -TeXDict begin 6 6 bop 83 100 748 4 v 913 100 a Fm(SPOOLES)32 │ │ │ │ +TeXDict begin 6 6 bop 83 100 781 4 v 946 100 a Fm(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fl(6)307 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fl(6)307 │ │ │ │ 390 y Fh(\017)41 b Fl(A)28 b Fk(FrontMtx)d Fl(ob)5 b(ject)27 │ │ │ │ b(is)g(created)g(to)h(hold)f(the)h(factorization)e(and)i(loaded)f(in)n │ │ │ │ (to)g(the)h Fk(Bridge)d Fl(ob)5 b(ject.)307 523 y Fh(\017)41 │ │ │ │ b Fl(A)30 b Fk(SubMtxManager)24 b Fl(ob)5 b(ject)29 b(is)g(created)f │ │ │ │ (to)h(hold)g(the)h(factor's)e(submatrices)g(and)h(loaded)g(in)n(to)g │ │ │ │ (the)g Fk(Bridge)390 622 y Fl(ob)5 b(ject.)307 755 y │ │ │ │ Fh(\017)41 b Fl(Tw)n(o)27 b Fk(DenseMtx)d Fl(ob)5 b(jects)27 │ │ │ │ @@ -7329,17 +7314,17 @@ │ │ │ │ Fi(B)i Fl(is)d(required.)456 5159 y Fm({)41 b Fk(2)28 │ │ │ │ b Fl(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fi(A)g │ │ │ │ Fl(is)f(required.)456 5275 y Fm({)41 b Fk(3)28 b Fl(|)f(simple,)h(no)g │ │ │ │ (m)n(ultiply)g(is)f(required.)307 5407 y Fh(\017)41 b │ │ │ │ Fk(void)h(*data)26 b Fl(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h │ │ │ │ Fk(Bridge)d Fl(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 7 8 │ │ │ │ -TeXDict begin 7 7 bop 83 100 748 4 v 913 100 a Fm(SPOOLES)32 │ │ │ │ +TeXDict begin 7 7 bop 83 100 781 4 v 946 100 a Fm(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fl(7)101 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fl(7)101 │ │ │ │ 390 y(4.)42 b Fk(void)f(Solve)h(\()h(int)g(*pnrows,)d(int)i(*pncols,)e │ │ │ │ (double)i(X[],)f(double)h(Y[],)774 490 y(void)g(*data,)f(int)i(*perror) │ │ │ │ d(\))j(;)208 623 y Fl(This)22 b(metho)r(d)i(solv)n(es)d(\()p │ │ │ │ Fi(A)9 b Fh(\000)g Fi(\033)s(B)t Fl(\))p Fi(X)30 b Fl(=)23 │ │ │ │ b Fi(Y)c Fl(,)24 b(where)e(\()p Fi(A)9 b Fh(\000)g Fi(\033)s(B)t │ │ │ │ Fl(\))24 b(has)e(b)r(een)h(factored)f(b)n(y)h(a)f(previous)g(call)h(to) │ │ │ │ f Fk(Factor\(\))p Fl(.)208 722 y(All)28 b(calling)f(sequence)g │ │ │ │ @@ -7401,17 +7386,17 @@ │ │ │ │ (\014le)i(for)f Fi(A)h Fl(is)f(read.)36 b(This)28 b(yields)f(the)h(n)n │ │ │ │ (um)n(b)r(er)g(of)f(equations.)101 5177 y(3.)42 b(The)27 │ │ │ │ b(parameters)f(that)i(de\014ne)g(the)g(eigensystem)f(to)g(b)r(e)h(solv) │ │ │ │ n(ed)f(are)f(read)h(in)h(from)f(the)h Fk(parmFile)c Fl(\014le.)101 │ │ │ │ 5343 y(4.)42 b(The)27 b(Lanczos)f(eigensolv)n(er)g(w)n(orkspace)f(is)j │ │ │ │ (initialized.)p eop end │ │ │ │ %%Page: 8 9 │ │ │ │ -TeXDict begin 8 8 bop 83 100 748 4 v 913 100 a Fm(SPOOLES)32 │ │ │ │ +TeXDict begin 8 8 bop 83 100 781 4 v 946 100 a Fm(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fl(8)101 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fl(8)101 │ │ │ │ 390 y(5.)42 b(The)27 b(Lanczos)f(comm)n(unication)h(structure)g(is)h │ │ │ │ (\014lled)g(with)g(some)f(parameters.)101 556 y(6.)42 │ │ │ │ b(The)30 b Fi(A)h Fl(and)g(p)r(ossibly)f Fi(B)k Fl(matrices)c(are)g │ │ │ │ (read)g(in)g(from)h(the)g(Harw)n(ell-Bo)r(eing)d(\014les)j(and)f(con)n │ │ │ │ (v)n(erted)f(in)n(to)h Fk(InpMtx)208 656 y Fl(ob)5 b(jects)27 │ │ │ │ b(from)g(the)h Fm(SPOOLES)g Fl(library)-7 b(.)101 822 │ │ │ │ y(7.)42 b(The)27 b(linear)g(solv)n(er)f(en)n(vironmen)n(t)h(is)g(then)h │ │ │ │ @@ -7472,17 +7457,17 @@ │ │ │ │ y Fh(\017)41 b Fk(FrontMtx)f(*frontmtx)24 b Fl(:)37 b(ob)5 │ │ │ │ b(ject)27 b(that)h(stores)e(the)i Fi(L)p Fl(,)g Fi(D)h │ │ │ │ Fl(and)f Fi(U)36 b Fl(factor)27 b(matrices.)125 5354 │ │ │ │ y Fh(\017)41 b Fk(IV)h(*oldToNewIV)23 b Fl(:)28 b(ob)5 │ │ │ │ b(ject)28 b(that)f(stores)g(old-to-new)f(p)r(erm)n(utation)i(v)n │ │ │ │ (ector.)1929 5656 y(9)p eop end │ │ │ │ %%Page: 10 11 │ │ │ │ -TeXDict begin 10 10 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(10)125 │ │ │ │ +TeXDict begin 10 10 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(10)125 │ │ │ │ 390 y Fh(\017)41 b Fk(IV)h(*newToOldIV)23 b Fl(:)28 b(ob)5 │ │ │ │ b(ject)28 b(that)f(stores)g(new-to-old)f(p)r(erm)n(utation)i(v)n │ │ │ │ (ector.)125 556 y Fh(\017)41 b Fk(DenseMtx)f(*X)27 b │ │ │ │ Fl(:)g(dense)h(matrix)f(ob)5 b(ject)27 b(that)h(is)g(used)f(during)g │ │ │ │ (the)h(matrix)f(m)n(ultiples)h(and)g(solv)n(es.)125 721 │ │ │ │ y Fh(\017)41 b Fk(DenseMtx)f(*Y)27 b Fl(:)g(dense)h(matrix)f(ob)5 │ │ │ │ b(ject)27 b(that)h(is)g(used)f(during)g(the)h(matrix)f(m)n(ultiples)h │ │ │ │ @@ -7547,17 +7532,17 @@ │ │ │ │ (sequence)h(of)f(action.)307 5175 y Fh(\017)41 b Fl(The)f(metho)r(d)h │ │ │ │ (b)r(egins)f(b)n(y)g(c)n(hec)n(king)f(all)h(the)g(input)h(data,)i(and)d │ │ │ │ (setting)g(the)h(appropriate)d(\014elds)j(of)f(the)390 │ │ │ │ 5275 y Fk(BridgeMT)25 b Fl(ob)5 b(ject.)307 5407 y Fh(\017)41 │ │ │ │ b Fl(The)28 b Fk(pencil)d Fl(ob)5 b(ject)27 b(is)h(initialized)g(with)g │ │ │ │ Fk(A)f Fl(and)h Fk(B)p Fl(.)p eop end │ │ │ │ %%Page: 11 12 │ │ │ │ -TeXDict begin 11 11 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(11)307 │ │ │ │ +TeXDict begin 11 11 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(11)307 │ │ │ │ 390 y Fh(\017)41 b Fk(A)27 b Fl(and)h Fk(B)f Fl(are)g(con)n(v)n(erted)f │ │ │ │ (to)h(storage)f(b)n(y)h(ro)n(ws)f(and)i(v)n(ector)e(mo)r(de.)307 │ │ │ │ 516 y Fh(\017)41 b Fl(A)28 b Fk(Graph)e Fl(ob)5 b(ject)27 │ │ │ │ b(is)h(created)e(that)i(con)n(tains)f(the)h(sparsit)n(y)e(pattern)i(of) │ │ │ │ f(the)h(union)g(of)f Fk(A)g Fl(and)h Fk(B)p Fl(.)307 │ │ │ │ 642 y Fh(\017)41 b Fl(The)c(graph)e(is)i(ordered)e(b)n(y)h(\014rst)g │ │ │ │ (\014nding)h(a)f(recursiv)n(e)f(dissection)h(partition,)i(and)f(then)g │ │ │ │ @@ -7646,17 +7631,17 @@ │ │ │ │ 1174 5220 y(1)99 b(error)26 b(in)i(the)g(factorization)1174 │ │ │ │ 5319 y(0)99 b(normal)27 b(return)1147 5419 y(-1)98 b │ │ │ │ Fk(psigma)26 b Fl(is)h Fk(NULL)2341 5220 y Fl(-2)98 b │ │ │ │ Fk(ppvttol)25 b Fl(is)j Fk(NULL)2341 5319 y Fl(-3)98 │ │ │ │ b Fk(data)26 b Fl(is)i Fk(NULL)2341 5419 y Fl(-4)98 b │ │ │ │ Fk(pinertia)25 b Fl(is)i Fk(NULL)p eop end │ │ │ │ %%Page: 12 13 │ │ │ │ -TeXDict begin 12 12 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(12)101 │ │ │ │ +TeXDict begin 12 12 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(12)101 │ │ │ │ 390 y(3.)42 b Fk(void)f(MatMulMT)g(\()i(int)f(*pnrows,)f(int)h │ │ │ │ (*pncols,)e(double)h(X[],)h(double)f(Y[],)905 490 y(int)h(*pprbtype,)e │ │ │ │ (void)i(*data)f(\))i(;)208 623 y Fl(This)31 b(metho)r(d)i(computes)e(a) │ │ │ │ h(m)n(ultiply)g(of)g(the)g(form)f Fi(Y)49 b Fl(=)30 b │ │ │ │ Fi(I)7 b(X)g Fl(,)32 b Fi(Y)49 b Fl(=)29 b Fi(AX)39 b │ │ │ │ Fl(or)31 b Fi(Y)49 b Fl(=)29 b Fi(B)t(X)7 b Fl(.)49 b(All)32 │ │ │ │ b(calling)g(sequence)208 722 y(parameters)25 b(are)i(p)r(oin)n(ters)g │ │ │ │ @@ -7724,17 +7709,17 @@ │ │ │ │ 5011 y Fl(where)125 5201 y Fh(\017)h Fk(msglvl)25 b Fl(is)i(the)h │ │ │ │ (message)e(lev)n(el)h(for)h(the)g Fk(BridgeMT)c Fl(metho)r(ds)k(and)f │ │ │ │ (the)h Fm(SPOOLES)g Fl(soft)n(w)n(are.)125 5368 y Fh(\017)41 │ │ │ │ b Fk(msgFile)24 b Fl(is)k(the)g(message)e(\014le)i(for)f(the)h │ │ │ │ Fk(BridgeMT)c Fl(metho)r(ds)k(and)f(the)h Fm(SPOOLES)g │ │ │ │ Fl(soft)n(w)n(are.)p eop end │ │ │ │ %%Page: 13 14 │ │ │ │ -TeXDict begin 13 13 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(13)125 │ │ │ │ +TeXDict begin 13 13 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(13)125 │ │ │ │ 390 y Fh(\017)41 b Fk(parmFile)24 b Fl(is)j(the)h(input)h(\014le)f(for) │ │ │ │ f(the)h(parameters)d(of)j(the)g(eigensystem)f(to)g(b)r(e)h(solv)n(ed.) │ │ │ │ 125 556 y Fh(\017)41 b Fk(seed)26 b Fl(is)h(a)g(random)g(n)n(um)n(b)r │ │ │ │ (er)g(seed)h(used)f(b)n(y)g(the)h Fm(SPOOLES)g Fl(soft)n(w)n(are.)125 │ │ │ │ 722 y Fh(\017)41 b Fk(nthread)24 b Fl(is)k(the)g(n)n(um)n(b)r(er)f(of)h │ │ │ │ (threads)f(to)g(use)g(in)h(the)g(factors,)f(solv)n(es)f(and)h(matrix-m) │ │ │ │ n(ultiplies.)125 888 y Fh(\017)41 b Fk(inFileA)24 b Fl(is)k(the)g(Harw) │ │ │ │ @@ -7820,17 +7805,17 @@ │ │ │ │ b(that)h(con)n(tains)f(the)h(sym)n(b)r(olic)f(factorization)f(of)h(the) │ │ │ │ h(matrix.)125 5304 y Fh(\017)41 b Fk(SubMtxManager)d(*mtxmanager)25 │ │ │ │ b Fl(:)41 b(ob)5 b(ject)30 b(that)g(manages)e(the)i Fk(SubMtx)e │ │ │ │ Fl(ob)5 b(jects)29 b(that)h(store)f(the)h(factor)f(en)n(tries)208 │ │ │ │ 5404 y(and)e(are)g(used)g(in)h(the)g(solv)n(es.)1908 │ │ │ │ 5656 y(14)p eop end │ │ │ │ %%Page: 15 16 │ │ │ │ -TeXDict begin 15 15 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(15)125 │ │ │ │ +TeXDict begin 15 15 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(15)125 │ │ │ │ 390 y Fh(\017)41 b Fk(FrontMtx)f(*frontmtx)24 b Fl(:)37 │ │ │ │ b(ob)5 b(ject)27 b(that)h(stores)e(the)i Fi(L)p Fl(,)g │ │ │ │ Fi(D)h Fl(and)f Fi(U)36 b Fl(factor)27 b(matrices.)125 │ │ │ │ 556 y Fh(\017)41 b Fk(IV)h(*oldToNewIV)23 b Fl(:)28 b(ob)5 │ │ │ │ b(ject)28 b(that)f(stores)g(old-to-new)f(p)r(erm)n(utation)i(v)n │ │ │ │ (ector.)125 722 y Fh(\017)41 b Fk(IV)h(*newToOldIV)23 │ │ │ │ b Fl(:)28 b(ob)5 b(ject)28 b(that)f(stores)g(new-to-old)f(p)r(erm)n │ │ │ │ @@ -7913,17 +7898,17 @@ │ │ │ │ (gathers)f(them)h(on)g(all)g(the)g(pro)r(cessors)e(in)n(to)i(eac)n(h)f │ │ │ │ (of)h(their)h(global)e(output)0 5197 y(blo)r(c)n(ks.)36 │ │ │ │ b(These)27 b(op)r(erations)f(add)i(a)f(considerable)f(cost)h(to)g(the)h │ │ │ │ (solv)n(e)e(and)h(matrix-m)n(ultiplies,)g(but)i(the)e(next)h(release)e │ │ │ │ (of)0 5297 y(the)i Fm(LANCZOS)g Fl(soft)n(w)n(are)e(will)i(remo)n(v)n │ │ │ │ (e)e(these)h(steps.)p eop end │ │ │ │ %%Page: 16 17 │ │ │ │ -TeXDict begin 16 16 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(16)101 │ │ │ │ +TeXDict begin 16 16 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(16)101 │ │ │ │ 390 y(1.)42 b Fk(int)g(SetupMPI)e(\()j(void)f(*data,)f(int)i │ │ │ │ (*pprbtype,)c(int)k(*pneqns,)818 490 y(int)f(*pmxbsz,)e(InpMtx)h(*A,)i │ │ │ │ (InpMtx)e(*B,)h(int)h(*pseed,)818 589 y(int)f(*pmsglvl,)e(FILE)i │ │ │ │ (*msgFile,)e(MPI_Comm)g(comm)i(\))h(;)208 722 y Fl(All)28 │ │ │ │ b(calling)f(sequence)g(parameters)e(are)i(p)r(oin)n(ters)g(to)g(more)g │ │ │ │ (easily)g(allo)n(w)g(an)g(in)n(terface)g(with)h(F)-7 │ │ │ │ b(ortran.)307 888 y Fh(\017)41 b Fk(void)h(*data)26 b │ │ │ │ @@ -8002,17 +7987,17 @@ │ │ │ │ (cessors)d(that)j(o)n(wn)f(them.)307 5272 y Fh(\017)41 │ │ │ │ b Fl(The)28 b(sym)n(b)r(olic)f(factorization)f(is)i(then)g(computed)g │ │ │ │ (and)f(loaded)g(in)h(the)g Fk(BridgeMPI)c Fl(ob)5 b(ject.)307 │ │ │ │ 5405 y Fh(\017)41 b Fl(A)28 b Fk(FrontMtx)d Fl(ob)5 b(ject)27 │ │ │ │ b(is)g(created)g(to)h(hold)f(the)h(factorization)e(and)i(loaded)f(in)n │ │ │ │ (to)g(the)h Fk(BridgeMPI)c Fl(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 17 18 │ │ │ │ -TeXDict begin 17 17 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(17)307 │ │ │ │ +TeXDict begin 17 17 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(17)307 │ │ │ │ 390 y Fh(\017)41 b Fl(A)20 b Fk(SubMtxManager)15 b Fl(ob)5 │ │ │ │ b(ject)20 b(is)f(created)g(to)h(hold)g(the)g(factor's)f(submatrices)g │ │ │ │ (and)h(loaded)f(in)n(to)g(the)i Fk(BridgeMPI)390 490 │ │ │ │ y Fl(ob)5 b(ject.)307 620 y Fh(\017)41 b Fl(The)22 b(map)g(from)g │ │ │ │ (factor)f(submatrices)h(to)g(their)g(o)n(wning)f(threads)g(is)h │ │ │ │ (computed)g(and)g(stored)g(in)g(the)g Fk(solvemap)390 │ │ │ │ 720 y Fl(ob)5 b(ject.)307 850 y Fh(\017)41 b Fl(The)28 │ │ │ │ @@ -8095,17 +8080,17 @@ │ │ │ │ Fk(*pnrows)p Fl(.)307 5162 y Fh(\017)41 b Fk(int)i(*pprbtype)23 │ │ │ │ b Fl(|)28 b Fk(*pprbtype)c Fl(holds)j(the)h(problem)f(t)n(yp)r(e.)456 │ │ │ │ 5292 y Fm({)41 b Fk(1)28 b Fl(|)f(vibration,)g(a)g(m)n(ultiply)h(with)h │ │ │ │ Fi(B)i Fl(is)d(required.)456 5407 y Fm({)41 b Fk(2)28 │ │ │ │ b Fl(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fi(A)g │ │ │ │ Fl(is)f(required.)p eop end │ │ │ │ %%Page: 18 19 │ │ │ │ -TeXDict begin 18 18 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(18)456 │ │ │ │ +TeXDict begin 18 18 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(18)456 │ │ │ │ 390 y Fm({)41 b Fk(3)28 b Fl(|)f(simple,)h(no)g(m)n(ultiply)g(is)f │ │ │ │ (required.)307 518 y Fh(\017)41 b Fk(void)h(*data)26 │ │ │ │ b Fl(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h Fk(BridgeMPI)c │ │ │ │ Fl(ob)5 b(ject.)101 678 y(4.)42 b Fk(void)f(MatMulMPI)f(\()k(int)e │ │ │ │ (*pnrows,)e(int)i(*pncols,)f(double)g(X[],)h(double)f(Y[],)905 │ │ │ │ 778 y(int)h(*pprbtype,)e(void)i(*data)f(\))i(;)208 908 │ │ │ │ y Fl(This)31 b(metho)r(d)i(computes)e(a)h(m)n(ultiply)g(of)g(the)g │ │ │ │ @@ -8193,17 +8178,17 @@ │ │ │ │ y(1)99 b(normal)27 b(return)1409 5319 y(-1)99 b Fk(pnrows)25 │ │ │ │ b Fl(is)j Fk(NULL)1409 5419 y Fl(-2)99 b Fk(pncols)25 │ │ │ │ b Fl(is)j Fk(NULL)2252 5220 y Fl(-3)99 b Fk(X)27 b Fl(is)h │ │ │ │ Fk(NULL)2252 5319 y Fl(-4)99 b Fk(Y)27 b Fl(is)h Fk(NULL)2252 │ │ │ │ 5419 y Fl(-5)99 b Fk(data)26 b Fl(is)i Fk(NULL)p eop │ │ │ │ end │ │ │ │ %%Page: 19 20 │ │ │ │ -TeXDict begin 19 19 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(19)101 │ │ │ │ +TeXDict begin 19 19 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(19)101 │ │ │ │ 390 y(7.)42 b Fk(int)g(CleanupMPI)d(\()44 b(void)d(*data)h(\))h(;)208 │ │ │ │ 520 y Fl(This)27 b(metho)r(d)h(releases)e(all)h(the)h(storage)e(used)i │ │ │ │ (b)n(y)f(the)h Fm(SPOOLES)g Fl(library)e(functions.)208 │ │ │ │ 649 y Fb(R)l(eturn)i(value:)38 b Fl(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ (-1)g(if)h(a)f Fk(data)f Fl(is)h Fk(NULL)p Fl(.)0 943 │ │ │ │ y Fd(4.3)135 b(The)45 b Fc(testMPI)c Fd(Driv)l(er)46 │ │ │ │ b(Program)0 1146 y Fl(A)31 b(complete)f(listing)h(of)f(the)h(m)n │ │ │ │ @@ -8298,17 +8283,17 @@ │ │ │ │ b(*evec;)0 5073 y(int)304 b(error,)41 b(fstevl,)g(lfinit,)f(lstevl,)h │ │ │ │ (mxbksz,)g(msglvl,)f(ncol,)i(ndiscd,)436 5172 y(neig,)f(neigvl,)g │ │ │ │ (nfound,)g(nnonzeros,)e(nrhs,)j(nrow,)f(prbtyp,)g(rc,)436 │ │ │ │ 5272 y(retc,)g(rfinit,)g(seed,)h(warnng)f(;)0 5372 y(int)304 │ │ │ │ b(c__5)42 b(=)h(5,)g(output)e(=)i(6)g(;)1908 5656 y Fl(20)p │ │ │ │ eop end │ │ │ │ %%Page: 21 22 │ │ │ │ -TeXDict begin 21 21 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(21)0 │ │ │ │ +TeXDict begin 21 21 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(21)0 │ │ │ │ 390 y Fk(int)304 b(*lanczos_wksp;)0 490 y(InpMtx)172 │ │ │ │ b(*inpmtxA,)40 b(*inpmtxB)g(;)0 589 y(FILE)260 b(*msgFile,)40 │ │ │ │ b(*parmFile;)0 789 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 988 y(if)j(\()g(argc)f(!=)h(7)g(\))g({)131 │ │ │ │ 1088 y(fprintf\(stdout,)87 1187 y("\\n\\n)f(usage)f(:)i(\045s)g(msglvl) │ │ │ │ e(msgFile)g(parmFile)f(seed)i(inFileA)f(inFileB")87 1287 │ │ │ │ @@ -8344,17 +8329,17 @@ │ │ │ │ b(in)g(the)h(Harwell-Boeing)38 b(matrix)j(information)131 │ │ │ │ 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)0 5172 y(*/)0 5272 y(if)i(\()g(strcmp\(inFileNam)o │ │ │ │ (e_)o(A,)37 b("none"\))k(==)i(0)g(\))g({)131 5372 y(fprintf\(msgFile,) │ │ │ │ 37 b("\\n)42 b(no)h(file)f(to)h(read)e(from"\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 22 23 │ │ │ │ -TeXDict begin 22 22 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(22)131 │ │ │ │ +TeXDict begin 22 22 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(22)131 │ │ │ │ 390 y Fk(exit\(0\))40 b(;)0 490 y(})0 589 y(MARKTIME\(t1\))f(;)0 │ │ │ │ 689 y(readHB_info)g(\(inFileName_A,)f(&nrow,)j(&ncol,)g(&nnonzeros,)e │ │ │ │ (&type,)i(&nrhs\))g(;)0 789 y(MARKTIME\(t2\))e(;)0 888 │ │ │ │ y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h │ │ │ │ (header)e(information)e(for)k(A",)349 988 y(t2)f(-)i(t1\))e(;)0 │ │ │ │ 1088 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -8398,17 +8383,17 @@ │ │ │ │ 4774 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h │ │ │ │ (eigenvalue)c(problem)i(data",)349 4873 y(t2)h(-)i(t1\))e(;)0 │ │ │ │ 4973 y(/*)131 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)131 5172 y(check)f(and)i(set)f(the)g(problem)f │ │ │ │ (type)h(parameter)131 5272 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)0 5372 y(*/)p eop end │ │ │ │ %%Page: 23 24 │ │ │ │ -TeXDict begin 23 23 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(23)0 │ │ │ │ +TeXDict begin 23 23 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(23)0 │ │ │ │ 390 y Fk(switch)41 b(\()i(pbtype[1])d(\))j({)0 490 y(case)f('v')g(:)h │ │ │ │ (case)f('V')h(:)g(prbtyp)e(=)i(1)g(;)h(break)d(;)0 589 │ │ │ │ y(case)h('b')g(:)h(case)f('B')h(:)g(prbtyp)e(=)i(2)g(;)h(break)d(;)0 │ │ │ │ 689 y(case)h('o')g(:)h(case)f('O')h(:)g(prbtyp)e(=)i(3)g(;)h(break)d(;) │ │ │ │ 0 789 y(default)g(:)131 888 y(fprintf\(stderr,)c("\\n)42 │ │ │ │ b(invalid)f(problem)g(type)h(\045s",)g(pbtype\))e(;)131 │ │ │ │ 988 y(exit\(-1\))g(;)0 1088 y(})0 1187 y(/*)131 1287 │ │ │ │ @@ -8448,17 +8433,17 @@ │ │ │ │ b(CPU)h(\0458.3f)e(:)i(read)f(in)h(A",)f(t2)h(-)g(t1\))g(;)0 │ │ │ │ 5073 y(if)g(\()g(msglvl)e(>)i(2)g(\))h({)131 5172 y(fprintf\(msgFile,) │ │ │ │ 37 b("\\n\\n)k(InpMtx)g(A)j(object)d(after)g(loading"\))f(;)131 │ │ │ │ 5272 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(i)o(npm)o(tx)o(A,)d │ │ │ │ (msgFile\))j(;)131 5372 y(fflush\(msgFile\))d(;)p eop │ │ │ │ end │ │ │ │ %%Page: 24 25 │ │ │ │ -TeXDict begin 24 24 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(24)0 │ │ │ │ +TeXDict begin 24 24 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(24)0 │ │ │ │ 390 y Fk(})0 490 y(MARKTIME\(t1\))39 b(;)0 589 y(lanczos_set_parm)o(\() │ │ │ │ f(&lanczos_wksp,)f("matrix-type",)h(&c__1,)j(&retc)h(\);)0 │ │ │ │ 689 y(MARKTIME\(t2\))d(;)0 789 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(set)g(A's)f(parameters",)d(t2)j(-)i(t1\))e(;)0 │ │ │ │ 888 y(if)h(\()g(prbtyp)e(!=)i(3)g(\))g({)131 988 y(if)g(\()g │ │ │ │ (strcmp\(inFileNa)o(me_)o(B,)37 b("none"\))k(==)h(0)i(\))f({)262 │ │ │ │ 1088 y(fprintf\(msgFile)o(,)37 b("\\n)43 b(no)g(file)f(to)g(read)g │ │ │ │ @@ -8495,17 +8480,17 @@ │ │ │ │ 4873 y(nfound)g(--)i(#)g(of)g(eigenvalues)c(found)i(and)h(kept)131 │ │ │ │ 4973 y(ndisc)85 b(--)43 b(#)g(of)g(additional)c(eigenvalues)g │ │ │ │ (discarded)131 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)0 5172 y(*/)0 5272 │ │ │ │ y(MARKTIME\(t1\))g(;)0 5372 y(lanczos_run\(&nei)o(gvl)o(,)e(&which[1])j │ │ │ │ (,)j(&pbtype[1],)c(&lfinit,)i(&lftend,)p eop end │ │ │ │ %%Page: 25 26 │ │ │ │ -TeXDict begin 25 25 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(25)174 │ │ │ │ +TeXDict begin 25 25 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(25)174 │ │ │ │ 390 y Fk(&rfinit,)41 b(&rhtend,)f(¢er,)g(&lanczos_wksp,)e(&bridge,) │ │ │ │ i(&nfound,)174 490 y(&ndiscd,)h(&warnng,)f(&error,)h(Factor,)f(MatMul,) │ │ │ │ h(Solve)g(\))j(;)0 589 y(MARKTIME\(t2\))39 b(;)0 689 │ │ │ │ y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(time)f(for)h │ │ │ │ (lanczos)d(run",)i(t2)h(-)g(t1\))f(;)0 789 y(/*)131 888 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)131 988 y(get)g(eigenvalues)d │ │ │ │ (and)j(print)131 1088 y(----------------)o(--)o(--)o(---)o(--)0 │ │ │ │ @@ -8537,17 +8522,17 @@ │ │ │ │ 4674 y(*/)0 4774 y(MARKTIME\(t1\))e(;)0 4873 y(lanczos_free\()f │ │ │ │ (&lanczos_wksp)g(\))44 b(;)0 4973 y(MARKTIME\(t2\))39 │ │ │ │ b(;)0 5073 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (lanczos)f(workspace)f(",)j(t2)f(-)i(t1\))e(;)0 5172 │ │ │ │ y(MARKTIME\(t1\))d(;)0 5272 y(rc)k(=)g(Cleanup\(&bridge\))37 │ │ │ │ b(;)0 5372 y(MARKTIME\(t2\))i(;)p eop end │ │ │ │ %%Page: 26 27 │ │ │ │ -TeXDict begin 26 26 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(26)0 │ │ │ │ +TeXDict begin 26 26 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(26)0 │ │ │ │ 390 y Fk(fprintf\(msgFile,)37 b("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (solver)f(workspace)f(",)j(t2)g(-)g(t1\))f(;)0 490 y(if)h(\()g(rc)g(!=) │ │ │ │ f(1)i(\))f({)131 589 y(fprintf\(stderr,)37 b("\\n)42 │ │ │ │ b(error)g(return)f(\045d)i(from)f(Cleanup\(\)",)d(rc\))j(;)131 │ │ │ │ 689 y(exit\(-1\))e(;)0 789 y(})0 888 y(fprintf\(msgFile,)d("\\n"\))k(;) │ │ │ │ 0 988 y(fclose\(msgFile\))c(;)0 1187 y(return)k(;)i(})p │ │ │ │ eop end │ │ │ │ @@ -8580,17 +8565,17 @@ │ │ │ │ 4973 y(int)304 b(error,)41 b(fstevl,)g(lfinit,)f(lstevl,)h(msglvl,)g │ │ │ │ (mxbksz,)f(ncol,)i(ndiscd,)436 5073 y(neig,)f(neigvl,)g(nfound,)g │ │ │ │ (nnonzeros,)e(nrhs,)j(nrow,)f(nthreads,)436 5172 y(prbtyp,)g(rc,)h │ │ │ │ (retc,)f(rfinit,)g(seed,)h(warnng)f(;)0 5272 y(int)304 │ │ │ │ b(c__5)42 b(=)h(5,)g(output)e(=)i(6)g(;)0 5372 y(int)304 │ │ │ │ b(*lanczos_wksp;)1908 5656 y Fl(27)p eop end │ │ │ │ %%Page: 28 29 │ │ │ │ -TeXDict begin 28 28 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(28)0 │ │ │ │ +TeXDict begin 28 28 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(28)0 │ │ │ │ 390 y Fk(InpMtx)172 b(*inpmtxA,)40 b(*inpmtxB)g(;)0 490 │ │ │ │ y(FILE)260 b(*msgFile,)40 b(*parmFile)g(;)0 589 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 689 y(if)j(\()g(argc)f(!=)h(8)g(\))g({)131 789 y(fprintf\(stdout,)0 │ │ │ │ 888 y("\\n\\n)f(usage)f(:)i(\045s)g(msglvl)e(msgFile)g(parmFile)f(seed) │ │ │ │ i(nthread)f(inFileA)f(inFileB")0 988 y("\\n)173 b(msglvl)128 │ │ │ │ @@ -8630,17 +8615,17 @@ │ │ │ │ (Harwell-Boeing)38 b(matrix)j(information)131 4973 y(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)0 │ │ │ │ 5073 y(*/)0 5172 y(if)i(\()g(strcmp\(inFileNam)o(e_)o(A,)37 │ │ │ │ b("none"\))k(==)i(0)g(\))g({)131 5272 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n)42 b(no)h(file)f(to)h(read)e(from"\))h(;)131 5372 │ │ │ │ y(exit\(0\))e(;)p eop end │ │ │ │ %%Page: 29 30 │ │ │ │ -TeXDict begin 29 29 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(29)0 │ │ │ │ +TeXDict begin 29 29 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(29)0 │ │ │ │ 390 y Fk(})0 490 y(MARKTIME\(t1\))39 b(;)0 589 y(readHB_info)g │ │ │ │ (\(inFileName_A,)f(&nrow,)j(&ncol,)g(&nnonzeros,)e(&type,)i(&nrhs\))g │ │ │ │ (;)0 689 y(MARKTIME\(t2\))e(;)0 789 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(read)f(in)h(harwell-boeing)38 │ │ │ │ b(header)j(info",)349 888 y(t2)h(-)i(t1\))e(;)0 988 y │ │ │ │ (fflush\(msgFile\))37 b(;)0 1088 y(/*--------------)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ @@ -8686,17 +8671,17 @@ │ │ │ │ (eigenvalue)c(problem)i(data",)349 4873 y(t2)h(-)i(t1\))e(;)0 │ │ │ │ 4973 y(fflush\(msgFile\))37 b(;)0 5073 y(/*)131 5172 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)131 5272 y(check)k(and)i(set)f(the)g(problem)f(type)h(parameter) │ │ │ │ 131 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(--)o(---)p eop end │ │ │ │ %%Page: 30 31 │ │ │ │ -TeXDict begin 30 30 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(30)0 │ │ │ │ +TeXDict begin 30 30 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(30)0 │ │ │ │ 390 y Fk(*/)0 490 y(switch)41 b(\()i(pbtype[1])d(\))j({)0 │ │ │ │ 589 y(case)f('v')g(:)0 689 y(case)g('V')g(:)131 789 y(prbtyp)f(=)i(1)g │ │ │ │ (;)131 888 y(break)e(;)0 988 y(case)h('b')g(:)0 1088 │ │ │ │ y(case)g('B')g(:)131 1187 y(prbtyp)f(=)i(2)g(;)131 1287 │ │ │ │ y(break)e(;)0 1386 y(case)h('o')g(:)0 1486 y(case)g('O')g(:)131 │ │ │ │ 1586 y(prbtyp)f(=)i(3)g(;)131 1685 y(break)e(;)0 1785 │ │ │ │ y(default)g(:)131 1885 y(fprintf\(stderr,)c("\\n)42 b(invalid)f │ │ │ │ @@ -8729,17 +8714,17 @@ │ │ │ │ (--)o(-*/)0 4873 y(/*)131 4973 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)131 5073 │ │ │ │ y(create)f(the)h(InpMtx)f(objects)g(for)h(matrix)f(A)j(and)e(B)131 │ │ │ │ 5172 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)0 5272 y(*/)0 5372 y(if)h(\()g(strcmp\(inFileNam)o │ │ │ │ (e_)o(A,)37 b("none"\))k(==)i(0)g(\))g({)p eop end │ │ │ │ %%Page: 31 32 │ │ │ │ -TeXDict begin 31 31 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(31)131 │ │ │ │ +TeXDict begin 31 31 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(31)131 │ │ │ │ 390 y Fk(fprintf\(msgFile,)37 b("\\n)42 b(no)h(file)f(to)h(read)e(A)j │ │ │ │ (from"\))d(;)131 490 y(exit\(-1\))f(;)0 589 y(})0 689 │ │ │ │ y(MARKTIME\(t1\))f(;)0 789 y(inpmtxA)i(=)i(InpMtx_new\(\))38 │ │ │ │ b(;)0 888 y(InpMtx_readFromH)o(Bfi)o(le)f(\()43 b(inpmtxA,)d │ │ │ │ (inFileName_A)f(\))k(;)0 988 y(MARKTIME\(t2\))c(;)0 1088 │ │ │ │ y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h(A",)f │ │ │ │ (t2)h(-)g(t1\))g(;)0 1187 y(fflush\(msgFile\))37 b(;)0 │ │ │ │ @@ -8775,17 +8760,17 @@ │ │ │ │ b(CPU)h(\0458.3f)e(:)i(set)g(up)f(the)h(solver)e(environment",)349 │ │ │ │ 4873 y(t2)h(-)i(t1\))e(;)0 4973 y(fflush\(msgFile\))37 │ │ │ │ b(;)0 5073 y(if)43 b(\()g(rc)g(!=)f(1)i(\))f({)131 5172 │ │ │ │ y(fprintf\(stderr,)37 b("\\n)42 b(error)g(return)f(\045d)i(from)f │ │ │ │ (SetupMT\(\)",)d(rc\))j(;)131 5272 y(exit\(-1\))e(;)0 │ │ │ │ 5372 y(})p eop end │ │ │ │ %%Page: 32 33 │ │ │ │ -TeXDict begin 32 32 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(32)0 │ │ │ │ +TeXDict begin 32 32 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(32)0 │ │ │ │ 390 y Fk(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 490 y(/*)131 589 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)131 689 │ │ │ │ y(invoke)41 b(eigensolver)131 789 y(nfound)g(--)i(#)g(of)g(eigenvalues) │ │ │ │ c(found)i(and)h(kept)131 888 y(ndisc)85 b(--)43 b(#)g(of)g(additional)c │ │ │ │ (eigenvalues)g(discarded)131 988 y(----------------)o(--)o(--)o(---)o │ │ │ │ @@ -8821,17 +8806,17 @@ │ │ │ │ 131 4774 y(hdslp5_)d(\()k("computed)39 b(eigenvector)h(returned)g(by)j │ │ │ │ (hdserc",)567 4873 y(&neig,)e(evec,)g(&output,)g(39L)h(\))h(;)0 │ │ │ │ 4973 y(})0 5073 y(MARKTIME\(t2\))c(;)0 5172 y(fprintf\(msgFile,)e("\\n) │ │ │ │ 42 b(CPU)h(\0458.3f)e(:)i(get)g(and)f(print)g(eigenvectors",)37 │ │ │ │ b(t2)43 b(-)g(t1\))g(;)0 5272 y(fflush\(msgFile\))37 │ │ │ │ b(;)0 5372 y(*/)p eop end │ │ │ │ %%Page: 33 34 │ │ │ │ -TeXDict begin 33 33 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(33)0 │ │ │ │ +TeXDict begin 33 33 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(33)0 │ │ │ │ 390 y Fk(/*)131 490 y(----------------)o(--)o(--)o(---)o(-)131 │ │ │ │ 589 y(free)42 b(the)g(working)f(storage)131 689 y(----------------)o │ │ │ │ (--)o(--)o(---)o(-)0 789 y(*/)0 888 y(MARKTIME\(t1\))e(;)0 │ │ │ │ 988 y(lanczos_free\()f(&lanczos_wksp)g(\))44 b(;)0 1088 │ │ │ │ y(MARKTIME\(t2\))39 b(;)0 1187 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(free)f(lanczos)f(workspace",)e(t2)k(-)g(t1\))f │ │ │ │ (;)0 1287 y(fflush\(msgFile\))37 b(;)0 1386 y(MARKTIME\(t1\))i(;)0 │ │ │ │ @@ -8871,17 +8856,17 @@ │ │ │ │ b(*inpmtxA,)40 b(*inpmtxB)g(;)0 5009 y(FILE)260 b(*msgFile,)40 │ │ │ │ b(*parmFile)g(;)0 5108 y(double)172 b(lftend,)41 b(rhtend,)f(center,)h │ │ │ │ (shfscl,)g(t1,)h(t2)h(;)0 5208 y(double)172 b(c__1)42 │ │ │ │ b(=)h(1.0,)f(c__4)g(=)h(4.0,)f(tolact)f(=)i(2.309970868130169)o(e-)o │ │ │ │ (11)37 b(;)0 5308 y(double)172 b(eigval[1000],)38 b(sigma[2])i(;)0 │ │ │ │ 5407 y(double)172 b(*evec;)1908 5656 y Fl(34)p eop end │ │ │ │ %%Page: 35 36 │ │ │ │ -TeXDict begin 35 35 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(35)0 │ │ │ │ +TeXDict begin 35 35 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(35)0 │ │ │ │ 390 y Fk(/*)131 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ o(-)131 589 y(find)42 b(out)g(the)g(identity)f(of)h(this)g(process)f │ │ │ │ (and)h(the)h(number)e(of)i(process)131 689 y(----------------)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(-)0 789 y(*/)0 888 y(MPI_Init\(&argc,)37 │ │ │ │ b(&argv\))k(;)0 988 y(MPI_Comm_dup\(MPI)o(_CO)o(MM)o(_W)o(ORL)o(D,)c │ │ │ │ @@ -8919,17 +8904,17 @@ │ │ │ │ 4375 y(argv[0],)e(buffer\))h(;)262 4475 y(return)g(;)131 │ │ │ │ 4575 y(})131 4674 y(CVfree\(buffer\))d(;)0 4774 y(})0 │ │ │ │ 4873 y(parmFileName)h(=)k(argv[3])d(;)0 4973 y(seed)391 │ │ │ │ b(=)43 b(atoi\(argv[4]\))38 b(;)0 5073 y(inFileName_A)h(=)k(argv[5])d │ │ │ │ (;)0 5172 y(inFileName_B)f(=)k(argv[6])d(;)0 5272 y(fprintf\(msgFile,) │ │ │ │ 349 5372 y("\\n)i(\045s)h(")p eop end │ │ │ │ %%Page: 36 37 │ │ │ │ -TeXDict begin 36 36 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(36)349 │ │ │ │ +TeXDict begin 36 36 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(36)349 │ │ │ │ 390 y Fk("\\n)42 b(msglvl)695 b(--)43 b(\045d")349 490 │ │ │ │ y("\\n)f(message)f(file)434 b(--)43 b(\045s")349 589 │ │ │ │ y("\\n)f(parameter)e(file)347 b(--)43 b(\045s")349 689 │ │ │ │ y("\\n)f(stiffness)e(matrix)h(file)h(--)h(\045s")349 │ │ │ │ 789 y("\\n)f(mass)g(matrix)f(file)260 b(--)43 b(\045s")349 │ │ │ │ 888 y("\\n)f(random)f(number)g(seed)173 b(--)43 b(\045d")349 │ │ │ │ 988 y("\\n",)349 1088 y(argv[0],)d(msglvl,)h(argv[2],)f(parmFileName,)e │ │ │ │ @@ -8972,17 +8957,17 @@ │ │ │ │ 4973 y('o')i(or)h('O')f(ordinary)f(symmetric)f(eigenproblem)131 │ │ │ │ 5073 y(lfinit)h(--)i(if)f(true,)g(lftend)f(is)i(restriction)c(on)k │ │ │ │ (lower)e(bound)h(of)567 5172 y(eigenvalues.)c(if)43 b(false,)e(no)i │ │ │ │ (restriction)c(on)k(lower)e(bound)131 5272 y(lftend)g(--)i(left)f │ │ │ │ (endpoint)e(of)j(interval)131 5372 y(rfinit)e(--)i(if)f(true,)g(rhtend) │ │ │ │ f(is)i(restriction)c(on)k(upper)e(bound)h(of)p eop end │ │ │ │ %%Page: 37 38 │ │ │ │ -TeXDict begin 37 37 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(37)567 │ │ │ │ +TeXDict begin 37 37 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(37)567 │ │ │ │ 390 y Fk(eigenvalues.)82 b(if)43 b(false,)e(no)h(restriction)d(on)k │ │ │ │ (upper)f(bound)131 490 y(rhtend)f(--)i(right)e(endpoint)f(of)j │ │ │ │ (interval)131 589 y(center)e(--)i(center)e(of)h(interval)131 │ │ │ │ 689 y(mxbksz)f(--)i(upper)e(bound)h(on)g(block)g(size)g(for)g(Lanczos)f │ │ │ │ (recurrence)131 789 y(shfscl)g(--)i(shift)e(scaling)g(parameter,)e(an)k │ │ │ │ (estimate)d(on)j(the)f(magnitude)567 888 y(of)g(the)h(smallest)d │ │ │ │ (nonzero)h(eigenvalues)131 988 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ @@ -9020,17 +9005,17 @@ │ │ │ │ 4973 y(*/)0 5073 y(MARKTIME\(t1\))h(;)0 5172 y(lanczos_set_parm)o(\()f │ │ │ │ (&lanczos_wksp,)f("order-of-problem)o(",)g(&nrow,)k(&retc)h(\);)0 │ │ │ │ 5272 y(lanczos_set_parm)o(\()c(&lanczos_wksp,)f("accuracy-toleran)o(ce) │ │ │ │ o(",)g(&tolact,)k(&retc)g(\);)0 5372 y(lanczos_set_parm)o(\()d │ │ │ │ (&lanczos_wksp,)f("max-block-size",)g(&mxbksz,)j(&retc)i(\);)p │ │ │ │ eop end │ │ │ │ %%Page: 38 39 │ │ │ │ -TeXDict begin 38 38 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(38)0 │ │ │ │ +TeXDict begin 38 38 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(38)0 │ │ │ │ 390 y Fk(lanczos_set_parm)o(\()38 b(&lanczos_wksp,)f("shift-scale",)h │ │ │ │ (&shfscl,)i(&retc)i(\);)0 490 y(lanczos_set_parm)o(\()c(&lanczos_wksp,) │ │ │ │ f("message_level",)g(&msglvl,)k(&retc)g(\);)0 589 y(lanczos_set_parm)o │ │ │ │ (\()d(&lanczos_wksp,)f("mpi-communicator)o(",)g(&comm,)k(&retc)h(\);)0 │ │ │ │ 689 y(lanczos_set_parm)o(\()c(&lanczos_wksp,)f("qfile-pathname",)g │ │ │ │ ("lqfil",)j(&retc)i(\);)0 789 y(lanczos_set_parm)o(\()c(&lanczos_wksp,) │ │ │ │ f("mqfil-pathname",)g("lmqfil",)j(&retc)h(\);)0 888 y(lanczos_set_parm) │ │ │ │ @@ -9071,17 +9056,17 @@ │ │ │ │ y(InpMtx_writeForHu)o(ma)o(nEy)o(e\()o(inp)o(mt)o(xB)o(,)e(msgFile\))i │ │ │ │ (;)392 4774 y(fflush\(msgFile\))e(;)262 4873 y(})131 │ │ │ │ 4973 y(})43 b(else)f({)262 5073 y(inpmtxB)e(=)j(NULL)f(;)262 │ │ │ │ 5172 y(lanczos_set_par)o(m\()37 b(&lanczos_wksp,)h("matrix-type",)g │ │ │ │ (&c__4,)j(&retc)g(\);)131 5272 y(})0 5372 y(})i(else)f({)p │ │ │ │ eop end │ │ │ │ %%Page: 39 40 │ │ │ │ -TeXDict begin 39 39 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(39)0 │ │ │ │ +TeXDict begin 39 39 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(39)0 │ │ │ │ 390 y Fk(/*)131 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(-)131 589 y(other)41 │ │ │ │ b(processors)f(initialize)f(their)j(local)f(matrices)131 │ │ │ │ 689 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(-)0 789 y(*/)131 888 y(inpmtxA)f(=)k │ │ │ │ (InpMtx_new\(\))38 b(;)131 988 y(InpMtx_init\(inpm)o(tx)o(A,)f │ │ │ │ (INPMTX_BY_CHEVRO)o(NS,)g(SPOOLES_REAL,)h(0,)43 b(0\))g(;)131 │ │ │ │ @@ -9120,17 +9105,17 @@ │ │ │ │ 4774 y(JimSolveMPI)f(\))k(;)0 4873 y(MARKTIME\(t2\))c(;)0 │ │ │ │ 4973 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(time)f(for)h │ │ │ │ (lanczos)d(run",)i(t2)h(-)g(t1\))f(;)0 5073 y(fflush\(msgFile\))37 │ │ │ │ b(;)0 5172 y(if)43 b(\()g(myid)f(==)h(0)g(\))g({)0 5272 │ │ │ │ y(/*)131 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(-)p eop end │ │ │ │ %%Page: 40 41 │ │ │ │ -TeXDict begin 40 40 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(40)131 │ │ │ │ +TeXDict begin 40 40 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(40)131 │ │ │ │ 390 y Fk(processor)40 b(0)j(deals)e(with)h(eigenvalues)d(and)k(vectors) │ │ │ │ 131 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(-)0 589 y(*/)131 689 y(MARKTIME\(t1\))38 │ │ │ │ b(;)131 789 y(neig)129 b(=)43 b(nfound)e(+)i(ndiscd)e(;)131 │ │ │ │ 888 y(lstevl)g(=)i(nfound)e(;)131 988 y(lanczos_eigenval)o(ue)o(s)c │ │ │ │ (\(&lanczos_wksp,)h(eigval,)j(&neig,)g(&retc\);)131 1088 │ │ │ │ y(fstevl)g(=)i(1)g(;)131 1187 y(if)g(\()g(nfound)e(==)i(0)g(\))g │ │ │ │ @@ -9160,17 +9145,17 @@ │ │ │ │ (ksp)o(\))e(;)0 4774 y(MARKTIME\(t2\))i(;)0 4873 y(fprintf\(msgFile,)e │ │ │ │ ("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f(lanczos)f(workspace",)e(t2)k(-)g │ │ │ │ (t1\))f(;)0 4973 y(fflush\(msgFile\))37 b(;)0 5073 y(MARKTIME\(t1\))i │ │ │ │ (;)0 5172 y(CleanupMPI\(&brid)o(ge\))e(;)0 5272 y(MARKTIME\(t2\))i(;)0 │ │ │ │ 5372 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (solver)f(workspace",)e(t2)k(-)g(t1\))g(;)p eop end │ │ │ │ %%Page: 41 42 │ │ │ │ -TeXDict begin 41 41 bop 83 100 727 4 v 893 100 a Fm(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fl(41)0 │ │ │ │ +TeXDict begin 41 41 bop 83 100 760 4 v 925 100 a Fm(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fl(41)0 │ │ │ │ 390 y Fk(fflush\(msgFile\))37 b(;)0 589 y(MPI_Finalize\(\))h(;)0 │ │ │ │ 789 y(fprintf\(msgFile,)f("\\n"\))k(;)0 888 y(fclose\(msgFile\))c(;)0 │ │ │ │ 1088 y(return)k(;)i(})p eop end │ │ │ │ %%Page: 42 43 │ │ │ │ TeXDict begin 42 42 bop 0 866 a Fn(Index)0 1281 y Fk(Cleanup\(\))p │ │ │ │ Fl(,)24 b(7)0 1380 y Fk(CleanupMPI\(\))p Fl(,)f(19)0 │ │ │ │ 1480 y Fk(CleanupMT\(\))p Fl(,)g(12)0 1663 y Fk(Factor\(\))p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Integrating the SPOOLES 2.2 Sparse Linear Algebra Library │ │ │ │ │ into the LANCZOS Block-shifted Lanczos Eigensolver │ │ │ │ │ Cleve Ashcraft Jim Patterson │ │ │ │ │ Boeing Phantom Works1 Boeing Phantom Works2 │ │ │ │ │ - December 20, 2018 │ │ │ │ │ + October 11, 2021 │ │ │ │ │ 1P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, cleve.ashcraft@boeing.com. This research │ │ │ │ │ was supported in part by the DARPA Contract DABT63-95-C-0122 and the DoD High Performance Computing │ │ │ │ │ Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ 2P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, pattersn@redwood.rt.cs.boeing.com. This re- │ │ │ │ │ search was supportedin part bytheDARPAContractDABT63-95-C-0122 andtheDoDHighPerformanceComputing │ │ │ │ │ Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ Contents │ │ │ │ │ @@ -55,15 +55,15 @@ │ │ │ │ │ b b │ │ │ │ │ izations and solves involving A and B. This permutation matrix P is typically found by ordering the graph │ │ │ │ │ of A +B using a variant of minimum degree or nested dissection. The ordering is performed prior to any │ │ │ │ │ action by the eigensolver. This “setup phase” includes more than just finding the permutation matrix, e.g., │ │ │ │ │ various data structures must be initialized. In a parallel environment, there is even more setup work to do, │ │ │ │ │ analyzing the factorization and solves and specifying which threads or processors perform what computations │ │ │ │ │ 2 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 3 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 3 │ │ │ │ │ and store what data. In a distributed environment, the entries of A and B must also be distributed among │ │ │ │ │ the processors in preparation for the factors and multiplies. │ │ │ │ │ For each of the three environments — serial, multithreaded and MPI — the SPOOLES solver has │ │ │ │ │ constructed a “bridge” object to span the interface between the linear system solver and the eigensolver. │ │ │ │ │ Each of the Bridge, BridgeMT and BridgeMPI objects have five methods: set-up, factor, solve, matrix- │ │ │ │ │ multiply and cleanup. The factor, solve and matrix-multiply methods follow the calling sequence convention │ │ │ │ │ imposed by the eigensolver, and are passed to the eigensolver at the beginning of the Lanczos run. The │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ and are used in the solves. │ │ │ │ │ • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • DenseMtx *X : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ • DenseMtx *Y : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ 4 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 5 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 5 │ │ │ │ │ • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ When greater than 1, more and more output. │ │ │ │ │ • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ 2.2 Prototypes and descriptions of Bridge methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Bridge object. │ │ │ │ │ 1. int Setup ( void *data, int *pprbtype, int *pneqns, int *pmxbsz, │ │ │ │ │ InpMtx *A, InpMtx *B, int *pseed, int *pmsglvl, FILE *msgFile ) ; │ │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ The frontETree object is produced and placed into the bridge object. │ │ │ │ │ • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ Bridge object. │ │ │ │ │ • The vertices in the front tree are permuted, as well as the entries in A and B. Entries in the lower │ │ │ │ │ triangle of A and B are mapped into the upper triangle, and the storage modes of A and B are │ │ │ │ │ changed to chevrons and vectors, in preparation for the first factorization. │ │ │ │ │ • The symbolic factorization is then computed and loaded in the Bridge object. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 6 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 6 │ │ │ │ │ • A FrontMtx object is created to hold the factorization and loaded into the Bridge object. │ │ │ │ │ • A SubMtxManager object is created to hold the factor’s submatrices and loaded into the Bridge │ │ │ │ │ object. │ │ │ │ │ • Two DenseMtx objects are created to be used during the matrix multiplies and solves. │ │ │ │ │ The A and B matrices are now in their permuted ordering, i.e., PAPT and PBPT, and all data struc- │ │ │ │ │ tures are with respect to this ordering. After the Lanczos run completes, any generated eigenvectors │ │ │ │ │ must be permuted back into their original ordering using the oldToNewIV and newToOldIV objects. │ │ │ │ │ @@ -173,15 +173,15 @@ │ │ │ │ │ • double X[] — this is the X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • double Y[] — this is the Y matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ – 1 — vibration, a multiply with B is required. │ │ │ │ │ – 2 — buckling, a multiply with A is required. │ │ │ │ │ – 3 — simple, no multiply is required. │ │ │ │ │ • void *data — a pointer to the Bridge object. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 7 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 7 │ │ │ │ │ 4. void Solve ( int *pnrows, int *pncols, double X[], double Y[], │ │ │ │ │ void *data, int *perror ) ; │ │ │ │ │ This method solves (A−σB)X = Y, where (A−σB) has been factored by a previous call to Factor(). │ │ │ │ │ All calling sequence parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • int *pnrows — *pnrows contains the number of rows in X and Y. │ │ │ │ │ • int *pncols — *pncols contains the number of columns in X and Y. │ │ │ │ │ • double X[] — this is the X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ @@ -207,15 +207,15 @@ │ │ │ │ │ • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ This program is executed for some sample matrices by the do ST * shell scripts in the drivers directory. │ │ │ │ │ Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ 1. The command line inputs are decoded. │ │ │ │ │ 2. The header of the Harwell-Boeing file for A is read. This yields the number of equations. │ │ │ │ │ 3. The parameters that define the eigensystem to be solved are read in from the parmFile file. │ │ │ │ │ 4. The Lanczos eigensolver workspace is initialized. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 8 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 8 │ │ │ │ │ 5. The Lanczos communication structure is filled with some parameters. │ │ │ │ │ 6. The A and possibly B matrices are read in from the Harwell-Boeing files and converted into InpMtx │ │ │ │ │ objects from the SPOOLES library. │ │ │ │ │ 7. The linear solver environment is then initialized via a call to Setup(). │ │ │ │ │ 8. The eigensolver is invoked via a call to lanczos run(). The FactorMT(), SolveMT() and MatMulMT() │ │ │ │ │ methods are passed to this routine. │ │ │ │ │ 9. The eigenvalues are extracted and printed via a call to lanczos eigenvalues(). │ │ │ │ │ @@ -243,53 +243,53 @@ │ │ │ │ │ where it is contained. │ │ │ │ │ • IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ • SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor entries │ │ │ │ │ and are used in the solves. │ │ │ │ │ • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ 9 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 10 │ │ │ │ │ - • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ - • DenseMtx *X : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ - • DenseMtx *Y : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ - • IV *ownersIV : object that maps fronts to owning threads for the factorization and matrix-multiplies. │ │ │ │ │ - • SolveMap *solvemap : object that maps factor submatrices to owning threads for the solve. │ │ │ │ │ - • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 10 │ │ │ │ │ + • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ + • DenseMtx *X : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ + • DenseMtx *Y : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ + • IV *ownersIV : object that maps fronts to owning threads for the factorization and matrix-multiplies. │ │ │ │ │ + • SolveMap *solvemap : object that maps factor submatrices to owning threads for the solve. │ │ │ │ │ + • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ When greater than 1, more and more output. │ │ │ │ │ - • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ - 3.2 Prototypes and descriptions of BridgeMT methods │ │ │ │ │ + • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ + 3.2 Prototypes and descriptions of BridgeMT methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the BridgeMT │ │ │ │ │ object. │ │ │ │ │ 1. int SetupMT ( void *data, int *pprbtype, int *pneqns, │ │ │ │ │ - int *pmxbsz, InpMtx *A, InpMtx *B, int *pseed, │ │ │ │ │ - int *pnthread, int *pmsglvl, FILE *msgFile ) ; │ │ │ │ │ + int *pmxbsz, InpMtx *A, InpMtx *B, int *pseed, │ │ │ │ │ + int *pnthread, int *pmsglvl, FILE *msgFile ) ; │ │ │ │ │ All calling sequence parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ - • void *data — a pointer to the BridgeMT object. │ │ │ │ │ - • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ - – 1 — vibration, a multiply with B is required. │ │ │ │ │ - – 2 — buckling, a multiply with A is required. │ │ │ │ │ - – 3 — simple, no multiply is required. │ │ │ │ │ - • int *pneqns — *pneqns is the number of equations. │ │ │ │ │ - • int *pmxbsz — *pmxbsz is an upper bound on the block size. │ │ │ │ │ - • InpMtx *A — A is a SPOOLES object that holds the matrix A. │ │ │ │ │ - • InpMtx *B — B is a SPOOLES object that holds the matrix B. For an ordinary eigenproblem, │ │ │ │ │ - B is the identity and B is NULL. │ │ │ │ │ - • int *pseed — *pseed is a random number seed. │ │ │ │ │ - • int *pnthread — *pnthread is the number of threads to use during the factorizations, solves │ │ │ │ │ - and matrix-multiplies. │ │ │ │ │ - • int *pmsglvl—*pmsglvlisamessagelevelforthebridgemethodsandtheSPOOLESmethods │ │ │ │ │ - they call. │ │ │ │ │ - • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ - ods they call. │ │ │ │ │ + • void *data — a pointer to the BridgeMT object. │ │ │ │ │ + • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ + – 1 — vibration, a multiply with B is required. │ │ │ │ │ + – 2 — buckling, a multiply with A is required. │ │ │ │ │ + – 3 — simple, no multiply is required. │ │ │ │ │ + • int *pneqns — *pneqns is the number of equations. │ │ │ │ │ + • int *pmxbsz — *pmxbsz is an upper bound on the block size. │ │ │ │ │ + • InpMtx *A — A is a SPOOLES object that holds the matrix A. │ │ │ │ │ + • InpMtx *B — B is a SPOOLES object that holds the matrix B. For an ordinary eigenproblem, │ │ │ │ │ + B is the identity and B is NULL. │ │ │ │ │ + • int *pseed — *pseed is a random number seed. │ │ │ │ │ + • int *pnthread — *pnthread is the number of threads to use during the factorizations, solves │ │ │ │ │ + and matrix-multiplies. │ │ │ │ │ + • int *pmsglvl—*pmsglvlisamessagelevelforthebridgemethodsandtheSPOOLESmethods │ │ │ │ │ + they call. │ │ │ │ │ + • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ + ods they call. │ │ │ │ │ This method must be called in the driver program prior to invoking the eigensolver via a call to │ │ │ │ │ lanczos run(). It then follows this sequence of action. │ │ │ │ │ - • The method begins by checking all the input data, and setting the appropriate fields of the │ │ │ │ │ - BridgeMT object. │ │ │ │ │ - • The pencil object is initialized with A and B. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 11 │ │ │ │ │ + • The method begins by checking all the input data, and setting the appropriate fields of the │ │ │ │ │ + BridgeMT object. │ │ │ │ │ + • The pencil object is initialized with A and B. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 11 │ │ │ │ │ • A and B are converted to storage by rows and vector mode. │ │ │ │ │ • A Graph object is created that contains the sparsity pattern of the union of A and B. │ │ │ │ │ • The graph is ordered by first finding a recursive dissection partition, and then evaluating the │ │ │ │ │ orderings produced by nested dissection and multisection, and choosing the better of the two. │ │ │ │ │ The frontETree object is produced and placed into the bridge object. │ │ │ │ │ • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ BridgeMT object. │ │ │ │ │ @@ -326,15 +326,15 @@ │ │ │ │ │ by 1/(∗ppvttol). │ │ │ │ │ • void *data — a pointer to the BridgeMT object. │ │ │ │ │ • int *pinertia — on return, *pinertia holds the number of negative eigenvalues. │ │ │ │ │ • int *perror — on return, *perror holds an error code. │ │ │ │ │ 1 error in the factorization -2 ppvttol is NULL │ │ │ │ │ 0 normal return -3 data is NULL │ │ │ │ │ -1 psigma is NULL -4 pinertia is NULL │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 12 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 12 │ │ │ │ │ 3. void MatMulMT ( int *pnrows, int *pncols, double X[], double Y[], │ │ │ │ │ int *pprbtype, void *data ) ; │ │ │ │ │ This method computes a multiply of the form Y = IX, Y = AX or Y = BX. All calling sequence │ │ │ │ │ parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • int *pnrows — *pnrows contains the number of rows in X and Y. │ │ │ │ │ • int *pncols — *pncols contains the number of columns in X and Y. │ │ │ │ │ • double X[] — this is the X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ @@ -363,22 +363,22 @@ │ │ │ │ │ 3.3 The testMT Driver Program │ │ │ │ │ A complete listing of the multithreaded driver program is found in chapter B. The program is invoked by │ │ │ │ │ this command sequence. │ │ │ │ │ testMT msglvl msgFile parmFile seed nthread inFileA inFileB │ │ │ │ │ where │ │ │ │ │ • msglvl is the message level for the BridgeMT methods and the SPOOLES software. │ │ │ │ │ • msgFile is the message file for the BridgeMT methods and the SPOOLES software. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 13 │ │ │ │ │ - • parmFile is the input file for the parameters of the eigensystem to be solved. │ │ │ │ │ - • seed is a random number seed used by the SPOOLES software. │ │ │ │ │ - • nthread is the number of threads to use in the factors, solves and matrix-multiplies. │ │ │ │ │ - • inFileA is the Harwell-Boeing file for the matrix A. │ │ │ │ │ - • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 13 │ │ │ │ │ + • parmFile is the input file for the parameters of the eigensystem to be solved. │ │ │ │ │ + • seed is a random number seed used by the SPOOLES software. │ │ │ │ │ + • nthread is the number of threads to use in the factors, solves and matrix-multiplies. │ │ │ │ │ + • inFileA is the Harwell-Boeing file for the matrix A. │ │ │ │ │ + • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ This program is executed for some sample matrices by the do ST * shell scripts in the drivers directory. │ │ │ │ │ - Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ + Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ 1. The command line inputs are decoded. │ │ │ │ │ 2. The header of the Harwell-Boeing file for A is read. This yields the number of equations. │ │ │ │ │ 3. The parameters that define the eigensystem to be solved are read in from the parmFile file. │ │ │ │ │ 4. The Lanczos eigensolver workspace is initialized. │ │ │ │ │ 5. The Lanczos communication structure is filled with some parameters. │ │ │ │ │ 6. The A and possibly B matrices are read in from the Harwell-Boeing files and converted into InpMtx │ │ │ │ │ objects from the SPOOLES library. │ │ │ │ │ @@ -411,97 +411,97 @@ │ │ │ │ │ • ETree *frontETree : object that defines the factorizations, e.g., the number of fronts, the tree they │ │ │ │ │ form, the number of internal and external rows for each front, and the map from vertices to the front │ │ │ │ │ where it is contained. │ │ │ │ │ • IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ • SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor entries │ │ │ │ │ and are used in the solves. │ │ │ │ │ 14 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 15 │ │ │ │ │ - • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ - • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ - • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ - • DenseMtx *Xloc : dense local matrix object that is used during the matrix multiples and solves. │ │ │ │ │ - • DenseMtx *Yloc : dense local matrix object that is used during the matrix multiples and solves. │ │ │ │ │ - • IV *vtxmapIV : object that maps vertices to owning processors for the factorization and matrix- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 15 │ │ │ │ │ + • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ + • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ + • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ + • DenseMtx *Xloc : dense local matrix object that is used during the matrix multiples and solves. │ │ │ │ │ + • DenseMtx *Yloc : dense local matrix object that is used during the matrix multiples and solves. │ │ │ │ │ + • IV *vtxmapIV : object that maps vertices to owning processors for the factorization and matrix- │ │ │ │ │ multiplies. │ │ │ │ │ - • IV *myownedIV : object that contains a list of all vertices owned by this processor. │ │ │ │ │ - • IV *ownersIV:objectthatmapsfrontstoowningprocessorsforthefactorizationandmatrix-multiplies. │ │ │ │ │ - • IV *rowmapIV : if pivoting was performed for numerical stability, this object maps rows of the factor │ │ │ │ │ + • IV *myownedIV : object that contains a list of all vertices owned by this processor. │ │ │ │ │ + • IV *ownersIV:objectthatmapsfrontstoowningprocessorsforthefactorizationandmatrix-multiplies. │ │ │ │ │ + • IV *rowmapIV : if pivoting was performed for numerical stability, this object maps rows of the factor │ │ │ │ │ to processors. │ │ │ │ │ - • SolveMap *solvemap : object that maps factor submatrices to owning threads for the solve. │ │ │ │ │ - • MatMulInfo *info : object that holds all the communication information for a distributed matrix- │ │ │ │ │ + • SolveMap *solvemap : object that maps factor submatrices to owning threads for the solve. │ │ │ │ │ + • MatMulInfo *info : object that holds all the communication information for a distributed matrix- │ │ │ │ │ multiply. │ │ │ │ │ - • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ + • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ When greater than 1, more and more output. │ │ │ │ │ - • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ - • MPI Comm comm : MPI communicator. │ │ │ │ │ - 4.2 Prototypes and descriptions of BridgeMPI methods │ │ │ │ │ + • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ + • MPI Comm comm : MPI communicator. │ │ │ │ │ + 4.2 Prototypes and descriptions of BridgeMPI methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the BridgeMPI │ │ │ │ │ object. │ │ │ │ │ - In contrast to the serial and MT bridge objects, there are seven methods instead of five. In a distributed │ │ │ │ │ + In contrast to the serial and MT bridge objects, there are seven methods instead of five. In a distributed │ │ │ │ │ environment, data structures should be partitioned across processors. On the SPOOLES side, the factor │ │ │ │ │ entries, and the X and Y matrices that take part in the solves and matrix-multiplies, are partitioned among │ │ │ │ │ the processors according to the “front structure” and vertex map of the factor matrices. The SPOOLES │ │ │ │ │ solve and matrix-multiply bridge methods expect the local X and Y matrices. On the LANCZOS side, the │ │ │ │ │ Krylov blocks and eigenvectors are partitioned across processors in a simple block manner. (The first of p │ │ │ │ │ processors has the first n/p rows, etc.) │ │ │ │ │ - At the present time, the SPOOLES and LANCZOS software have no agreement on how the data │ │ │ │ │ + At the present time, the SPOOLES and LANCZOS software have no agreement on how the data │ │ │ │ │ should be partitioned. (For example, SPOOLES could tell LANCZOS how it wants the data to be │ │ │ │ │ partitioned, or LANCZOS could tell SPOOLES how it wants the data to be partitioned.) Therefore, │ │ │ │ │ inside the LANCZOS software a global Krylov block is assembled on each processor prior to calling the │ │ │ │ │ solve or matrix-multiply methods. To “translate” between the global blocks to local blocks, and then back │ │ │ │ │ to global blocks, we have written two wrapper methods, JimMatMulMPI() and JimSolveMPI(). Each takes │ │ │ │ │ the global input block, compresses it into a local block, call the bridge matrix-multiply or solve method, │ │ │ │ │ then takes the local output blocks and gathers them on all the processors into each of their global output │ │ │ │ │ blocks. These operations add a considerable cost to the solve and matrix-multiplies, but the next release of │ │ │ │ │ the LANCZOS software will remove these steps. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 16 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 16 │ │ │ │ │ 1. int SetupMPI ( void *data, int *pprbtype, int *pneqns, │ │ │ │ │ - int *pmxbsz, InpMtx *A, InpMtx *B, int *pseed, │ │ │ │ │ - int *pmsglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ + int *pmxbsz, InpMtx *A, InpMtx *B, int *pseed, │ │ │ │ │ + int *pmsglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ All calling sequence parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ - • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ - • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ - – 1 — vibration, a multiply with B is required. │ │ │ │ │ - – 2 — buckling, a multiply with A is required. │ │ │ │ │ - – 3 — simple, no multiply is required. │ │ │ │ │ - • int *pneqns — *pneqns is the number of equations. │ │ │ │ │ - • int *pmxbsz — *pmxbsz is an upper bound on the block size. │ │ │ │ │ - • InpMtx *A — A is a SPOOLES object that holds the matrix A. │ │ │ │ │ - • InpMtx *B — B is a SPOOLES object that holds the matrix B. For an ordinary eigenproblem, │ │ │ │ │ - B is the identity and B is NULL. │ │ │ │ │ - • int *pseed — *pseed is a random number seed. │ │ │ │ │ - • int *pmsglvl—*pmsglvlisamessagelevelforthebridgemethodsandtheSPOOLESmethods │ │ │ │ │ - they call. │ │ │ │ │ - • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ - ods they call. │ │ │ │ │ - • MPI Comm comm — MPI communicator. matrix-multiplies. │ │ │ │ │ + • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ + • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ + – 1 — vibration, a multiply with B is required. │ │ │ │ │ + – 2 — buckling, a multiply with A is required. │ │ │ │ │ + – 3 — simple, no multiply is required. │ │ │ │ │ + • int *pneqns — *pneqns is the number of equations. │ │ │ │ │ + • int *pmxbsz — *pmxbsz is an upper bound on the block size. │ │ │ │ │ + • InpMtx *A — A is a SPOOLES object that holds the matrix A. │ │ │ │ │ + • InpMtx *B — B is a SPOOLES object that holds the matrix B. For an ordinary eigenproblem, │ │ │ │ │ + B is the identity and B is NULL. │ │ │ │ │ + • int *pseed — *pseed is a random number seed. │ │ │ │ │ + • int *pmsglvl—*pmsglvlisamessagelevelforthebridgemethodsandtheSPOOLESmethods │ │ │ │ │ + they call. │ │ │ │ │ + • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ + ods they call. │ │ │ │ │ + • MPI Comm comm — MPI communicator. matrix-multiplies. │ │ │ │ │ This method must be called in the driver program prior to invoking the eigensolver via a call to │ │ │ │ │ lanczos run(). It then follows this sequence of action. │ │ │ │ │ - • The method begins by checking all the input data, and setting the appropriate fields of the │ │ │ │ │ - BridgeMPI object. │ │ │ │ │ - • The pencil object is initialized with A and B. │ │ │ │ │ - • A and B are converted to storage by rows and vector mode. │ │ │ │ │ - • A Graph object is created that contains the sparsity pattern of the union of A and B. │ │ │ │ │ - • The graph is ordered by first finding a recursive dissection partition, and then evaluating the │ │ │ │ │ - orderings produced by nested dissection and multisection, and choosing the better of the two. │ │ │ │ │ - The frontETree object is produced and placed into the bridge object. │ │ │ │ │ - • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ - BridgeMPI object. │ │ │ │ │ - • The vertices in the front tree are permuted, as well as the entries in A and B. Entries in the lower │ │ │ │ │ - triangle of A and B are mapped into the upper triangle, and the storage modes of A and B are │ │ │ │ │ - changed to chevrons and vectors, in preparation for the first factorization. │ │ │ │ │ - • The ownersIV, vtxmapIV and myownedIV objects are created, that map fronts and vertices to │ │ │ │ │ - processors. │ │ │ │ │ - • The entries in A and B are permuted. Entries in the permuted lower triangle are mapped into │ │ │ │ │ - the upper triangle. The storage modes of A and B are changed to chevrons and vectors, and the │ │ │ │ │ - entries of A and B are redistributed to the processors that own them. │ │ │ │ │ - • The symbolic factorization is then computed and loaded in the BridgeMPI object. │ │ │ │ │ - • A FrontMtx object is created to hold the factorization and loaded into the BridgeMPI object. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 17 │ │ │ │ │ + • The method begins by checking all the input data, and setting the appropriate fields of the │ │ │ │ │ + BridgeMPI object. │ │ │ │ │ + • The pencil object is initialized with A and B. │ │ │ │ │ + • A and B are converted to storage by rows and vector mode. │ │ │ │ │ + • A Graph object is created that contains the sparsity pattern of the union of A and B. │ │ │ │ │ + • The graph is ordered by first finding a recursive dissection partition, and then evaluating the │ │ │ │ │ + orderings produced by nested dissection and multisection, and choosing the better of the two. │ │ │ │ │ + The frontETree object is produced and placed into the bridge object. │ │ │ │ │ + • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ + BridgeMPI object. │ │ │ │ │ + • The vertices in the front tree are permuted, as well as the entries in A and B. Entries in the lower │ │ │ │ │ + triangle of A and B are mapped into the upper triangle, and the storage modes of A and B are │ │ │ │ │ + changed to chevrons and vectors, in preparation for the first factorization. │ │ │ │ │ + • The ownersIV, vtxmapIV and myownedIV objects are created, that map fronts and vertices to │ │ │ │ │ + processors. │ │ │ │ │ + • The entries in A and B are permuted. Entries in the permuted lower triangle are mapped into │ │ │ │ │ + the upper triangle. The storage modes of A and B are changed to chevrons and vectors, and the │ │ │ │ │ + entries of A and B are redistributed to the processors that own them. │ │ │ │ │ + • The symbolic factorization is then computed and loaded in the BridgeMPI object. │ │ │ │ │ + • A FrontMtx object is created to hold the factorization and loaded into the BridgeMPI object. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 17 │ │ │ │ │ • ASubMtxManagerobjectiscreatedtoholdthefactor’ssubmatricesandloadedintotheBridgeMPI │ │ │ │ │ object. │ │ │ │ │ • Themapfromfactorsubmatricestotheir owningthreadsis computed and stored in the solvemap │ │ │ │ │ object. │ │ │ │ │ • The distributed matrix-multiplies are set up. │ │ │ │ │ The A and B matrices are now in their permuted ordering, i.e., PAPT and PBPT, and all data struc- │ │ │ │ │ tures are with respect to this ordering. After the Lanczos run completes, any generated eigenvectors │ │ │ │ │ @@ -536,15 +536,15 @@ │ │ │ │ │ • int *pnrows — *pnrows contains the number of global rows in X and Y. │ │ │ │ │ • int *pncols — *pncols contains the number of global columns in X and Y. │ │ │ │ │ • double X[] — this is the global X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • double Y[] — this is the global Y matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ – 1 — vibration, a multiply with B is required. │ │ │ │ │ – 2 — buckling, a multiply with A is required. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 18 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 18 │ │ │ │ │ – 3 — simple, no multiply is required. │ │ │ │ │ • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ 4. void MatMulMPI ( int *pnrows, int *pncols, double X[], double Y[], │ │ │ │ │ int *pprbtype, void *data ) ; │ │ │ │ │ This method computes a multiply of the form Y = IX, Y = AX or Y = BX. All calling sequence │ │ │ │ │ parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • int *pnrows — *pnrows contains the number of local rows in X and Y. │ │ │ │ │ @@ -578,31 +578,31 @@ │ │ │ │ │ • double X[] — this is the local X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • double Y[] — this is the local Y matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ • int *perror — on return, *perror holds an error code. │ │ │ │ │ 1 normal return -3 X is NULL │ │ │ │ │ -1 pnrows is NULL -4 Y is NULL │ │ │ │ │ -2 pncols is NULL -5 data is NULL │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 19 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 19 │ │ │ │ │ 7. int CleanupMPI ( void *data ) ; │ │ │ │ │ This method releases all the storage used by the SPOOLES library functions. │ │ │ │ │ Return value: 1 for a normal return, -1 if a data is NULL. │ │ │ │ │ - 4.3 The testMPI Driver Program │ │ │ │ │ + 4.3 The testMPI Driver Program │ │ │ │ │ A complete listing of the multithreaded driver program is found in chapter C. The program is invoked by │ │ │ │ │ this command sequence. │ │ │ │ │ testMPI msglvl msgFile parmFile seed inFileA inFileB │ │ │ │ │ where │ │ │ │ │ - • msglvl is the message level for the BridgeMPI methods and the SPOOLES software. │ │ │ │ │ - • msgFile is the message file for the BridgeMPI methods and the SPOOLES software. │ │ │ │ │ - • parmFile is the input file for the parameters of the eigensystem to be solved. │ │ │ │ │ - • seed is a random number seed used by the SPOOLES software. │ │ │ │ │ - • inFileA is the Harwell-Boeing file for the matrix A. │ │ │ │ │ - • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ + • msglvl is the message level for the BridgeMPI methods and the SPOOLES software. │ │ │ │ │ + • msgFile is the message file for the BridgeMPI methods and the SPOOLES software. │ │ │ │ │ + • parmFile is the input file for the parameters of the eigensystem to be solved. │ │ │ │ │ + • seed is a random number seed used by the SPOOLES software. │ │ │ │ │ + • inFileA is the Harwell-Boeing file for the matrix A. │ │ │ │ │ + • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ This program is executed for some sample matrices by the do ST * shell scripts in the drivers directory. │ │ │ │ │ - Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ + Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ 1. Each processor determines the number of processors and its rank. │ │ │ │ │ 2. Each processor decodes the command line inputs. │ │ │ │ │ 3. Processor 0 reads the header of the Harwell-Boeing file for A and broadcasts the number of equations │ │ │ │ │ to all processors. │ │ │ │ │ 4. Each processor reads from the parmFile file the parameters that define the eigensystem to be solved. │ │ │ │ │ 5. Each processor initializes its Lanczos eigensolver workspace. │ │ │ │ │ 6. Each processor fills its Lanczos communication structure with some parameters. │ │ │ │ │ @@ -644,117 +644,117 @@ │ │ │ │ │ double eigval[1000], sigma[2]; │ │ │ │ │ double *evec; │ │ │ │ │ int error, fstevl, lfinit, lstevl, mxbksz, msglvl, ncol, ndiscd, │ │ │ │ │ neig, neigvl, nfound, nnonzeros, nrhs, nrow, prbtyp, rc, │ │ │ │ │ retc, rfinit, seed, warnng ; │ │ │ │ │ int c__5 = 5, output = 6 ; │ │ │ │ │ 20 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 21 │ │ │ │ │ - int *lanczos_wksp; │ │ │ │ │ - InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ - FILE *msgFile, *parmFile; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 21 │ │ │ │ │ + int *lanczos_wksp; │ │ │ │ │ + InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ + FILE *msgFile, *parmFile; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( argc != 7 ) { │ │ │ │ │ - fprintf(stdout, │ │ │ │ │ - "\n\n usage : %s msglvl msgFile parmFile seed inFileA inFileB" │ │ │ │ │ - "\n msglvl -- message level" │ │ │ │ │ - "\n msgFile -- message file" │ │ │ │ │ - "\n parmFile -- input parameters file" │ │ │ │ │ - "\n seed -- random number seed, used for ordering" │ │ │ │ │ - "\n inFileA -- stiffness matrix in Harwell-Boeing format" │ │ │ │ │ - "\n inFileB -- mass matrix in Harwell-Boeing format" │ │ │ │ │ - "\n used for prbtyp = 1 or 2" │ │ │ │ │ - "\n", argv[0]) ; │ │ │ │ │ - return ; │ │ │ │ │ + fprintf(stdout, │ │ │ │ │ + "\n\n usage : %s msglvl msgFile parmFile seed inFileA inFileB" │ │ │ │ │ + "\n msglvl -- message level" │ │ │ │ │ + "\n msgFile -- message file" │ │ │ │ │ + "\n parmFile -- input parameters file" │ │ │ │ │ + "\n seed -- random number seed, used for ordering" │ │ │ │ │ + "\n inFileA -- stiffness matrix in Harwell-Boeing format" │ │ │ │ │ + "\n inFileB -- mass matrix in Harwell-Boeing format" │ │ │ │ │ + "\n used for prbtyp = 1 or 2" │ │ │ │ │ + "\n", argv[0]) ; │ │ │ │ │ + return ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ - msgFile = stdout ; │ │ │ │ │ + msgFile = stdout ; │ │ │ │ │ } else if ( (msgFile = fopen(argv[2], "a")) == NULL ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ - "\n unable to open file %s\n", │ │ │ │ │ - argv[0], argv[2]) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ + "\n unable to open file %s\n", │ │ │ │ │ + argv[0], argv[2]) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ parmFileName = argv[3] ; │ │ │ │ │ - seed = atoi(argv[4]) ; │ │ │ │ │ + seed = atoi(argv[4]) ; │ │ │ │ │ inFileName_A = argv[5] ; │ │ │ │ │ inFileName_B = argv[6] ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n %s " │ │ │ │ │ - "\n msglvl -- %d" │ │ │ │ │ - "\n msgFile -- %s" │ │ │ │ │ - "\n parmFile -- %s" │ │ │ │ │ - "\n seed -- %d" │ │ │ │ │ + "\n msglvl -- %d" │ │ │ │ │ + "\n msgFile -- %s" │ │ │ │ │ + "\n parmFile -- %s" │ │ │ │ │ + "\n seed -- %d" │ │ │ │ │ "\n stiffness file -- %s" │ │ │ │ │ - "\n mass file -- %s" │ │ │ │ │ + "\n mass file -- %s" │ │ │ │ │ "\n", │ │ │ │ │ argv[0], msglvl, argv[2], parmFileName, seed, │ │ │ │ │ inFileName_A, inFileName_B) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ - read in the Harwell-Boeing matrix information │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ + read in the Harwell-Boeing matrix information │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 22 │ │ │ │ │ - exit(0) ; │ │ │ │ │ + fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 22 │ │ │ │ │ + exit(0) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ readHB_info (inFileName_A, &nrow, &ncol, &nnonzeros, &type, &nrhs) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in header information for A", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - read in eigenvalue problem data │ │ │ │ │ - neigvl -- # of desired eigenvalues │ │ │ │ │ - which -- which eigenvalues to compute │ │ │ │ │ - ’l’ or ’L’ lowest (smallest magnitude) │ │ │ │ │ - ’h’ or ’H’ highest (largest magnitude) │ │ │ │ │ - ’n’ or ’N’ nearest to central value │ │ │ │ │ - ’c’ or ’C’ nearest to central value │ │ │ │ │ - ’a’ or ’A’ all eigenvalues in interval │ │ │ │ │ - pbtype -- type of problem │ │ │ │ │ - ’v’ or ’V’ generalized symmetric problem (K,M) │ │ │ │ │ - with M positive semidefinite (vibration problem) │ │ │ │ │ - ’b’ or ’B’ generalized symmetric problem (K,K_s) │ │ │ │ │ - with K positive semidefinite │ │ │ │ │ - with K_s posibly indefinite (buckling problem) │ │ │ │ │ - ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ - lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ - eigenvalues. if false, no restriction on lower bound │ │ │ │ │ - lftend -- left endpoint of interval │ │ │ │ │ - rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ - eigenvalues. if false, no restriction on upper bound │ │ │ │ │ - rhtend -- right endpoint of interval │ │ │ │ │ - center -- center of interval │ │ │ │ │ - mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ - shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ - of the smallest nonzero eigenvalues │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + read in eigenvalue problem data │ │ │ │ │ + neigvl -- # of desired eigenvalues │ │ │ │ │ + which -- which eigenvalues to compute │ │ │ │ │ + ’l’ or ’L’ lowest (smallest magnitude) │ │ │ │ │ + ’h’ or ’H’ highest (largest magnitude) │ │ │ │ │ + ’n’ or ’N’ nearest to central value │ │ │ │ │ + ’c’ or ’C’ nearest to central value │ │ │ │ │ + ’a’ or ’A’ all eigenvalues in interval │ │ │ │ │ + pbtype -- type of problem │ │ │ │ │ + ’v’ or ’V’ generalized symmetric problem (K,M) │ │ │ │ │ + with M positive semidefinite (vibration problem) │ │ │ │ │ + ’b’ or ’B’ generalized symmetric problem (K,K_s) │ │ │ │ │ + with K positive semidefinite │ │ │ │ │ + with K_s posibly indefinite (buckling problem) │ │ │ │ │ + ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ + lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ + eigenvalues. if false, no restriction on lower bound │ │ │ │ │ + lftend -- left endpoint of interval │ │ │ │ │ + rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ + eigenvalues. if false, no restriction on upper bound │ │ │ │ │ + rhtend -- right endpoint of interval │ │ │ │ │ + center -- center of interval │ │ │ │ │ + mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ + shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ + of the smallest nonzero eigenvalues │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ parmFile = fopen(parmFileName, "r"); │ │ │ │ │ fscanf(parmFile, "%d %s %s %d %le %d %le %le %d %le", │ │ │ │ │ &neigvl, which, pbtype, &lfinit, &lftend, │ │ │ │ │ &rfinit, &rhtend, ¢er, &mxbksz, &shfscl) ; │ │ │ │ │ fclose(parmFile); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in eigenvalue problem data", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ - check and set the problem type parameter │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ + check and set the problem type parameter │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ */ │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 23 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 23 │ │ │ │ │ switch ( pbtype[1] ) { │ │ │ │ │ case ’v’ : case ’V’ : prbtyp = 1 ; break ; │ │ │ │ │ case ’b’ : case ’B’ : prbtyp = 2 ; break ; │ │ │ │ │ case ’o’ : case ’O’ : prbtyp = 3 ; break ; │ │ │ │ │ default : │ │ │ │ │ fprintf(stderr, "\n invalid problem type %s", pbtype) ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ @@ -798,122 +798,122 @@ │ │ │ │ │ InpMtx_readFromHBfile ( inpmtxA, inFileName_A ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in A", t2 - t1) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n InpMtx A object after loading") ; │ │ │ │ │ InpMtx_writeForHumanEye(inpmtxA, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 24 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 24 │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : set A’s parameters", t2 - t1) ; │ │ │ │ │ if ( prbtyp != 3 ) { │ │ │ │ │ - if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ - exit(0) ; │ │ │ │ │ - } │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - inpmtxB = InpMtx_new() ; │ │ │ │ │ - InpMtx_readFromHBfile ( inpmtxB, inFileName_B ) ; │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : read in B", t2 - t1) ; │ │ │ │ │ + if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ + fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ + exit(0) ; │ │ │ │ │ + } │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + inpmtxB = InpMtx_new() ; │ │ │ │ │ + InpMtx_readFromHBfile ( inpmtxB, inFileName_B ) ; │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : read in B", t2 - t1) ; │ │ │ │ │ } else { │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - inpmtxB = NULL ; │ │ │ │ │ - lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : set B’s parameters", t2 - t1) ; │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + inpmtxB = NULL ; │ │ │ │ │ + lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : set B’s parameters", t2 - t1) ; │ │ │ │ │ } │ │ │ │ │ if ( msglvl > 2 && prbtyp != 3 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n InpMtx B object after loading") ; │ │ │ │ │ - InpMtx_writeForHumanEye(inpmtxB, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n InpMtx B object after loading") ; │ │ │ │ │ + InpMtx_writeForHumanEye(inpmtxB, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ - ----------------------------- │ │ │ │ │ - set up the solver environment │ │ │ │ │ - ----------------------------- │ │ │ │ │ + ----------------------------- │ │ │ │ │ + set up the solver environment │ │ │ │ │ + ----------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ rc = Setup((void *) &bridge, &prbtyp, &nrow, &mxbksz, inpmtxA, inpmtxB, │ │ │ │ │ - &seed, &msglvl, msgFile) ; │ │ │ │ │ + &seed, &msglvl, msgFile) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : set up solver environment", t2 - t1) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error %d from Setup()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n fatal error %d from Setup()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------------------- │ │ │ │ │ - invoke eigensolver │ │ │ │ │ - nfound -- # of eigenvalues found and kept │ │ │ │ │ - ndisc -- # of additional eigenvalues discarded │ │ │ │ │ - ----------------------------------------------- │ │ │ │ │ + ----------------------------------------------- │ │ │ │ │ + invoke eigensolver │ │ │ │ │ + nfound -- # of eigenvalues found and kept │ │ │ │ │ + ndisc -- # of additional eigenvalues discarded │ │ │ │ │ + ----------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_run(&neigvl, &which[1] , &pbtype[1], &lfinit, &lftend, │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 25 │ │ │ │ │ - &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ - &ndiscd, &warnng, &error, Factor, MatMul, Solve ) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 25 │ │ │ │ │ + &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ + &ndiscd, &warnng, &error, Factor, MatMul, Solve ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : time for lanczos run", t2 - t1) ; │ │ │ │ │ /* │ │ │ │ │ - ------------------------- │ │ │ │ │ - get eigenvalues and print │ │ │ │ │ - ------------------------- │ │ │ │ │ + ------------------------- │ │ │ │ │ + get eigenvalues and print │ │ │ │ │ + ------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ neig = nfound + ndiscd ; │ │ │ │ │ lstevl = nfound ; │ │ │ │ │ lanczos_eigenvalues (&lanczos_wksp, eigval, &neig, &retc); │ │ │ │ │ fstevl = 1 ; │ │ │ │ │ if ( nfound == 0 ) fstevl = -1 ; │ │ │ │ │ if ( ndiscd > 0 ) lstevl = -ndiscd ; │ │ │ │ │ hdslp5_ ("computed eigenvalues returned by hdserl", │ │ │ │ │ &neig, eigval, &output, 39L ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : get and print eigenvalues ", t2 - t1) ; │ │ │ │ │ /* │ │ │ │ │ - ------------------------- │ │ │ │ │ - get eigenvectors and print │ │ │ │ │ - ------------------------- │ │ │ │ │ + ------------------------- │ │ │ │ │ + get eigenvectors and print │ │ │ │ │ + ------------------------- │ │ │ │ │ */ │ │ │ │ │ /* │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ neig = min ( 50, nrow ); │ │ │ │ │ Lncz_ALLOCATE(evec, double, nrow, retc); │ │ │ │ │ for ( i = 1 ; i <= nfound ; i++ ) { │ │ │ │ │ - lanczos_eigenvector ( &lanczos_wksp, &i, &i, newToOld, │ │ │ │ │ - evec, &nrow, &retc ) ; │ │ │ │ │ - hdslp5_ ( "computed eigenvector returned by hdserc", │ │ │ │ │ - &neig, evec, &output, 39L ) ; │ │ │ │ │ + lanczos_eigenvector ( &lanczos_wksp, &i, &i, newToOld, │ │ │ │ │ + evec, &nrow, &retc ) ; │ │ │ │ │ + hdslp5_ ( "computed eigenvector returned by hdserc", │ │ │ │ │ + &neig, evec, &output, 39L ) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : get and print eigenvectors ", t2 - t1) ; │ │ │ │ │ */ │ │ │ │ │ /* │ │ │ │ │ - ------------------------ │ │ │ │ │ - free the working storage │ │ │ │ │ - ------------------------ │ │ │ │ │ + ------------------------ │ │ │ │ │ + free the working storage │ │ │ │ │ + ------------------------ │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_free( &lanczos_wksp ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free lanczos workspace ", t2 - t1) ; │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ rc = Cleanup(&bridge) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 26 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 26 │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free solver workspace ", t2 - t1) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, "\n error return %d from Cleanup()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n error return %d from Cleanup()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n") ; │ │ │ │ │ fclose(msgFile) ; │ │ │ │ │ return ; } │ │ │ │ │ Appendix B │ │ │ │ │ testMT.c — A Multithreaded Driver │ │ │ │ │ Program │ │ │ │ │ @@ -942,279 +942,279 @@ │ │ │ │ │ double *evec; │ │ │ │ │ int error, fstevl, lfinit, lstevl, msglvl, mxbksz, ncol, ndiscd, │ │ │ │ │ neig, neigvl, nfound, nnonzeros, nrhs, nrow, nthreads, │ │ │ │ │ prbtyp, rc, retc, rfinit, seed, warnng ; │ │ │ │ │ int c__5 = 5, output = 6 ; │ │ │ │ │ int *lanczos_wksp; │ │ │ │ │ 27 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 28 │ │ │ │ │ - InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ - FILE *msgFile, *parmFile ; │ │ │ │ │ - /*--------------------------------------------------------------------*/ │ │ │ │ │ - if ( argc != 8 ) { │ │ │ │ │ - fprintf(stdout, │ │ │ │ │ - "\n\n usage : %s msglvl msgFile parmFile seed nthread inFileA inFileB" │ │ │ │ │ - "\n msglvl -- message level" │ │ │ │ │ - "\n msgFile -- message file" │ │ │ │ │ - "\n parmFile -- input parameters file" │ │ │ │ │ - "\n seed -- random number seed, used for ordering" │ │ │ │ │ - "\n nthreads -- number of threads " │ │ │ │ │ - "\n inFileA -- stiffness matrix, in Harwell-Boeing format" │ │ │ │ │ - "\n inFileB -- mass matrix, in Harwell-Boeing format" │ │ │ │ │ - "\n used for prbtype = 1 or 2" │ │ │ │ │ - "\n", argv[0]) ; │ │ │ │ │ - return ; │ │ │ │ │ - } │ │ │ │ │ - msglvl = atoi(argv[1]) ; │ │ │ │ │ - if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ - msgFile = stdout ; │ │ │ │ │ - } else if ( (msgFile = fopen(argv[2], "a")) == NULL ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ - "\n able to open file %s\n", argv[0], argv[2]) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ - } │ │ │ │ │ - parmFileName = argv[3] ; │ │ │ │ │ - seed = atoi(argv[4]) ; │ │ │ │ │ - nthreads = atoi(argv[5]) ; │ │ │ │ │ - inFileName_A = argv[6] ; │ │ │ │ │ - inFileName_B = argv[7] ; │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - "\n %s " │ │ │ │ │ - "\n msglvl -- %d" │ │ │ │ │ - "\n message file -- %s" │ │ │ │ │ - "\n parameter file -- %s" │ │ │ │ │ - "\n stiffness matrix file -- %s" │ │ │ │ │ - "\n mass matrix file -- %s" │ │ │ │ │ - "\n random number seed -- %d" │ │ │ │ │ - "\n number of threads -- %d" │ │ │ │ │ - "\n", │ │ │ │ │ - argv[0], msglvl, argv[2], parmFileName, inFileName_A, │ │ │ │ │ - inFileName_B, seed, nthreads) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - /* │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ - read in the Harwell-Boeing matrix information │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ - exit(0) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 29 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 28 │ │ │ │ │ + InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ + FILE *msgFile, *parmFile ; │ │ │ │ │ + /*--------------------------------------------------------------------*/ │ │ │ │ │ + if ( argc != 8 ) { │ │ │ │ │ + fprintf(stdout, │ │ │ │ │ + "\n\n usage : %s msglvl msgFile parmFile seed nthread inFileA inFileB" │ │ │ │ │ + "\n msglvl -- message level" │ │ │ │ │ + "\n msgFile -- message file" │ │ │ │ │ + "\n parmFile -- input parameters file" │ │ │ │ │ + "\n seed -- random number seed, used for ordering" │ │ │ │ │ + "\n nthreads -- number of threads " │ │ │ │ │ + "\n inFileA -- stiffness matrix, in Harwell-Boeing format" │ │ │ │ │ + "\n inFileB -- mass matrix, in Harwell-Boeing format" │ │ │ │ │ + "\n used for prbtype = 1 or 2" │ │ │ │ │ + "\n", argv[0]) ; │ │ │ │ │ + return ; │ │ │ │ │ + } │ │ │ │ │ + msglvl = atoi(argv[1]) ; │ │ │ │ │ + if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ + msgFile = stdout ; │ │ │ │ │ + } else if ( (msgFile = fopen(argv[2], "a")) == NULL ) { │ │ │ │ │ + fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ + "\n able to open file %s\n", argv[0], argv[2]) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ + } │ │ │ │ │ + parmFileName = argv[3] ; │ │ │ │ │ + seed = atoi(argv[4]) ; │ │ │ │ │ + nthreads = atoi(argv[5]) ; │ │ │ │ │ + inFileName_A = argv[6] ; │ │ │ │ │ + inFileName_B = argv[7] ; │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + "\n %s " │ │ │ │ │ + "\n msglvl -- %d" │ │ │ │ │ + "\n message file -- %s" │ │ │ │ │ + "\n parameter file -- %s" │ │ │ │ │ + "\n stiffness matrix file -- %s" │ │ │ │ │ + "\n mass matrix file -- %s" │ │ │ │ │ + "\n random number seed -- %d" │ │ │ │ │ + "\n number of threads -- %d" │ │ │ │ │ + "\n", │ │ │ │ │ + argv[0], msglvl, argv[2], parmFileName, inFileName_A, │ │ │ │ │ + inFileName_B, seed, nthreads) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + /* │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ + read in the Harwell-Boeing matrix information │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ + fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ + exit(0) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 29 │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ readHB_info (inFileName_A, &nrow, &ncol, &nnonzeros, &type, &nrhs) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in harwell-boeing header info", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - read in eigenvalue problem data │ │ │ │ │ - neigvl -- # of desired eigenvalues │ │ │ │ │ - which -- which eigenvalues to compute │ │ │ │ │ - ’l’ or ’L’ lowest (smallest magnitude) │ │ │ │ │ - ’h’ or ’H’ highest (largest magnitude) │ │ │ │ │ - ’n’ or ’N’ nearest to central value │ │ │ │ │ - ’c’ or ’C’ nearest to central value │ │ │ │ │ - ’a’ or ’A’ all eigenvalues in interval │ │ │ │ │ - pbtype -- type of problem │ │ │ │ │ - ’v’ or ’V’ generalized symmetric problem (K,M) │ │ │ │ │ - with M positive semidefinite (vibration problem) │ │ │ │ │ - ’b’ or ’B’ generalized symmetric problem (K,K_s) │ │ │ │ │ - with K positive semidefinite │ │ │ │ │ - with K_s posibly indefinite (buckling problem) │ │ │ │ │ - ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ - lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ - eigenvalues. if false, no restriction on lower bound │ │ │ │ │ - lftend -- left endpoint of interval │ │ │ │ │ - rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ - eigenvalues. if false, no restriction on upper bound │ │ │ │ │ - rhtend -- right endpoint of interval │ │ │ │ │ - center -- center of interval │ │ │ │ │ - mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ - shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ - of the smallest nonzero eigenvalues │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + read in eigenvalue problem data │ │ │ │ │ + neigvl -- # of desired eigenvalues │ │ │ │ │ + which -- which eigenvalues to compute │ │ │ │ │ + ’l’ or ’L’ lowest (smallest magnitude) │ │ │ │ │ + ’h’ or ’H’ highest (largest magnitude) │ │ │ │ │ + ’n’ or ’N’ nearest to central value │ │ │ │ │ + ’c’ or ’C’ nearest to central value │ │ │ │ │ + ’a’ or ’A’ all eigenvalues in interval │ │ │ │ │ + pbtype -- type of problem │ │ │ │ │ + ’v’ or ’V’ generalized symmetric problem (K,M) │ │ │ │ │ + with M positive semidefinite (vibration problem) │ │ │ │ │ + ’b’ or ’B’ generalized symmetric problem (K,K_s) │ │ │ │ │ + with K positive semidefinite │ │ │ │ │ + with K_s posibly indefinite (buckling problem) │ │ │ │ │ + ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ + lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ + eigenvalues. if false, no restriction on lower bound │ │ │ │ │ + lftend -- left endpoint of interval │ │ │ │ │ + rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ + eigenvalues. if false, no restriction on upper bound │ │ │ │ │ + rhtend -- right endpoint of interval │ │ │ │ │ + center -- center of interval │ │ │ │ │ + mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ + shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ + of the smallest nonzero eigenvalues │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ parmFile = fopen(parmFileName, "r"); │ │ │ │ │ fscanf(parmFile, "%d %s %s %d %le %d %le %le %d %le", │ │ │ │ │ &neigvl, which, pbtype, &lfinit, &lftend, │ │ │ │ │ &rfinit, &rhtend, ¢er, &mxbksz, &shfscl) ; │ │ │ │ │ fclose(parmFile); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in eigenvalue problem data", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ - check and set the problem type parameter │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 30 │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ + check and set the problem type parameter │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 30 │ │ │ │ │ */ │ │ │ │ │ switch ( pbtype[1] ) { │ │ │ │ │ case ’v’ : │ │ │ │ │ case ’V’ : │ │ │ │ │ - prbtyp = 1 ; │ │ │ │ │ - break ; │ │ │ │ │ + prbtyp = 1 ; │ │ │ │ │ + break ; │ │ │ │ │ case ’b’ : │ │ │ │ │ case ’B’ : │ │ │ │ │ - prbtyp = 2 ; │ │ │ │ │ - break ; │ │ │ │ │ + prbtyp = 2 ; │ │ │ │ │ + break ; │ │ │ │ │ case ’o’ : │ │ │ │ │ case ’O’ : │ │ │ │ │ - prbtyp = 3 ; │ │ │ │ │ - break ; │ │ │ │ │ + prbtyp = 3 ; │ │ │ │ │ + break ; │ │ │ │ │ default : │ │ │ │ │ - fprintf(stderr, "\n invalid problem type %s", pbtype) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n invalid problem type %s", pbtype) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ - ---------------------------- │ │ │ │ │ - Initialize Lanczos workspace │ │ │ │ │ - ---------------------------- │ │ │ │ │ + ---------------------------- │ │ │ │ │ + Initialize Lanczos workspace │ │ │ │ │ + ---------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_init_ ( &lanczos_wksp ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : initialize Lanczos workspace", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - initialize communication structure │ │ │ │ │ - ---------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + initialize communication structure │ │ │ │ │ + ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "order-of-problem", &nrow, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "accuracy-tolerance", &tolact, &retc); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "max-block-size", &mxbksz, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "shift-scale", &shfscl, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "message_level", &msglvl, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "number-of-threads", &nthreads, &retc); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : init lanczos communication structure", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ - create the InpMtx objects for matrix A and B │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ + create the InpMtx objects for matrix A and B │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 31 │ │ │ │ │ - fprintf(msgFile, "\n no file to read A from") ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 31 │ │ │ │ │ + fprintf(msgFile, "\n no file to read A from") ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ inpmtxA = InpMtx_new() ; │ │ │ │ │ InpMtx_readFromHBfile ( inpmtxA, inFileName_A ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in A", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n InpMtx A object after loading") ; │ │ │ │ │ - InpMtx_writeForHumanEye(inpmtxA, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n InpMtx A object after loading") ; │ │ │ │ │ + InpMtx_writeForHumanEye(inpmtxA, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ if ( prbtyp != 3 ) { │ │ │ │ │ - if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ - exit(0) ; │ │ │ │ │ - } │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - inpmtxB = InpMtx_new() ; │ │ │ │ │ - InpMtx_readFromHBfile ( inpmtxB, inFileName_B ) ; │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : read in B", t2 - t1) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - if ( msglvl > 2 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n InpMtx B object after loading") ; │ │ │ │ │ - InpMtx_writeForHumanEye(inpmtxB, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ + fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ + exit(0) ; │ │ │ │ │ } │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + inpmtxB = InpMtx_new() ; │ │ │ │ │ + InpMtx_readFromHBfile ( inpmtxB, inFileName_B ) ; │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : read in B", t2 - t1) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + if ( msglvl > 2 ) { │ │ │ │ │ + fprintf(msgFile, "\n\n InpMtx B object after loading") ; │ │ │ │ │ + InpMtx_writeForHumanEye(inpmtxB, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + } │ │ │ │ │ } else { │ │ │ │ │ - inpmtxB = NULL ; │ │ │ │ │ - lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ + inpmtxB = NULL ; │ │ │ │ │ + lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ - ----------------------------- │ │ │ │ │ - set up the solver environment │ │ │ │ │ - ----------------------------- │ │ │ │ │ + ----------------------------- │ │ │ │ │ + set up the solver environment │ │ │ │ │ + ----------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ rc = SetupMT((void *) &bridge, &prbtyp, &nrow, &mxbksz, inpmtxA, │ │ │ │ │ - inpmtxB, &seed, &nthreads, &msglvl, msgFile) ; │ │ │ │ │ + inpmtxB, &seed, &nthreads, &msglvl, msgFile) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : set up the solver environment", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, "\n error return %d from SetupMT()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n error return %d from SetupMT()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 32 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 32 │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------------------- │ │ │ │ │ - invoke eigensolver │ │ │ │ │ - nfound -- # of eigenvalues found and kept │ │ │ │ │ - ndisc -- # of additional eigenvalues discarded │ │ │ │ │ - ----------------------------------------------- │ │ │ │ │ + ----------------------------------------------- │ │ │ │ │ + invoke eigensolver │ │ │ │ │ + nfound -- # of eigenvalues found and kept │ │ │ │ │ + ndisc -- # of additional eigenvalues discarded │ │ │ │ │ + ----------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_run ( &neigvl, &which[1] , &pbtype[1], &lfinit, &lftend, │ │ │ │ │ - &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ - &ndiscd, &warnng, &error, FactorMT, MatMulMT, SolveMT ) ; │ │ │ │ │ + &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ + &ndiscd, &warnng, &error, FactorMT, MatMulMT, SolveMT ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : time for lanczos_run", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ------------------------- │ │ │ │ │ - get eigenvalues and print │ │ │ │ │ - ------------------------- │ │ │ │ │ + ------------------------- │ │ │ │ │ + get eigenvalues and print │ │ │ │ │ + ------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ neig = nfound + ndiscd ; │ │ │ │ │ lstevl = nfound ; │ │ │ │ │ lanczos_eigenvalues (&lanczos_wksp, eigval, &neig, &retc); │ │ │ │ │ fstevl = 1 ; │ │ │ │ │ if ( nfound == 0 ) fstevl = -1 ; │ │ │ │ │ if ( ndiscd > 0 ) lstevl = -ndiscd ; │ │ │ │ │ hdslp5_ ("computed eigenvalues returned by hdserl", │ │ │ │ │ &neig, eigval, &output, 39L ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : get and print eigenvalues", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ------------------------- │ │ │ │ │ - get eigenvectors and print │ │ │ │ │ - ------------------------- │ │ │ │ │ + ------------------------- │ │ │ │ │ + get eigenvectors and print │ │ │ │ │ + ------------------------- │ │ │ │ │ */ │ │ │ │ │ /* │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ neig = min ( 50, nrow ); │ │ │ │ │ Lncz_ALLOCATE(evec, double, nrow, retc); │ │ │ │ │ for (i = 1; i<= nfound; i++) {d │ │ │ │ │ - lanczos_eigenvector ( &lanczos_wksp, &i, &i, newToOld, │ │ │ │ │ - evec, &nrow, &retc ) ; │ │ │ │ │ - hdslp5_ ( "computed eigenvector returned by hdserc", │ │ │ │ │ - &neig, evec, &output, 39L ) ; │ │ │ │ │ + lanczos_eigenvector ( &lanczos_wksp, &i, &i, newToOld, │ │ │ │ │ + evec, &nrow, &retc ) ; │ │ │ │ │ + hdslp5_ ( "computed eigenvector returned by hdserc", │ │ │ │ │ + &neig, evec, &output, 39L ) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : get and print eigenvectors", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ */ │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 33 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 33 │ │ │ │ │ /* │ │ │ │ │ - ------------------------ │ │ │ │ │ - free the working storage │ │ │ │ │ - ------------------------ │ │ │ │ │ + ------------------------ │ │ │ │ │ + free the working storage │ │ │ │ │ + ------------------------ │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_free( &lanczos_wksp ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free lanczos workspace", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ @@ -1254,327 +1254,327 @@ │ │ │ │ │ InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ FILE *msgFile, *parmFile ; │ │ │ │ │ double lftend, rhtend, center, shfscl, t1, t2 ; │ │ │ │ │ double c__1 = 1.0, c__4 = 4.0, tolact = 2.309970868130169e-11 ; │ │ │ │ │ double eigval[1000], sigma[2] ; │ │ │ │ │ double *evec; │ │ │ │ │ 34 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 35 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 35 │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - find out the identity of this process and the number of process │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + find out the identity of this process and the number of process │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MPI_Init(&argc, &argv) ; │ │ │ │ │ MPI_Comm_dup(MPI_COMM_WORLD, &comm) ; │ │ │ │ │ MPI_Comm_rank(comm, &myid) ; │ │ │ │ │ MPI_Comm_size(comm, &nproc) ; │ │ │ │ │ fprintf(stdout, "\n myid = %d", myid) ; │ │ │ │ │ fflush(stdout) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------------------- │ │ │ │ │ - decode the command line input │ │ │ │ │ - ----------------------------- │ │ │ │ │ + ----------------------------- │ │ │ │ │ + decode the command line input │ │ │ │ │ + ----------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 7 ) { │ │ │ │ │ - fprintf(stdout, │ │ │ │ │ - "\n\n usage : %s msglvl msgFile parmFile seed inFileA inFileB" │ │ │ │ │ - "\n msglvl -- message level" │ │ │ │ │ - "\n msgFile -- message file" │ │ │ │ │ - "\n parmFile -- input parameters file" │ │ │ │ │ - "\n seed -- random number seed, used for ordering" │ │ │ │ │ - "\n inFileA -- stiffness matrix, in Harwell-Boeing format" │ │ │ │ │ - "\n inFileB -- mass matrix, in Harwell-Boeing format" │ │ │ │ │ - "\n used for prbtyp = 1 or 2" │ │ │ │ │ - "\n", argv[0]) ; │ │ │ │ │ - return ; │ │ │ │ │ + fprintf(stdout, │ │ │ │ │ + "\n\n usage : %s msglvl msgFile parmFile seed inFileA inFileB" │ │ │ │ │ + "\n msglvl -- message level" │ │ │ │ │ + "\n msgFile -- message file" │ │ │ │ │ + "\n parmFile -- input parameters file" │ │ │ │ │ + "\n seed -- random number seed, used for ordering" │ │ │ │ │ + "\n inFileA -- stiffness matrix, in Harwell-Boeing format" │ │ │ │ │ + "\n inFileB -- mass matrix, in Harwell-Boeing format" │ │ │ │ │ + "\n used for prbtyp = 1 or 2" │ │ │ │ │ + "\n", argv[0]) ; │ │ │ │ │ + return ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ - msgFile = stdout ; │ │ │ │ │ + msgFile = stdout ; │ │ │ │ │ } else { │ │ │ │ │ - int length = strlen(argv[2]) + 1 + 4 ; │ │ │ │ │ - char *buffer = CVinit(length, ’\0’) ; │ │ │ │ │ - sprintf(buffer, "%s.%d", argv[2], myid) ; │ │ │ │ │ - if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ - "\n unable to open file %s\n", │ │ │ │ │ - argv[0], buffer) ; │ │ │ │ │ - return ; │ │ │ │ │ - } │ │ │ │ │ - CVfree(buffer) ; │ │ │ │ │ + int length = strlen(argv[2]) + 1 + 4 ; │ │ │ │ │ + char *buffer = CVinit(length, ’\0’) ; │ │ │ │ │ + sprintf(buffer, "%s.%d", argv[2], myid) ; │ │ │ │ │ + if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ + fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ + "\n unable to open file %s\n", │ │ │ │ │ + argv[0], buffer) ; │ │ │ │ │ + return ; │ │ │ │ │ + } │ │ │ │ │ + CVfree(buffer) ; │ │ │ │ │ } │ │ │ │ │ parmFileName = argv[3] ; │ │ │ │ │ - seed = atoi(argv[4]) ; │ │ │ │ │ + seed = atoi(argv[4]) ; │ │ │ │ │ inFileName_A = argv[5] ; │ │ │ │ │ inFileName_B = argv[6] ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n %s " │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 36 │ │ │ │ │ - "\n msglvl -- %d" │ │ │ │ │ - "\n message file -- %s" │ │ │ │ │ - "\n parameter file -- %s" │ │ │ │ │ - "\n stiffness matrix file -- %s" │ │ │ │ │ - "\n mass matrix file -- %s" │ │ │ │ │ - "\n random number seed -- %d" │ │ │ │ │ - "\n", │ │ │ │ │ - argv[0], msglvl, argv[2], parmFileName, inFileName_A, │ │ │ │ │ - inFileName_B, seed) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ - exit(0) ; │ │ │ │ │ - } │ │ │ │ │ - /*--------------------------------------------------------------------*/ │ │ │ │ │ - if ( myid == 0 ) { │ │ │ │ │ - /* │ │ │ │ │ - ---------------------------------------------- │ │ │ │ │ - processor zero reads in the matrix header info │ │ │ │ │ - ---------------------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - readHB_info(inFileName_A, &nrow, &ncol, &nnonzeros, &type, &nrhs) ; │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : read in harwell-boeing header info", │ │ │ │ │ - t2 - t1) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - } │ │ │ │ │ - MPI_Bcast((void *) &nrow, 1, MPI_INT, 0, MPI_COMM_WORLD) ; │ │ │ │ │ - /*--------------------------------------------------------------------*/ │ │ │ │ │ - /* │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - read in eigenvalue problem data │ │ │ │ │ - neigvl -- # of desired eigenvalues │ │ │ │ │ - which -- which eigenvalues to compute │ │ │ │ │ - ’l’ or ’L’ lowest (smallest magnitude) │ │ │ │ │ - ’h’ or ’H’ highest (largest magnitude) │ │ │ │ │ - ’n’ or ’N’ nearest to central value │ │ │ │ │ - ’c’ or ’C’ nearest to central value │ │ │ │ │ - ’a’ or ’A’ all eigenvalues in interval │ │ │ │ │ - pbtype -- type of problem │ │ │ │ │ - ’v’ or ’V’ generalized symmetric problem (K,M) │ │ │ │ │ - with M positive semidefinite (vibration problem) │ │ │ │ │ - ’b’ or ’B’ generalized symmetric problem (K,K_s) │ │ │ │ │ - with K positive semidefinite │ │ │ │ │ - with K_s posibly indefinite (buckling problem) │ │ │ │ │ - ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ - lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ - eigenvalues. if false, no restriction on lower bound │ │ │ │ │ - lftend -- left endpoint of interval │ │ │ │ │ - rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 37 │ │ │ │ │ - eigenvalues. if false, no restriction on upper bound │ │ │ │ │ - rhtend -- right endpoint of interval │ │ │ │ │ - center -- center of interval │ │ │ │ │ - mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ - shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ - of the smallest nonzero eigenvalues │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 36 │ │ │ │ │ + "\n msglvl -- %d" │ │ │ │ │ + "\n message file -- %s" │ │ │ │ │ + "\n parameter file -- %s" │ │ │ │ │ + "\n stiffness matrix file -- %s" │ │ │ │ │ + "\n mass matrix file -- %s" │ │ │ │ │ + "\n random number seed -- %d" │ │ │ │ │ + "\n", │ │ │ │ │ + argv[0], msglvl, argv[2], parmFileName, inFileName_A, │ │ │ │ │ + inFileName_B, seed) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ + fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ + exit(0) ; │ │ │ │ │ + } │ │ │ │ │ + /*--------------------------------------------------------------------*/ │ │ │ │ │ + if ( myid == 0 ) { │ │ │ │ │ + /* │ │ │ │ │ + ---------------------------------------------- │ │ │ │ │ + processor zero reads in the matrix header info │ │ │ │ │ + ---------------------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + readHB_info(inFileName_A, &nrow, &ncol, &nnonzeros, &type, &nrhs) ; │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : read in harwell-boeing header info", │ │ │ │ │ + t2 - t1) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + } │ │ │ │ │ + MPI_Bcast((void *) &nrow, 1, MPI_INT, 0, MPI_COMM_WORLD) ; │ │ │ │ │ + /*--------------------------------------------------------------------*/ │ │ │ │ │ + /* │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + read in eigenvalue problem data │ │ │ │ │ + neigvl -- # of desired eigenvalues │ │ │ │ │ + which -- which eigenvalues to compute │ │ │ │ │ + ’l’ or ’L’ lowest (smallest magnitude) │ │ │ │ │ + ’h’ or ’H’ highest (largest magnitude) │ │ │ │ │ + ’n’ or ’N’ nearest to central value │ │ │ │ │ + ’c’ or ’C’ nearest to central value │ │ │ │ │ + ’a’ or ’A’ all eigenvalues in interval │ │ │ │ │ + pbtype -- type of problem │ │ │ │ │ + ’v’ or ’V’ generalized symmetric problem (K,M) │ │ │ │ │ + with M positive semidefinite (vibration problem) │ │ │ │ │ + ’b’ or ’B’ generalized symmetric problem (K,K_s) │ │ │ │ │ + with K positive semidefinite │ │ │ │ │ + with K_s posibly indefinite (buckling problem) │ │ │ │ │ + ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ + lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ + eigenvalues. if false, no restriction on lower bound │ │ │ │ │ + lftend -- left endpoint of interval │ │ │ │ │ + rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 37 │ │ │ │ │ + eigenvalues. if false, no restriction on upper bound │ │ │ │ │ + rhtend -- right endpoint of interval │ │ │ │ │ + center -- center of interval │ │ │ │ │ + mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ + shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ + of the smallest nonzero eigenvalues │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ parmFile = fopen(parmFileName, "r"); │ │ │ │ │ fscanf(parmFile, "%d %s %s %d %le %d %le %le %d %le", │ │ │ │ │ &neigvl, which, pbtype, &lfinit, &lftend, │ │ │ │ │ &rfinit, &rhtend, ¢er, &mxbksz, &shfscl) ; │ │ │ │ │ fclose(parmFile); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in eigenvalue problem data", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ - check and set the problem type parameter │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ + check and set the problem type parameter │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ */ │ │ │ │ │ switch ( pbtype[1] ) { │ │ │ │ │ case ’v’ : case ’V’ : prbtyp = 1 ; break ; │ │ │ │ │ case ’b’ : case ’B’ : prbtyp = 2 ; break ; │ │ │ │ │ case ’o’ : case ’O’ : prbtyp = 3 ; break ; │ │ │ │ │ default : │ │ │ │ │ - fprintf(stderr, "\n invalid problem type %s", pbtype) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n invalid problem type %s", pbtype) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ - ---------------------------- │ │ │ │ │ - Initialize Lanczos workspace │ │ │ │ │ - ---------------------------- │ │ │ │ │ + ---------------------------- │ │ │ │ │ + Initialize Lanczos workspace │ │ │ │ │ + ---------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_init_ ( &lanczos_wksp ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : initialize Lanczos workspace", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - initialize communication structure │ │ │ │ │ - ---------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + initialize communication structure │ │ │ │ │ + ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "order-of-problem", &nrow, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "accuracy-tolerance", &tolact, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "max-block-size", &mxbksz, &retc ); │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 38 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 38 │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "shift-scale", &shfscl, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "message_level", &msglvl, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "mpi-communicator", &comm, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "qfile-pathname", "lqfil", &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "mqfil-pathname", "lmqfil", &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "evfil-pathname", "evcfil", &retc ); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n CPU %8.3f : init the lanczos communication structure", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( myid == 0 ) { │ │ │ │ │ /* │ │ │ │ │ - ------------------------------------ │ │ │ │ │ - processor zero reads in the matrices │ │ │ │ │ - ------------------------------------ │ │ │ │ │ - */ │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - inpmtxA = InpMtx_new() ; │ │ │ │ │ - InpMtx_readFromHBfile ( inpmtxA, inFileName_A ) ; │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : read in first matrix", t2 - t1) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - if ( msglvl > 2 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n InpMtx A object after loading") ; │ │ │ │ │ - InpMtx_writeForHumanEye(inpmtxA, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - } │ │ │ │ │ - lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ - if ( prbtyp != 3 ) { │ │ │ │ │ - if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ + ------------------------------------ │ │ │ │ │ + processor zero reads in the matrices │ │ │ │ │ + ------------------------------------ │ │ │ │ │ + */ │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + inpmtxA = InpMtx_new() ; │ │ │ │ │ + InpMtx_readFromHBfile ( inpmtxA, inFileName_A ) ; │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : read in first matrix", t2 - t1) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + if ( msglvl > 2 ) { │ │ │ │ │ + fprintf(msgFile, "\n\n InpMtx A object after loading") ; │ │ │ │ │ + InpMtx_writeForHumanEye(inpmtxA, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + } │ │ │ │ │ + lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ + if ( prbtyp != 3 ) { │ │ │ │ │ + if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ exit(0) ; │ │ │ │ │ - } │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - inpmtxB = InpMtx_new() ; │ │ │ │ │ - InpMtx_readFromHBfile ( inpmtxB, inFileName_B ) ; │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : read in first matrix", t2 - t1) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - if ( msglvl > 2 ) { │ │ │ │ │ + } │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + inpmtxB = InpMtx_new() ; │ │ │ │ │ + InpMtx_readFromHBfile ( inpmtxB, inFileName_B ) ; │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : read in first matrix", t2 - t1) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n InpMtx B object after loading") ; │ │ │ │ │ InpMtx_writeForHumanEye(inpmtxB, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - } │ │ │ │ │ - } else { │ │ │ │ │ - inpmtxB = NULL ; │ │ │ │ │ - lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ - } │ │ │ │ │ + } │ │ │ │ │ + } else { │ │ │ │ │ + inpmtxB = NULL ; │ │ │ │ │ + lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ + } │ │ │ │ │ } else { │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 39 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 39 │ │ │ │ │ /* │ │ │ │ │ - ------------------------------------------------ │ │ │ │ │ - other processors initialize their local matrices │ │ │ │ │ - ------------------------------------------------ │ │ │ │ │ - */ │ │ │ │ │ - inpmtxA = InpMtx_new() ; │ │ │ │ │ - InpMtx_init(inpmtxA, INPMTX_BY_CHEVRONS, SPOOLES_REAL, 0, 0) ; │ │ │ │ │ - lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ - if ( prbtyp == 1 || prbtyp == 2 ) { │ │ │ │ │ - inpmtxB = InpMtx_new() ; │ │ │ │ │ - InpMtx_init(inpmtxB, INPMTX_BY_CHEVRONS, SPOOLES_REAL, 0, 0) ; │ │ │ │ │ - } else { │ │ │ │ │ - inpmtxB = NULL ; │ │ │ │ │ - lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ - } │ │ │ │ │ - } │ │ │ │ │ - /* │ │ │ │ │ - ----------------------------- │ │ │ │ │ - set up the solver environment │ │ │ │ │ - ----------------------------- │ │ │ │ │ + ------------------------------------------------ │ │ │ │ │ + other processors initialize their local matrices │ │ │ │ │ + ------------------------------------------------ │ │ │ │ │ + */ │ │ │ │ │ + inpmtxA = InpMtx_new() ; │ │ │ │ │ + InpMtx_init(inpmtxA, INPMTX_BY_CHEVRONS, SPOOLES_REAL, 0, 0) ; │ │ │ │ │ + lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ + if ( prbtyp == 1 || prbtyp == 2 ) { │ │ │ │ │ + inpmtxB = InpMtx_new() ; │ │ │ │ │ + InpMtx_init(inpmtxB, INPMTX_BY_CHEVRONS, SPOOLES_REAL, 0, 0) ; │ │ │ │ │ + } else { │ │ │ │ │ + inpmtxB = NULL ; │ │ │ │ │ + lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ + } │ │ │ │ │ + } │ │ │ │ │ + /* │ │ │ │ │ + ----------------------------- │ │ │ │ │ + set up the solver environment │ │ │ │ │ + ----------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ rc = SetupMPI((void *) &bridge, &prbtyp, &nrow, &mxbksz, inpmtxA, │ │ │ │ │ - inpmtxB, &seed, &msglvl, msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ + inpmtxB, &seed, &msglvl, msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : set up solver environment", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error return %d from SetupMPI()", rc) ; │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n fatal error return %d from SetupMPI()", rc) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------------------- │ │ │ │ │ - invoke eigensolver │ │ │ │ │ - nfound -- # of eigenvalues found and kept │ │ │ │ │ - ndisc -- # of additional eigenvalues discarded │ │ │ │ │ - ----------------------------------------------- │ │ │ │ │ + ----------------------------------------------- │ │ │ │ │ + invoke eigensolver │ │ │ │ │ + nfound -- # of eigenvalues found and kept │ │ │ │ │ + ndisc -- # of additional eigenvalues discarded │ │ │ │ │ + ----------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_run ( &neigvl, &which[1] , &pbtype[1], &lfinit, &lftend, │ │ │ │ │ - &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ - &ndiscd, &warnng, &error, FactorMPI, JimMatMulMPI, │ │ │ │ │ - JimSolveMPI ) ; │ │ │ │ │ + &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ + &ndiscd, &warnng, &error, FactorMPI, JimMatMulMPI, │ │ │ │ │ + JimSolveMPI ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : time for lanczos run", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( myid == 0 ) { │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------------------- │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 40 │ │ │ │ │ - processor 0 deals with eigenvalues and vectors │ │ │ │ │ - ---------------------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - neig = nfound + ndiscd ; │ │ │ │ │ - lstevl = nfound ; │ │ │ │ │ - lanczos_eigenvalues (&lanczos_wksp, eigval, &neig, &retc); │ │ │ │ │ - fstevl = 1 ; │ │ │ │ │ - if ( nfound == 0 ) fstevl = -1 ; │ │ │ │ │ - if ( ndiscd > 0 ) lstevl = -ndiscd ; │ │ │ │ │ - hdslp5_ ("computed eigenvalues returned by hdserl", │ │ │ │ │ - &neig, eigval, &output, 39L ) ; │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : get and print eigenvalues", │ │ │ │ │ - t2 - t1) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - /* │ │ │ │ │ - ------------------------- │ │ │ │ │ - get eigenvectors and print │ │ │ │ │ - ------------------------- │ │ │ │ │ - */ │ │ │ │ │ - /* │ │ │ │ │ - MARKTIME(t1) ; │ │ │ │ │ - neig = min ( 50, nrow ); │ │ │ │ │ - Lncz_ALLOCATE(evec, double, nrow, retc); │ │ │ │ │ - for (i = 1; i<= nfound; i++) { │ │ │ │ │ - lanczos_eigenvector(&lanczos_wksp, &i, &i, newToOld, │ │ │ │ │ - evec, &nrow, &retc) ; │ │ │ │ │ - hdslp5_("computed eigenvector returned by hdserc", │ │ │ │ │ - &neig, evec, &output, 39L ) ; │ │ │ │ │ - } │ │ │ │ │ - MARKTIME(t2) ; │ │ │ │ │ - fprintf(msgFile, "\n CPU %8.3f : get and print eigenvectors", │ │ │ │ │ - t2 - t1) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + ---------------------------------------------- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 40 │ │ │ │ │ + processor 0 deals with eigenvalues and vectors │ │ │ │ │ + ---------------------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + neig = nfound + ndiscd ; │ │ │ │ │ + lstevl = nfound ; │ │ │ │ │ + lanczos_eigenvalues (&lanczos_wksp, eigval, &neig, &retc); │ │ │ │ │ + fstevl = 1 ; │ │ │ │ │ + if ( nfound == 0 ) fstevl = -1 ; │ │ │ │ │ + if ( ndiscd > 0 ) lstevl = -ndiscd ; │ │ │ │ │ + hdslp5_ ("computed eigenvalues returned by hdserl", │ │ │ │ │ + &neig, eigval, &output, 39L ) ; │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : get and print eigenvalues", │ │ │ │ │ + t2 - t1) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + /* │ │ │ │ │ + ------------------------- │ │ │ │ │ + get eigenvectors and print │ │ │ │ │ + ------------------------- │ │ │ │ │ + */ │ │ │ │ │ + /* │ │ │ │ │ + MARKTIME(t1) ; │ │ │ │ │ + neig = min ( 50, nrow ); │ │ │ │ │ + Lncz_ALLOCATE(evec, double, nrow, retc); │ │ │ │ │ + for (i = 1; i<= nfound; i++) { │ │ │ │ │ + lanczos_eigenvector(&lanczos_wksp, &i, &i, newToOld, │ │ │ │ │ + evec, &nrow, &retc) ; │ │ │ │ │ + hdslp5_("computed eigenvector returned by hdserc", │ │ │ │ │ + &neig, evec, &output, 39L ) ; │ │ │ │ │ + } │ │ │ │ │ + MARKTIME(t2) ; │ │ │ │ │ + fprintf(msgFile, "\n CPU %8.3f : get and print eigenvectors", │ │ │ │ │ + t2 - t1) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ */ │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ - ------------------------ │ │ │ │ │ - free the working storage │ │ │ │ │ - ------------------------ │ │ │ │ │ + ------------------------ │ │ │ │ │ + free the working storage │ │ │ │ │ + ------------------------ │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_free(&lanczos_wksp) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free lanczos workspace", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ CleanupMPI(&bridge) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free solver workspace", t2 - t1) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 41 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 41 │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ fprintf(msgFile, "\n") ; │ │ │ │ │ fclose(msgFile) ; │ │ │ │ │ return ; } │ │ │ │ │ Index │ │ │ │ │ Cleanup(), 7 │ │ ├── ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ ├── FrontMtx.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMMI8 CMSY10 CMTI10 │ │ │ │ %%+ CMSL10 CMBX10 CMMI12 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o FrontMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1349,22 +1349,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1538,88 +1538,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4589,19 +4578,19 @@ │ │ │ │ 62 50 1[54 11[86 1[62 84 84 77 84 5[42 2[70 3[80 8[56 │ │ │ │ 56 56 56 56 56 56 56 56 56 1[31 46[{}40 99.6264 /CMBX12 │ │ │ │ rf /Fc 135[62 3[62 1[62 2[62 62 32[62 6[62 1[62 68[{}8 │ │ │ │ 119.552 /CMTT12 rf /Fd 134[71 2[71 75 52 53 55 1[75 67 │ │ │ │ 75 112 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 │ │ │ │ 16[67 67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fe 132[52 │ │ │ │ 39[58 2[71 79 2[63 6[69 69[{}6 90.9091 /CMBX10 rf /Ff │ │ │ │ -141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 │ │ │ │ -44[{}12 90.9091 /CMSL10 rf /Fg 135[42 1[42 49 30 37 38 │ │ │ │ -1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 1[46 12[65 │ │ │ │ -1[66 11[59 62 69 2[68 6[28 58[{}27 90.9091 /CMTI10 rf │ │ │ │ -/Fh 148[45 3[45 45 9[61 61 31[45 4[0 38[45 12[71 1[71{}10 │ │ │ │ +139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 │ │ │ │ +3[25 44[{}12 90.9091 /CMSL10 rf /Fg 135[42 1[42 49 30 │ │ │ │ +37 38 1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 1[46 │ │ │ │ +12[65 1[66 11[59 62 69 2[68 6[28 58[{}27 90.9091 /CMTI10 │ │ │ │ +rf /Fh 148[45 3[45 45 9[61 61 31[45 4[0 38[45 12[71 1[71{}10 │ │ │ │ 90.9091 /CMSY10 rf /Fi 167[58 3[41 8[60 39 31 58 1[45 │ │ │ │ 5[37 4[20 59[{}9 66.4176 /CMMI8 rf /Fj 139[33 1[41 2[44 │ │ │ │ 55 7[45 11[62 53 75 86 1[62 2[69 72 58 3[62 77 50 40 │ │ │ │ 2[58 1[75 1[69 68 48 3[71 32[52 27[{}24 90.9091 /CMMI10 │ │ │ │ rf /Fk 133[48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 1[48 │ │ │ │ 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ @@ -4698,17 +4687,17 @@ │ │ │ │ Fj(P)43 b Fl(and)30 b Fj(Q)g Fl(are)h(the)f(iden)m(tit)m(y)-8 │ │ │ │ b(.)111 5294 y(3.)46 b Fj(A)k Fl(=)e Fj(QR)e Fl(for)e(square)g(or)h │ │ │ │ (rectangular)h Fj(A)p Fl(.)84 b Fj(Q)44 b Fl(is)h(an)f(orthogonal)i │ │ │ │ (matrix)f(that)h(is)e(not)h(explicitly)227 5407 y(computed)30 │ │ │ │ b(or)h(stored.)41 b Fj(R)31 b Fl(is)f(upp)s(er)e(triangular.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 998 4 v │ │ │ │ -1180 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 141 399 a Fl(The)44 b(factorization)j(is)d(p)s │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 141 399 a Fl(The)44 b(factorization)j(is)d(p)s │ │ │ │ (erformed)f(using)h(a)g(one)h(dimensional)f(decomp)s(osition)h(of)f │ │ │ │ (the)h(global)g(sparse)0 511 y(matrix.)c(A)31 b(t)m(ypical)h │ │ │ │ Fg(fr)-5 b(ont)31 b Fl(of)g(the)f(matrix)h(is)f(found)f(the)i(shaded)f │ │ │ │ (p)s(ortion)g(of)g(the)h(\014gure)e(b)s(elo)m(w.)1650 │ │ │ │ 1237 y @beginspecial 0 @llx 0 @lly 100 @urx 100 @ury │ │ │ │ 720 @rwi 720 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../FrontMtx/doc/simple.eps │ │ │ │ @@ -4792,17 +4781,17 @@ │ │ │ │ b(ject,)36 b(but)d(it)i(do)s(es)f(not)g(mo)s(dify)f(the)h(ob)5 │ │ │ │ b(ject,)37 b(nor)c(do)s(es)h(it)g(o)m(wn)g(the)h(storage)g(for)f(the)g │ │ │ │ Fk(ETree)227 5407 y Fl(ob)5 b(ject.)42 b(Th)m(us)29 b(m)m(ultiple)i │ │ │ │ (fron)m(t)g(matrices)g(can)g(all)g(p)s(oin)m(t)f(to)i(the)e(same)h │ │ │ │ Fk(ETree)e Fl(ob)5 b(ject)31 b(sim)m(ultaneously)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 998 4 v 1179 100 a Fk(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(3)136 399 y Fh(\017)46 b Fl(An)35 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1034 4 v 1215 100 a Fk(FrontMtx)29 │ │ │ │ +b Ff(:)40 b Fg(DRAFT)121 b Ff(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(3)136 399 y Fh(\017)46 b Fl(An)35 │ │ │ │ b Fk(IVL)g Fl(ob)5 b(ject)36 b(\()p Fk(I)p Fl(n)m(teger)g │ │ │ │ Fk(V)p Fl(ector)h Fk(L)p Fl(ist\),)g(con)m(tains)f(the)g(sym)m(b)s │ │ │ │ (olic)g(factorization.)58 b(F)-8 b(or)36 b(eac)m(h)g(fron)m(t,)h(it)227 │ │ │ │ 511 y(giv)m(es)31 b(the)g(list)f(of)g(in)m(ternal)h(and)e(external)i │ │ │ │ (ro)m(ws)f(and)f(columns,)h(used)f(to)h(initialize)j(a)d(fron)m(t)g │ │ │ │ (prior)f(to)i(its)227 624 y(factorization.)55 b(F)-8 │ │ │ │ b(or)35 b(a)f(factorization)j(without)d(piv)m(oting,)j(this)d(ob)5 │ │ │ │ @@ -4886,17 +4875,17 @@ │ │ │ │ b(After)26 b(the)f(factorization)227 5181 y(is)45 b(complete,)50 │ │ │ │ b(the)45 b(data)h(structures)e(are)i(p)s(ostpro)s(cessed)e(to)h(yield)g │ │ │ │ (submatrices)g(that)h(con)m(tain)g(the)227 5294 y(coupling)34 │ │ │ │ b(b)s(et)m(w)m(een)g(fron)m(ts.)50 b(The)33 b(w)m(orking)h(storage)h │ │ │ │ (during)d(the)i(solv)m(es)g(is)g(also)g(managed)g(b)m(y)g │ │ │ │ Fk(SubMtx)227 5407 y Fl(ob)5 b(jects.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 998 4 v │ │ │ │ -1180 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 136 399 a Fh(\017)46 b Fl(Eac)m(h)25 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 136 399 a Fh(\017)46 b Fl(Eac)m(h)25 │ │ │ │ b(submatrix)f(represen)m(ts)h(the)f(coupling)h(b)s(et)m(w)m(een)g(t)m │ │ │ │ (w)m(o)h(fron)m(ts,)g Fj(I)31 b Fl(and)24 b Fj(J)9 b │ │ │ │ Fl(.)39 b(T)-8 b(o)25 b(enable)g(rapid)f(random)227 511 │ │ │ │ y(access)30 b(to)f(these)f(submatrices,)h(w)m(e)f(use)g(a)h │ │ │ │ Fk(I2Ohash)d Fl(ob)5 b(ject)29 b(that)f(is)h(a)f(hash)f(table)i(whose)f │ │ │ │ (k)m(eys)h(are)g(t)m(w)m(o)227 624 y(in)m(tegers)j(and)e(whose)g(data)h │ │ │ │ (is)f(a)h Fk(void)47 b(*)30 b Fl(p)s(oin)m(ter.)136 808 │ │ │ │ @@ -4958,17 +4947,17 @@ │ │ │ │ (sparsityflag)27 b Fl(:)41 b(\015ag)31 b(to)g(sp)s(ecify)f(storage)i │ │ │ │ (of)e(factors.)330 5153 y Fe({)45 b Fk(0)30 b Fl(|)h(eac)m(h)g(fron)m │ │ │ │ (t)g(is)f(dense)330 5294 y Fe({)45 b Fk(1)g Fl(|)h(a)g(fron)m(t)f(ma)m │ │ │ │ (y)h(b)s(e)f(sparse)g(due)g(to)h(en)m(tries)h(dropp)s(ed)c(b)s(ecause)j │ │ │ │ (they)f(are)h(b)s(elo)m(w)g(a)g(drop)427 5407 y(tolerance.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 998 4 v 1179 100 a Fk(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(5)136 399 y Fh(\017)46 b Fk(int)h(dataMode)28 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1034 4 v 1215 100 a Fk(FrontMtx)29 │ │ │ │ +b Ff(:)40 b Fg(DRAFT)121 b Ff(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(5)136 399 y Fh(\017)46 b Fk(int)h(dataMode)28 │ │ │ │ b Fl(:)41 b(\015ag)31 b(to)g(sp)s(ecify)f(data)h(storage.)330 │ │ │ │ 583 y Fe({)45 b Fk(1)30 b Fl(|)h(one-dimensional,)g(used)f(during)f │ │ │ │ (the)h(factorization.)330 727 y Fe({)45 b Fk(2)30 b Fl(|)h(t)m(w)m │ │ │ │ (o-dimensional,)h(used)e(during)f(the)h(solv)m(es.)136 │ │ │ │ 911 y Fh(\017)46 b Fk(int)h(nentD)29 b Fl(:)i(n)m(um)m(b)s(er)e(of)h │ │ │ │ (en)m(tries)h(in)f Fj(D)136 1096 y Fh(\017)46 b Fk(int)h(nentL)29 │ │ │ │ b Fl(:)i(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f Fj(L)136 │ │ │ │ @@ -5025,19 +5014,19 @@ │ │ │ │ (submatrices)g(in)g Fj(L)p Fl(,)i(used)d(during)227 5110 │ │ │ │ y(the)c(solv)m(es.)136 5294 y Fh(\017)46 b Fk(I2Ohash)g(*upperhash)33 │ │ │ │ b Fl(:)51 b(p)s(oin)m(ter)35 b(to)i(a)f Fk(I2Ohash)d │ │ │ │ Fl(hash)i(table)h(for)g(submatrices)f(in)g Fj(U)10 b │ │ │ │ Fl(,)37 b(used)e(during)227 5407 y(the)c(solv)m(es.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 998 4 v │ │ │ │ -1180 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 136 399 a Fh(\017)46 b Fk(SubMtxManager)e │ │ │ │ -(*manager)30 b Fl(:)43 b(p)s(oin)m(ter)31 b(to)h(an)g(ob)5 │ │ │ │ -b(ject)32 b(that)g(manages)h(the)e(instances)h(of)g(submatrices)227 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 136 399 a Fh(\017)46 b Fk(SubMtxManager)e(*manager) │ │ │ │ +30 b Fl(:)43 b(p)s(oin)m(ter)31 b(to)h(an)g(ob)5 b(ject)32 │ │ │ │ +b(that)g(manages)h(the)e(instances)h(of)g(submatrices)227 │ │ │ │ 511 y(during)d(the)i(factors)g(and)f(solv)m(es.)136 719 │ │ │ │ y Fh(\017)46 b Fk(Lock)h(*lock)27 b Fl(:)40 b(p)s(oin)m(ter)30 │ │ │ │ b(to)f(a)h Fk(Lock)e Fl(lo)s(c)m(k)i(used)e(in)h(a)g(m)m(ultithreaded)g │ │ │ │ (en)m(vironmen)m(t)h(to)g(ensure)e(exlusiv)m(e)227 832 │ │ │ │ y(access)i(while)f(allo)s(cating)i(storage)g(in)d(the)h │ │ │ │ Fk(IV)g Fl(and)f Fk(IVL)g Fl(ob)5 b(jects.)41 b(This)28 │ │ │ │ b(is)h(not)g(used)f(in)g(a)i(serial)f(or)g(MPI)227 945 │ │ │ │ @@ -5095,17 +5084,17 @@ │ │ │ │ (ost-pro)s(cessed\),)i(and)f Fk(0)g Fl(otherwise.)0 5057 │ │ │ │ y Fd(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fc(FrontMtx)c Fd(metho)t(ds)0 5294 y Fl(This)g(section)j(con)m(tains)f │ │ │ │ (brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 y Fk(FrontMtx)28 │ │ │ │ b Fl(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 998 4 v 1179 100 a Fk(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1034 4 v 1215 100 a Fk(FrontMtx)29 │ │ │ │ +b Ff(:)40 b Fg(DRAFT)121 b Ff(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ b(metho)s(ds)0 593 y Fl(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ (metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ (default)f(\014elds,)h(clearing)0 706 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ (data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 930 │ │ │ │ y(1.)46 b Fk(FrontMtx)g(*)h(FrontMtx_new)e(\()i(void)g(\))g(;)227 │ │ │ │ 1078 y Fl(This)35 b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e │ │ │ │ (the)h Fk(FrontMtx)d Fl(structure)i(and)g(then)g(sets)h(the)g(default) │ │ │ │ @@ -5164,17 +5153,17 @@ │ │ │ │ (exits.)111 5111 y(2.)46 b Fk(int)h(FrontMtx_neqns)d(\()k(FrontMtx)d │ │ │ │ (*frontmtx)g(\))j(;)227 5259 y Fl(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ (n)m(um)m(b)s(er)f(of)i(equations)g(in)f(the)h(matrix.)227 │ │ │ │ 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fk(frontmtx)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g │ │ │ │ (prin)m(ted)e(and)h(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 998 4 v │ │ │ │ -1180 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 111 399 a Fl(3.)46 b Fk(Tree)h(*)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(FrontMtx)28 b Ff(:)41 b Fg(DRAFT)30 b Ff(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 111 399 a Fl(3.)46 b Fk(Tree)h(*)g │ │ │ │ (FrontMtx_frontTree)c(\()48 b(FrontMtx)d(*frontmtx)g(\))j(;)227 │ │ │ │ 552 y Fl(This)30 b(metho)s(d)g(returns)f(the)h Fk(Tree)g │ │ │ │ Fl(ob)5 b(ject)31 b(for)f(the)h(fron)m(ts.)227 706 y │ │ │ │ Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(frontmtx)e │ │ │ │ Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g(prin)m(ted)e(and)h │ │ │ │ (the)h(program)f(exits.)111 900 y(4.)46 b Fk(void)h │ │ │ │ (FrontMtx_initialFrontDim)o(ensi)o(ons)41 b(\()48 b(FrontMtx)d │ │ │ │ @@ -5242,17 +5231,17 @@ │ │ │ │ (submatrix)f Fj(D)3073 5155 y Fi(J)n(;J)3179 5141 y Fl(.)227 │ │ │ │ 5294 y Fg(Err)-5 b(or)31 b(che)-5 b(cking:)38 b Fl(If)27 │ │ │ │ b Fk(frontmtx)d Fl(is)j Fk(NULL)p Fl(,)f(or)h(if)g Fk(J)f │ │ │ │ Fl(is)h(not)g(in)g Fk([0,nfront\))p Fl(,)d(an)j(error)g(message)h(is)e │ │ │ │ (prin)m(ted)227 5407 y(and)k(the)h(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 998 4 v 1179 100 a Fk(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(9)66 399 y(10.)46 b Fk(SubMtx)g(*)i │ │ │ │ +TeXDict begin 9 8 bop 91 100 1034 4 v 1215 100 a Fk(FrontMtx)29 │ │ │ │ +b Ff(:)40 b Fg(DRAFT)121 b Ff(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(9)66 399 y(10.)46 b Fk(SubMtx)g(*)i │ │ │ │ (FrontMtx_upperMtx)43 b(\()k(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g │ │ │ │ (K)g(\))h(;)227 554 y Fl(This)32 b(metho)s(d)h(returns)e(a)i(p)s(oin)m │ │ │ │ (ter)g(to)h(the)f(ob)5 b(ject)33 b(that)h(con)m(tains)g(submatrix)e │ │ │ │ Fj(U)3087 568 y Fi(J)n(;K)3212 554 y Fl(.)48 b(If)32 │ │ │ │ b Fj(K)k Fl(=)29 b Fj(nf)10 b(r)s(ont)p Fl(,)227 667 │ │ │ │ y(then)30 b(the)h(ob)5 b(ject)31 b(con)m(taining)h Fj(U)1370 │ │ │ │ 682 y Fi(J)n(;@)t(J)1547 667 y Fl(is)e(returned.)227 │ │ │ │ @@ -5324,17 +5313,17 @@ │ │ │ │ b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ Fk(IVL)e Fl(ob)5 b(ject)31 b(that)g(holds)f(the)h(lo)m(w)m(er)g(blo)s │ │ │ │ (c)m(ks.)227 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fl(If)30 b Fk(frontmtx)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fl(10)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 0 399 a Fb(1.2.3)112 b(Initialization)39 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fl(10)p 182 100 1011 4 │ │ │ │ +v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f(11,)h │ │ │ │ +(2021)p 2889 100 V 0 399 a Fb(1.2.3)112 b(Initialization)39 │ │ │ │ b(metho)s(ds)111 604 y Fl(1.)46 b Fk(void)h(FrontMtx_init)d(\()k │ │ │ │ (FrontMtx)d(*frontmtx,)g(ETree)h(*frontETree,)705 716 │ │ │ │ y(IVL)g(*symbfacIVL,)f(int)i(type,)f(int)h(symmetryflag,)d(int)j │ │ │ │ (sparsityflag,)705 829 y(int)f(pivotingflag,)f(int)i(lockflag,)e(int)i │ │ │ │ (myid,)f(IV)h(*ownersIV,)705 942 y(SubMtxManager)d(*manager,)h(int)i │ │ │ │ (msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 1101 y Fl(This)23 │ │ │ │ b(metho)s(d)h(initializes)i(the)e(ob)5 b(ject,)26 b(allo)s(cating)h │ │ │ │ @@ -5402,17 +5391,17 @@ │ │ │ │ (indices)g(\(when)f(nonsymem)m(tric\))h(are)g(copied.)48 │ │ │ │ b(Finally)34 b(the)e(fron)m(t's)h(en)m(tries)227 5248 │ │ │ │ y(are)e(zero)s(ed)g(via)g(a)f(call)i(to)f Fk(Chv)p 1317 │ │ │ │ 5248 V 34 w(zero\(\))p Fl(.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fl(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(11)111 399 y(2.)46 b Fk(char)h │ │ │ │ +TeXDict begin 11 10 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(11)111 399 y(2.)46 b Fk(char)h │ │ │ │ (FrontMtx_factorVisit)42 b(\()48 b(FrontMtx)d(*frontmtx,)g(Pencil)h │ │ │ │ (*pencil,)g(int)h(J,)370 511 y(int)g(myid,)g(int)g(owners[],)e(Chv)i │ │ │ │ (*fronts[],)e(int)i(lookahead,)e(double)h(tau,)370 624 │ │ │ │ y(double)h(droptol,)e(char)i(status[],)e(IP)i(*heads[],)e(IV)j │ │ │ │ (*pivotsizesIV,)c(DV)j(*workDV,)370 737 y(int)g(parent[],)f(ChvList)f │ │ │ │ (*aggList,)h(ChvList)g(*postList,)f(ChvManager)g(*chvmanager,)370 │ │ │ │ 850 y(int)i(stats[],)f(double)g(cpus[],)g(int)h(msglvl,)f(FILE)g │ │ │ │ @@ -5475,17 +5464,17 @@ │ │ │ │ (ultithreaded)g(and)f(MPI)h(factor)h(and)e(solv)m(e)i(metho)s(ds)f(to)g │ │ │ │ (load)h(the)227 5262 y(dequeue)30 b(with)g(the)h(activ)m(e)i(lea)m(v)m │ │ │ │ (es)f(in)e(the)h(fron)m(t)f(tree)h(with)f(resp)s(ect)h(to)g(the)f │ │ │ │ (thread)h(or)f(pro)s(cessor.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fl(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fl(12)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 111 399 a Fl(8.)46 b Fk(ChvList)g(*)i │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fl(12)p 182 100 1011 │ │ │ │ +4 v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ +(11,)h(2021)p 2889 100 V 111 399 a Fl(8.)46 b Fk(ChvList)g(*)i │ │ │ │ (FrontMtx_postList)43 b(\()k(FrontMtx)f(*frontmtx,)f(IV)i │ │ │ │ (*frontOwnersIV,)1659 511 y(int)g(lockflag)f(\))h(;)227 │ │ │ │ 666 y Fl(This)31 b(metho)s(d)h(is)g(called)h(b)m(y)e(the)h(m)m │ │ │ │ (ultithreaded)g(and)g(MPI)g(factor)g(metho)s(ds)g(to)g(create)i(and)d │ │ │ │ (return)g(a)227 779 y(list)g(ob)5 b(ject)32 b(to)f(hold)f(p)s(ostp)s │ │ │ │ (oned)f(c)m(hevrons)h(and)g(help)g(sync)m(hronize)g(the)h │ │ │ │ (factorization.)227 933 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ @@ -5553,17 +5542,17 @@ │ │ │ │ b(.)227 5098 y Fg(Err)j(or)34 b(che)-5 b(cking:)40 b │ │ │ │ Fl(None)31 b(presen)m(tly)-8 b(.)66 5294 y(13.)46 b Fk │ │ │ │ (FrontMtx_storePostponedDa)o(ta)c(\()47 b(FrontMtx)f(*frontmtx,)f(Chv)i │ │ │ │ (*frontJ,)418 5407 y(int)g(npost,)f(int)h(K,)g(ChvList)f │ │ │ │ (*postponedlist,)e(ChvManager)h(*chvmanager)f(\))k(;)p │ │ │ │ eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(13)227 399 y(This)c(metho)s(d)f(is)h(used)g(to)h │ │ │ │ +TeXDict begin 13 12 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(13)227 399 y(This)c(metho)s(d)f(is)h(used)g(to)h │ │ │ │ (store)g(an)m(y)f(p)s(ostp)s(oned)f(ro)m(ws)h(and)f(columns)h(from)g │ │ │ │ (the)g(curren)m(t)g(fron)m(t)h Fk(frontJ)227 511 y Fl(in)m(to)f(a)g │ │ │ │ Fk(Chv)e Fl(ob)5 b(ject)27 b(obtained)f(from)f(the)i │ │ │ │ Fk(chvmanager)c Fl(ob)5 b(ject)27 b(and)e(place)i(it)f(in)m(to)h(the)g │ │ │ │ (list)f(of)g(p)s(ostp)s(oned)227 624 y(ob)5 b(jects)25 │ │ │ │ b(for)e Fk(K)p Fl(,)g(its)h(paren)m(t,)i(found)c(in)h(the)h │ │ │ │ Fk(postponedlist)c Fl(ob)5 b(ject.)39 b(The)23 b Fk(frontJ)f │ │ │ │ @@ -5631,17 +5620,17 @@ │ │ │ │ (ulating)i(up)s(dates)d(from)h(descenden)m(ts.)336 5107 │ │ │ │ y Fh(\017)46 b Fk(cpus[3])29 b Fl(|)h(time)h(sp)s(en)m(t)f(assem)m │ │ │ │ (bling)h(p)s(ostp)s(oned)e(data.)336 5257 y Fh(\017)46 │ │ │ │ b Fk(cpus[4])29 b Fl(|)h(time)h(sp)s(en)m(t)f(to)h(factor)g(the)g(fron) │ │ │ │ m(ts.)336 5407 y Fh(\017)46 b Fk(cpus[5])29 b Fl(|)h(time)h(sp)s(en)m │ │ │ │ (t)f(to)h(extract)h(p)s(ostp)s(oned)d(data.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fl(14)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 336 399 a Fh(\017)46 b Fk(cpus[6])29 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fl(14)p 182 100 1011 │ │ │ │ +4 v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ +(11,)h(2021)p 2889 100 V 336 399 a Fh(\017)46 b Fk(cpus[6])29 │ │ │ │ b Fl(|)h(time)h(sp)s(en)m(t)f(to)h(store)g(the)g(factor)g(en)m(tries.) │ │ │ │ 336 550 y Fh(\017)46 b Fk(cpus[7])29 b Fl(|)h(miscellaneous)i(time.)336 │ │ │ │ 701 y Fh(\017)46 b Fk(cpus[8])29 b Fl(|)h(total)i(time)f(in)f(the)h │ │ │ │ (metho)s(d.)227 900 y(On)f(return,)f(the)i Fk(stats[])d │ │ │ │ Fl(v)m(ector)k(is)f(\014lled)f(with)g(the)h(follo)m(wing)g │ │ │ │ (information.)336 1098 y Fh(\017)46 b Fk(stats[0])28 │ │ │ │ b Fl(|)j(n)m(um)m(b)s(er)e(of)h(piv)m(ots.)336 1249 y │ │ │ │ @@ -5703,17 +5692,17 @@ │ │ │ │ (*msgFile)e(\))j(;)227 5294 y Fl(This)37 b(metho)s(d)g(creates)h(an)g │ │ │ │ Fk(A2)e Fl(ob)5 b(ject)39 b(to)f(hold)f(the)g(fron)m(t,)j(assem)m(bles) │ │ │ │ e(an)m(y)g(original)g(ro)m(ws)g(of)f Fj(A)h Fl(and)227 │ │ │ │ 5407 y(an)m(y)c(up)s(date)e(matrices)i(from)e(the)i(c)m(hildren)e(in)m │ │ │ │ (to)i(the)g(fron)m(t,)g(and)e(then)h(returns)f(the)h(fron)m(t.)48 │ │ │ │ b(The)33 b(ro)m(ws)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(15)227 399 y(and)c(up)s(date)g(matrices)h(are)g │ │ │ │ +TeXDict begin 15 14 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(15)227 399 y(and)c(up)s(date)g(matrices)h(are)g │ │ │ │ (assem)m(bled)g(in)m(to)g(staircase)h(form,)f(so)g(no)f(subsequen)m(t)g │ │ │ │ (p)s(erm)m(utations)g(of)h(the)227 511 y(ro)m(ws)j(is)f(necessary)-8 │ │ │ │ b(.)227 660 y Fg(Err)j(or)28 b(che)-5 b(cking:)36 b Fl(If)23 │ │ │ │ b Fk(frontmtx)p Fl(,)f Fk(mtxA)p Fl(,)h Fk(rowsIVL)p │ │ │ │ Fl(,)e Fk(firstnz)p Fl(,)i Fk(colmap)e Fl(or)j Fk(workDV)d │ │ │ │ Fl(is)i Fk(NULL)p Fl(,)f(or)i(if)f Fk(msglvl)227 773 │ │ │ │ y(>)48 b(0)30 b Fl(and)g Fk(msgFile)e Fl(is)i Fk(NULL)p │ │ │ │ @@ -5785,17 +5774,17 @@ │ │ │ │ h(the)g(factoriza-)227 5146 y(tion.)227 5294 y Fg(Err)-5 │ │ │ │ b(or)35 b(che)-5 b(cking:)41 b Fl(If)31 b Fk(frontmtx)p │ │ │ │ Fl(,)e Fk(frontJ)g Fl(or)i Fk(chvmanager)d Fl(is)j Fk(NULL)p │ │ │ │ Fl(,)f(or)h(if)g Fk(msglvl)46 b(>)i(0)31 b Fl(and)f Fk(msgFile)227 │ │ │ │ 5407 y Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g(message)i(is)e(prin)m(ted) │ │ │ │ g(and)g(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fl(16)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 0 399 a Fb(1.2.8)112 b(P)m(ostpro)s(cessing)38 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fl(16)p 182 100 1011 │ │ │ │ +4 v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ +(11,)h(2021)p 2889 100 V 0 399 a Fb(1.2.8)112 b(P)m(ostpro)s(cessing)38 │ │ │ │ b(metho)s(ds)111 594 y Fl(1.)46 b Fk(void)h(FrontMtx_postProcess)42 │ │ │ │ b(\()48 b(FrontMtx)d(*frontmtx,)g(int)i(msglvl,)f(FILE)h(*msgFile)e(\)) │ │ │ │ j(;)227 743 y Fl(This)31 b(metho)s(d)g(do)s(es)g(p)s(ost-pro)s(cessing) │ │ │ │ g(c)m(hores)i(after)f(the)f(factorization)k(is)c(complete.)46 │ │ │ │ b(If)31 b(piv)m(oting)i(w)m(as)227 856 y(enabled,)25 │ │ │ │ b(the)f(metho)s(d)f(p)s(erm)m(utes)g(the)h(ro)m(w)g(and)f(column)g │ │ │ │ (adjacency)i(ob)5 b(jects,)26 b(p)s(erm)m(utes)d(the)h(lo)m(w)m(er)h │ │ │ │ @@ -5865,17 +5854,17 @@ │ │ │ │ (all)h(the)g(solv)m(e)h(metho)s(ds)d(|)h(serial,)i(m)m(ultithreaded)e │ │ │ │ (and)g(MPI.)111 5181 y(1.)46 b Fk(SubMtx)g(**)i │ │ │ │ (FrontMtx_loadRightHandS)o(ide)41 b(\()48 b(FrontMtx)d(*frontmtx,)g │ │ │ │ (DenseMtx)h(*mtxB,)1277 5294 y(int)h(owners[],)e(int)i(myid,)g │ │ │ │ (SubMtxManager)d(*mtxmanager,)1277 5407 y(int)j(msglvl,)f(FILE)h │ │ │ │ (*msgFile)e(\))j(;)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(17)227 399 y(This)d(metho)s(d)g(creates)h(and)f │ │ │ │ +TeXDict begin 17 16 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(17)227 399 y(This)d(metho)s(d)g(creates)h(and)f │ │ │ │ (returns)f(a)i(v)m(ector)h(of)f(p)s(oin)m(ters)f(to)h │ │ │ │ Fk(SubMtx)e Fl(ob)5 b(jects)29 b(that)g(hold)f(p)s(oin)m(ters)g(to)227 │ │ │ │ 511 y(the)j(righ)m(t)g(hand)e(side)h(submatrices)h(o)m(wned)f(b)m(y)g │ │ │ │ (the)h(thread)f(or)g(pro)s(cessor.)227 671 y Fg(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(None)31 b(presen)m(tly)-8 │ │ │ │ b(.)111 878 y(2.)46 b Fk(void)h(FrontMtx_forwardVisit)42 │ │ │ │ b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(nrhs,)370 │ │ │ │ @@ -5943,17 +5932,17 @@ │ │ │ │ 5261 y Fi(J)578 5247 y Fl(:=)c Fj(Z)762 5261 y Fi(J)831 │ │ │ │ 5247 y Fh(\000)20 b Fj(U)984 5261 y Fi(J)n(;K)1109 5247 │ │ │ │ y Fj(X)1184 5261 y Fi(K)1283 5247 y Fl(that)31 b(will)f(b)s(e)g(p)s │ │ │ │ (erformed)f(b)m(y)h(this)g(thread)h(or)f(pro)s(cessor.)227 │ │ │ │ 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(None)31 │ │ │ │ b(presen)m(tly)-8 b(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fl(18)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 111 399 a Fl(8.)46 b Fk(void)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fl(18)p 182 100 1011 │ │ │ │ +4 v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ +(11,)h(2021)p 2889 100 V 111 399 a Fl(8.)46 b Fk(void)h │ │ │ │ (FrontMtx_loadActiveRoots)41 b(\()48 b(FrontMtx)d(*frontmtx,)g(char)i │ │ │ │ (status[],)1755 511 y(char)f(activeFlag,)f(Ideq)i(*dequeue)e(\))j(;)227 │ │ │ │ 660 y Fl(This)43 b(metho)s(d)f(loads)i(the)g(activ)m(e)h(ro)s(ots)f │ │ │ │ (for)f(a)g(thread)g(or)h(a)f(pro)s(cessor)g(in)m(to)h(the)g(dequeue)f │ │ │ │ (for)g(the)227 773 y(bac)m(kw)m(ard)31 b(solv)m(e.)227 │ │ │ │ 921 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(None)31 │ │ │ │ b(presen)m(tly)-8 b(.)0 1186 y Fb(1.2.10)113 b(Serial)38 │ │ │ │ @@ -6026,17 +6015,17 @@ │ │ │ │ b Fk(cpus[0])29 b Fl(|)h(set)h(up)e(the)i(solv)m(es)336 │ │ │ │ 5123 y Fh(\017)46 b Fk(cpus[1])29 b Fl(|)h(fetc)m(h)h(righ)m(t)g(hand)e │ │ │ │ (side)i(and)e(store)i(solution)336 5265 y Fh(\017)46 │ │ │ │ b Fk(cpus[2])29 b Fl(|)h(forw)m(ard)g(solv)m(e)336 5407 │ │ │ │ y Fh(\017)46 b Fk(cpus[3])29 b Fl(|)h(diagonal)i(solv)m(e)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(19)336 399 y Fh(\017)46 b Fk(cpus[4])29 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(19)336 399 y Fh(\017)46 b Fk(cpus[4])29 │ │ │ │ b Fl(|)h(bac)m(kw)m(ard)h(solv)m(e)336 551 y Fh(\017)46 │ │ │ │ b Fk(cpus[5])29 b Fl(|)h(total)i(time)f(in)f(the)h(solv)m(e)g(metho)s │ │ │ │ (d.)336 704 y Fh(\017)46 b Fk(cpus[6])29 b Fl(|)h(time)h(to)g(compute)g │ │ │ │ Fj(A)1668 671 y Fi(T)1723 704 y Fj(B)k Fl(or)30 b Fj(A)2006 │ │ │ │ 671 y Fi(H)2074 704 y Fj(B)5 b Fl(.)336 856 y Fh(\017)46 │ │ │ │ b Fk(cpus[7])29 b Fl(|)h(total)i(time.)227 1056 y Fg(Err)-5 │ │ │ │ b(or)31 b(che)-5 b(cking:)38 b Fl(If)26 b Fk(frontmtx)p │ │ │ │ @@ -6098,17 +6087,17 @@ │ │ │ │ b Fk(frontmtx)p Fl(,)g Fk(pnneg)p Fl(,)g Fk(pnzero)f │ │ │ │ Fl(or)h Fk(pnpos)f Fl(is)h Fk(NULL)p Fl(,)g(or)g(if)h │ │ │ │ Fk(symmetryflag)31 b Fh(6)p Fl(=)k(0)i(an)227 5207 y(error)30 │ │ │ │ b(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ 5407 y(5.)46 b Fk(int)h(FrontMtx_nSolveOps)c(\()k(FrontMtx)f(*frontmtx) │ │ │ │ f(\))j(;)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fl(20)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 227 399 a Fl(This)e(metho)s(d)g(computes)g │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fl(20)p 182 100 1011 │ │ │ │ +4 v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ +(11,)h(2021)p 2889 100 V 227 399 a Fl(This)e(metho)s(d)g(computes)g │ │ │ │ (and)g(return)f(the)i(n)m(um)m(b)s(er)e(of)h(\015oating)i(p)s(oin)m(t)e │ │ │ │ (op)s(erations)h(for)f(a)h(solv)m(e)g(with)g(a)227 511 │ │ │ │ y(single)h(righ)m(t)g(hand)f(side.)227 664 y Fg(Err)-5 │ │ │ │ b(or)29 b(che)-5 b(cking:)37 b Fl(If)24 b Fk(frontmtx)e │ │ │ │ Fl(is)i Fk(NULL)p Fl(,)g(or)g(if)g Fk(type)f Fl(or)i │ │ │ │ Fk(symmetryflag)c Fl(are)j(in)m(v)-5 b(alid,)27 b(an)d(error)g(message) │ │ │ │ 227 777 y(is)31 b(prin)m(ted)f(and)f(the)i(program)f(exits.)0 │ │ │ │ @@ -6185,17 +6174,17 @@ │ │ │ │ b Fk(1)f Fl(is)g(returned.)40 b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m │ │ │ │ (tered)h(from)f Fk(fwrite)p Fl(,)f(zero)i(is)g(returned.)227 │ │ │ │ 5407 y Fg(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fl(If)28 │ │ │ │ b Fk(frontmtx)f Fl(or)i Fk(fp)g Fl(are)g Fk(NULL)f Fl(an)h(error)g │ │ │ │ (message)h(is)f(prin)m(ted)f(and)h(zero)h(is)f(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(21)111 399 y(7.)46 b Fk(int)h │ │ │ │ +TeXDict begin 21 20 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(21)111 399 y(7.)46 b Fk(int)h │ │ │ │ (FrontMtx_writeForHumanEye)41 b(\()48 b(FrontMtx)d(*frontmtx,)g(FILE)i │ │ │ │ (*fp)g(\))g(;)227 547 y Fl(This)36 b(metho)s(d)g(writes)h(a)g │ │ │ │ Fk(FrontMtx)d Fl(ob)5 b(ject)37 b(to)g(a)g(\014le)g(in)f(a)h(h)m(uman)f │ │ │ │ (readable)h(format.)59 b(The)36 b(metho)s(d)227 660 y │ │ │ │ Fk(FrontMtx)p 617 660 29 4 v 32 w(writeStats\(\))41 b │ │ │ │ Fl(is)i(called)i(to)f(write)g(out)f(the)h(header)f(and)g(statistics.)82 │ │ │ │ b(The)43 b(v)-5 b(alue)44 b Fk(1)f Fl(is)227 773 y(returned.)227 │ │ │ │ @@ -6258,17 +6247,17 @@ │ │ │ │ 4980 y Fl(metho)s(d.)336 5122 y Fh(\017)46 b Fl(The)30 │ │ │ │ b Fk(seed)f Fl(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s(er)f(seed.) │ │ │ │ 336 5265 y Fh(\017)46 b Fl(The)30 b Fk(type)f Fl(parameter)i(sp)s │ │ │ │ (eci\014es)f(a)h(real)g(or)f(complex)h(linear)g(system.)500 │ │ │ │ 5407 y Fe({)45 b Fk(type)i(=)g(1)h(\(SPOOLES)p 1417 5407 │ │ │ │ V 32 w(REAL\))29 b Fl(for)h(real,)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fl(22)p 182 100 975 4 │ │ │ │ -v 1158 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2925 100 V 500 399 a Fe({)45 b Fk(type)i(=)g(2)h │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fl(22)p 182 100 1011 │ │ │ │ +4 v 1194 w Fk(FrontMtx)28 b Ff(:)40 b Fg(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ +(11,)h(2021)p 2889 100 V 500 399 a Fe({)45 b Fk(type)i(=)g(2)h │ │ │ │ (\(SPOOLES)p 1417 399 29 4 v 32 w(COMPLEX\))28 b Fl(for)i(complex.)336 │ │ │ │ 544 y Fh(\017)46 b Fl(The)30 b Fk(symmetryflag)d Fl(parameter)k(sp)s │ │ │ │ (eci\014es)f(the)h(symmetry)f(of)g(the)h(matrix.)500 │ │ │ │ 690 y Fe({)45 b Fk(type)i(=)g(0)h(\(SPOOLES)p 1417 690 │ │ │ │ V 32 w(SYMMETRIC\))28 b Fl(for)i Fj(A)g Fl(real)h(or)g(complex)g │ │ │ │ (symmetric,)500 820 y Fe({)45 b Fk(type)i(=)g(1)h(\(SPOOLES)p │ │ │ │ 1417 820 V 32 w(HERMITIAN\))28 b Fl(for)i Fj(A)g Fl(complex)h │ │ │ │ @@ -6338,17 +6327,17 @@ │ │ │ │ 5115 y Fh(\017)46 b Fk(n2)30 b Fl(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s │ │ │ │ (oin)m(ts)f(in)g(the)g(second)h(grid)f(direction.)336 │ │ │ │ 5261 y Fh(\017)46 b Fk(n3)30 b Fl(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s │ │ │ │ (oin)m(ts)f(in)g(the)g(third)g(grid)g(direction.)336 │ │ │ │ 5407 y Fh(\017)46 b Fl(The)30 b Fk(seed)f Fl(parameter)i(is)g(a)f │ │ │ │ (random)g(n)m(um)m(b)s(er)f(seed.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(23)336 399 y Fh(\017)46 b Fl(The)30 │ │ │ │ +TeXDict begin 23 22 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(23)336 399 y Fh(\017)46 b Fl(The)30 │ │ │ │ b Fk(nrhs)f Fl(parameter)i(is)g(the)f(n)m(um)m(b)s(er)f(of)i(righ)m(t)g │ │ │ │ (hand)e(sides)h(to)h(solv)m(e)h(as)f(one)f(blo)s(c)m(k.)336 │ │ │ │ 545 y Fh(\017)46 b Fl(The)30 b Fk(type)f Fl(parameter)i(sp)s(eci\014es) │ │ │ │ f(a)h(real)g(or)f(complex)h(linear)g(system.)500 691 │ │ │ │ y Fe({)45 b Fk(type)i(=)g(1)h(\(SPOOLES)p 1417 691 29 │ │ │ │ 4 v 32 w(REAL\))29 b Fl(for)h(real,)500 820 y Fe({)45 │ │ │ │ b Fk(type)i(=)g(2)h(\(SPOOLES)p 1417 820 V 32 w(COMPLEX\))28 │ │ │ │ @@ -6438,16 +6427,16 @@ │ │ │ │ Fl(,)i(9)1992 5064 y Fk(FrontMtx)p 2382 5064 V 32 w │ │ │ │ (writeForHumanEye\(\))p Fl(,)d(20)1992 5178 y Fk(FrontMtx)p │ │ │ │ 2382 5178 V 32 w(writeStats\(\))p Fl(,)i(21)1992 5293 │ │ │ │ y Fk(FrontMtx)p 2382 5293 V 32 w(writeToBinaryFile\(\))p │ │ │ │ Fl(,)e(20)1992 5407 y Fk(FrontMtx)p 2382 5407 V 32 w(writeToFile\(\))p │ │ │ │ Fl(,)i(20)1905 5656 y(24)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 91 100 975 4 v 1157 100 a Fk(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fg(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2832 100 V 975 w Fl(25)0 399 y Fk(FrontMtx)p 390 399 │ │ │ │ +TeXDict begin 25 24 bop 91 100 1011 4 v 1193 100 a Fk(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fg(DRAFT)121 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2796 100 V 1011 w Fl(25)0 399 y Fk(FrontMtx)p 390 399 │ │ │ │ 29 4 v 32 w(writeToFormattedFile\(\))p Fl(,)25 b(20)p │ │ │ │ eop end │ │ │ │ %%Trailer │ │ │ │ │ │ │ │ userdict /end-hook known{end-hook}if │ │ │ │ %%EOF │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ are disjoint. P is a permutation matrix. If pivoting is not used, P is the identity. │ │ │ │ │ 2. (A + σB) = P(L + I)D(I + U)QT for a square nonsymmetric matrix A with symmetric │ │ │ │ │ structure. D is a diagonal matrix. U is strictly upper triangular. L is strictly lower triangular. │ │ │ │ │ P and Q are permutation matrices. If pivoting is not used, P and Q are the identity. │ │ │ │ │ 3. A = QR for square or rectangular A. Q is an orthogonal matrix that is not explicitly │ │ │ │ │ computed or stored. R is upper triangular. │ │ │ │ │ 1 │ │ │ │ │ - 2 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 2 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ The factorization is performed using a one dimensional decomposition of the global sparse │ │ │ │ │ matrix. A typical front of the matrix is found the shaded portion of the figure below. │ │ │ │ │ Afront is indivisible, it is found on one processor, and one processor or one thread is responsible │ │ │ │ │ for its internal computations. This is extremely important if we want to support pivoting for │ │ │ │ │ stability, for deciding how to choose the pivot elements in the front requires continuous up-to- │ │ │ │ │ date information about all the entries in the front. If a front were partitioned among threads or │ │ │ │ │ processors, the cost of the communication to select pivot elements would be intolerable. │ │ │ │ │ @@ -56,15 +56,15 @@ │ │ │ │ │ • The linear combination A+σB is found in a Pencil object. │ │ │ │ │ • The ETree object contains the front tree that governs the factorization and solve. Inside │ │ │ │ │ this object are the dimensions of each front (the number of internal and external rows and │ │ │ │ │ columns), the tree connectivity of the fronts, and a map from each vertex to the front that │ │ │ │ │ contains it as an internal row and column. The FrontMtx object contains a pointer to an │ │ │ │ │ ETree object, but it does not modify the object, nor does it own the storage for the ETree │ │ │ │ │ object. Thus multiple front matrices can all point to the same ETree object simultaneously. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 3 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 3 │ │ │ │ │ • An IVL object (Integer Vector List), contains the symbolic factorization. For each front, it │ │ │ │ │ gives the list of internal and external rows and columns, used to initialize a front prior to its │ │ │ │ │ factorization. For a factorization without pivoting, this object stores the index information │ │ │ │ │ for the factors, and so is used during the forward and backsolves. For a factorization with │ │ │ │ │ pivoting, the index information for a front may change, so this object is not used during the │ │ │ │ │ solves. As for the ETree object, the symbolic factorization is neither modified or owned by │ │ │ │ │ the front matrix object. │ │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ │ postponed data (when pivoting is enabled) or aggregate data (in a parallel factorization), and │ │ │ │ │ the factorization of the fully assembled front, take place within the context of this object. │ │ │ │ │ • The SubMtx object is used to store a submatrix of the factor matrices D, L and U. Once a │ │ │ │ │ front is factored it is split into one or more of these submatrix objects. After the factorization │ │ │ │ │ is complete, the data structures are postprocessed to yield submatrices that contain the │ │ │ │ │ coupling between fronts. The working storage during the solves is also managed by SubMtx │ │ │ │ │ objects. │ │ │ │ │ - 4 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 4 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ • Each submatrix represents the coupling between two fronts, I and J. To enable rapid random │ │ │ │ │ access to these submatrices, we use a I2Ohash object that is a hash table whose keys are two │ │ │ │ │ integers and whose data is a void * pointer. │ │ │ │ │ • The set of nonzero submatrices, i.e., the nonzero couplings between two fronts, is kept in │ │ │ │ │ one or two IVL objects. This information is necessary for the factorization and forward and │ │ │ │ │ backsolves. │ │ │ │ │ • The factorization and solves require lists of fronts and submatrices to manage assembly of │ │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ • int pivotingflag : flag to specify pivoting for stability, │ │ │ │ │ – SPOOLES NO PIVOTING — pivoting not used │ │ │ │ │ – SPOOLES PIVOTING — pivoting used │ │ │ │ │ • int sparsityflag : flag to specify storage of factors. │ │ │ │ │ – 0 — each front is dense │ │ │ │ │ – 1 — a front may be sparse due to entries dropped because they are below a drop │ │ │ │ │ tolerance. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 5 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 5 │ │ │ │ │ • int dataMode : flag to specify data storage. │ │ │ │ │ – 1 — one-dimensional, used during the factorization. │ │ │ │ │ – 2 — two-dimensional, used during the solves. │ │ │ │ │ • int nentD : number of entries in D │ │ │ │ │ • int nentL : number of entries in L │ │ │ │ │ • int nentU : number of entries in U │ │ │ │ │ • Tree *tree: Treeobjectthatholdsthetreeoffronts. Note, normallythisisfrontETree->tree, │ │ │ │ │ @@ -165,15 +165,15 @@ │ │ │ │ │ used only during a nonsymmetric factorization. │ │ │ │ │ • SubMtx **p mtxLNJ : a vector of pointers to submatrices in L that are off the block diagonal, │ │ │ │ │ used only during a nonsymmetric factorization. │ │ │ │ │ • I2Ohash *lowerhash : pointer to a I2Ohash hash table for submatrices in L, used during │ │ │ │ │ the solves. │ │ │ │ │ • I2Ohash *upperhash : pointer to a I2Ohash hash table for submatrices in U, used during │ │ │ │ │ the solves. │ │ │ │ │ - 6 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 6 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ • SubMtxManager *manager : pointer to an object that manages the instances of submatrices │ │ │ │ │ during the factors and solves. │ │ │ │ │ • Lock *lock : pointer to a Lock lock used in a multithreaded environment to ensure exlusive │ │ │ │ │ access while allocating storage in the IV and IVL objects. This is not used in a serial or MPI │ │ │ │ │ environment. │ │ │ │ │ • int nlocks : number of times the lock has been locked. │ │ │ │ │ • PatchAndGo *info : this is a pointer to an object that is used by the Chv object during the │ │ │ │ │ @@ -196,15 +196,15 @@ │ │ │ │ │ • FRONTMTX IS 1D MODE(frontmtx) is 1 if the factor are still stored as a one-dimensional data │ │ │ │ │ decomposition (i.e., the matrix has not yet been post-processed), and 0 otherwise. │ │ │ │ │ • FRONTMTX IS 2D MODE(frontmtx) is 1 if the factor are stored as a two-dimensional data │ │ │ │ │ decomposition (i.e., the matrix has been post-processed), and 0 otherwise. │ │ │ │ │ 1.2 Prototypes and descriptions of FrontMtx methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ FrontMtx object. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 7 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 7 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. FrontMtx * FrontMtx_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the FrontMtx structure and then sets the default │ │ │ │ │ fields by a call to FrontMtx setDefaultFields(). │ │ │ │ │ 2. void FrontMtx_setDefaultFields ( FrontMtx *frontmtx ) ; │ │ │ │ │ @@ -231,15 +231,15 @@ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ 1. int FrontMtx_nfront ( FrontMtx *frontmtx ) ; │ │ │ │ │ This method returns the number of fronts in the matrix. │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int FrontMtx_neqns ( FrontMtx *frontmtx ) ; │ │ │ │ │ This method returns the number of equations in the matrix. │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ - 8 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 8 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ 3. Tree * FrontMtx_frontTree ( FrontMtx *frontmtx ) ; │ │ │ │ │ This method returns the Tree object for the fronts. │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void FrontMtx_initialFrontDimensions ( FrontMtx *frontmtx, int J, │ │ │ │ │ int *pnD, int *pnL, int *pnU, int *pnbytes ) ; │ │ │ │ │ This method fills the four pointer arguments with the number of internal rows and columns, │ │ │ │ │ number of rows in the lower block, number of columns in the upper block, and number of │ │ │ │ │ @@ -269,15 +269,15 @@ │ │ │ │ │ Error checking: If frontmtx, pnrow or pindices is NULL, or if J is not in [0,nfront), an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 9. SubMtx * FrontMtx_diagMtx ( FrontMtx *frontmtx, int J ) ; │ │ │ │ │ This method returns a pointer to the object that contains submatrix D . │ │ │ │ │ J,J │ │ │ │ │ Error checking: If frontmtx is NULL, or if J is not in [0,nfront), an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 9 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 9 │ │ │ │ │ 10. SubMtx * FrontMtx_upperMtx ( FrontMtx *frontmtx, int J, int K ) ; │ │ │ │ │ This method returns a pointer to the object that contains submatrix UJ,K. If K = nfront, │ │ │ │ │ then the object containing UJ,∂J is returned. │ │ │ │ │ Error checking: If frontmtx is NULL, or if J is not in [0,nfront), or if K is not in [0,nfront], │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 11. SubMtx * FrontMtx_lowerMtx ( FrontMtx *frontmtx, int K, int J ) ; │ │ │ │ │ This method returns a pointer to the object that contains submatrix LK,J. If K = nfront, │ │ │ │ │ @@ -304,15 +304,15 @@ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 16. IVL * FrontMtx_upperBlockIVL ( FrontMtx *frontmtx ) ; │ │ │ │ │ This method returns a pointer to the IVL object that holds the upper blocks. │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 17. IVL * FrontMtx_lowerBlockIVL ( FrontMtx *frontmtx ) ; │ │ │ │ │ This method returns a pointer to the IVL object that holds the lower blocks. │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ - 10 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 10 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ 1.2.3 Initialization methods │ │ │ │ │ 1. void FrontMtx_init ( FrontMtx *frontmtx, ETree *frontETree, │ │ │ │ │ IVL *symbfacIVL, int type, int symmetryflag, int sparsityflag, │ │ │ │ │ int pivotingflag, int lockflag, int myid, IV *ownersIV, │ │ │ │ │ SubMtxManager *manager, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method initializes the object, allocating and initializing the internal objects as necessary. │ │ │ │ │ See the previous section on data structures for the meanings of the type, symmetryflag, │ │ │ │ │ @@ -342,15 +342,15 @@ │ │ │ │ │ 1. void FrontMtx_initializeFront ( FrontMtx *frontmtx, Chv *frontJ, int J ) ; │ │ │ │ │ This method is called to initialize a front. The number of internal rows and columns is found │ │ │ │ │ from the front ETree object and the row and column indices are obtained from the symbolic │ │ │ │ │ factorization IVL object. The front Chv object is initialized via a call to Chv init(), and the │ │ │ │ │ column indices and row indices (when nonsymemtric) are copied. Finally the front’s entries │ │ │ │ │ are zeroed via a call to Chv zero(). │ │ │ │ │ Error checking: None presently. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 11 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 11 │ │ │ │ │ 2. char FrontMtx_factorVisit ( FrontMtx *frontmtx, Pencil *pencil, int J, │ │ │ │ │ int myid, int owners[], Chv *fronts[], int lookahead, double tau, │ │ │ │ │ double droptol, char status[], IP *heads[], IV *pivotsizesIV, DV *workDV, │ │ │ │ │ int parent[], ChvList *aggList, ChvList *postList, ChvManager *chvmanager, │ │ │ │ │ int stats[], double cpus[], int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method is called during the serial, multithreaded and MPI factorizations when front J │ │ │ │ │ is visited during the bottom-up traversal of the tree. │ │ │ │ │ @@ -382,15 +382,15 @@ │ │ │ │ │ Error checking: If frontmtx, owners or status is NULL, or if myid < 0, an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ 7. void FrontMtx_loadActiveLeaves ( FrontMtx *frontmtx, char status[], │ │ │ │ │ char activeFlag, Ideq *dequeue ) ; │ │ │ │ │ This method is called by the multithreaded and MPI factor and solve methods to load the │ │ │ │ │ dequeue with the active leaves in the front tree with respect to the thread or processor. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ - 12 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 12 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ 8. ChvList * FrontMtx_postList ( FrontMtx *frontmtx, IV *frontOwnersIV, │ │ │ │ │ int lockflag ) ; │ │ │ │ │ This method is called by the multithreaded and MPI factor methods to create and return a │ │ │ │ │ list object to hold postponed chevrons and help synchronize the factorization. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 9. ChvList * FrontMtx_aggregateList ( FrontMtx *frontmtx, │ │ │ │ │ IV *frontOwnersIV, int lockflag ) ; │ │ │ │ │ @@ -421,15 +421,15 @@ │ │ │ │ │ the list in postponedlist. If this list is empty, a new front is created to hold the aggregate │ │ │ │ │ updates and the postponed data, and the chvmanager object receives the aggregate and │ │ │ │ │ postponed Chv objects. The number of delayed rows and columns is returned in *pndelay — │ │ │ │ │ this is used during the factorization of the front that follows immediately. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 13. FrontMtx_storePostponedData ( FrontMtx *frontmtx, Chv *frontJ, │ │ │ │ │ int npost, int K, ChvList *postponedlist, ChvManager *chvmanager ) ; │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 13 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 13 │ │ │ │ │ This method is used to store any postponed rows and columns from the current front frontJ │ │ │ │ │ into a Chv object obtained from the chvmanager object and place it into the list of postponed │ │ │ │ │ objects for K, its parent, found in the postponedlist object. The frontJ object is unchanged │ │ │ │ │ by this method. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 14. FrontMtx_storeFront ( FrontMtx *frontmtx, Chv *frontJ, IV *pivotsizesIV, │ │ │ │ │ double droptol, int msglvl, FILE *msgFile ) ; │ │ │ │ │ @@ -459,15 +459,15 @@ │ │ │ │ │ following information. │ │ │ │ │ • cpus[0] — time spent initializing the fronts. │ │ │ │ │ • cpus[1] — time spent loading the original entries. │ │ │ │ │ • cpus[2] — time spent accumulating updates from descendents. │ │ │ │ │ • cpus[3] — time spent assembling postponed data. │ │ │ │ │ • cpus[4] — time spent to factor the fronts. │ │ │ │ │ • cpus[5] — time spent to extract postponed data. │ │ │ │ │ - 14 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 14 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ • cpus[6] — time spent to store the factor entries. │ │ │ │ │ • cpus[7] — miscellaneous time. │ │ │ │ │ • cpus[8] — total time in the method. │ │ │ │ │ Onreturn, the stats[] vector is filled with the following information. │ │ │ │ │ • stats[0] — number of pivots. │ │ │ │ │ • stats[1] — number of pivot tests. │ │ │ │ │ • stats[2] — number of delayed rows and columns. │ │ │ │ │ @@ -495,15 +495,15 @@ │ │ │ │ │ workDV, cpus or pfacops is NULL, or if msglvl > 0 and msgFile is NULL, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 3. A2 * FrontMtx_QR_assembleFront ( FrontMtx *frontmtx, int J, InpMtx *mtxA, │ │ │ │ │ IVL *rowsIVL, int firstnz[], int colmap[], Chv *firstchild, │ │ │ │ │ DV *workDV, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method creates an A2 object to hold the front, assembles any original rows of A and │ │ │ │ │ any update matrices from the children into the front, and then returns the front. The rows │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 15 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 15 │ │ │ │ │ and update matrices are assembled into staircase form, so no subsequent permutations of the │ │ │ │ │ rows is necessary. │ │ │ │ │ Error checking: If frontmtx, mtxA, rowsIVL, firstnz, colmap or workDV is NULL, or if msglvl │ │ │ │ │ > 0 and msgFile is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void FrontMtx_QR_storeFront ( FrontMtx *frontmtx, int J, A2 *frontJ, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method takes as input frontJ, the front in trapezoidal or triangular form. It scales the │ │ │ │ │ @@ -533,15 +533,15 @@ │ │ │ │ │ • cpus[4] – time to store the update entries │ │ │ │ │ • cpus[5] – miscellaneous time │ │ │ │ │ • cpus[6] – total time │ │ │ │ │ Onreturn, *pfacops contains the number of floating point operations done by the factoriza- │ │ │ │ │ tion. │ │ │ │ │ Error checking: If frontmtx, frontJ or chvmanager is NULL, or if msglvl > 0 and msgFile │ │ │ │ │ is NULL, an error message is printed and the program exits. │ │ │ │ │ - 16 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 16 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ 1.2.8 Postprocessing methods │ │ │ │ │ 1. void FrontMtx_postProcess ( FrontMtx *frontmtx, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method does post-processing chores after the factorization is complete. If pivoting was │ │ │ │ │ enabled, the method permutes the row and column adjacency objects, permutes the lower and │ │ │ │ │ upper matrices, and updates the block adjacency objects. The chevron submatrices L∂J,J │ │ │ │ │ and UJ,∂J are split into LK,J and UJ,K where K ∩∂J 6= ∅. │ │ │ │ │ Error checking: If frontmtx is NULL, or if msglvl ¿ 0 and msgFile is NULL, an error message │ │ │ │ │ @@ -572,15 +572,15 @@ │ │ │ │ │ Error checking: If frontmtx is NULL, or if msglvl ¿ 0 and msgFile is NULL, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 1.2.9 Utility Solve methods │ │ │ │ │ The following methods are called by all the solve methods — serial, multithreaded and MPI. │ │ │ │ │ 1. SubMtx ** FrontMtx_loadRightHandSide ( FrontMtx *frontmtx, DenseMtx *mtxB, │ │ │ │ │ int owners[], int myid, SubMtxManager *mtxmanager, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 17 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 17 │ │ │ │ │ This method creates and returns a vector of pointers to SubMtx objects that hold pointers to │ │ │ │ │ the right hand side submatrices owned by the thread or processor. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 2. void FrontMtx_forwardVisit ( FrontMtx *frontmtx, int J, int nrhs, │ │ │ │ │ int *owners, int myid, SubMtxManager *mtxmanager, SubMtxList *aggList, │ │ │ │ │ SubMtx *p_mtx[], char frontIsDone[], IP *heads[], SubMtx *p_agg[], │ │ │ │ │ char status[], int msglvl, FILE *msgFile) ; │ │ │ │ │ @@ -610,15 +610,15 @@ │ │ │ │ │ this thread or processor. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 7. IP ** FrontMtx_backwardSetup ( FrontMtx *frontmtx, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method is used to set up a data structure of IP objects that hold the updates of the │ │ │ │ │ form Z := Z −U X that will be performed by this thread or processor. │ │ │ │ │ J J J,K K │ │ │ │ │ Error checking: None presently. │ │ │ │ │ - 18 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 18 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ 8. void FrontMtx_loadActiveRoots ( FrontMtx *frontmtx, char status[], │ │ │ │ │ char activeFlag, Ideq *dequeue ) ; │ │ │ │ │ This method loads the active roots for a thread or a processor into the dequeue for the │ │ │ │ │ backward solve. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 1.2.10 Serial Solve method │ │ │ │ │ 1. void FrontMtx_solve ( FrontMtx *frontmtx, DenseMtx *mtxX, DenseMtx *mtxB, │ │ │ │ │ @@ -648,15 +648,15 @@ │ │ │ │ │ the seminormal equations (U +I)D(I +U)X = A B or (U +I)D(I +U)X = A B for │ │ │ │ │ X. The mtxmanager object manages the working storage used in the solves. On return the │ │ │ │ │ cpus[] vector is filled with the following. │ │ │ │ │ • cpus[0] — set up the solves │ │ │ │ │ • cpus[1] — fetch right hand side and store solution │ │ │ │ │ • cpus[2] — forward solve │ │ │ │ │ • cpus[3] — diagonal solve │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 19 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 19 │ │ │ │ │ • cpus[4] — backward solve │ │ │ │ │ • cpus[5] — total time in the solve method. │ │ │ │ │ T H │ │ │ │ │ • cpus[6] — time to compute A B or A B. │ │ │ │ │ • cpus[7] — total time. │ │ │ │ │ Error checking: If frontmtx, mtxA, mtxX, mtxB or cpus is NULL, or if msglvl ¿ 0 and msgFile │ │ │ │ │ is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -685,15 +685,15 @@ │ │ │ │ │ This method determines the inertia of a symmetric matrix based on the (UT + I)D(I + U) │ │ │ │ │ factorization. The number of negative eigenvalues is returned in *pnneg, the number of zero │ │ │ │ │ eigenvalues is returned in *pnzero, and the number of positive eigenvalues is returned in │ │ │ │ │ *pnpos. │ │ │ │ │ Error checking: If frontmtx, pnneg, pnzero or pnpos is NULL, or if symmetryflag 6= 0 an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 5. int FrontMtx_nSolveOps ( FrontMtx *frontmtx ) ; │ │ │ │ │ - 20 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 20 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ This method computes and return the number of floating point operations for a solve with a │ │ │ │ │ single right hand side. │ │ │ │ │ Error checking: If frontmtx is NULL, or if type or symmetryflag are invalid, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 1.2.13 IO methods │ │ │ │ │ 1. int FrontMtx_readFromFile ( FrontMtx *frontmtx, char *fn ) ; │ │ │ │ │ This method reads a FrontMtx object from a file. It tries to open the file and if it is success- │ │ │ │ │ @@ -721,15 +721,15 @@ │ │ │ │ │ This method writes a FrontMtx object to a formatted file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If frontmtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 6. int FrontMtx_writeToBinaryFile ( FrontMtx *frontmtx, FILE *fp ) ; │ │ │ │ │ This method writes a FrontMtx object to a binary file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If frontmtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 21 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 21 │ │ │ │ │ 7. int FrontMtx_writeForHumanEye ( FrontMtx *frontmtx, FILE *fp ) ; │ │ │ │ │ This method writes a FrontMtx object to a file in a human readable format. The method │ │ │ │ │ FrontMtx writeStats() is called to write out the header and statistics. The value 1 is │ │ │ │ │ returned. │ │ │ │ │ Error checking: If frontmtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 8. int FrontMtx_writeStats ( FrontMtx *frontmtx, FILE *fp ) ; │ │ │ │ │ The header and statistics are written to a file. The value 1 is returned. │ │ │ │ │ @@ -758,15 +758,15 @@ │ │ │ │ │ • maxzeros is used to merge small fronts together into larger fronts. Look at the ETree │ │ │ │ │ object for the ETree mergeFronts{One,All,Any}() methods. │ │ │ │ │ • maxsize is used to split large fronts into smaller fronts. See the ETree splitFronts() │ │ │ │ │ method. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ - 22 FrontMtx : DRAFT December 20, 2018 │ │ │ │ │ + 22 FrontMtx : DRAFT October 11, 2021 │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ – type = 1 (SPOOLES HERMITIAN) for A complex Hermitian, │ │ │ │ │ – type = 2 (SPOOLES NONSYMMETRIC) │ │ │ │ │ for A real or complex nonsymmetric. │ │ │ │ │ • The sparsityflag parameter signals a direct or approximate factorization. │ │ │ │ │ @@ -798,15 +798,15 @@ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • n1 is the number of points in the first grid direction. │ │ │ │ │ • n2 is the number of points in the second grid direction. │ │ │ │ │ • n3 is the number of points in the third grid direction. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 23 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 23 │ │ │ │ │ • The nrhs parameter is the number of right hand sides to solve as one block. │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ Index │ │ │ │ │ FrontMtx aggregateList(), 12 FrontMtx ownedColumns(), 19 │ │ │ │ │ FrontMtx assemblePostponedData(), 12 FrontMtx ownedRows(), 19 │ │ │ │ │ @@ -842,9 +842,9 @@ │ │ │ │ │ FrontMtx nactiveChild(), 11 FrontMtx upperBlockIVL(), 9 │ │ │ │ │ FrontMtx neqns(), 7 FrontMtx upperMtx(), 9 │ │ │ │ │ FrontMtx new(), 7 FrontMtx writeForHumanEye(), 20 │ │ │ │ │ FrontMtx nfront(), 7 FrontMtx writeStats(), 21 │ │ │ │ │ FrontMtx nLowerBlocks(), 9 FrontMtx writeToBinaryFile(), 20 │ │ │ │ │ FrontMtx nUpperBlocks(), 9 FrontMtx writeToFile(), 20 │ │ │ │ │ 24 │ │ │ │ │ - FrontMtx : DRAFT December 20, 2018 25 │ │ │ │ │ + FrontMtx : DRAFT October 11, 2021 25 │ │ │ │ │ FrontMtx writeToFormattedFile(), 20 │ │ ├── ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ ├── FrontTrees.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMR17 CMR12 CMSY8 CMBX12 CMR10 CMMI10 CMMI7 CMSY10 CMR7 │ │ │ │ %%+ CMBX10 CMSY6 CMR8 CMSL10 CMTT12 CMTT10 CMTI10 CMR6 CMMI8 CMMI6 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o FrontTrees.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2699,27 +2699,24 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ -dup 68 /D put │ │ │ │ dup 70 /F put │ │ │ │ dup 79 /O put │ │ │ │ dup 84 /T put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ dup 103 /g put │ │ │ │ dup 105 /i put │ │ │ │ -dup 109 /m put │ │ │ │ dup 110 /n put │ │ │ │ dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ @@ -2901,143 +2898,120 @@ │ │ │ │ 60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 │ │ │ │ 1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 │ │ │ │ F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 │ │ │ │ 1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C │ │ │ │ C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 │ │ │ │ 73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B │ │ │ │ E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 │ │ │ │ -2F2CF265A4E094BF8E56BDF529E8FF0649EF03063E72B0BCE9F013141F8D62DA │ │ │ │ -46B729E72BE7790A4CCE76813185B6D9D4D67BFEDF311BB29C4B24C0499FB161 │ │ │ │ -13F9F852F2C15C60438216CBE9BC5CBBC068A0CCE222B674F48A8E8B9C1F3980 │ │ │ │ -17B9A5EF8BAA5679F7D6212DE7034202A0758FA32010760DD18B75812BE917EB │ │ │ │ -A6D7538AFC9AD9B52D7FB64AFDCBF93E7A259756B6E5B9BF421E829032B0B9B6 │ │ │ │ -532327DC0AC3C84CFBC1E7AB62D3113892235AB8C5E06B9ED4DE87619014D121 │ │ │ │ -CB93A94E131BE8A5666742BC8A4A55C515831866499CECDC1CD65B310711EC1E │ │ │ │ -16719C4060617CF810EFBD29AD7ED8C600C5A5A514FF63D05CDB79E8B7F3287E │ │ │ │ -364A2088006E82BAC35EE1C95DD39BD16D50C26FA889B879CE56A3E02E6DA6CA │ │ │ │ -2BEA26EE8E974027A8E3CB2BF8524051645414BA621C61A22B83C594C9CFB223 │ │ │ │ -B30293D1B7E58F8A33087A504FACA94B6D1E29E30AFA84C3692A64C55A2BCC64 │ │ │ │ -08DEDBA3C08C02E68839D7F4BE7FAAA1E02C827318B197877AF9BCCE1672FEA3 │ │ │ │ -BE29CF70087D9173BFD000DD4A017C0A2DAECC5AF6087B2BA350D1878A5A28F3 │ │ │ │ -69D32483E9313AFFAFBC58467E9060722A237ADE5AB1277AD81CA46F4C961B3F │ │ │ │ -DFA1A6935CE12185CB35ECE23D3E794816EAD5145F477FBE824C0F0897FDEA08 │ │ │ │ -11CE02EDDD4B267C2613CED061A00B69BB7DA125058E7ECBD934C7E7BBC86873 │ │ │ │ -4631EE83B47CE83A4D156C193C0755D5E91438F660A3DB577C863662EF0841D1 │ │ │ │ -939DDC747B7995C76BA103919DE1937DEA40B571C1CA4A48B9D9C7B78DDC6F2E │ │ │ │ -615CF9403DF3BCE321EF1932E2F7EE17FE6F0C402F4DF304B9A1DB46B32C1B3E │ │ │ │ -F4645EEB58DABAB0A091F57AA482E901C330491E7B22029AD47C43EEB41029A3 │ │ │ │ -4991B34333C94BC00AE3FD9AD7E0FF62D50C90E47993CFC115E1209224755B50 │ │ │ │ -3B98F5827B339E1F50DB5F5EA7550C42F710CCC90CCD44CEF1D649E8B83768DD │ │ │ │ -23F3A902D18625AE9CE1D5AB3F1DD8E0F5979DEFFE3C0243AB2F96CA3F2497AB │ │ │ │ -FBBC93914EF63D75176D4C814E13EDB8229EB115D663F1E45088816BEBE926F2 │ │ │ │ -C46E4E4907319E610FDC729ED623A5D6BC93F5CFDB50263511D6DD6487782F8A │ │ │ │ -B6A985D3D480759EEDA9CCD114B4AF8F95CACF16AF6792DA0C310EB22901A145 │ │ │ │ -5AA5E29DFED1C1F298B3271F34AF4C393EFB4498537A1EA2BC623F4A57D42D47 │ │ │ │ -5629C2DA081BA62E498F9A61C0D3BB864A1C7A6DA5E1EBB67D52BEEE86E874F4 │ │ │ │ -B1C485741F1487FC7FC60E9C0833BF823D2FDEA39EE5687FF5F2945D1197797D │ │ │ │ -1AE592EF90B6D078F6903F3DFB5DA7A5A97407545BB043D6C6B8104C889644BF │ │ │ │ -B6E695310B5DC52AB9FDE8EC9C2E05793F06E6195B58CB6186878E4D7F52370E │ │ │ │ -0CB403A068B9C62AE396EB1DF79E45F8877C7219652F9FE35F4AAF20148F1181 │ │ │ │ -C4A2F36416BB52C3E5FB019A89841F489948AF59AD2CAFECBF49C5CDC64FBACA │ │ │ │ -DB1A3D1A5160286210D44222508598C90CA30B754F2BB24852264784585679F1 │ │ │ │ -B2332AC608F893174D7729E3F73639660DC46734E38454C815E01271A222F8B3 │ │ │ │ -D7C38C627E391705E4B2FA3661AFCEBD12FCC81C8378B08811AA2648AE4D4F7A │ │ │ │ -1E565811C787FA7001161F413099829B658E4FF0D8A3D40FAA3D7E3BB2EF0342 │ │ │ │ -509374E10E877E95610B04FA764A563E6D089D6E2570039BB3CF2FFE46643F86 │ │ │ │ -D166749F0E0788A52AB9E777F1AFC66BD5323CB698338DABEB6D84A0139784F6 │ │ │ │ -7C85510F64709336BE1BBE0619198E37CFFD2BBD53D9466DC2CBF3F6CD41E21B │ │ │ │ -B4F566CB89AC94B031970301B5177D2F7D977D1FC0D9390DF0F5E0F0E7E22636 │ │ │ │ -1E99062F096CF14C8C6F121BFEA70270F6645043471AEB98CD57D99302F83A5B │ │ │ │ -8D37FB2778FB7DA2890EBB04A39A665287E7FF5A05CB7EDD3D304F787BEADFB7 │ │ │ │ -A4E4ECA97371E974C5D1D9CAEA4C5C0F12D18231ACA8D66F0EB370F940BAE239 │ │ │ │ -9B4543F6039C8126FB22B01543986C4C1561DA5F118C9B269825AEBE4B00ED91 │ │ │ │ -8D73BD8CD3FCBE2E7135555D752F46FC0917736829F901E3EE3B893505A6D480 │ │ │ │ -A860867F5AFBDE38FF7AABD1E5C4F5EEAD29257DB87DDA9473608E00B9D657EE │ │ │ │ -707174A5FB3A31D612DCB27AADC3900DB3E3077CB3F666C9534DDB8846A22ADC │ │ │ │ -98C702D69D9A44FBAA3A3E09BF32DA8597A6268BB411E479C6287A20FD438651 │ │ │ │ -7CE2A9101BD024E813A0FEC86EB8BF75FCD80B779B5B74EDDB6D22BB43D9FEC3 │ │ │ │ -727816B5A2690473D0F7BDD47F29D2A4E5F330DEAAA9CA0F0BEFCE651B02F20E │ │ │ │ -72BCD773F9BEC435E35FBEF090F47224ADE5615D923C48A67E1A5EAB0322EFC4 │ │ │ │ -FBFA17B369A35FCD5B7C3F083A4C0F40437D83054542064ACF8A783F91D376DB │ │ │ │ -38E0052512524D1BE24BE0856432223580D23546AB59669F5CCFD37831BEF504 │ │ │ │ -67A727E751A69A113F9B10101BE9357844B36459BC2B6A11D29D617DD08360E2 │ │ │ │ -7453522FF426467490686E0F5E34190D12E6E10EB8C1FA2BDFCD465CE63C94C6 │ │ │ │ -51E7F78076731617746600004C8167F7F1AE88633272A28D2620FBE629F125D3 │ │ │ │ -E0B715B4A1F57AEB1A27A6F4120ACDE31E662F7FEDF5138D49B421EAFF790C58 │ │ │ │ -7DC35056468C8FD8524CE70CF05D5903BFB01A7A3E892E3C80C4672B260A0A60 │ │ │ │ -26087E9D977554243A45B695E7199319BABADB3E5C0CF4C2A22120C4E84F6048 │ │ │ │ -298589E8A5FDFFF89EBEDC47E61CE95D19BDB07B9185896CBFAC3EAA24318730 │ │ │ │ -6498B677D5F862BDD0B4814B0A5A83FA703092BB5982319EDE562578B001FEF0 │ │ │ │ -FF766F0A0F7FE713EFA94D5F57A8650A2CB4FFEE26831225271580A1BAD7A67A │ │ │ │ -12B0AED3D05A4ED29817212D58E3F112CE832D4CE020074D0EC99E677AA90BD9 │ │ │ │ -9AA807465D572814EA5DD2F554B82E4E39311DA674CE7B6937F3E6C156F3A05F │ │ │ │ -45EB76A42911E7F6051C394F286C1C05758FD6D327103646312BFA18C3EA8BCD │ │ │ │ -8EC60754C2170E4531BB7608FE140FFD9121745CA0F19F8AD94C795B2E8EA2C6 │ │ │ │ -B8DB743F940E5B12EF72F54DA8991809D0FD06C5E7249C42BD6FA69D24C88A19 │ │ │ │ -F52FE0D11EE302D03CFCB50152FCABBB0D4E5DA99A87D63BC3FCFF410962E831 │ │ │ │ -D4AC16F253F3E3ABE530CE109B6F7CFC16A032B548C8020D297C14F565B145AB │ │ │ │ -C2C1E6F16C8B1F5607B4BF20310A143BBF8F9D0358312A4A9BAD5157253DBB17 │ │ │ │ -A04F0F5B23F3EB6357CCE6D632DC281CE4090BE2463A5BD960B8BD9D831BDCF5 │ │ │ │ -E8903DA36C7D2A8363CC0FF1EB93A535C1F097503826991C00E0A8F218904682 │ │ │ │ -83D654CC74AE892448DD8B48B65D2443CB79480962292345D9E37658097C27E1 │ │ │ │ -CDEBADA93135343FA0FF4DEFA1F067FB7B919E3CC50588DDD8AB95D723CCA315 │ │ │ │ -69E976DCDD7676F8D4A1D6D0EB24B57A770957E883074D65E535175981712E4A │ │ │ │ -FC902E96E62B8CF0A34DBD48191C554BD181E681429FD7E213938D0097537446 │ │ │ │ -969A4C085F5126F89A396530AC9383F5BD52C5B55D1C1CEF7B074D55F6796C21 │ │ │ │ -6EB4DDD6AA5EA7CEBA81AA48DF6AD680DC773ACEE8E7B7D2EEC3C432C63523B9 │ │ │ │ -8DCCA7B03638A1D00DAEE0DD3AFE630DC65C1936D5CB25A16063531E3DDE889E │ │ │ │ -E77B81C44EFF4EBA9317D4A1361B3C437614FBFA6C9053FA50D0E0FE890202F2 │ │ │ │ -A91E36DD76BEAEAD8E1DBC9D846D496B4F8739120B87BB528D68FA628C0A8092 │ │ │ │ -FE58F7F8F14A9276CDE4E3ACA4AC4A35B25674E25D90B43A8AB00EEEEDB9C766 │ │ │ │ -DEA4183F3A47C35E478C97164BDEADC6F27892F4BFB4D4C661E7631B3043EEAD │ │ │ │ -380C9ADDF9C4E11F026101A96BBCBEB2359AA9D6A46FA06F32BCC7F552289C15 │ │ │ │ -AE00E52AE3E8DD13922D2DFE6ADC7A3412F1158401A0E4B165D1B42D99B2EFA1 │ │ │ │ -F6FD9094421BBA0A715B6321488E8693DDD67EE171F725176360D0AB44364DE2 │ │ │ │ -67BE2FB07725D3D297B0724B3F3AF53B8D7F3FFDA9E67450B321DD551077282E │ │ │ │ -1619F3CA7526C2DD7107EAEF1A8FF0A607E30AA5650B1502B6399764E3646689 │ │ │ │ -A152CC17E697A1E1447687B3713078899E759D3B852F2A6D8503541AA0E49AC4 │ │ │ │ -7D5716C631740AD85B9D00E34F5D5656375854CEDE5EC4C44EE2028F988C2B99 │ │ │ │ -CBD512E27BEADD69469C9ADF2F572F7853C0253592626AEBFA8DAF54F16178F5 │ │ │ │ -FBFB87F6463FFCBC3D59334570DE04F148D1A1E52EBE353483D388EF562FDA18 │ │ │ │ -378500C0032A1AC49A339695666D8DAEE6061AEFCFC5061FBC87F4FF94AF9FAF │ │ │ │ -0A3779A1BB3D2C224D6CC56A0F4B5394798B07BBF9D3F1A6ADB45F5287E706E9 │ │ │ │ -4F6CED5763DA63B96B216E8A781C502D1329F7A9230656F8CCBE5FEA1BE18C13 │ │ │ │ -23909FC8D417A07C35D3CF8E9D35D6CA2122C04667600693AC778D85DCCB77B1 │ │ │ │ -73AAF04576A17CF650BAC444CDE66109ECD50535BA0D19C5D494AEE4E82E4B3B │ │ │ │ -385FE2C16C6AD3ADC943C18BB27893FB26920EADE8959C572CA008DF69BFCE37 │ │ │ │ -7B4FA93B26CC14DF500E4B8A0308B07E38169B9D358F405FC56571C344E37D18 │ │ │ │ -F33AEF63B21FFE33B309A73B47F40AB9F53EB127199B53D4EBEF32E2C1FA81C4 │ │ │ │ -9E2DCF1B4B19390CD2DAC9D14EFA38F8D782E38653C3B49EC6207052D479AAB2 │ │ │ │ -03E872B965F12AB746E7E1065E99B3BBE3C7829741C60CCB335F8814A5726BFC │ │ │ │ -E30E4DDE45316216F21CC3A652F82FD0C7849C6CE97E8A69BCDDFBFB32574510 │ │ │ │ -597C9FD4A33D68984B5B762343C59A958D8C25368D98B0E686BDAF66CFC6B816 │ │ │ │ -4AA731C9363F2DAA1A9FD78536EE3E3A0C6797F0B79C04219E50B3C385BD7553 │ │ │ │ -2F48BED82FEE4FE526D2DB68F98F9AE54A4BE462B77DF1A896C4B41B6B253C55 │ │ │ │ -B64B8125F3A76DA763CAA0A76E9792E54584A568D4A936121CD048D67D34087B │ │ │ │ -48FBED91F00A05C26B279DE9E9914FA9DA2C6909B9FA2B485438E8D9E5273A67 │ │ │ │ -58AD41E19969F889985ED43B218F3D619E468B1F35A0A4CF32F213F96250CC6A │ │ │ │ -5ED6BD8E8DDE196AC4C6680D33C02CF76CE00F7DB92DE5533BFE84C2F5DF2DC8 │ │ │ │ -968226F4B52019D4A57771365CF912451B96C568C6ED4604759AEA07E4253030 │ │ │ │ -E535F192FC9FC397CB310BC340B47C665CDDA008E397BE2921A3D82F77A3E8A0 │ │ │ │ -F1E694A0AA201CFC8415799F9418B73449F83FA6EFCBF661677CF9DF2D9C6E24 │ │ │ │ -2646579BF8802138D69FBA4891AEFE80B08C88F36222BBAE11B65CDE83D4BF62 │ │ │ │ -EB648FE96884958FA6CE58C93259223CC5AA1ADC3AFD325151598C18383B61F5 │ │ │ │ -A454CC06C1D370F8F5D0A72549D5978BF76AE5ED6B4C09530E883A598299F1FC │ │ │ │ -8B2B858805B24814AEF0AAD9BA86B5BCA326C0237E9929365B89E1C885683146 │ │ │ │ -7893DF0F7CC46079ABAB5B6F97901F570307BC526248A5F6DF0E04C00C354E05 │ │ │ │ -516784861CE553161F9B234F9E23F4080D73CA67765E6B18B1B5C465040311EB │ │ │ │ -ACC719D5285447C96D2E6D761B9B54FEC5E2EF21B613A93C3EFD936595C8B64C │ │ │ │ -DBAEFB324607D9F5DE514CFD7DF32919EF5CF33D505FE3ED1681E393682E73B2 │ │ │ │ -83DFBE6A96D756FA9090C39595FDE25BA25FF3C25F0B67241A2291100B08E9B1 │ │ │ │ -6F5CA3E03432BE6FDF03F91508D565AE62C56A67F16782D6D20620F98509FD93 │ │ │ │ -4CFE73426122948A58018F39D01018575AECED59308BD81DD59DC4D73F7C2F5B │ │ │ │ -51C73DC0D2F0A8F48F726C88494EB2D7C8AF7513C5297976856FD563080C5128 │ │ │ │ -397A320FF43369E3175929A36FA1481A040641E59984F8F3F945A8F30B9AF2ED │ │ │ │ -96812B6BA64A166C687D56844FDFEE376EC733E88741736EB18FDB491A395979 │ │ │ │ -C843A39C25BFDF6C49 │ │ │ │ +2F2CF265A70B9A80DA0210449E4ADE783BEDAC1D66E351E0EE272BC22A49E907 │ │ │ │ +5280062A516E9368A5EBE8270DDF9043926E60187AEF5B99676B92B7645170A6 │ │ │ │ +A66F3B005CC7D780BE326B4DF72248F67C45B5297A869FE7C7FAAB687F71B291 │ │ │ │ +96DEBAA700EA1182F55C83196C96384ABAF02BB0814BF44092DDBB08D7D9CE60 │ │ │ │ +D206B93A9858EDC038C9BD9DD6534812BE7FB3A95A5445B5800D0B31E275A358 │ │ │ │ +2DFCD77FF6AB80F078B99E6767AE76AC32D1E34E339E948222F23A213549443E │ │ │ │ +171C71683C4EDC4E8092EB6C07E7D7642C9CD8D51FEABF3E42A0A061FB60C5F5 │ │ │ │ +F06E3DD6FC0D4F3AB7A75674B7B22AB60C26069BAE6567BF155CBF06B49099A0 │ │ │ │ +978BFAF1395943E4244DDA1FAA590BB814432AEF45819A23128D90F100163743 │ │ │ │ +CBA36D7147522078C9FC7C8ECA081C2755DD6B8FF23D0467F5DC4A668F7DAA3C │ │ │ │ +1E4EBD6163D8366372E6DC952367F2EA8B71B14C11975F23B2B1ADF4194B54BD │ │ │ │ +B90389B971088EC2E82ADB5FB7FD46C86D03E08E0C76596E663732A3E5920E7B │ │ │ │ +4279F2953AABBBF321850A522D9EEE8C00817D54AB5076B413B4F13BCE05BFB0 │ │ │ │ +CAA2AE8AA21B98BA59E87AFF63FC6E1588D7173EF4311D7C1B184E10629D57F7 │ │ │ │ +1B4F89CDA3C719DA2D9A4D42B7F406CD3A56FEDAD2D886EAFB4DCB22250C4920 │ │ │ │ +A1B499FFF7C537B7B6982234E46A036A92925F7A0FCC5893E5C54C8A82E0D560 │ │ │ │ +53074E7347AA210E546A30BC214C288DF87F9F390B84FF61616CC8FE5488D7DF │ │ │ │ +C3615A938CCCB3E680C77B872645A0C0D6478E8D0397792B99D42432654AE2FE │ │ │ │ +E87D6E34D89D6BA32A51E519BCEEB6FF57540DD5B1E512DEE2358870905D599F │ │ │ │ +1557C20B037EB4C97E3989E1B672C5A0E7182F3C8A5F13A80F7CBB79862C7A44 │ │ │ │ +2823A8384B958189B0DEE16CF527E2D2030F7BCBBE360AC4E0B7C8A6241B6238 │ │ │ │ +45E4A50C65F98E12B16FDCE94B1726E8C9C5CE2CF3E56F72594E1FBCA733910E │ │ │ │ +E2EA6917AEAFFEBBE4DD2ECE38385E241A982171916A3173A99D4F582B2C7CA8 │ │ │ │ +050AC10E9042D5465BBD5FA5831B76E9BB285A4D3C7D989D10E5F571AFAB0DB0 │ │ │ │ +9281621615D72D472694304DA9EABFA8A2D3757985AB7F68CED8CF3F60D6EB22 │ │ │ │ +A75B44D13C91F0F0BEAAEDB003606F103B89A932C94645AF552BE38DB777A5E0 │ │ │ │ +D55A712AB39D655D98ACF3592D523C2D017672FA9A889FC487C6A79364672A10 │ │ │ │ +E0C3172DA3827BFD42907AAB79A1CC55EFECD5511B4B14F991FFC4A7456A1FFA │ │ │ │ +21BE6722D1CD7A6BA6CF2DAE428BBA8209D50F648B8D6C501B1CC9374B5CCB31 │ │ │ │ +9FD4CEC45D44E5085F5D382C65871A1F89B279CA6574EC7EA133F868FFA454EE │ │ │ │ +90910FD1B92423B27F6E461CDF1DFB84B88AD3FD5255BBE71C061551CAA34416 │ │ │ │ +809024AAA926D68C3CA36565681D2856CE6AB58EA5BE601354D905F38DD74105 │ │ │ │ +DC24D24934804E617573969EC8D556D77DBB0D83D5A8AB1CA307F167E9574C69 │ │ │ │ +6967615EC7F479E1AD0F3B97629B340793EC60AA3AF4A339953D704372BA79EA │ │ │ │ +822ED1023B6E6CD72C4CB851E5F406753575AEF2B75287D8D343712013A703CA │ │ │ │ +656DCDD9273616C2C9FF5A1EE3FDA08CA82AF9510C172AE67FDBE1491FC28529 │ │ │ │ +27C52D6700A12B65160A48B128D136D3FF32D303F6FD93893C68B20446F0CAEF │ │ │ │ +DE1A7A6E56E13E8E3A459782599E6836B2C252A0EC03AA95564E3A78DD59C85C │ │ │ │ +9474A8522A9FC7E8BD1B192BF90F8EED1239E2485CA40593AABB0C6D1AFE80D8 │ │ │ │ +833393634F68100EF16642EDE98D156558C2BCA26134CEC60EE94A9495391459 │ │ │ │ +F6287FE5D0DA0ADB1DF213AF4ECA594D178309CB71D6E041D21512BDBFEBE3FD │ │ │ │ +FA9D6A19929DC8B5D366A057D2F8D889BDC2B6F4C99E2FDD62378C2E1CF8AED4 │ │ │ │ +2899DDBDBF1478E597EF4F06CB78E1B5C7BEB9494C0CBF4E3293B0179C2A8F3D │ │ │ │ +8550DC9B24AF4E9D4F748EFCBD697D4AB57B5E528B03AEB87DF15239211B2A4C │ │ │ │ +A04745296ECAEC9BB764E87F956AE9777D2D9436FD71662B4C4256CD5672C143 │ │ │ │ +52EB7C9F4DF5CFB0D02B702973982E438D8CEFDCFE4D582B295458AD7971305F │ │ │ │ +171C8FE59DAC1422778581AC61B40CF475C67187715B1781E2AFE7855FDA8B01 │ │ │ │ +1705A7303F1900116C890F7B2C6A87BCB59749185CC5E723E531328114F2A286 │ │ │ │ +63555DA67E065744951CFDBD8A02BFBF169B34047019386222D023CF5F898005 │ │ │ │ +C164C9E9E5C9A3497D9CFFEC582BCF933E7E6AF61B357222FCFDA4EB72B29D67 │ │ │ │ +A8B17FE0ED170488EEDED8BDB7402EE3DC8CF726A55204AF2E5CAB357D02E68E │ │ │ │ +3B43AD216A7CD5BD721842540A0EC5BC480864AFF129CC748EEBF1B0305B8219 │ │ │ │ +F01C0762A92E4E877F3020DE837C051B20A5212D7BA875B71809DA510C867F68 │ │ │ │ +838E71BC07B35BB756C33801B31B6B2CEB63EC31F6BAC0E8202248414BE555C4 │ │ │ │ +165534F2B9BEB0771CB241A30D5219B78E62E9283D1F45B2C59A01EC8F158814 │ │ │ │ +5CA9CE42CE2E15259973B50E022C6E5214612FDFA3B3DFCDFD61A31424BC9D5E │ │ │ │ +DBF004DDF735F62FF2046926411469F75DB9E8FFF1BA878A8A9F0E7BCEF462A6 │ │ │ │ +29E3F3FF90483B532BCC73AD63819F88B783CB02DB385C4BB82AF7DE3F0EC41D │ │ │ │ +2AAE3FF2129F52C7161AE4E7D62104AE6C314C21D2B548141BFE4F4AF319E308 │ │ │ │ +D85F717DD04DD11549D9EF7B277934355A5FD18D233029674DFD77579D3BA8BD │ │ │ │ +E01374820FEF6C638FFF79DDA1D1A31BFFC720FD3632C632D847BA7B6D992AE8 │ │ │ │ +6908986B2106FA9464E434445C735666865DCB9298815BA78C30BFAAB037281F │ │ │ │ +1D3649593244059400877916D83724257D19AB194BEA87751B6262B3CACFD939 │ │ │ │ +4A52ED43522E86668640DF19CC8F90E69619F85879252DBD76147D81893B3085 │ │ │ │ +F56D09996C2C6D06500F558CA1F7888F1729DF3C714CEE3C04C531190F55D457 │ │ │ │ +C671362B9BB1D4441AF678AE41F19E41B99285A96824F21A61C5D8C173DDC014 │ │ │ │ +FC0F14029D89D8706D88E7A7C7617D3EA1794F66AE9B9F2E867BE874AD198F60 │ │ │ │ +F88A673378BA406B523F88C73D0406F7437FA41F9F15A4C533FD8DD63468E349 │ │ │ │ +F1FFFB796DCB2A974E04CDD3E6F0D20D75ECCC66B4DB07F6D9BEA52EBA8ABA02 │ │ │ │ +D45F72A866477FDA394989172E10500B3B7B24CAEAFC8BFF55885DC6BDC609B1 │ │ │ │ +8CE1EEB6D09ACF5AC4F2B235E590273786C365409480462DC236FB7AC71EEB62 │ │ │ │ +2D2CF94A9A41F0C09578A38D00F4837B631D43E7D9062864DAD36F9C751FFBDB │ │ │ │ +3437C2FD61B32B2AFB8A130F6E240FA38C45E55872839912E5CD03AFB17DD16A │ │ │ │ +89E0F2031B8E8ECAA6E6FB9F74F95BACA1D4908B6BA40D5F8F12BE73D7A7F21B │ │ │ │ +E47D8B4C3BC9251E3B627D9A1CE044C79A002B05EF15EB15839D05B2C17CCB3F │ │ │ │ +2F2A63A161F287D6047FC49ECAE404B929887D60561AAF37D909A9F6A182589F │ │ │ │ +4C629DFE94FC46669FF56D31698B7CC953A86CA19C178FBBF30BB8224DB9C2C7 │ │ │ │ +E9D0D5CAF71AD6C6DF5E514CE2437C676735393260FA6F51FF299DBE71649672 │ │ │ │ +FC7BEED2BA92F0E6F78F9ED6052B3D565FF8A510FEB90CCEDB179111C280EF64 │ │ │ │ +673131955CCEDDDE9516E4E549E5E1D14E67BD57D1B96EDEF2A7994F71182373 │ │ │ │ +D65290ADD2EB488533C411CF7E7ABA5DA30A8C752D77984B008FF2FAB3A4E434 │ │ │ │ +5E7C081DB65805AE8024A954F9AEF69955E259883A3FF0E1908AFA9562C4B1F9 │ │ │ │ +D62740A6C1E4609A478074574E7294FB2AF79BDC755E85960210DEE242076121 │ │ │ │ +5EB47201CB3880A86D53B8A14AB408A40B37FBF019CD7DDAF4D06DDA26FCC036 │ │ │ │ +E6244347977D900641D12FEDF02A29D7C1ABA1A983CFD5AA9FADFCB54E4EF179 │ │ │ │ +0CD69E58843F41734EF154DC97839B5AE320D40B3251032546399CE5904565B6 │ │ │ │ +44B1B76267265FE5B25AEAA6CA5CE871B20836B9D6ABB2ACC6CD9AA24E25CAE2 │ │ │ │ +A4A1FFB9155D288BD2F582A593C5D4B7C4E91DEB884AB5D02294012212722073 │ │ │ │ +CE553D276886B09530B13D93D172BBA8CF23E7FA08659404550F8CE8D203AD56 │ │ │ │ +E8FE6BA5DF886F7FCEF79D662257318AFBC5923FAE4C711F3117504DDBAFFA25 │ │ │ │ +AFB40FA1382F52D31B8552E761C5B87EC24AA281FC58E7EB0E49698D88437CAB │ │ │ │ +E1715CAC43787EAF7E12D674F59D7FA76253BE09392EA0AC6AE50A62BB1A0941 │ │ │ │ +93323BDD193897E2199614A945BE6BE60B4BD3C08D1A98E18C207F62A68F219C │ │ │ │ +2CF734B0B58915A29B3614244A31337358B1DD78BAA38D4B49EDAC4E6616E56A │ │ │ │ +E66B7E5BB597349EEB23345E753EECE508106F470C950C091544FE52CEE89A17 │ │ │ │ +E8B70F83DC192DEBC68A1C77A8F2E060EC3DC358CD0BEEA64E3707E8938C41BD │ │ │ │ +893E6DA211E3C16C7B36D934C256313DB723EDD1F14690658481B29778614ACB │ │ │ │ +3D7DDF9CC37F0DD37ECD8637953A186A75C9E3513FD1801C379649F9319D42A7 │ │ │ │ +29418E066D28F91F5B8360ED5DE96F9E900CC9ACB092CC44001E4FB511A37227 │ │ │ │ +B8C912008DAB91306F4B6309635C8563A74354DD9E78EB3E9A463415F8552D17 │ │ │ │ +B4848E677F054AA8DC1F594C9FC835E9A5240744F22BDE4D946A539A8C83603C │ │ │ │ +A9547533936A5F8CA6D30DFBD37C779FC45885782E0268AF8744B4385A2AD278 │ │ │ │ +A29A7BDB55F0EE98CB3F7765802769E04D295608A4FA18E18AB467486F472132 │ │ │ │ +1F8B6BF09C17D46DC8B30C8F41EC77460B4ED9494B0F23820E05A37B1A3EB8BB │ │ │ │ +D0856BA2DD8E823F559BB19638D558C1B53CB09681EE5C9715BA07AAB9A26DA4 │ │ │ │ +83E5A0F6F5312E609529AB83F88EA93E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6602,32 +6576,30 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ -dup 68 /D put │ │ │ │ dup 71 /G put │ │ │ │ +dup 79 /O put │ │ │ │ dup 83 /S put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ dup 102 /f put │ │ │ │ dup 103 /g put │ │ │ │ dup 104 /h put │ │ │ │ dup 105 /i put │ │ │ │ dup 108 /l put │ │ │ │ -dup 109 /m put │ │ │ │ dup 110 /n put │ │ │ │ dup 111 /o put │ │ │ │ dup 112 /p put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ dup 117 /u put │ │ │ │ @@ -6805,182 +6777,169 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547ECD7EB31108291A22BBC656F4D968DF891E4F87EF8FFE711A48FFD9 │ │ │ │ -94762E9918C42251D75772AC97BC15A4FF63D911D96AADA1CFAACE8D7001935C │ │ │ │ -9D7A0E6B35E1522780C2629D74057738FCE1BD41CD81D97BFD99D19FE03B2EFF │ │ │ │ -7B80B18DA5538D06A810DD315F31DE1331EDB82DAC760E6D8A855FCA3C8DD9E3 │ │ │ │ -61164D1386FCA2A0E7735AD69D7D9C6335F02064419B2296ADA17DC51A1E2195 │ │ │ │ -45FA3A158E075213ACD6607B07385F0D9F5F3C5C385624B43B10016D497FA569 │ │ │ │ -103C0A7CC701BF1558C587B15A8094D8E4524D74DC263BE9C5D1C96970A7324F │ │ │ │ -5514ED0576D79D5A7C8CC2859C832B0C5869166DA1DB8CAC589AC9EB48379CBB │ │ │ │ -33B840FDDADDDA5FFFC54678E901A33854A703C01C16945C99655BF1BEA74EDA │ │ │ │ -723B5FC176D9693ACA831C563CDB35C96C69575A510E33D5BB62701CDD2A759E │ │ │ │ -79C045541F511340C52E888907801E3548CEC3D2BC22BA40337B64A862929ECD │ │ │ │ -6D7C3F92B5C9AC4427AA6986DDB6A4A792F5FB6C969F50C5068CB2A5C9205191 │ │ │ │ -C19B22A4D9627E0304444D963FE2F3C6FE86818FF3A6B50130BCE2DF5DAE000D │ │ │ │ -658D411135E9DFB829BCF033FF4ABF1A3F3E6579537DB4D17EA4BF7F2F6ACA4D │ │ │ │ -6FA0858A09BDD229CF49A29030D280273CEACB3E72945F424D8AAF50E53187D0 │ │ │ │ -61786DA0263FE776D86CC33DF81D8C0325343665F9E6096EA072CD7F53C9FDA8 │ │ │ │ -74C647B762ABD1B70F4315247C13EAA98B41F80E9A3E62DC60C8FA85254E5239 │ │ │ │ -6F9D3EB9C81F9A4EB912388D4F56D56ECB4179475564C8665CDE38A211E518A0 │ │ │ │ -96C3577DF26ECCE018A8C4A547CA4D04E6CFF0CD0CB914E0CED319B29451592A │ │ │ │ -143E8D5A15227EB69C1130FCEFA131B9EBD0E5E15D0F23375062AEAB2D7BF9D0 │ │ │ │ -1EEB7A8738F7C2893737A4FDC4A982A35253DCDE984882CEBEB2C8E1E9B95F68 │ │ │ │ -5B4BCCE512B54818CC32E7CED1EBCB28CD7AB7A87EDC85C0F9EF80D333261732 │ │ │ │ -09A5FFA81A5E8E24C323941A193A4501860BA63FE520AEC8B12C0A4E1A4B9C24 │ │ │ │ -5764793A009FF22F56255CC0C4A3C664820433F42222262F7A7834F18B0DB5AA │ │ │ │ -7D03B116F7B912E189A5B1518450830A64EE35F1C5DF210F37E0DEF71C6BF0F3 │ │ │ │ -1679A4ADE18C3DC0294DC4FFB3CBF564F48760FECC39690BBF0C3A8313164D3B │ │ │ │ -6CEAC9B39CE3F16B020071431AF0A23580047A2DB3012244859BBF5FE75FD50A │ │ │ │ -47CDCB3471B2ADA210E70BB4C566FB7EEAE6CDFE81B7B7DAA3776EAA15D4DCA7 │ │ │ │ -C5FA99DCA17C49C2777CF6F60D8FA647CAD5E634FB02267A06616DB064AEA231 │ │ │ │ -C5627F03C4EC18FA908A14C957634CDD1AE85E547FD24B4C0FD2B3F57EBD01FF │ │ │ │ -44369594B22D631F5FDE72DC715626FF09190CB0533BDC863840CC0A296F5930 │ │ │ │ -DD1ECE53EAFFE9BEE063E06A246620A2887B3196E0C145C705E534175E3702BC │ │ │ │ -6EAC03CB0A2E5EBC545A322EC90B469FB1BB955C9DE1AECE946EDA931C049B90 │ │ │ │ -E68D1CD5D0AF283AECC17B28ED6D31BDE4BCD3F338BE8304C461F990ADCBB39D │ │ │ │ -56C3BA512D5A1F3D4DAA3D2B22BDD7F9E739CBF1FCBF4D5CE32432C75176A350 │ │ │ │ -598CA751AB5067F4E23DF26A13F91D6678376BA32ABB19FB8D57828147882FA1 │ │ │ │ -63AF9F5EEC0CBC4BFF018B4B8AA623BB989DE17230F58FF39C87F9A4FD9A58DC │ │ │ │ -95D3B08FAA0BDB6EB4FBDDEDF1414050D974F88895DA54898FA3CE853D057C92 │ │ │ │ -B87C10DF3E0D297015896F85C82F1FE7D9DFC04E2A5D45AE7B6CDAEA3C79973D │ │ │ │ -F3D61E8FA8AADE04A7FE47DF50AECC7E4C16E332CDC5421052C861E133D12741 │ │ │ │ -0CF1220E3C105CA17CA66A53B3E7A971E0A34A5354B92EB8DAEE43CEEDAE4F91 │ │ │ │ -84D2D72680E09B5214E265D66763A27FB55B955B8C619BE1700D87E76F469967 │ │ │ │ -89FAF2D413E5E029D187E49BFD1BDFC00825967A742E35CF133AD25F91195214 │ │ │ │ -063311639582F53600A5B7A074170B49B8D5376399DF6300386841D57C0C05C5 │ │ │ │ -C2D19F52E223FD09866079D8A81403F92D4D91DAFECF9B9E89DD8F31B85E9EB9 │ │ │ │ -1767082E9A2B620A4FEDA51EFE07AF9FA63ABD37EADE04FBEF787B33CC19D915 │ │ │ │ -CB2A0C3366A415C1B4185C82B774E9AC0B4E9A50944B218B9A2B83B7C34E2094 │ │ │ │ -5D63678AC81DC4C6AC2D39FC83C777E545A7F7A8239F9CAE98049BF6DD2E527B │ │ │ │ -C3968FA41609D7FBD4495EAB33EE45087104870EEBB338EBDBA83DFF459A2697 │ │ │ │ -3E93BB1856021AB65417079C5101433E1462D2ABD82D07123FE76317F04F2D61 │ │ │ │ -1E573D9D0A77E62EE3CDCCDBE3E1743DDBAA38E0E9E50BACC2D10D2691E18663 │ │ │ │ -B10B0374F8F4F87BA6946F89ACA061B903E8E4686F9E33525410D4488E6C8848 │ │ │ │ -1A8CC55C54F90340306EEEC4ACE4714304FFFB79DCBA8A2C4631759724E43ABC │ │ │ │ -DC8AABD9DEF67FEFB8A91FA9825C6CAA14807E2DC941158E3BD84CDEE540A693 │ │ │ │ -18D4433CBDFCB19B65F6DFE388B479948AD2AA18245555F9472C72DDC02CC6A7 │ │ │ │ -A7DA4E4369CD6AB372AD08122993688CE6208F6745EC0AA3AEF66898EB807285 │ │ │ │ -7BE6119BD451E6796F15E21015A2838F9B903B6A5A3DFA32F5DEC40D364BBA41 │ │ │ │ -90D471ECF420751455F370C428B123D14B2F917DDF1923E4F39B45998F77107A │ │ │ │ -F96268CF703108D9086D8CFB1622903820034E150BE65E462A352EAC5F306FE3 │ │ │ │ -2E6ABEE7DAF671E4978A2C999A0339E328BFC962BE9889DC1BF2BD2FFF2019AB │ │ │ │ -517C0E4AA8060D0F0FE7323062742B9737BC220BB27E51ED71E741E21886C668 │ │ │ │ -E8FC2E1948436F854B6B8BA17BD0CD3268A4FD2447CB25BCD136AF0823248375 │ │ │ │ -659498255BF6E5EE1657702DF6C6746C68B6B1B8567E47B762084AE9293355CA │ │ │ │ -6B6DDDFF3E80940A03B80927BC9AC3112959241CA88D81CFC2F6E90EA4EB4034 │ │ │ │ -5D0F8AE0FDBDAE21B933E4DE8B87A088E72CDE6B303ADFE339D8CECCA27C1F9F │ │ │ │ -AA022CF12218D1DBBF512858FBC68C7396435DF9828F79FEBA2CCDC592AF62A4 │ │ │ │ -8DADD470B56606E4853B5FA9398AD105B0FFA210D8571137C9DEFA85FC39FD72 │ │ │ │ -C01C3402341C676A58CC202814248F44E79BA7770C242394CD61F3D4514DF541 │ │ │ │ -0CC068EF5BB579400C20A7C8074C94CC63C3B24D5550FAA84D5D5B7EA7FCF246 │ │ │ │ -74C6E4B7EB80BE00BAFDE93D6C8BD23642B7CF4B4022AAF24430E418D402B309 │ │ │ │ -2C76F818E304FA04D7A320C1A376123B5B6B0D524601107D86D6466BE08FF8EE │ │ │ │ -77C9E7350C8E4B26270EC7AC1585076ED08BF59A21656D13AE104929644B9351 │ │ │ │ -3DCBF22CB62A092AC8AEF5062FB7A17148CF9115DD31C9B668FF41AFD40E41BF │ │ │ │ -59AB19203041FCD7D32619A7FF31CC1CBF81467D56C85A25EE29DFE94D8CD957 │ │ │ │ -BAC39C0D8EC8671F5A3CB3EA33BF5E3000D25E1340AA994FB4873B71450A2620 │ │ │ │ -ED9AA69CF21A927D0D0CC45215D74CD7DEC092D4442332BA0666886BC232456D │ │ │ │ -C69A8C07B36A79C5DBA9DEE22A0C0D25EFE4A52786CB47079D34F652C2597389 │ │ │ │ -A6A1906A3373390EC7CA84E43B826F9E7F8424AE8541BC545A35A68B3BC7EE93 │ │ │ │ -BE6B0C48A92053DD63E9969913BC6FC1E0BC68CFD0DD50E8C5770405473148AA │ │ │ │ -B2A76BCE8ED0BFA54AA9C55C1CE12B259D4DD0A95F13FA864ECE488BE4E7A9AB │ │ │ │ -61CF7943F5DA21F14124EC1C28487B7D93622FEA37E4771432903BB0C1E738A9 │ │ │ │ -25B716793890AD6656982034F7147E308108D3372690CBBABF0D6F953832638C │ │ │ │ -3DCC654A9233C079648FFB9D077BF7CEEABC7795359544A8AB2E0203C4E81C7B │ │ │ │ -F6C7D9A11E9D4BE1EB9F748CF8A5B37EF08B5F3A3B78BE2F50FF967A5BC87FE5 │ │ │ │ -013F82A2AB54503F96FDF9A56E4E86D0BD88B94D3B705574F770DBFE5F8C19B4 │ │ │ │ -7F8C59A7FABDC1D3395B115891AFF04B5FF0E8BD75E0C33F398E59F9FEDD6EA2 │ │ │ │ -6D4F12B96857E9148876910B7EE3AEA8F3E07FFDC321D009AFEA1C7D77900659 │ │ │ │ -76F1B56E4A03B64DF2FD33A7A50852ECC4E8784539CDD4BB5C221E14C462D5D4 │ │ │ │ -BFAAC108A02037DF7F93F9E1C3FBD4B29DC64CEFDA827717CD020B005568BCCD │ │ │ │ -73885EF2D340CF6E476A9DF1057FF4197CC77FCD57CD76B79B7EFC45AC83698B │ │ │ │ -E60A4E4BCE910E0A517FA603F4FDAF0C53E0CB46FDFA427764F0DFC920F6C180 │ │ │ │ -D6A5F8E5FA47EB1CDB3F10D4CE661E4E0549B70627C35B6483B8F6CFD6D56AC9 │ │ │ │ -8A966BFE5F7056B6B6E7B85399199D06A8CB2F9FFFE2600DC7C77395417DDB00 │ │ │ │ -919B2C9B58A674B144BD365B2D8033F7CA6904B237EF3DEAF7C401F13D8C316E │ │ │ │ -687D03338A2230C57D76283355CA6B6DDDFF3E8C68BCFF718696C6689FB14DC7 │ │ │ │ -6B3FFBE2C8CC42E7E9F61D49A046B481FD35DB86C99C66E006F8DE66C65364ED │ │ │ │ -2E42E7B0EF91259958927DC7A08E92E850C56FACCB703A1779E8ADA0E9D7C15D │ │ │ │ -0C310E35465D87130A391019850C16268B7BD1BB49B345E11680D6818C5F98E6 │ │ │ │ -CD64FD881D87794C5A63659654007E2D2A468A4F999F313C6E5CE8FC287E7F60 │ │ │ │ -CD0BAA68088E302C63908C45AA33EA5056DE361A9A3336BF404F353AE02238F1 │ │ │ │ -1B8AF77123D69EDAC0CDD1073C56A58E5A5EC4BA5903899A729220354190C102 │ │ │ │ -76EE8317E61917F645DF1A4A5582FE6A5C8FF26BADD6DD9C9382F51158470253 │ │ │ │ -5D596E761F5BA04B59636625CA7E82C12E54203786CD44BC3AC66B7BDFD88551 │ │ │ │ -307121890BED8E05855B3A19738A3B29376924FBDA1FE44DA700F189DF9EF231 │ │ │ │ -68B633E24604407B825185641B46C682F5BC8A495E5E3B8AA8FBDBC93F877100 │ │ │ │ -90DD901F51A0B58970DB3FB891538A9DF3A49A363F9834B3B51DC84FB6FF2C1F │ │ │ │ -09DDBE0C2A77FF2916010B469E8F67726707EE33EBF9004C9A2975D267965A0B │ │ │ │ -8EDA211188E87189ED12FD3C2037DFA734626CEE0C404A7AA0A18820CF5EE70B │ │ │ │ -BC4EC6DF3748B542640564BBA070E8733D88F8AAC89B3618D9EDBBF547502B82 │ │ │ │ -C0BE7180B2E3DFE4FAC14912041492163C94A5EAE330A0842CB2CBDE9AD58619 │ │ │ │ -3646DDD271541AF3671664D2FE2C40B9FD0D121A97C3C51A0FD16A400A5A1B5C │ │ │ │ -08B7FDC61B90B21901C77A37B3B50EFCA24466857375888FB8923D0DEEF9E0E1 │ │ │ │ -6693B13A24000B575881746BA78C0DA13FEA611B70448BE342362DF5B2B48D0A │ │ │ │ -0C042DA008B50B3523D3A766AA3EBA15D4C722FF3BE716BF6ED3F1E9BF3540AD │ │ │ │ -EAB3741D34B81EC1D2E6483517B862F5BCA5FEE6B424E76CC3663FD9B9A0060E │ │ │ │ -51D41A3C1000CA78B1576CF1528E31E4C63373D71FA8FB501960EF46A709E2F9 │ │ │ │ -82E58B5252ADC5EDC78AA752C760A96E1077918BF6244ED7651EF83151A75FE9 │ │ │ │ -890AC66752B65A9AE9BC434F380E5B1C8DB3CE925F6FCBCA5C3B828876F04CC2 │ │ │ │ -D7D9819D33740371875334AC1AC56AC5B8A01ECFB897E834D81079D514AE277C │ │ │ │ -5D651566CF8D2BBA170CA8E18E58F936F696B32629DFC5B95F96F449C25F0AFE │ │ │ │ -E35C87B9B06104F4BDCC014A5C27F7B34EB999737537374542C1CB23BA949CFD │ │ │ │ -81AAB091574CAD3B55A7FC1CC7B954B9D99FE5D30E4B35569465B766BC4C792C │ │ │ │ -3E1EDD8A9D00ED833680D119CBF299B9ACCF7B9EE4D2D02122DFE9450D90E168 │ │ │ │ -D9000D51AD58EF8EFE57E619D731BF1D46AB3EAD9B8C1680921F7B8D69B4F4F3 │ │ │ │ -74956E44D6F359E21C3716E9EC1B8CF8C752019CD401483AB16E787949599FFA │ │ │ │ -300CF66CBC518516BFFD12441196011D609B3267B9FD8F2DBC6B52140C8173E4 │ │ │ │ -0429F2715D6FA14E1F496A722EBADA5D27D83E9852272F0D4AD796F7551F3ED3 │ │ │ │ -89DA3ECFA699B6E088EE546978FF4DDFEF4CA620C7F270BD2DE5041E55C1E0D7 │ │ │ │ -6D086F748940F76419D5EED03A42B47F7E96273FE95DAF7CFC763569EB09CF7A │ │ │ │ -D1198587C62D804602712ABBF371E92273482AFDDA9F1D25837A129531B31A78 │ │ │ │ -E091AFBED957CF802825C5C4FB2AAAB723F87BD0E20940475FAD2BC629367B39 │ │ │ │ -78373E350147E6D6570DCE23BEB9A8BC250A40DA1207662DA125DD32FF850B7E │ │ │ │ -20E0DBF39FAE9C9393BCA30108158133306DAF45BB914510F988445974F39517 │ │ │ │ -1D79D80FACC5AECE1A144FBD93E3C47F7DF6E6AED05A8174B26F582DDC28365C │ │ │ │ -EA267A26B74EC275AC7BFB16B2129208638F99F90D92B360B7EF591CB7552892 │ │ │ │ -31BCE1196030321C070699CF2D4031CA237661C8637574DAA16916B860E6D8BB │ │ │ │ -1FAAC72AC1B083AB0E5E1FA120FB3AD490B4DB64A037DC6430E62FFDF86235A2 │ │ │ │ -A8112B9ED3FFAD3EB7B3532BDCA5854210F1D2E864FD42697D8F87F48D8925C6 │ │ │ │ -99E4462AFE4B4B2C75B54E3CC3306AA9C45C07A1D0A46BE21BA9A350DADC1416 │ │ │ │ -BF9C6E50D35BB9782589E658085239BF3D9B05F38F5F650F6E87180337A9CEA1 │ │ │ │ -0A0FFACE217E101698658356825A3A47EEB55EA45C89983106C682E0D9A3BB08 │ │ │ │ -C2C7129535B0145C9B3E0E9687258931ABA1B4ADC31EA84A0F59BBA71B682021 │ │ │ │ -97C4A6FAB4460A8F37A647FBAB166DC007E2EEFAECB3D9FBBC6247D5FD9CFB00 │ │ │ │ -97B24E46C62C9DA13D26C1F37DB47E97E4C3B6722870CF617DF22C642BEE6DFB │ │ │ │ -8F216321A8B427851E6458D47EAB8F71955AEC5157D418D9C52A223D9867AD54 │ │ │ │ -6D977119154269BF1A5841B5B3B4BA6A63E83029E8A9EE56CACA32C2C166268B │ │ │ │ -D038A5FEB9CF959836A8830B3FD05F3567752D2CADB3AF89AFC3D165E72EA738 │ │ │ │ -E7B272A0139AB730E1B4296A15D33AE505EFA9B74EEADF94366333B3CD1408E2 │ │ │ │ -F0E067D95B4194C50476489A98FAB57877A02B9A3B43890911C8AD4AA565266D │ │ │ │ -32FF65CF6930DF00DD9DB5D1E6CBC13E40897A5A6BF1FA7778082B964E9C272B │ │ │ │ -9468A132224B232CCBBD0411532BF2252035F4C088287B369DA14D6DEB702A8A │ │ │ │ -E19AEC19CC6FB0B233DB17F457F6CD2C6D5BB2D6FFD84B8EF80CC56753F210F3 │ │ │ │ -BAA049946368393DC28C5BDED90FCF42DD304EB9FCB41C86574E08ED9D453A84 │ │ │ │ -678860D5CF7D353CBFA5A2248984E22EFC9B9B3A40A8FF6DF26C5BEDD377E3D7 │ │ │ │ -CBD8D01B34F388180EE88E894E82A16F5EEA18AC16D0C1C2A4EDE638BD9C42BA │ │ │ │ -4CBFA3857D4D6852A8C6D0F2168C506FB01D96F83A40BED331C23268C53CB875 │ │ │ │ -3D7B64CACAA797B29B3E0F87106D7FE108D4F7278425956DB75DF77989FC719C │ │ │ │ -713AFEC3E45434643FE47B4F2ABF61A41F6EFAFA2686799A94DACD3A99B2B30C │ │ │ │ -48B621DDF32E8063962317567FA042947BEAE27C6F14BAB9A153646141E1362D │ │ │ │ -C8CAFB255AFFF6C5C017BEE2AF4C8990F11CD336206396494DF3FBA637A37FF2 │ │ │ │ -58ECFD719104189C5D803877F5127F7A547914307E8D1435C7F6A3440BBF4D6C │ │ │ │ -B8D7E283DAA0E0CF09AF3D0E0F36106A701DCDADA4CDFD96B964E8357683A258 │ │ │ │ -A093E4604CC14E5036EB900A215A4A5E6DC2EEC9D8FCC74ED9BB8E081C08DE1B │ │ │ │ -66A542EC │ │ │ │ +B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ +98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ +7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ +5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ +8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ +9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ +CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ +AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB9F59A469D6B95 │ │ │ │ +700C765017DA971CDCAAE135651604027ECAD256D688E2687090C0C95AFEFFB3 │ │ │ │ +F711DB73D9D448F9B585AD85A46B1139AA1DF43C36E9E45CDCA1CFC14E2EEB01 │ │ │ │ +AB39FB145FAC5CCB6536B17ACF74C99E1D07BCDF568A30857341501116BDD859 │ │ │ │ +DD2C74D58856B7A4776E34E8A15906D76397CD57DBCF823E7181EA83B4FEDCB1 │ │ │ │ +B0122B97030B487961C06BF9D134D68FCF49C60734039BA64C612CDE27FF04CE │ │ │ │ +C797FFEF788ABBFF4E7517AEAF96E5C5BECAAE2B8F3BD336D153F872578A6AE5 │ │ │ │ +B8815B436EEC6DCF2CD679FBF07A93FAB82985B988711438DB7A2109302DC004 │ │ │ │ +E446A58285920F6C2E75665599651A34355946FDCFE3FD5B36BC70AEC22FECA0 │ │ │ │ +E8FE8DEF62224151769A6B300CA4371D9A07E5D0820DAAD0F3B6A3F41426A315 │ │ │ │ +E3EBF67C35EDAEC12032483761C89182ADF9F74F51677CCEEE43320D24867624 │ │ │ │ +62E020A96C6F3D9CC413CAC6B20C1F2EB3D5FB742FBD99D0A04E53DBD9A2C1B0 │ │ │ │ +5A49D459FA09E10575DFD19801554C53AAD02578ABA329230297A0BA4F560CD4 │ │ │ │ +786DC5912D612912F1D598D535A0236FF50C5026F1F38B5149AAF5CF54B02B55 │ │ │ │ +4301464EA76036931DF975451597BA19DF5EBFF5EF8E05B42A9826DC692A63C8 │ │ │ │ +56C853C375F0C016849B90DBF7184C4D3DDA1C9162562130CD8E2FB390039A45 │ │ │ │ +4EB464A937C7C813568E780CCA2D2AFE5B1830696D4B53F75704FFD2AFE26DCF │ │ │ │ +9D14367E60AAE55A1D317CDAE70AFFCBA0F814FB036113499BF9347F6027D5F8 │ │ │ │ +A584CDECB1F040AAA3C77044204C48AA33BABFF78FED44934DC9290B8F0F5AC5 │ │ │ │ +E297943683B2A3E2A0A40CEC38C8D4E2DFC75C0F145FBE1AF8FB9DFBF4802888 │ │ │ │ +001F4BB3B7BB13C9FD9C0CC46F7B49B18C29C8C4ED4EA3A062B4AFE53329411D │ │ │ │ +EF056CE8B289DEC6CECD247AA80DBAB8DDE0966A9ED02713BF9383CC2E236010 │ │ │ │ +39B52E95987382ADE2ADFB4E75B3C9FEA516B5D0BB2E5BD5A396A32D45005145 │ │ │ │ +350EA46C4E6E14BFBF390603A733CDDE8536AEFE857755335C643B4C359B4CD1 │ │ │ │ +CEA2821871A7E3184214B4ED1F6AE9F6B0810CD92E6ACC25D97C59935679DF7C │ │ │ │ +1830773AA1985BF6D7D105B1D88F501D0290A5E66BA0671083EBC0601DFD4A4E │ │ │ │ +CD441F6C52E10838E269F5A5083378153907DF53BFEAB0DDDCFE77F1FF824252 │ │ │ │ +9CD18B7C9349F251D73B1F7784C534BF8E4B4DF147D9CBCD1E2E895DD2B60761 │ │ │ │ +D01546FF2EFFD9AE3E0A8BE93F0ECFE19206A1029A07696A0CCD883ED1D08888 │ │ │ │ +FEEBDB55D49B4A38E60A399DE72ACA487D1FCE8AA98F5D97F75C45E87945DCA2 │ │ │ │ +3BC5E1B8D934F27F2D17DBBCEDB57DCA319E290457DB7DE52767A31E77AE1282 │ │ │ │ +A949DCE6F28F677BE19BA95D104561EB8ADD8C10F03B56482AD45D96B8F099B8 │ │ │ │ +4F00BA570D14038F85AA8398E113C47509A3DE2633FD5EFB84235E39032C1E48 │ │ │ │ +F994BF408E5732FF9598B8F85373200ACBBE050F7D77031722A4DA2ED2D0B736 │ │ │ │ +74AE1AE83D7C51C17B10C01848565B328D93FEACBB335B0B154970C746E57724 │ │ │ │ +2373C00AED98F6D1706473D7061AA3FC712F57138FD0BF4D1FBFA95BFBA22715 │ │ │ │ +92B84F3292AA0462EEA749C6DEB2F4A362DD88F6C5EC9AF5DD4B790BB7C2CB69 │ │ │ │ +53DF5A66EA5D78329A5E94C90E5560668DD3543771681B98650E145FECA804AF │ │ │ │ +E99491282F6E027059DF74FD69B4CB0CCF970B2857B9DBA69D37214AA30D9E03 │ │ │ │ +81E981BDF7791988640248F456365A83EF747FB9AFC7DCC589299563E8CC8A60 │ │ │ │ +DCB71CDB25A1FA4BFFB637636071F900E075B1BC1C81887D34992F28B7E23B38 │ │ │ │ +0994BBEECD262F1772AC855679645412807524E4F6BB0435FA764917ACCD8BAD │ │ │ │ +953150E400A0C90453F042B7D0183AE50E7AE19E896A2F8510ECBDD412FF664C │ │ │ │ +19F23784A6409E2892A7C647940790CFBF9078E95DE9D19E58A8AD36A80F36BB │ │ │ │ +ADF9668F11B8254352DBC25CDFD343ACA56ECC09B5CCC93EB0DB3513B70C0210 │ │ │ │ +0E2C831857189FF9998FC8E1099700AB36EACD8B047E908FC84784919F9F6805 │ │ │ │ +F5DD237A8B2FEEC4AA8984E79794BED0139BFCC82DBB3FD6AB96BEEA2851B4EE │ │ │ │ +029ABB7394F0B1B01702675199E1CA8E6E5C0132E9463C1388D793D3616C6CDA │ │ │ │ +50FCCFB2C2467D4D783DFEF9FB0B913D5DD5B4A94FEDDB3CA567E11574B6222F │ │ │ │ +F4F9ED9A42FCB9AF0B5294A855322D0D761E1AA984DD514D6E10C781435E9493 │ │ │ │ +6FF26F08F7ED48A6B8CA2DD915876D0DD0781E5F4E7BFB82FA1AFD3C5FB66ACC │ │ │ │ +F08BB7F9A4073D2F3E9EB3489FBF70088277CD20E8429BD04A445E1AD68C1164 │ │ │ │ +F2EC5AE308D1FAAA53563E26103440F3F042A2EB87C04BE4780C2582A1C2A0CA │ │ │ │ +FB30ABCB97D2EB6ACA2DAE69C72294EEB2A17FAFDB4F097C11805C8EF5BC366D │ │ │ │ +F8FBD64617EBD512B5B8ACD45751661F1A40AAB6E147D36BC448976467C7EDA8 │ │ │ │ +D984AEDBA16AEFA2BDA139D659BB5B62195FB4EEE1934A707804A0B69B02A236 │ │ │ │ +65F34A11F556A6A13CF382211814857160563BE6BD82CC38AAFBA2577874822F │ │ │ │ +0C204826379A88ADCEFC1A1ED7338B0C5FB5A4C9BCCC3D88DC9CA8D2FC5E6B54 │ │ │ │ +CDB5F56E214BE6E610B3C5DA3DAD01BD0A3306FEDCAE66F2BCF6E4224FCCF5B9 │ │ │ │ +FDBEDE2B4F4251831F358886267B2D3D60DE181A9C6EB23A697A9F0459E81D1F │ │ │ │ +947E0A7CF00B3B11DBFD4A3A54579FF554EC1CFCAA07B52F1363F98ED7E80A5A │ │ │ │ +CA4808D54094CA3D070E2B965794D0622DA31ED625536EF6F3E3D601BEB5A992 │ │ │ │ +4189E020D1E9129DEEC4DF5E93A3C2755FC26E2DE42447BDC450B0938E2F692B │ │ │ │ +9BC77C24DC3E57803C03771E59F52869653523F0962E95A36D7B25E1430AF901 │ │ │ │ +F8074B499EEE9ABDADA0570F3A2AF42071A656A25AB9E74F9F63AD68BD0C49BC │ │ │ │ +C5476529FDDD85407DE5F025B68BFBF3F265B1D104AD0D47251A5A39166E6CA9 │ │ │ │ +722473FB26F94DF776D677044F420C4CD0727145A6B5DC05C3A03FCEC4D0FC41 │ │ │ │ +C17D49CCC49032A9E0E95F0D67A8000C23216FC4ECA8CD80B8A5365208375177 │ │ │ │ +DD43FE9C846C90D28F45F2E74CA9D2637A7915354491B160FC8BFE3DEDDD2A03 │ │ │ │ +F1D11FD53DF589B19A354936CFED9325FD22996421806C39E7C22351B94E8B5B │ │ │ │ +070C267474D5EF8D7C1F3AC239ABDC71FC12C3502E6042756E107CAC492D049D │ │ │ │ +722C9D1E542B57E500C4E386A83C10A38F9A2030D834FD2DB687ECE49177550D │ │ │ │ +3E9B3218CF6BBFC4793AF3B0801E946A6E914E870224ACB8E284C4AAEFF7EF66 │ │ │ │ +361422862B1F95CE266F65AF308398E77718F1B37601F80506115F76306F93BE │ │ │ │ +60DA7E2A681659F5CD2BF401D5149A3F1945BE2635B1C0C8409E5A4A366B8667 │ │ │ │ +F7F05A733F35150DABF441B226480177310B3B80676F70402DC93995C128C3B1 │ │ │ │ +0E07B563535AFBD8790533AB66DB59A94F75E8E65D514B80C351E75317AF938D │ │ │ │ +38389438E6B10158FA0B1FE911C942B5B1F936C9BCC79DF577A0AB2F385A1D1C │ │ │ │ +FA7B5B2A3698A3891C346DFE7A90587D684FD02CC8FEA8AEE520C8AE92761ABB │ │ │ │ +F1F1BCE0F6F4259B21562EB8C5FBDBFEF20DFC415BA8277779E2EBB73247DF79 │ │ │ │ +A665D4F151159A8610EA2CBB7E9BF05B33965DBCE7A6097F227064A14F8712D1 │ │ │ │ +EB30AFA6AD14B99D5F81838945679AC880B3A6F74B8627DF8BB9F8FB59A99B91 │ │ │ │ +15CB3636532B3A41821B924237C3823F23748B11544DE8CE6759C43BD18A241C │ │ │ │ +3EB83E4A71C4ED1894467FB1A4E03CD4234DCC95F50F8B2635CBE89245A7F43A │ │ │ │ +8DAEE9AA07887F902FF79C5A98DE4D20C30497C2CEE069A3D43C3DBF77849A37 │ │ │ │ +A7293D2F6B20C09A5B38DCC56FE66EC712FFF0A3D6E9F1AF69EAC5A04E192A26 │ │ │ │ +3761DBE9BA8832526E2578A6C9DBDB9BAADCFDF9E5B839A3FE24A900EE33AF82 │ │ │ │ +DB65D32613CC481024EF5FBA02AACFFD3AE59F5F6C3BD1C4BAE8D80F91A1EC59 │ │ │ │ +2A0F2941EE99557663D53DE4C578562F8796CA9E01BD86D022191EF06368F9FE │ │ │ │ +64C068B05E1F75EFF512E8FF90F4B0D29E30662FECF3FB05E00140519D490088 │ │ │ │ +34C55E4F77C8449EF40F5A3B6A94AAD3F13C06827CA9F9265EEDA52971207781 │ │ │ │ +57FA9CC1F335DE4021E7BA51B8D85CE00390B50AA88F793C39E3321900F3E6D3 │ │ │ │ +ADBC580AD915D163461CD89ED3DE7E3B6A3693A2D48730B8DB7CE1C804A23FC2 │ │ │ │ +B9ABD2A8D3CF97D3195263B280F4C2C508D849D7354D37DEA060469CDF899A48 │ │ │ │ +B86C8829A100E171B4251FE6C361F1D71EF5D88597CCFFF9546C9B4F74C7EF46 │ │ │ │ +DCBB6E61ED1E128EEB51D067663387063839260BC46ED97D41F78A850970BA2D │ │ │ │ +58D6AC0BAAB618A08EC627B497EA6BEC42A0006BE681368FDF65608F13269304 │ │ │ │ +A5416D4A1750364BABE40F1E3915A389422645CC24222A82616028E51928923F │ │ │ │ +80703B02AB5D3767D72791EB6A468C1FE8B933070293967DA03D1339B12BBE98 │ │ │ │ +FCB6A9E2BA6BBFD1C4AEDE993DCCC630DA0C8D6E8F38814861155A02D6AB30C3 │ │ │ │ +5A6118B40E474F4581A98F3AC268DB4057FF1789C20CD501855DCD021E566819 │ │ │ │ +9CF5E6481C806626582295D2337C9EC9E1968313ED7D2A03801E44D13E01FE47 │ │ │ │ +D419DE1039CA0870CA3DF649943E93DC7CFB44459AE0923A9D5B6EF633A58C00 │ │ │ │ +89CDBCD793A16781B90475C02F0568B5DC623FC1549E4C2123B6BFD644434CA5 │ │ │ │ +2A795A20731A7CF757F0F85A428F476BCC8B6CE30FEC15EE9AA85B82F2826A4D │ │ │ │ +F8CC7B15412CC0020473E9111B65D69E0B11B610035DC869A081D9A29031C81F │ │ │ │ +6D91403A1C4192570031E3229A418DDF1B42BBC6E3DB9A18A29EF62D35A06EB0 │ │ │ │ +05266BF67677CD780F603FC5B233C1CCAE9BBD9EB52F2B272FAC9712CCC30BBF │ │ │ │ +56A53D4D63CC5ADC80673BC8EB802EF0DBCC091D86A0E26731B5922C0C8C3A45 │ │ │ │ +B0CBE7C45DC2207614AE5178062331F0119687CC98001B381FF0A1803FB894D9 │ │ │ │ +E1906A85C77F98897A14932DBD7CB58FA84B8F57C436169BBA7CFDEA1A6A0335 │ │ │ │ +57D8B2C676B4E3387D7E1CF32D45E8B0771A784F1F3CC053F770195BB259621A │ │ │ │ +B0FB68135C6BE7F3E16B5927112A320750C9B08B56510EA7764F02A86DB819D0 │ │ │ │ +A59D39745A84D0E9965839B8C40E453B5071DB0C3AB9EB50B350D466B4D20EE1 │ │ │ │ +9E250341D6994005A968D24E952D4CFEB2E6D009D10A78EF288DD74345EDCAC8 │ │ │ │ +FE8036832C119CFBBD230BBDE8245676486E8D3AFC07566B663410FEC9A0D968 │ │ │ │ +0AD7E5802B7CAE1785B5906BAACBC2F759475C017408C3826426E32E8980C4C5 │ │ │ │ +D49FA55A3E70C4D7D35BCB702C6824AC0EE865CC140189E511ABF1A218467495 │ │ │ │ +41807E6006879DF5F69843A920BD03B38230C5BC215E02C7F12EEDE97E4EF5C2 │ │ │ │ +8443A488E752124056140367FAE27A9EB95E8E4B32F74BA7E1F77343BF6C97AE │ │ │ │ +B8FC5D088DDB316B0A659DADB8BC19A2604180CA6F6E39025E38D5D4CF88FEA2 │ │ │ │ +B380091CDC6DBE3EF72DE7FBED5332B044AF6216454FA0618491845A1C500E03 │ │ │ │ +8A28E6B1E501FE6D509CDDD180B69EC328B0B6E572E014EB471BB893A58643EF │ │ │ │ +DC41B6F3D46F60A1C88CF986E366741E24514DE59E6D843E1A32A749F81F8589 │ │ │ │ +914F78783EDBFFF73F7FB74DE2155BE6D8640A12D6AA38ED4E45F004A7250804 │ │ │ │ +2FBBB8155EC868730926E1DFDFFF7C21E2B7795ECAC700A3A47BD65BD3C11487 │ │ │ │ +4F13519B91F4E7DF748E662571BFDADBE9D755B2D9321F867667C5218B12BA13 │ │ │ │ +68BB4CDE0299B4B6129557FAF29A2B0739DBBE6B85AFF15B6C8D597DDB1D6F3A │ │ │ │ +C0DE55E744C185D19DD7D7DA7D028A8E19E898CEE9705BF0614703B7FBA0B755 │ │ │ │ +5E30DBA534EF541304C23D9FA0BD5E5A8E24D6584F4E991E01F45C7DB4BB32BE │ │ │ │ +197572A7ACD92A21F4B69364801FF88822684463A831BBDF8B6F0234E4785E85 │ │ │ │ +F2BD27EF5D32D6FFF60CB1EDA3C4A297E4782B903709880ED47CD3C4288563CA │ │ │ │ +756A8D757552869CFEF0F20D3CE3599294009F1AECCFCF4B217DF14DE453E587 │ │ │ │ +1789813D8B34C5B253BD9DE5C60916BB18C5530A02B036FFCFE3B3BA29729845 │ │ │ │ +C43039BF5FF4D82B7CA28F4538D60B6D7E716841F0E7130339F4D3A94EE1A739 │ │ │ │ +388757C3BA208C735BF5600E0B5EC974BE1A0A88B4A1BB5F7661E82B33D75BEF │ │ │ │ +5EEDE81F13E4F27F83AEB231D5405806F3FCD79C0F0B29CEDC5B9A23BC1CCC6E │ │ │ │ +020C9438F1CB1AFD9C988C42A9CF0C122D94A7D958CE329866E51C5E1BFBEC8C │ │ │ │ +E6C41E89DA9B0108975C97C5160EF35D0F54F815D0B03BF2959E559B9226FEB1 │ │ │ │ +BF50DA90C2B0C2ED85F0E7437150EB87692EC87D7E4482B02243C62D7C764D62 │ │ │ │ +67570557D476420E6CD8E40737DEE3AAD695FB5AC2328609475C076B6F3F887F │ │ │ │ +18B29071316CD6EDCD0A1C3FCF6CD1E26273FE22BD359F8E8440109BB627DB76 │ │ │ │ +85178388EBBF65D317B0A9086C6438E478BC92CFD6B3286FC81A23E7AD762592 │ │ │ │ +260C5295C3EDE66555DD25D42F1EFC076A0D4204289B356F115DBB62FD6E77B4 │ │ │ │ +EF645DE5EEC2F158811A9CC3565D64861FE3EC4186CCF7F029153D512C26583A │ │ │ │ +4E0C42735FA7BF432D70F164478CA5795DC63094B702C046C41507E0B8520E65 │ │ │ │ +938913B2879C758510B09202BBA2FE2FAE3C6A1F63B9AD9AC9259765351A1214 │ │ │ │ +85C8A03C1A5308E156CB5701 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7357,42 +7316,42 @@ │ │ │ │ 44 44 44 44 1[44 1[44 1[44 3[44 44 44 44 44 44 1[44 44 │ │ │ │ 44 44 44 2[44 44 44 44 44 44 1[44 44 2[44 44 1[44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 │ │ │ │ 2[44 37[{}70 83.022 /CMTT10 rf /Ff 141[51 1[51 7[51 6[51 │ │ │ │ 25[51 71[{}5 99.6264 /CMTT12 rf /Fg 135[59 2[62 44 44 │ │ │ │ 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 50 62 54 10[85 │ │ │ │ 1[78 62 84 11[70 2[81 1[85 11[56 56 56 56 56 2[31 46[{}33 │ │ │ │ -99.6264 /CMBX12 rf /Fh 139[32 33 33 2[42 46 69 3[23 1[42 │ │ │ │ -1[37 46 37 46 42 12[60 4[65 8[54 1[63 11[42 5[42 42 42 │ │ │ │ -3[23 44[{}22 83.022 /CMSL10 rf /Fi 133[31 37 37 51 37 │ │ │ │ -39 27 28 28 1[39 35 39 59 20 2[20 39 35 22 31 39 31 39 │ │ │ │ -35 9[72 53 1[51 39 52 1[48 55 1[65 44 2[25 53 3[54 51 │ │ │ │ -50 53 3[55 3[35 35 35 35 35 35 35 35 35 35 1[20 24 20 │ │ │ │ -31[39 12[{}53 66.4176 /CMR8 rf /Fj 252[32 3[{}1 49.8132 │ │ │ │ -/CMSY6 rf /Fk 168[99 2[66 53 2[65 72 75 91 57 2[36 75 │ │ │ │ -75 1[63 73 69 68 72 15[48 48 1[27 46[{}19 83.022 /CMBX10 │ │ │ │ -rf /Fl 200[33 33 33 33 33 33 33 49[{}7 58.1154 /CMR7 │ │ │ │ -rf /Fm 152[42 42 52[83 33[42 11[42 65 23 65{}8 83.022 │ │ │ │ -/CMSY10 rf /Fn 171[39 9[37 29 54 12[20 59[{}5 58.1154 │ │ │ │ -/CMMI7 rf /Fo 145[50 2[43 17[48 69 2[57 4[53 63 2[57 │ │ │ │ -1[46 36 4[69 1[63 62 5[23 31[47 27[{}15 83.022 /CMMI10 │ │ │ │ -rf /Fp 131[83 42 37 44 44 60 44 46 32 33 33 44 46 42 │ │ │ │ -46 69 23 44 25 23 46 42 25 37 46 37 46 42 3[23 42 23 │ │ │ │ -1[62 1[85 62 62 60 46 61 1[57 65 62 76 52 65 43 30 62 │ │ │ │ -65 54 57 63 60 59 62 1[39 1[65 2[23 42 42 42 42 42 42 │ │ │ │ -42 42 42 42 1[23 28 23 65 1[32 32 23 1[69 1[69 42 18[69 │ │ │ │ -69 46 46 48 11[{}82 83.022 /CMR10 rf /Fq 135[71 2[75 │ │ │ │ -52 53 55 1[75 67 75 112 3[37 1[67 41 61 75 60 1[65 12[94 │ │ │ │ -75 100 8[50 2[85 18[67 67 67 49[{}24 119.552 /CMBX12 │ │ │ │ -rf /Fr 201[0 50[35 3[{}2 66.4176 /CMSY8 rf /Fs 137[51 │ │ │ │ -54 38 38 38 1[54 49 54 81 27 2[27 54 49 30 43 54 43 54 │ │ │ │ -49 13[54 11[77 2[75 70 69 73 8[49 5[49 49 49 3[27 44[{}30 │ │ │ │ -99.6264 /CMR12 rf /Ft 139[51 52 51 1[73 66 73 111 3[36 │ │ │ │ -1[66 40 58 73 58 1[66 12[96 73 3[103 1[122 6[86 70[{}19 │ │ │ │ -143.462 /CMR17 rf end │ │ │ │ +99.6264 /CMBX12 rf /Fh 139[32 33 33 2[42 46 4[23 1[42 │ │ │ │ +1[37 46 37 46 42 12[60 4[65 8[54 19[42 42 42 3[23 44[{}19 │ │ │ │ +83.022 /CMSL10 rf /Fi 133[31 37 37 51 37 39 27 28 28 │ │ │ │ +1[39 35 39 59 20 2[20 39 35 22 31 39 31 39 35 9[72 53 │ │ │ │ +1[51 39 52 1[48 55 1[65 44 2[25 53 3[54 51 50 53 3[55 │ │ │ │ +3[35 35 35 35 35 35 35 35 35 35 1[20 24 20 31[39 12[{}53 │ │ │ │ +66.4176 /CMR8 rf /Fj 252[32 3[{}1 49.8132 /CMSY6 rf /Fk │ │ │ │ +168[99 2[66 53 2[65 72 75 91 57 2[36 75 75 1[63 73 69 │ │ │ │ +68 72 15[48 48 1[27 46[{}19 83.022 /CMBX10 rf /Fl 200[33 │ │ │ │ +33 33 33 33 33 33 49[{}7 58.1154 /CMR7 rf /Fm 152[42 │ │ │ │ +42 52[83 33[42 11[42 65 23 65{}8 83.022 /CMSY10 rf /Fn │ │ │ │ +171[39 9[37 29 54 12[20 59[{}5 58.1154 /CMMI7 rf /Fo │ │ │ │ +145[50 2[43 17[48 69 2[57 4[53 63 2[57 1[46 36 4[69 1[63 │ │ │ │ +62 5[23 31[47 27[{}15 83.022 /CMMI10 rf /Fp 131[83 42 │ │ │ │ +37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 │ │ │ │ +46 42 25 37 46 37 46 42 3[23 42 23 1[62 1[85 62 62 60 │ │ │ │ +46 61 1[57 65 62 76 52 65 43 30 62 65 54 57 63 60 59 │ │ │ │ +62 1[39 1[65 2[23 42 42 42 42 42 42 42 42 42 42 1[23 │ │ │ │ +28 23 65 1[32 32 23 1[69 1[69 42 18[69 69 46 46 48 11[{}82 │ │ │ │ +83.022 /CMR10 rf /Fq 135[71 2[75 52 53 55 1[75 67 75 │ │ │ │ +112 3[37 1[67 41 61 75 60 1[65 12[94 75 100 8[50 2[85 │ │ │ │ +18[67 67 67 49[{}24 119.552 /CMBX12 rf /Fr 201[0 50[35 │ │ │ │ +3[{}2 66.4176 /CMSY8 rf /Fs 137[51 54 38 38 38 1[54 49 │ │ │ │ +54 1[27 2[27 54 49 30 43 54 43 54 49 13[54 3[76 7[77 │ │ │ │ +3[70 69 73 14[49 49 49 3[27 44[{}28 99.6264 /CMR12 rf │ │ │ │ +/Ft 139[51 52 51 1[73 66 73 111 3[36 1[66 40 58 73 58 │ │ │ │ +1[66 12[96 73 3[103 1[122 6[86 70[{}19 143.462 /CMR17 │ │ │ │ +rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -7401,17 +7360,17 @@ │ │ │ │ %%EndPaperSize │ │ │ │ end │ │ │ │ %%EndSetup │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 333 739 a Ft(Ordering)44 b(Sparse)f(Matrices)g │ │ │ │ (and)h(T)-11 b(ransforming)41 b(F)-11 b(ron)l(t)43 b(T)-11 │ │ │ │ b(rees)958 1023 y Fs(Clev)m(e)35 b(Ashcraft,)e(Bo)s(eing)f(Shared)i │ │ │ │ -(Services)g(Group)2942 987 y Fr(\003)1547 1262 y Fs(Decem)m(b)s(er)g │ │ │ │ -(20,)e(2018)0 1924 y Fq(1)135 b(In)l(tro)t(duction)0 │ │ │ │ -2165 y Fp(If)38 b(the)g(ultimate)g(goal)f(is)g(to)h(solv)n(e)e(linear)h │ │ │ │ +(Services)g(Group)2942 987 y Fr(\003)1586 1262 y Fs(Octob)s(er)e(11,)g │ │ │ │ +(2021)0 1924 y Fq(1)135 b(In)l(tro)t(duction)0 2165 y │ │ │ │ +Fp(If)38 b(the)g(ultimate)g(goal)f(is)g(to)h(solv)n(e)e(linear)h │ │ │ │ (systems)g(of)h(the)g(form)f Fo(AX)46 b Fp(=)40 b Fo(B)t │ │ │ │ Fp(,)g(one)d(m)n(ust)h(compute)g(an)f Fo(A)j Fp(=)g Fo(LD)r(U)9 │ │ │ │ b Fp(,)0 2265 y Fo(A)25 b Fp(=)e Fo(U)241 2234 y Fn(T)294 │ │ │ │ 2265 y Fo(D)r(U)37 b Fp(or)27 b Fo(A)e Fp(=)f Fo(U)803 │ │ │ │ 2234 y Fn(H)865 2265 y Fo(D)r(U)38 b Fp(factorization,)27 │ │ │ │ b(dep)r(ending)i(on)f(whether)g(the)h(matrix)e Fo(A)i │ │ │ │ Fp(is)f(nonsymmetric,)g(symmetric)0 2364 y(or)34 b(Hermitian.)57 │ │ │ │ @@ -7491,16 +7450,16 @@ │ │ │ │ (the)g(D)n(ARP)-6 b(A)0 5328 y(Con)n(tract)33 b(D)n(ABT63-95-C-0122)f │ │ │ │ (and)g(the)g(DoD)g(High)f(P)n(erformance)h(Computing)g(Mo)r │ │ │ │ (dernization)g(Program)f(Common)h(HPC)f(Soft)n(w)n(are)0 │ │ │ │ 5407 y(Supp)r(ort)25 b(Initiativ)n(e.)1929 5656 y Fp(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ TeXDict begin 2 1 bop 0 100 a Fp(2)327 b Fh(Orderings)26 │ │ │ │ -b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1689 │ │ │ │ -4 v 1882 w(Decem)n(b)r(er)27 b(20,)g(2018)0 390 y Fq(2)135 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(11,)g(2021)0 390 y Fq(2)135 │ │ │ │ b(Sparse)45 b(matrix)h(orderings)0 605 y Fp(The)22 b(past)h(few)f(y)n │ │ │ │ (ears)f(ha)n(v)n(e)g(seen)h(a)g(resurgence)f(of)i(in)n(terest)f(and)g │ │ │ │ (accompan)n(ying)e(impro)n(v)n(emen)n(t)h(in)i(algorithms)e(and)h │ │ │ │ (soft-)0 705 y(w)n(are)27 b(to)i(order)e(sparse)g(matrices.)39 │ │ │ │ b(The)29 b(minim)n(um)g(degree)f(algorithm,)f(sp)r(eci\014cally)h(the)h │ │ │ │ (m)n(ultiple)h(external)d(minim)n(um)0 804 y(degree)c(algorithm)g([19)o │ │ │ │ (],)h(w)n(as)f(the)i(preferred)d(algorithm)h(of)h(c)n(hoice)f(for)g │ │ │ │ @@ -7603,16 +7562,16 @@ │ │ │ │ y(matrices\),)27 b(there)h(is)f(an)g(easier)g(w)n(a)n(y)-7 │ │ │ │ b(.)35 b(One)28 b(can)f(create)g(an)g Fe(IVL)f Fp(ob)5 │ │ │ │ b(ject)28 b(from)f(the)h Fe(InpMtx)d Fp(ob)5 b(ject,)27 │ │ │ │ b(as)g(follo)n(ws.)0 5108 y Fe(InpMtx)128 b(*A)43 b(;)0 │ │ │ │ 5208 y(IVL)260 b(*adjIVL)41 b(;)0 5407 y(adjIVL)g(=)i │ │ │ │ (InpMtx_fullAdjace)o(nc)o(y\(A)o(\))37 b(;)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 0 100 a Fh(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1717 4 v 1880 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1782 4 v 1945 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ b(T)-7 b(rees)326 b Fp(3)881 448 y(Figure)27 b(1:)36 │ │ │ │ b(A)28 b(3)18 b Fm(\002)g Fp(4)27 b(9-p)r(oin)n(t)g(grid)g(with)h(its)g │ │ │ │ (adjacency)f(structure)p 481 1707 119 4 v 670 1707 V │ │ │ │ 481 1519 V 670 1519 V 481 1330 V 670 1330 V 481 1141 │ │ │ │ V 670 1141 V 446 1659 4 95 v 635 1659 V 824 1659 V 446 │ │ │ │ 1470 V 635 1470 V 824 1470 V 446 1281 V 635 1281 V 824 │ │ │ │ 1281 V 427 1733 a(0)147 b(1)g(2)427 1544 y(3)g(4)g(5)427 │ │ │ │ @@ -7665,16 +7624,16 @@ │ │ │ │ b(w)n(e)g(ha)n(v)n(e)g(a)g Fe(Graph)f Fp(ob)5 b(ject,)27 │ │ │ │ b(w)n(e)g(can)g(construct)h(an)f(ordering.)35 b(There)27 │ │ │ │ b(are)g(four)g(c)n(hoices:)125 5407 y Fm(\017)41 b Fp(minim)n(um)28 │ │ │ │ b(degree,)e(\(actually)i(m)n(ultiple)g(external)f(minim)n(um)h(degree,) │ │ │ │ e(from)i([19)o(]\),)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 100 a Fp(4)327 b Fh(Orderings)26 │ │ │ │ -b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1689 │ │ │ │ -4 v 1882 w(Decem)n(b)r(er)27 b(20,)g(2018)125 390 y Fm(\017)41 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(11,)g(2021)125 390 y Fm(\017)41 │ │ │ │ b Fp(generalized)26 b(nested)h(dissection,)125 571 y │ │ │ │ Fm(\017)41 b Fp(m)n(ultisection,)27 b(and)125 752 y Fm(\017)41 │ │ │ │ b Fp(the)28 b(b)r(etter)g(of)f(generalized)f(nested)i(dissection)f(and) │ │ │ │ h(m)n(ultisection.)0 954 y(Minim)n(um)g(degree)f(tak)n(es)f(the)i │ │ │ │ (least)f(amoun)n(t)h(of)f(CPU)h(time.)37 b(Generalized)27 │ │ │ │ b(nested)g(dissection)h(and)f(m)n(ultisection)h(b)r(oth)0 │ │ │ │ 1054 y(require)c(the)i(a)e(partition)h(of)g(the)h(graph,)e(whic)n(h)i │ │ │ │ @@ -7745,16 +7704,16 @@ │ │ │ │ (great)g(deal)h(of)g(monitoring)g(and)g(debug)g(co)r(de)g(in)g(the)h │ │ │ │ (soft)n(w)n(are.)37 b(Large)26 b(v)-5 b(alues)28 b(of)g │ │ │ │ Fe(msglvl)208 5407 y Fp(ma)n(y)d(result)h(in)g(large)f(message)f │ │ │ │ (\014les.)37 b(T)-7 b(o)25 b(see)h(the)h(statistics)e(generated)g │ │ │ │ (during)h(the)g(ordering,)f(use)h Fe(msglvl)41 b(=)i(1)p │ │ │ │ Fp(.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 0 100 a Fh(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1717 4 v 1880 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1782 4 v 1945 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ b(T)-7 b(rees)326 b Fp(5)125 390 y Fm(\017)41 b Fp(The)19 │ │ │ │ b Fe(seed)g Fp(parameter)f(is)i(used)f(as)h(a)f(random)g(n)n(um)n(b)r │ │ │ │ (er)g(seed.)34 b(\(There)20 b(are)f(man)n(y)g(places)g(in)h(the)g │ │ │ │ (graph)f(partitioning)208 490 y(and)k(minim)n(um)i(degree)d(algorithms) │ │ │ │ h(where)g(randomness)f(pla)n(ys)h(a)g(part.)35 b(Using)24 │ │ │ │ b(a)f(random)g(n)n(um)n(b)r(er)g(seed)h(ensures)208 589 │ │ │ │ y(rep)r(eatabilit)n(y)-7 b(.\))125 767 y Fm(\017)41 b │ │ │ │ @@ -7825,16 +7784,16 @@ │ │ │ │ b(=)44 b(100)p Fp(.)d(W)-7 b(e)30 b(see)f(that)h(there)f(is)0 │ │ │ │ 5308 y(really)c(little)i(di\013erence)f(in)h(ordering)d(qualit)n(y)-7 │ │ │ │ b(,)27 b(while)f(the)h(minim)n(um)g(degree)e(ordering)f(tak)n(es)i(m)n │ │ │ │ (uc)n(h)g(less)g(time)g(than)h(the)0 5407 y(other)g(orderings.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ TeXDict begin 6 5 bop 0 100 a Fp(6)327 b Fh(Orderings)26 │ │ │ │ -b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1689 │ │ │ │ -4 v 1882 w(Decem)n(b)r(er)27 b(20,)g(2018)125 390 y Fp(Let)33 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(11,)g(2021)125 390 y Fp(Let)33 │ │ │ │ b(us)g(no)n(w)f(lo)r(ok)h(at)g(a)g(random)f(triangulation)g(of)h(a)g │ │ │ │ (unit)g(cub)r(e.)54 b(This)34 b(matrix)e(has)h(13824)e(ro)n(ws)g(and)i │ │ │ │ (columns.)0 490 y(Eac)n(h)28 b(face)h(of)g(the)h(cub)r(e)g(has)f(a)g │ │ │ │ (22)18 b Fm(\002)h Fp(22)29 b(regular)e(grid)i(of)g(p)r(oin)n(ts.)42 │ │ │ │ b(The)29 b(remainder)g(of)g(the)h(v)n(ertices)e(are)g(placed)h(in)h │ │ │ │ (the)0 589 y(in)n(terior)c(using)i(quasi-random)d(p)r(oin)n(ts,)j(and)f │ │ │ │ (the)h(Delauney)g(triangulation)e(is)i(computed.)1189 │ │ │ │ @@ -7902,16 +7861,16 @@ │ │ │ │ (;)0 5113 y(ETree_initFromGr)o(aph)o(Wi)o(th)o(Per)o(ms)o(\(ve)o(tr)o │ │ │ │ (ee,)e(graph,)k(newToOld,)f(oldToNew\))g(;)0 5308 y Fp(The)21 │ │ │ │ b Fe(vetree)e Fp(ob)5 b(ject)21 b(in)g(the)h(co)r(de)f(fragmen)n(t)f │ │ │ │ (ab)r(o)n(v)n(e)g(is)h(a)g Fd(vertex)j(elimination)h(tr)l(e)l(e)c │ │ │ │ Fp([20)o(],)h([26],)g(where)f(eac)n(h)f(fron)n(t)h(con)n(tains)0 │ │ │ │ 5407 y(one)27 b(v)n(ertex.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 0 100 a Fh(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1717 4 v 1880 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1782 4 v 1945 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ b(T)-7 b(rees)326 b Fp(7)888 448 y(Figure)27 b(2:)36 │ │ │ │ b(R2D100:)g(randomly)26 b(triangulated,)h(100)f(grid)h(p)r(oin)n(ts)109 │ │ │ │ 2355 y @beginspecial 0 @llx 0 @lly 300 @urx 300 @ury │ │ │ │ 2160 @rwi 2160 @rhi @setspecial │ │ │ │ %%BeginDocument: R2D100.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.0 0.0 300.0 300.0 │ │ │ │ @@ -8787,19 +8746,19 @@ │ │ │ │ n(k)g(partition)p 0 5330 1560 4 v 92 5384 a Fc(1)127 │ │ │ │ 5407 y Fi(V)-6 b(ertex)24 b Fb(j)j Fi(is)c(the)i(paren)n(t)f(of)g │ │ │ │ Fb(i)f Fi(if)g Fb(j)k Fi(is)c(the)h(\014rst)g(v)n(ertex)h(greater)f │ │ │ │ (than)h Fb(i)e Fi(suc)n(h)h(that)h Fb(L)2434 5417 y Fa(j;i)2524 │ │ │ │ 5407 y Fr(6)p Fi(=)20 b(0.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ TeXDict begin 8 7 bop 0 100 a Fp(8)327 b Fh(Orderings)26 │ │ │ │ -b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1689 │ │ │ │ -4 v 1882 w(Decem)n(b)r(er)27 b(20,)g(2018)701 1332 y │ │ │ │ -Fp(Figure)g(3:)36 b(V)-7 b(ertex)28 b(elimination)f(tree)g(for)h │ │ │ │ -(R2D100,)e(100)g(ro)n(ws)g(and)i(columns)450 4440 y @beginspecial │ │ │ │ -0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(11,)g(2021)701 1332 y Fp(Figure)g(3:)36 │ │ │ │ +b(V)-7 b(ertex)28 b(elimination)f(tree)g(for)h(R2D100,)e(100)g(ro)n(ws) │ │ │ │ +g(and)i(columns)450 4440 y @beginspecial 0 @llx 0 @lly │ │ │ │ +600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: vtree.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ /CSH { │ │ │ │ % │ │ │ │ % center show a string │ │ │ │ % │ │ │ │ @@ -9246,16 +9205,16 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fh(Decem)n(b)r(er)28 b(20,)e(2018)p │ │ │ │ -769 100 1717 4 v 1880 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1782 4 v 1945 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ b(T)-7 b(rees)326 b Fp(9)0 390 y(sup)r(erimp)r(osed)27 │ │ │ │ b(on)g(the)h(structure)f(of)g(the)g(factor)g Fo(L)p Fp(.)36 │ │ │ │ b(Note)28 b(this)f(one)g(imp)r(ortan)n(t)g(prop)r(ert)n(y:)36 │ │ │ │ b(within)28 b(an)n(y)e(blo)r(c)n(k)h(column)0 490 y(and)g(b)r(elo)n(w)h │ │ │ │ (the)g(diagonal)e(blo)r(c)n(k,)h(a)g(ro)n(w)f(is)i(either)f(zero)g(or)g │ │ │ │ (dense.)125 615 y(The)g(co)r(de)h(fragmen)n(t)e(to)i(con)n(v)n(ert)e(a) │ │ │ │ h(tree)g(in)n(to)h(a)f(fundamen)n(tal)h(sup)r(erno)r(de)f(tree)g(is)h │ │ │ │ @@ -9334,16 +9293,16 @@ │ │ │ │ Fo(k)22 b Fm(\002)e Fo(k)i Fm(\002)e Fo(k)32 b Fp(grid)d(with)h(a)f(27) │ │ │ │ g(p)r(oin)n(t)0 5407 y(\014nite)22 b(di\013erence)f(op)r(erator,)g │ │ │ │ (when)g(ordered)f(b)n(y)h(nested)g(dissection,)h(has)f(a)g(ro)r(ot)f │ │ │ │ (sup)r(erno)r(de)h(with)h Fo(k)3182 5377 y Fl(2)3240 │ │ │ │ 5407 y Fp(ro)n(ws)e(and)h(columns.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ TeXDict begin 10 9 bop 0 100 a Fp(10)327 b Fh(Orderings)25 │ │ │ │ -b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1647 │ │ │ │ -4 v 1840 w(Decem)n(b)r(er)27 b(20,)g(2018)0 489 y Fp(Figure)22 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1713 │ │ │ │ +4 v 1905 w(Octob)r(er)27 b(11,)g(2021)0 489 y Fp(Figure)22 │ │ │ │ b(4:)35 b(T)-7 b(op:)34 b(v)n(ertex)22 b(elimination)h(tree)g(with)g │ │ │ │ (the)h(v)n(ertices)e(mapp)r(ed)h(to)g(the)h(fundamen)n(tal)f(sup)r │ │ │ │ (erno)r(de)g(that)g(con)n(tains)0 589 y(them.)37 b(Bottom:)g(fundamen)n │ │ │ │ (tal)28 b(sup)r(erno)r(de)f(tree.)450 3696 y @beginspecial │ │ │ │ 0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: fsvtree.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ @@ -10137,21 +10096,20 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fh(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1675 4 v 1839 w(Orderings)g(and)h(F)-7 │ │ │ │ -b(ron)n(t)27 b(T)-7 b(rees)327 b Fp(11)610 1332 y(Figure)27 │ │ │ │ -b(5:)36 b(Blo)r(c)n(k)27 b(structure)g(of)h Fo(L)f Fp(with)h(the)g │ │ │ │ -(fundamen)n(tal)f(sup)r(erno)r(de)h(partition.)450 4440 │ │ │ │ -y @beginspecial 0 @llx 0 @lly 550 @urx 550 @ury 3600 │ │ │ │ -@rwi 3600 @rhi @setspecial │ │ │ │ +TeXDict begin 11 10 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1741 4 v 1904 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +b(T)-7 b(rees)327 b Fp(11)610 1332 y(Figure)27 b(5:)36 │ │ │ │ +b(Blo)r(c)n(k)27 b(structure)g(of)h Fo(L)f Fp(with)h(the)g(fundamen)n │ │ │ │ +(tal)f(sup)r(erno)r(de)h(partition.)450 4440 y @beginspecial │ │ │ │ +0 @llx 0 @lly 550 @urx 550 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: fsmtx.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ %%EndComments │ │ │ │ │ │ │ │ /MainFont /Helvetica findfont 8 scalefont def │ │ │ │ MainFont setfont │ │ │ │ @@ -10491,16 +10449,16 @@ │ │ │ │ xnw ynw dx dy adjncyL draw_matrix │ │ │ │ xnw ynw dx dy nrow ncol sn_info draw_sn_overlay │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 12 12 │ │ │ │ TeXDict begin 12 11 bop 0 100 a Fp(12)327 b Fh(Orderings)25 │ │ │ │ -b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1647 │ │ │ │ -4 v 1840 w(Decem)n(b)r(er)27 b(20,)g(2018)0 864 y Fp(Figure)33 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1713 │ │ │ │ +4 v 1905 w(Octob)r(er)27 b(11,)g(2021)0 864 y Fp(Figure)33 │ │ │ │ b(6:)48 b(T)-7 b(op:)49 b(fundamen)n(tal)33 b(sup)r(erno)r(de)g(tree)h │ │ │ │ (with)g(the)f(sup)r(erno)r(des)g(mapp)r(ed)h(to)g(the)f(amalgamated)f │ │ │ │ (sup)r(erno)r(de)0 964 y(that)c(con)n(tains)f(them.)37 │ │ │ │ b(Bottom:)g(amalgamated)25 b(sup)r(erno)r(de)j(tree.)450 │ │ │ │ 4071 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ 3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: amvtree.eps │ │ │ │ @@ -11107,21 +11065,20 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fh(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1675 4 v 1839 w(Orderings)g(and)h(F)-7 │ │ │ │ -b(ron)n(t)27 b(T)-7 b(rees)327 b Fp(13)594 1332 y(Figure)26 │ │ │ │ -b(7:)37 b(Blo)r(c)n(k)27 b(structure)g(of)g Fo(L)h Fp(with)g(the)g │ │ │ │ -(amalgamated)e(sup)r(erno)r(de)h(partition.)450 4440 │ │ │ │ -y @beginspecial 0 @llx 0 @lly 550 @urx 550 @ury 3600 │ │ │ │ -@rwi 3600 @rhi @setspecial │ │ │ │ +TeXDict begin 13 12 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1741 4 v 1904 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +b(T)-7 b(rees)327 b Fp(13)594 1332 y(Figure)26 b(7:)37 │ │ │ │ +b(Blo)r(c)n(k)27 b(structure)g(of)g Fo(L)h Fp(with)g(the)g(amalgamated) │ │ │ │ +e(sup)r(erno)r(de)h(partition.)450 4440 y @beginspecial │ │ │ │ +0 @llx 0 @lly 550 @urx 550 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: ammtx.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ %%EndComments │ │ │ │ │ │ │ │ /MainFont /Helvetica findfont 8 scalefont def │ │ │ │ MainFont setfont │ │ │ │ @@ -11415,16 +11372,16 @@ │ │ │ │ xnw ynw dx dy adjncyL draw_matrix │ │ │ │ xnw ynw dx dy nrow ncol sn_info draw_sn_overlay │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 14 14 │ │ │ │ TeXDict begin 14 13 bop 0 100 a Fp(14)327 b Fh(Orderings)25 │ │ │ │ -b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1647 │ │ │ │ -4 v 1840 w(Decem)n(b)r(er)27 b(20,)g(2018)0 390 y Fp(The)k(data)f │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1713 │ │ │ │ +4 v 1905 w(Octob)r(er)27 b(11,)g(2021)0 390 y Fp(The)k(data)f │ │ │ │ (structure)g(for)g(a)h(top)f(lev)n(el)g(sup)r(erno)r(de)h(can)f(b)r(e)h │ │ │ │ (v)n(ery)f(large,)g(to)r(o)g(large)g(to)g(\014t)h(in)n(to)g(memory)-7 │ │ │ │ b(.)45 b(In)31 b(a)f(parallel)0 490 y(en)n(vironmen)n(t,)d(w)n(e)h │ │ │ │ (follo)n(w)g(the)g(con)n(v)n(en)n(tion)f(that)h(eac)n(h)g(no)r(de)g(in) │ │ │ │ g(the)h(tree)f(is)g(handled)g(b)n(y)g(one)g(pro)r(cess.)37 │ │ │ │ b(Ha)n(ving)27 b(a)h(v)n(ery)0 589 y(large)e(no)r(de)i(at)f(the)h(top)g │ │ │ │ (lev)n(els)f(of)g(the)h(tree)g(will)f(sev)n(erely)f(decrease)h(the)h │ │ │ │ @@ -11514,22 +11471,22 @@ │ │ │ │ (an)i(fundamen)n(tal)f(sup)r(erno)r(de)h(tree)f(with)h(a)f(call)h(to)f │ │ │ │ Fe(ETree)p 2994 5208 27 4 v 29 w(mergeFrontsOne\(\))17 │ │ │ │ b Fp(with)208 5308 y Fe(maxzeros)40 b(=)j(0)p Fp(.)36 │ │ │ │ b(W)-7 b(e)26 b(see)g(that)g(the)h(n)n(um)n(b)r(er)e(of)h(fron)n(ts)g │ │ │ │ (decreases)e(b)n(y)i(one)f(and)h(the)g(n)n(um)n(b)r(er)g(of)g(en)n │ │ │ │ (tries)f(do)r(es)h(not)208 5407 y(c)n(hange.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 0 100 a Fh(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1675 4 v 1839 w(Orderings)g(and)h(F)-7 │ │ │ │ -b(ron)n(t)27 b(T)-7 b(rees)327 b Fp(15)0 615 y(Figure)24 │ │ │ │ -b(8:)35 b(Left:)h(tree)24 b(after)h(the)g(large)e(sup)r(erno)r(des)h │ │ │ │ -(ha)n(v)n(e)g(b)r(een)h(split.)36 b(Righ)n(t:)g(tree)24 │ │ │ │ -b(with)h(no)r(des)g(mapp)r(ed)g(bac)n(k)f(to)g(their)0 │ │ │ │ -715 y(amalgamated)i(sup)r(erno)r(de.)450 3822 y @beginspecial │ │ │ │ -0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ +TeXDict begin 15 14 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1741 4 v 1904 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +b(T)-7 b(rees)327 b Fp(15)0 615 y(Figure)24 b(8:)35 b(Left:)h(tree)24 │ │ │ │ +b(after)h(the)g(large)e(sup)r(erno)r(des)h(ha)n(v)n(e)g(b)r(een)h │ │ │ │ +(split.)36 b(Righ)n(t:)g(tree)24 b(with)h(no)r(des)g(mapp)r(ed)g(bac)n │ │ │ │ +(k)f(to)g(their)0 715 y(amalgamated)i(sup)r(erno)r(de.)450 │ │ │ │ +3822 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ +3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: spvtree.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ /CSH { │ │ │ │ % │ │ │ │ % center show a string │ │ │ │ % │ │ │ │ @@ -12155,16 +12112,16 @@ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 16 16 │ │ │ │ TeXDict begin 16 15 bop 0 100 a Fp(16)327 b Fh(Orderings)25 │ │ │ │ -b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1647 │ │ │ │ -4 v 1840 w(Decem)n(b)r(er)27 b(20,)g(2018)420 595 y Fp(Figure)g(9:)37 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1713 │ │ │ │ +4 v 1905 w(Octob)r(er)27 b(11,)g(2021)420 595 y Fp(Figure)g(9:)37 │ │ │ │ b(Blo)r(c)n(k)27 b(structure)g(of)g Fo(L)g Fp(with)h(the)g(amalgamated) │ │ │ │ e(and)i(split)g(sup)r(erno)r(de)f(partition.)450 3702 │ │ │ │ y @beginspecial 0 @llx 0 @lly 550 @urx 550 @ury 3600 │ │ │ │ @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: spmtx.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ @@ -12484,45 +12441,44 @@ │ │ │ │ b(2021347776)692 4948 y(merge)26 b(an)n(y)p 1114 4978 │ │ │ │ V 99 w(0.012)279 b(597)232 b(85366)142 b(3753241)154 │ │ │ │ b(2035158539)692 5048 y(split)p 1114 5078 V 316 w(0.043)279 │ │ │ │ b(643)190 b(115139)142 b(3753241)154 b(2035158539)692 │ │ │ │ 5148 y(\014nal)p 1114 5177 V 316 w(0.423)279 b(643)190 │ │ │ │ b(115128)142 b(3752694)154 b(2034396840)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fh(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1675 4 v 1839 w(Orderings)g(and)h(F)-7 │ │ │ │ -b(ron)n(t)27 b(T)-7 b(rees)327 b Fp(17)125 390 y Fm(\017)41 │ │ │ │ -b Fp(The)33 b(second)f(step)i(is)f(also)f(a)h(call)f(to)i │ │ │ │ -Fe(ETree)p 1665 390 27 4 v 29 w(mergeFrontsOne\(\))o │ │ │ │ -Fp(,)29 b(this)k(time)h(with)g Fe(maxzeros)40 b(=)j(1000)p │ │ │ │ -Fp(.)52 b(Here)208 490 y(w)n(e)30 b(merge)h(fron)n(ts)f(with)i(only)f │ │ │ │ -(one)f(c)n(hild)i(with)f(that)h(c)n(hild,)g(in)f(other)g(w)n(ords,)g │ │ │ │ -(only)g(c)n(hains)f(of)h(no)r(des)g(can)g(merge)208 589 │ │ │ │ -y(together.)50 b(Note)32 b(ho)n(w)g(the)h(n)n(um)n(b)r(er)f(of)g(fron)n │ │ │ │ -(ts)g(is)g(decreased)f(b)n(y)h(almost)g(one)g(half,)i(and)e(the)g(n)n │ │ │ │ -(um)n(b)r(er)h(of)f(factor)208 689 y(en)n(tries)26 b(and)i(op)r │ │ │ │ -(erations)e(increase)g(b)n(y)i(1\045.)125 868 y Fm(\017)41 │ │ │ │ -b Fp(The)26 b(third)g(step)g(is)g(a)g(call)g(to)g Fe(ETree)p │ │ │ │ -1383 868 V 29 w(mergeFrontsAll\(\))19 b Fp(with)27 b │ │ │ │ -Fe(maxzeros)40 b(=)j(1000)p Fp(,)25 b(where)h(w)n(e)g(try)f(to)h(merge) │ │ │ │ -f(a)208 967 y(no)r(de)h(with)g(all)g(of)g(its)h(c)n(hildren)e(if)i(p)r │ │ │ │ -(ossible.)36 b(The)26 b(n)n(um)n(b)r(er)g(of)g(fron)n(ts)g(decreases)e │ │ │ │ -(again)h(b)n(y)h(a)f(factor)h(of)g(\014v)n(e,)g(while)208 │ │ │ │ -1067 y(the)d(n)n(um)n(b)r(er)g(of)g(factor)f(en)n(tries)h(and)f(op)r │ │ │ │ -(erations)g(increases)g(b)n(y)h(7\045)f(and)h(2\045,)h(resp)r(ectiv)n │ │ │ │ -(ely)-7 b(,)23 b(when)h(compared)e(with)208 1167 y(the)28 │ │ │ │ -b(original)e(factor)g(matrices.)125 1345 y Fm(\017)41 │ │ │ │ -b Fp(The)27 b(fourth)h(step)g(is)g(a)f(call)h(to)f Fe(ETree)p │ │ │ │ -1438 1345 V 30 w(mergeFrontsAny\()o(\))22 b Fp(with)28 │ │ │ │ -b Fe(maxzeros)41 b(=)i(1000)p Fp(,)26 b(where)h(w)n(e)h(try)f(to)h │ │ │ │ -(merge)208 1445 y(a)f(fron)n(t)h(with)h(an)n(y)f(subset)g(of)g(its)h(c) │ │ │ │ -n(hildren.)38 b(The)29 b(n)n(um)n(b)r(er)f(of)g(fron)n(ts)f(decreases)g │ │ │ │ -(further,)i(and)f(the)g(factor)g(en)n(tries)208 1545 │ │ │ │ -y(and)f(op)r(erations)f(increase)h(b)n(y)g(8\045)g(and)h(3\045,)f(resp) │ │ │ │ -r(ectiv)n(ely)-7 b(.)125 1723 y Fm(\017)41 b Fp(In)32 │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1741 4 v 1904 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +b(T)-7 b(rees)327 b Fp(17)125 390 y Fm(\017)41 b Fp(The)33 │ │ │ │ +b(second)f(step)i(is)f(also)f(a)h(call)f(to)i Fe(ETree)p │ │ │ │ +1665 390 27 4 v 29 w(mergeFrontsOne\(\))o Fp(,)29 b(this)k(time)h(with) │ │ │ │ +g Fe(maxzeros)40 b(=)j(1000)p Fp(.)52 b(Here)208 490 │ │ │ │ +y(w)n(e)30 b(merge)h(fron)n(ts)f(with)i(only)f(one)f(c)n(hild)i(with)f │ │ │ │ +(that)h(c)n(hild,)g(in)f(other)g(w)n(ords,)g(only)g(c)n(hains)f(of)h │ │ │ │ +(no)r(des)g(can)g(merge)208 589 y(together.)50 b(Note)32 │ │ │ │ +b(ho)n(w)g(the)h(n)n(um)n(b)r(er)f(of)g(fron)n(ts)g(is)g(decreased)f(b) │ │ │ │ +n(y)h(almost)g(one)g(half,)i(and)e(the)g(n)n(um)n(b)r(er)h(of)f(factor) │ │ │ │ +208 689 y(en)n(tries)26 b(and)i(op)r(erations)e(increase)g(b)n(y)i │ │ │ │ +(1\045.)125 868 y Fm(\017)41 b Fp(The)26 b(third)g(step)g(is)g(a)g │ │ │ │ +(call)g(to)g Fe(ETree)p 1383 868 V 29 w(mergeFrontsAll\(\))19 │ │ │ │ +b Fp(with)27 b Fe(maxzeros)40 b(=)j(1000)p Fp(,)25 b(where)h(w)n(e)g │ │ │ │ +(try)f(to)h(merge)f(a)208 967 y(no)r(de)h(with)g(all)g(of)g(its)h(c)n │ │ │ │ +(hildren)e(if)i(p)r(ossible.)36 b(The)26 b(n)n(um)n(b)r(er)g(of)g(fron) │ │ │ │ +n(ts)g(decreases)e(again)h(b)n(y)h(a)f(factor)h(of)g(\014v)n(e,)g │ │ │ │ +(while)208 1067 y(the)d(n)n(um)n(b)r(er)g(of)g(factor)f(en)n(tries)h │ │ │ │ +(and)f(op)r(erations)g(increases)g(b)n(y)h(7\045)f(and)h(2\045,)h(resp) │ │ │ │ +r(ectiv)n(ely)-7 b(,)23 b(when)h(compared)e(with)208 │ │ │ │ +1167 y(the)28 b(original)e(factor)g(matrices.)125 1345 │ │ │ │ +y Fm(\017)41 b Fp(The)27 b(fourth)h(step)g(is)g(a)f(call)h(to)f │ │ │ │ +Fe(ETree)p 1438 1345 V 30 w(mergeFrontsAny\()o(\))22 │ │ │ │ +b Fp(with)28 b Fe(maxzeros)41 b(=)i(1000)p Fp(,)26 b(where)h(w)n(e)h │ │ │ │ +(try)f(to)h(merge)208 1445 y(a)f(fron)n(t)h(with)h(an)n(y)f(subset)g │ │ │ │ +(of)g(its)h(c)n(hildren.)38 b(The)29 b(n)n(um)n(b)r(er)f(of)g(fron)n │ │ │ │ +(ts)f(decreases)g(further,)i(and)f(the)g(factor)g(en)n(tries)208 │ │ │ │ +1545 y(and)f(op)r(erations)f(increase)h(b)n(y)g(8\045)g(and)h(3\045,)f │ │ │ │ +(resp)r(ectiv)n(ely)-7 b(.)125 1723 y Fm(\017)41 b Fp(In)32 │ │ │ │ b(the)h(\014fth)g(step)g(is)f(a)g(call)g(to)g Fe(ETree)p │ │ │ │ 1477 1723 V 29 w(splitFronts\(\))c Fp(with)k Fe(maxsize)41 │ │ │ │ b(=)i(64)p Fp(,)33 b(where)f(w)n(e)g(try)g(split)h(the)g(large)208 │ │ │ │ 1823 y(fron)n(ts)38 b(in)n(to)g(smaller)g(fron)n(ts.)71 │ │ │ │ b(Note)38 b(that)i(the)f(n)n(um)n(b)r(er)g(of)f(factor)g(en)n(tries)h │ │ │ │ (and)f(op)r(erations)g(do)h(not)f(seem)h(to)208 1923 │ │ │ │ y(increase,)29 b(while)h(the)g(n)n(um)n(b)r(er)g(of)g(fron)n(ts)f │ │ │ │ @@ -12603,17 +12559,17 @@ │ │ │ │ Fo(X)32 b Fp(and)26 b Fo(Y)45 b Fp(ha)n(v)n(e)25 b(a)h(single)g │ │ │ │ (column\))g(or)f(BLAS3)0 5407 y(k)n(ernel)f(\(when)g │ │ │ │ Fo(X)31 b Fp(and)25 b Fo(Y)43 b Fp(are)23 b(matrices\).)36 │ │ │ │ b(When)25 b(fron)n(ts)e(are)h(small,)h(particularly)e(with)i(one)f(in)n │ │ │ │ (ternal)g(ro)n(w)f(and)h(column,)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ TeXDict begin 18 17 bop 0 100 a Fp(18)327 b Fh(Orderings)25 │ │ │ │ -b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1647 │ │ │ │ -4 v 1840 w(Decem)n(b)r(er)27 b(20,)g(2018)0 390 y Fp(the)g(submatrices) │ │ │ │ -e(that)i(tak)n(e)f(part)g(are)f(v)n(ery)g(small.)36 b(The)27 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1713 │ │ │ │ +4 v 1905 w(Octob)r(er)27 b(11,)g(2021)0 390 y Fp(the)g(submatrices)e │ │ │ │ +(that)i(tak)n(e)f(part)g(are)f(v)n(ery)g(small.)36 b(The)27 │ │ │ │ b(o)n(v)n(erhead)d(for)i(the)g(computations)g(tak)n(es)g(far)g(more)f │ │ │ │ (time)i(than)0 490 y(the)h(computations)f(themselv)n(es.)125 │ │ │ │ 612 y(This)35 b(m)n(ultistep)h(pro)r(cess)e(of)h(merging,)i(merging)d │ │ │ │ (again,)i(etc,)h(and)f(\014nally)f(splitting)g(the)h(fron)n(t)f(trees)g │ │ │ │ (is)g(tedious.)0 712 y(There)27 b(are)g(simple)g(metho)r(ds)h(that)g │ │ │ │ (do)f(the)h(pro)r(cess)f(in)h(one)f(step.)0 894 y Fe(ETree)129 │ │ │ │ b(*etree,)40 b(*etree2,)h(*etree3)f(;)0 993 y(int)217 │ │ │ │ @@ -12707,30 +12663,30 @@ │ │ │ │ b(of)f Fe(64)g Fp(is)h(what)f(w)n(e)g(customarily)g(use.)0 │ │ │ │ 5103 y Fq(References)42 5308 y Fp([1])41 b(P)-7 b(.)35 │ │ │ │ b(Amesto)n(y)-7 b(,)37 b(T.)f(Da)n(vis,)h(and)e(I.)h(Du\013.)62 │ │ │ │ b(An)36 b(appro)n(ximate)e(minim)n(um)i(degree)f(ordering)f(algorithm.) │ │ │ │ 59 b Fd(SIAM)37 b(J.)171 5407 y(Matrix)30 b(A)n(nal.)g(Appl.)p │ │ │ │ Fp(,)f(17:886{905,)23 b(1996.)p eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 0 100 a Fh(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 769 100 1675 4 v 1839 w(Orderings)g(and)h(F)-7 │ │ │ │ -b(ron)n(t)27 b(T)-7 b(rees)327 b Fp(19)844 448 y(T)-7 │ │ │ │ -b(able)27 b(3:)36 b(R3D13824:)f(the)28 b(in\015uence)g(of)f │ │ │ │ -Fe(maxzeros)e Fp(and)i Fe(maxsize)p Fp(.)p 1241 639 4 │ │ │ │ -100 v 1674 609 a(factor)942 b(solv)n(e)276 b(total)440 │ │ │ │ -709 y Fe(maxzeros)96 b(maxsize)p 1241 738 V 97 w Fp(init)105 │ │ │ │ -b(CPU)g(m\015ops)99 b(p)r(ostpro)r(cess)f(CPU)i(m\015ops)k(CPU)p │ │ │ │ -390 742 3121 4 v 663 811 a(0)294 b Fm(1)p 1241 841 4 │ │ │ │ -100 v 220 w Fp(3.3)108 b(129.8)142 b(15.3)297 b(5.3)291 │ │ │ │ -b(7.8)213 b(7.1)150 b(146.2)628 911 y(10)287 b Fm(1)p │ │ │ │ -1241 941 V 220 w Fp(3.5)108 b(129.2)142 b(15.3)297 b(3.3)291 │ │ │ │ -b(5.3)179 b(10.5)142 b(141.3)593 1011 y(100)280 b Fm(1)p │ │ │ │ -1241 1041 V 220 w Fp(3.0)108 b(119.3)142 b(16.7)297 b(2.0)291 │ │ │ │ -b(3.9)179 b(14.4)142 b(128.2)559 1110 y(1000)272 b Fm(1)p │ │ │ │ -1241 1140 V 220 w Fp(3.0)108 b(121.8)142 b(16.7)297 b(1.4)291 │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fh(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +704 100 1741 4 v 1904 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +b(T)-7 b(rees)327 b Fp(19)844 448 y(T)-7 b(able)27 b(3:)36 │ │ │ │ +b(R3D13824:)f(the)28 b(in\015uence)g(of)f Fe(maxzeros)e │ │ │ │ +Fp(and)i Fe(maxsize)p Fp(.)p 1241 639 4 100 v 1674 609 │ │ │ │ +a(factor)942 b(solv)n(e)276 b(total)440 709 y Fe(maxzeros)96 │ │ │ │ +b(maxsize)p 1241 738 V 97 w Fp(init)105 b(CPU)g(m\015ops)99 │ │ │ │ +b(p)r(ostpro)r(cess)f(CPU)i(m\015ops)k(CPU)p 390 742 │ │ │ │ +3121 4 v 663 811 a(0)294 b Fm(1)p 1241 841 4 100 v 220 │ │ │ │ +w Fp(3.3)108 b(129.8)142 b(15.3)297 b(5.3)291 b(7.8)213 │ │ │ │ +b(7.1)150 b(146.2)628 911 y(10)287 b Fm(1)p 1241 941 │ │ │ │ +V 220 w Fp(3.5)108 b(129.2)142 b(15.3)297 b(3.3)291 b(5.3)179 │ │ │ │ +b(10.5)142 b(141.3)593 1011 y(100)280 b Fm(1)p 1241 1041 │ │ │ │ +V 220 w Fp(3.0)108 b(119.3)142 b(16.7)297 b(2.0)291 b(3.9)179 │ │ │ │ +b(14.4)142 b(128.2)559 1110 y(1000)272 b Fm(1)p 1241 │ │ │ │ +1140 V 220 w Fp(3.0)108 b(121.8)142 b(16.7)297 b(1.4)291 │ │ │ │ b(3.5)179 b(17.0)142 b(129.7)524 1210 y(10000)265 b Fm(1)p │ │ │ │ 1241 1240 V 220 w Fp(3.5)108 b(138.1)142 b(16.8)297 b(1.5)291 │ │ │ │ b(4.0)179 b(17.8)142 b(147.1)559 1310 y(1000)272 b(32)p │ │ │ │ 1241 1340 V 219 w(3.3)143 b(89.8)149 b(22.7)297 b(2.6)291 │ │ │ │ b(4.1)179 b(14.7)e(99.8)559 1409 y(1000)272 b(48)p 1241 │ │ │ │ 1439 V 219 w(3.1)143 b(85.8)149 b(23.7)297 b(2.1)291 │ │ │ │ b(3.6)179 b(16.5)e(94.6)559 1509 y(1000)272 b(64)p 1241 │ │ │ │ @@ -12796,16 +12752,16 @@ │ │ │ │ 5308 y([12])41 b(A.)27 b(Gupta.)37 b(W)n(GPP:)27 b(Watson)g(Graph)g │ │ │ │ (Partitioning)f(and)h(sparse)f(matrix)h(ordering)e(Pac)n(k)-5 │ │ │ │ b(age.)34 b(T)-7 b(ec)n(hnical)27 b(Rep)r(ort)171 5407 │ │ │ │ y(Users)g(Man)n(ual,)f(IBM)i(T.J.)f(W)-7 b(atson)28 b(Researc)n(h)e │ │ │ │ (Cen)n(ter,)h(New)h(Y)-7 b(ork,)27 b(1996.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ TeXDict begin 20 19 bop 0 100 a Fp(20)327 b Fh(Orderings)25 │ │ │ │ -b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1647 │ │ │ │ -4 v 1840 w(Decem)n(b)r(er)27 b(20,)g(2018)0 390 y Fp([13])41 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1713 │ │ │ │ +4 v 1905 w(Octob)r(er)27 b(11,)g(2021)0 390 y Fp([13])41 │ │ │ │ b(B.)24 b(Hendric)n(kson)e(and)i(R.)g(Leland.)31 b(An)24 │ │ │ │ b(impro)n(v)n(ed)f(sp)r(ectral)g(graph)g(partitioning)g(algorithm)g │ │ │ │ (for)h(mapping)f(parallel)171 490 y(computations.)28 │ │ │ │ b(T)-7 b(ec)n(hnical)23 b(Rep)r(ort)f(SAND92-1460,)g(Sandia)h(National) │ │ │ │ f(Lab)r(oratories,)g(Albuquerque,)h(NM,)h(1992.)0 656 │ │ │ │ y([14])41 b(B.)f(Hendric)n(kson)f(and)h(R.)g(Leland.)74 │ │ │ │ b(The)40 b(Chaco)f(user's)g(guide.)74 b(T)-7 b(ec)n(hnical)39 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ Ordering Sparse Matrices and Transforming Front Trees │ │ │ │ │ ∗ │ │ │ │ │ Cleve Ashcraft, Boeing Shared Services Group │ │ │ │ │ - December 20, 2018 │ │ │ │ │ + October 11, 2021 │ │ │ │ │ 1 Introduction │ │ │ │ │ If the ultimate goal is to solve linear systems of the form AX = B, one must compute an A = LDU, │ │ │ │ │ A=UTDU orA=UHDU factorization, depending on whether the matrix A is nonsymmetric, symmetric │ │ │ │ │ or Hermitian. D is a diagonal or block diagonal matrix, L is unit lower triangular, and U is unit upper │ │ │ │ │ triangular. A is sparse, but the sparsity structure of L and U will likely be much larger than that of A, │ │ │ │ │ i.e., they will suffer fill-in. It is crucial to find a permutation matrix such that the factors of PAPT have as │ │ │ │ │ moderate fill-in as can be reasonably expected. │ │ │ │ │ @@ -35,15 +35,15 @@ │ │ │ │ │ Section 2 introduces some background on sparse matrix orderings and describes the SPOOLES or- │ │ │ │ │ dering software. Section 3 presents the front tree object that controls the factorization, and its various │ │ │ │ │ transformations to improve performance. │ │ │ │ │ ∗P. O. Box 24346, Mail Stop 7L-21, Seattle, Washington 98124. This research was supported in part by the DARPA │ │ │ │ │ Contract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ Support Initiative. │ │ │ │ │ 1 │ │ │ │ │ - 2 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 2 Orderings and Front Trees October 11, 2021 │ │ │ │ │ 2 Sparse matrix orderings │ │ │ │ │ Thepast few years have seen a resurgence of interest and accompanying improvement in algorithms and soft- │ │ │ │ │ ware to order sparse matrices. The minimum degree algorithm, specifically the multiple external minimum │ │ │ │ │ degree algorithm [19], was the preferred algorithm of choice for the better part of a decade. Alternative min- │ │ │ │ │ imum priority codes have recently pushed multiple minimum degree aside, including approximate minimum │ │ │ │ │ degree [1] and approximate deficiency [21], [25]. They offer improved quality or improved run time, and on │ │ │ │ │ occasion, both. │ │ │ │ │ @@ -81,15 +81,15 @@ │ │ │ │ │ One can construct the IVL object directly. There are methods to set the number of lists, to set the size │ │ │ │ │ of a list, to copy entries in a list into the object. It resizes itself as necessary. However, if one already has │ │ │ │ │ the matrix entries of A stored in an InpMtx object (which is the way that SPOOLES deals with sparse │ │ │ │ │ matrices), there is an easier way. One can create an IVL object from the InpMtx object, as follows. │ │ │ │ │ InpMtx *A ; │ │ │ │ │ IVL *adjIVL ; │ │ │ │ │ adjIVL = InpMtx_fullAdjacency(A) ; │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 3 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 3 │ │ │ │ │ Figure 1: A 3×4 9-point grid with its adjacency structure │ │ │ │ │ IVL : integer vector list object : │ │ │ │ │ type 1, chunked storage │ │ │ │ │ 12 lists, 12 maximum lists, 70 tsize, 4240 total bytes │ │ │ │ │ 1 chunks, 70 active entries, 1024 allocated, 6.84 % used │ │ │ │ │ 0 : 0 1 3 4 │ │ │ │ │ 9 10 11 1 : 0 1 2 3 4 5 │ │ │ │ │ @@ -121,15 +121,15 @@ │ │ │ │ │ This is an initializer for the Graph object, one that takes as input a complete IVL adjacency object. The │ │ │ │ │ 0 and NULL fields are not applicable here. (The Graph object is sophisticated — it can have weighted or │ │ │ │ │ unweighted vertices, weighted or unweighted edges, or both, and it can have boundary vertices. Neither is │ │ │ │ │ relevant now.) │ │ │ │ │ 2.2 Constructing an ordering │ │ │ │ │ Once we have a Graph object, we can construct an ordering. There are four choices: │ │ │ │ │ • minimum degree, (actually multiple external minimum degree, from [19]), │ │ │ │ │ - 4 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 4 Orderings and Front Trees October 11, 2021 │ │ │ │ │ • generalized nested dissection, │ │ │ │ │ • multisection, and │ │ │ │ │ • the better of generalized nested dissection and multisection. │ │ │ │ │ Minimum degree takes the least amount of CPU time. Generalized nested dissection and multisection both │ │ │ │ │ require the a partition of the graph, which can be much more expensive to compute than a minimum degree │ │ │ │ │ ordering. By and large, for larger graphs nested dissection generates better orderings than minimum degree, │ │ │ │ │ and the difference in quality increases as the graph size increases. Multisection is an ordering which almost │ │ │ │ │ @@ -161,15 +161,15 @@ │ │ │ │ │ etree = orderViaBestOfNDandMS(graph, maxdomainsize, maxzeros, │ │ │ │ │ maxsize, seed, msglvl, msgFile) ; │ │ │ │ │ Now let us describe the different parameters. │ │ │ │ │ • The msglvl and msgFile parameters are used to control output. When msglvl = 0, there is no │ │ │ │ │ output. When msglvl > 0, output goes to the msgFile file. The SPOOLES library is a research │ │ │ │ │ code, we have left a great deal of monitoring and debug code in the software. Large values of msglvl │ │ │ │ │ mayresult in large message files. To see the statistics generated during the ordering, use msglvl = 1. │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 5 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 5 │ │ │ │ │ • Theseedparameterisusedasarandomnumberseed. (Therearemanyplacesinthegraphpartitioning │ │ │ │ │ and minimum degree algorithms where randomness plays a part. Using a random number seed ensures │ │ │ │ │ repeatability.) │ │ │ │ │ • maxdomainsize is used for the nested dissection and multisection orderings. This parameter is used │ │ │ │ │ during the graph partition. Any subgraph that is larger than maxdomainsize is split. We recommend │ │ │ │ │ using a value of neqns/16 or neqns/32. Note: maxdomainsize must be greater than zero. │ │ │ │ │ • maxzeros and maxsize are used to transform the front tree. In effect, we have placed the ordering │ │ │ │ │ @@ -203,15 +203,15 @@ │ │ │ │ │ 10102 4.6 210364 10651916 6.2 211089 10722231 │ │ │ │ │ 10103 4.6 215795 11760095 6.4 217141 11606103 │ │ │ │ │ 10104 4.6 210989 10842091 6.1 212828 11168728 │ │ │ │ │ 10105 4.8 209201 10335761 6.1 210468 10582750 │ │ │ │ │ For the nested dissection and multisection orderings, we used maxdomainsize = 100. We see that there is │ │ │ │ │ really little difference in ordering quality, while the minimum degree ordering takes much less time than the │ │ │ │ │ other orderings. │ │ │ │ │ - 6 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 6 Orderings and Front Trees October 11, 2021 │ │ │ │ │ Let us now look at a random triangulation of a unit cube. This matrix has 13824 rows and columns. │ │ │ │ │ Each face of the cube has a 22×22 regular grid of points. The remainder of the vertices are placed in the │ │ │ │ │ interior using quasi-random points, and the Delauney triangulation is computed. │ │ │ │ │ minimum degree nested dissection │ │ │ │ │ seed CPU #entries #ops CPU #entries #ops │ │ │ │ │ 10101 9.2 5783892 6119141542 27.8 3410222 1921402246 │ │ │ │ │ 10102 8.8 5651678 5959584620 31.4 3470063 1998795621 │ │ │ │ │ @@ -245,15 +245,15 @@ │ │ │ │ │ ETree *vetree ; │ │ │ │ │ int *newToOld, *oldToNew ; │ │ │ │ │ Graph *graph ; │ │ │ │ │ vetree = ETree_new() ; │ │ │ │ │ ETree_initFromGraphWithPerms(vetree, graph, newToOld, oldToNew) ; │ │ │ │ │ Thevetreeobjectinthecodefragmentaboveisavertex elimination tree [20], [26], where each front contains │ │ │ │ │ one vertex. │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 7 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 7 │ │ │ │ │ Figure 2: R2D100: randomly triangulated, 100 grid points │ │ │ │ │ 48 49 51 50 55 91 8 11 10 9 │ │ │ │ │ 52 │ │ │ │ │ 53 69 54 17 18 │ │ │ │ │ 67 95 │ │ │ │ │ 70 19 │ │ │ │ │ 66 68 5 3 │ │ │ │ │ @@ -300,15 +300,15 @@ │ │ │ │ │ tree [2] has these property: any node in the tree is │ │ │ │ │ • either a leaf, │ │ │ │ │ • or has two or more children, │ │ │ │ │ • or its nonzero structure is not contained in that of its one child. │ │ │ │ │ The top tree in Figure 4 shows the vertex elimination tree with the “front” number of each vertex superim- │ │ │ │ │ posed on the vertex. The bottom tree is the fundamental supernode tree. Figure 5 shows the block partition │ │ │ │ │ 1Vertex j is the parent of i if j is the first vertex greater than i such that Lj,i 6= 0. │ │ │ │ │ - 8 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 8 Orderings and Front Trees October 11, 2021 │ │ │ │ │ Figure 3: Vertex elimination tree for R2D100, 100 rows and columns │ │ │ │ │ 99 │ │ │ │ │ 98 │ │ │ │ │ 97 │ │ │ │ │ 96 │ │ │ │ │ 95 │ │ │ │ │ 94 │ │ │ │ │ @@ -327,15 +327,15 @@ │ │ │ │ │ 7 17 31 39 55 65 71 78 81 │ │ │ │ │ 6 11 16 27 30 38 53 54 64 75 77 80 │ │ │ │ │ 2 5 8 10 13 15 22 26 29 37 52 59 63 76 79 │ │ │ │ │ 1 4 9 12 14 25 28 36 51 58 62 │ │ │ │ │ 0 3 24 35 49 50 57 60 61 │ │ │ │ │ 23 34 48 56 │ │ │ │ │ 33 │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 9 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 9 │ │ │ │ │ superimposed on the structure of the factor L. Note this one important property: within any block column │ │ │ │ │ and below the diagonal block, a row is either zero or dense. │ │ │ │ │ The code fragment to convert a tree into a fundamental supernode tree is given below. │ │ │ │ │ ETree *fsetree, *vetree ; │ │ │ │ │ int maxzeros ; │ │ │ │ │ IV *nzerosIV ; │ │ │ │ │ nzerosIV = IV_new() ; │ │ │ │ │ @@ -368,15 +368,15 @@ │ │ │ │ │ This method will merge a node with all of its children if it will not result in more than maxzeros zeros inside │ │ │ │ │ the new block. On input, nzerosIV object keeps count of the number of zeroes already in the blocks of │ │ │ │ │ fsetree, and on return it will contain the number of zeros in the blocks of ametree. │ │ │ │ │ 3.4 Splitting large fronts │ │ │ │ │ There is one final step to constructing the tree that governs the factorization and solve. Large matrices will │ │ │ │ │ generate large supernodes at the topmost levels of the tree. For example, a k × k × k grid with a 27 point │ │ │ │ │ finite difference operator, when ordered by nested dissection, has a root supernode with k2 rows and columns. │ │ │ │ │ - 10 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 10 Orderings and Front Trees October 11, 2021 │ │ │ │ │ Figure 4: Top: vertex elimination tree with the vertices mapped to the fundamental supernode that contains │ │ │ │ │ them. Bottom: fundamental supernode tree. │ │ │ │ │ 71 │ │ │ │ │ 71 │ │ │ │ │ 71 │ │ │ │ │ 71 │ │ │ │ │ 71 │ │ │ │ │ @@ -407,17 +407,17 @@ │ │ │ │ │ 2 5 10 15 23 26 34 43 44 49 53 57 58 67 │ │ │ │ │ 1 4 7 9 12 14 18 22 25 33 42 48 52 56 63 66 │ │ │ │ │ 0 3 8 11 13 21 24 32 41 47 50 51 60 62 65 │ │ │ │ │ 20 31 39 40 46 61 64 │ │ │ │ │ 19 30 38 │ │ │ │ │ 29 │ │ │ │ │ 28 │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 11 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 11 │ │ │ │ │ Figure 5: Block structure of L with the fundamental supernode partition. │ │ │ │ │ - 12 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 12 Orderings and Front Trees October 11, 2021 │ │ │ │ │ Figure 6: Top: fundamental supernode tree with the supernodes mapped to the amalgamated supernode │ │ │ │ │ that contains them. Bottom: amalgamated supernode tree. │ │ │ │ │ 24 │ │ │ │ │ 24 │ │ │ │ │ 24 │ │ │ │ │ 24 │ │ │ │ │ 24 │ │ │ │ │ @@ -442,17 +442,17 @@ │ │ │ │ │ 6 10 13 15 │ │ │ │ │ 10 │ │ │ │ │ 24 │ │ │ │ │ 4 12 18 23 │ │ │ │ │ 0 1 2 3 9 11 14 17 19 22 │ │ │ │ │ 7 8 10 13 15 16 20 21 │ │ │ │ │ 5 6 │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 13 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 13 │ │ │ │ │ Figure 7: Block structure of L with the amalgamated supernode partition. │ │ │ │ │ - 14 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 14 Orderings and Front Trees October 11, 2021 │ │ │ │ │ The data structure for a top level supernode can be very large, too large to fit into memory. In a parallel │ │ │ │ │ environment, we follow the convention that each node in the tree is handled by one process. Having a very │ │ │ │ │ large node at the top levels of the tree will severely decrease the parallelism available to the computations. │ │ │ │ │ The solution to both problems, large data structures and limited parallelism, is to split large supernodes │ │ │ │ │ into pieces. We can specify a maximum size for the nodes in the tree, and split the large supernode into pieces │ │ │ │ │ no larger than this maximum size. This will keep the data structures to a manageable size and increase the │ │ │ │ │ available parallelism. We call the resulting tree the front tree because it represents the final computational │ │ │ │ │ @@ -488,15 +488,15 @@ │ │ │ │ │ of front trees. The original front tree came from our nested dissection ordering. │ │ │ │ │ There are 13824 rows and columns in the matrix, and 6001 fronts in the nested dissection tree. While │ │ │ │ │ there is an average of two rows and columns per front, most of the fronts are singleton fronts at the lower │ │ │ │ │ levels of the tree. The top level front has 750 internal rows and columns. │ │ │ │ │ • In the first step we create an fundamental supernode tree with a call to ETree mergeFrontsOne()with │ │ │ │ │ maxzeros = 0. We see that the number of fronts decreases by one and the number of entries does not │ │ │ │ │ change. │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 15 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 15 │ │ │ │ │ Figure 8: Left: tree after the large supernodes have been split. Right: tree with nodes mapped back to their │ │ │ │ │ amalgamated supernode. │ │ │ │ │ 26 │ │ │ │ │ 26 │ │ │ │ │ 26 │ │ │ │ │ 26 │ │ │ │ │ 27 │ │ │ │ │ @@ -525,26 +525,26 @@ │ │ │ │ │ 28 │ │ │ │ │ 27 │ │ │ │ │ 26 │ │ │ │ │ 5 13 20 25 │ │ │ │ │ 4 10 12 19 21 24 │ │ │ │ │ 0 1 2 3 8 9 11 15 18 22 23 │ │ │ │ │ 6 7 14 16 17 │ │ │ │ │ - 16 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 16 Orderings and Front Trees October 11, 2021 │ │ │ │ │ Figure 9: Block structure of L with the amalgamated and split supernode partition. │ │ │ │ │ Table 1: R3D13824: front tree transformations │ │ │ │ │ CPU #fronts #indices # entries #operations │ │ │ │ │ original 6001 326858 3459359 1981403337 │ │ │ │ │ fs tree 0.040 6000 326103 3459359 1981403337 │ │ │ │ │ merge one 0.032 3477 158834 3497139 2000297117 │ │ │ │ │ merge all 0.020 748 95306 3690546 2021347776 │ │ │ │ │ merge any 0.012 597 85366 3753241 2035158539 │ │ │ │ │ split 0.043 643 115139 3753241 2035158539 │ │ │ │ │ final 0.423 643 115128 3752694 2034396840 │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 17 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 17 │ │ │ │ │ • The second step is also a call to ETree mergeFrontsOne(), this time with maxzeros = 1000. Here │ │ │ │ │ we merge fronts with only one child with that child, in other words, only chains of nodes can merge │ │ │ │ │ together. Note how the number of fronts is decreased by almost one half, and the number of factor │ │ │ │ │ entries and operations increase by 1%. │ │ │ │ │ • The third step is a call to ETree mergeFrontsAll()with maxzeros = 1000, where we try to merge a │ │ │ │ │ node with all of its children if possible. The number of fronts decreases again by a factor of five, while │ │ │ │ │ the number of factor entries and operations increases by 7% and 2%, respectively, when compared with │ │ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ │ the final front tree, for the intra-front computations are a small fraction of the total number of operations. │ │ │ │ │ The solve time improves dramatically when small fronts are merged together into larger fronts. Our │ │ │ │ │ solves are submatrix algorithms, where the fundamental kernel is an operation Y := B −L X and │ │ │ │ │ J J J,I I │ │ │ │ │ X :=Y −U Y ,andisdesigned to be a BLAS2 kernel (when X and Y have a single column) or BLAS3 │ │ │ │ │ J J I,J J │ │ │ │ │ kernel (when X and Y are matrices). When fronts are small, particularly with one internal row and column, │ │ │ │ │ - 18 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 18 Orderings and Front Trees October 11, 2021 │ │ │ │ │ the submatrices that take part are very small. The overhead for the computations takes far more time than │ │ │ │ │ the computations themselves. │ │ │ │ │ This multistep process of merging, merging again, etc, and finally splitting the front trees is tedious. │ │ │ │ │ There are simple methods that do the process in one step. │ │ │ │ │ ETree *etree, *etree2, *etree3 ; │ │ │ │ │ int maxfrontsize, maxzeros, seed ; │ │ │ │ │ etree2 = ETree_transform(etree, NULL, maxzeros, maxfrontsize, seed) ; │ │ │ │ │ @@ -624,15 +624,15 @@ │ │ │ │ │ computations in the factorization and solve. If maxsize is too large, then too much of the computations in │ │ │ │ │ the factorization is done inside a front, which uses a slow kernel. If maxsize is too small, then the fronts are │ │ │ │ │ too small to get much computational efficiency. We recommend using a value between 32 and 96. Luckily, │ │ │ │ │ the factor and solve times are fairly flat within this range. A value of 64 is what we customarily use. │ │ │ │ │ References │ │ │ │ │ [1] P. Amestoy, T. Davis, and I. Duff. An approximate minimum degree ordering algorithm. SIAM J. │ │ │ │ │ Matrix Anal. Appl., 17:886–905, 1996. │ │ │ │ │ - December 20, 2018 Orderings and Front Trees 19 │ │ │ │ │ + October 11, 2021 Orderings and Front Trees 19 │ │ │ │ │ Table 3: R3D13824: the influence of maxzeros and maxsize. │ │ │ │ │ factor solve total │ │ │ │ │ maxzeros maxsize init CPU mflops postprocess CPU mflops CPU │ │ │ │ │ 0 ∞ 3.3 129.8 15.3 5.3 7.8 7.1 146.2 │ │ │ │ │ 10 ∞ 3.5 129.2 15.3 3.3 5.3 10.5 141.3 │ │ │ │ │ 100 ∞ 3.0 119.3 16.7 2.0 3.9 14.4 128.2 │ │ │ │ │ 1000 ∞ 3.0 121.8 16.7 1.4 3.5 17.0 129.7 │ │ │ │ │ @@ -665,15 +665,15 @@ │ │ │ │ │ Trans. Math. Software, 6:302–325, 1983. │ │ │ │ │ [10] J. A. George. Nested dissection of a regular finite element mesh. SIAM J. Numer. Anal., 10:345–363, │ │ │ │ │ 1973. │ │ │ │ │ [11] J. A. George and J. W. H. Liu. Computer Solution of Large Sparse Positive Definite Systems. Prentice- │ │ │ │ │ Hall, Englewood Cliffs, NJ, 1981. │ │ │ │ │ [12] A. Gupta. WGPP: Watson Graph Partitioning and sparse matrix ordering Package. Technical Report │ │ │ │ │ Users Manual, IBM T.J. Watson Research Center, New York, 1996. │ │ │ │ │ - 20 Orderings and Front Trees December 20, 2018 │ │ │ │ │ + 20 Orderings and Front Trees October 11, 2021 │ │ │ │ │ [13] B. Hendrickson and R. Leland. An improved spectral graph partitioning algorithm for mapping parallel │ │ │ │ │ computations. Technical Report SAND92-1460, Sandia National Laboratories, Albuquerque, NM, 1992. │ │ │ │ │ [14] B. Hendrickson and R. Leland. The Chaco user’s guide. Technical Report SAND93-2339, Sandia │ │ │ │ │ National Laboratories, Albuquerque, NM, 1993. │ │ │ │ │ [15] B. Hendrickson and E. Rothberg. Improving the runtime and quality of nested dissection ordering. │ │ │ │ │ SIAM J. Sci. Comput., 20:468–489, 1998. │ │ │ │ │ [16] G. Karypis and V. Kumar. A fast and high quality multilevel scheme for partitioning irregular graphs. │ │ ├── ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ ├── GPart.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMTI10 CMMI10 CMR8 │ │ │ │ %%+ CMMI8 CMEX10 CMSL10 CMBX10 CMSY8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o GPart.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1330,22 +1330,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1519,88 +1519,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5040,16 +5029,16 @@ │ │ │ │ 56 62 93 31 2[31 62 56 1[51 62 50 1[54 11[86 2[84 4[106 │ │ │ │ 3[42 4[86 1[80 9[56 56 56 56 56 56 56 56 2[31 37 45[{}35 │ │ │ │ 99.6264 /CMBX12 rf /Fc 139[62 1[62 16[62 16[62 8[62 71[{}5 │ │ │ │ 119.552 /CMTT12 rf /Fd 255[55{}1 66.4176 /CMSY8 rf /Fe │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 │ │ │ │ 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ 46[{}27 119.552 /CMBX12 rf /Ff 132[52 6[41 4[52 58 46[49 │ │ │ │ -63[{}5 90.9091 /CMBX10 rf /Fg 141[36 4[76 7[40 1[40 51 │ │ │ │ -29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ +63[{}5 90.9091 /CMBX10 rf /Fg 139[35 1[36 2[45 9[40 1[40 │ │ │ │ +51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ rf /Fh 156[83 46 78[61 61 18[{}4 83.022 /CMEX10 rf /Fi │ │ │ │ 146[62 1[37 1[24 17[67 20[53 66[{}5 66.4176 /CMMI8 rf │ │ │ │ /Fj 204[35 35 35 35 4[55 43[{}5 66.4176 /CMR8 rf /Fk │ │ │ │ 134[45 14[37 5[47 10[53 1[86 53 2[56 16[69 68 2[71 45 │ │ │ │ 71 25 25 46[58 11[{}15 90.9091 /CMMI10 rf /Fl 136[60 │ │ │ │ 1[49 30 37 38 1[46 46 51 74 23 42 1[28 46 42 1[42 46 │ │ │ │ 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 7[46 4[33 32[51 │ │ │ │ @@ -5164,17 +5153,17 @@ │ │ │ │ b Fk(Y)55 b Fo(that)35 b(has)g(minimal)g(w)m(eigh)m(t.)56 │ │ │ │ b(W)-8 b(e)36 b(examine)g(t)m(w)m(o)227 5294 y(\(p)s(ossibly\))j │ │ │ │ (di\013eren)m(t)h(min-cuts)g(and)e(ev)-5 b(aluate)41 │ │ │ │ b(the)f(partitions)g(induced)e(via)i(their)g(minimal)f(w)m(eigh)m(t)227 │ │ │ │ 5407 y(separators,)31 b(and)f(accept)i(a)f(b)s(etter)f(partition)h(if)g │ │ │ │ (presen)m(t.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1070 4 v │ │ │ │ -1252 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 0 399 a Fo(This)e(pro)s(cess)h(w)m(e)g(call)i │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 0 399 a Fo(This)e(pro)s(cess)h(w)m(e)g(call)i │ │ │ │ Fn(DDSEP)p Fo(,)d(whic)m(h)h(is)g(short)f(for)h Fn(D)p │ │ │ │ Fl(omain)k Fn(D)p Fl(e)-5 b(c)g(omp)g(osition)35 b Fn(SEP)p │ │ │ │ Fl(ar)-5 b(ator)p Fo(,)32 b(explained)e(in)g(more)0 511 │ │ │ │ y(detail)i(in)e([)p Ff(?)p Fo(])h(and)f([)p Ff(?)p Fo(].)0 │ │ │ │ 827 y Fe(1.1)135 b(Data)46 b(Structures)0 1056 y Fo(The)40 │ │ │ │ b Fn(GPart)e Fo(structure)i(has)f(a)i(p)s(oin)m(ter)f(to)h(a)f │ │ │ │ Fn(Graph)f Fo(ob)5 b(ject)40 b(and)g(other)g(\014elds)g(that)g(con)m │ │ │ │ @@ -5229,17 +5218,17 @@ │ │ │ │ b(It)32 b(con)m(tains)0 5053 y(input)g(parameters)h(for)f(the)h │ │ │ │ (di\013eren)m(t)g(stages)h(of)f(the)g Fn(DDSEP)e Fo(algorithm,)k(and)d │ │ │ │ (collects)j(statistics)f(ab)s(out)f(the)0 5166 y(CPU)d(time)h(sp)s(en)m │ │ │ │ (t)f(in)g(eac)m(h)i(stage.)136 5407 y Fm(\017)46 b Fo(These)30 │ │ │ │ b(parameters)h(are)g(used)e(to)j(generate)f(the)g(domain)f(decomp)s │ │ │ │ (osition.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1070 4 v 1251 100 a Fn(GPart)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fo(3)330 399 y Ff({)45 b Fn(int)i(minweight)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1287 100 a Fn(GPart)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fo(3)330 399 y Ff({)45 b Fn(int)i(minweight)p │ │ │ │ Fo(:)38 b(minim)m(um)30 b(target)i(w)m(eigh)m(t)g(for)e(a)h(domain)330 │ │ │ │ 541 y Ff({)45 b Fn(int)i(maxweight)p Fo(:)38 b(maxim)m(um)31 │ │ │ │ b(target)h(w)m(eigh)m(t)f(for)g(a)f(domain)330 683 y │ │ │ │ Ff({)45 b Fn(double)h(freeze)p Fo(:)51 b(m)m(ultiplier)37 │ │ │ │ b(used)e(to)i(freeze)g(v)m(ertices)h(of)e(high)g(degree)h(in)m(to)g │ │ │ │ (the)f(m)m(ultisector.)427 796 y(If)h(the)h(degree)g(of)g │ │ │ │ Fn(v)f Fo(is)h(more)g(than)f Fn(freeze)f Fo(times)i(the)g(median)f │ │ │ │ @@ -5303,17 +5292,17 @@ │ │ │ │ (ter)0 5068 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ (of)g Fc(GPart)e Fe(metho)t(ds)0 5294 y Fo(This)e(section)j(con)m │ │ │ │ (tains)f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f │ │ │ │ (all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 │ │ │ │ y Fn(GPart)29 b Fo(ob)5 b(ject.)42 b(There)29 b(are)i(no)f(IO)g(metho)s │ │ │ │ (ds.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1070 4 v │ │ │ │ -1252 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 599 y Fo(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 712 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 959 y(1.)46 b Fn(GPart)h(*)g │ │ │ │ (GPart_new)e(\()j(void)e(\))i(;)227 1113 y Fo(This)28 │ │ │ │ b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ Fn(GPart)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ @@ -5373,17 +5362,17 @@ │ │ │ │ b(GPart)e(*gpart,)g(int)h(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ 5253 y Fo(This)30 b(metho)s(d)g(sets)g(the)h Fn(msglvl)e │ │ │ │ Fo(and)g Fn(msgFile)g Fo(\014elds.)227 5407 y Fl(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(gpart)f │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1070 4 v 1251 100 a Fn(GPart)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fo(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1106 4 v 1287 100 a Fn(GPart)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fo(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 599 y Fo(1.)46 b Fn(void)h(GPart_setCweights)c(\()k │ │ │ │ (GPart)g(*gpart)f(\))h(;)227 753 y Fo(This)26 b(metho)s(d)g(sets)g(the) │ │ │ │ h(comp)s(onen)m(t)g(w)m(eigh)m(ts)g(v)m(ector)h Fn(cweightsIV)p │ │ │ │ Fo(.)c(W)-8 b(e)28 b(assume)e(that)h(the)f Fn(compidsIV)227 │ │ │ │ 866 y Fo(v)m(ector)33 b(has)f(b)s(een)e(set)i(prior)f(to)i(en)m(tering) │ │ │ │ f(this)f(metho)s(d.)44 b(The)31 b(w)m(eigh)m(t)i(of)e(a)h(comp)s(onen)m │ │ │ │ (t)g(is)g(not)f(simply)227 979 y(the)g(sum)f(of)g(the)h(w)m(eigh)m(ts)h │ │ │ │ @@ -5463,17 +5452,17 @@ │ │ │ │ g(domain.)227 5294 y Fl(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ b Fo(If)29 b Fn(gpart)p Fo(,)f Fn(g)h Fo(or)h Fn(domid)e │ │ │ │ Fo(is)h Fn(NULL)p Fo(,)f(or)i(if)f Fn(v)g Fo(is)g(out)h(of)g(range)f │ │ │ │ (\(i.e.,)j Fn(v)25 b Fk(<)f Fo(0)30 b(or)g Fn(nvtx)24 │ │ │ │ b Fm(\024)h Fn(v)p Fo(\),)227 5407 y(an)31 b(error)f(message)h(is)f │ │ │ │ (prin)m(ted)g(and)g(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1070 4 v │ │ │ │ -1252 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 111 399 a Fo(6.)46 b Fn(IV)h(*)h(GPart_bndWeightsIV) │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 111 399 a Fo(6.)46 b Fn(IV)h(*)h(GPart_bndWeightsIV) │ │ │ │ 43 b(\()k(GPart)g(*gpart)f(\))h(;)227 549 y Fo(This)27 │ │ │ │ b(metho)s(d)g(returns)f(an)h Fn(IV)g Fo(ob)5 b(ject)28 │ │ │ │ b(that)g(con)m(tains)g(the)g(w)m(eigh)m(ts)h(of)e(the)h(v)m(ertices)h │ │ │ │ (on)e(the)g(b)s(oundaries)227 661 y(of)k(the)f(comp)s(onen)m(ts.)227 │ │ │ │ 811 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ b Fn(gpart)f Fo(or)i Fn(g)f Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)0 │ │ │ │ @@ -5544,17 +5533,17 @@ │ │ │ │ b(W)-8 b(e)27 b(then)g(construct)g(the)227 5294 y(bipartite)j(graph)e │ │ │ │ (that)h(represen)m(ts)f(the)h(connectivit)m(y)i(of)e(the)g(domains)f │ │ │ │ (and)g(segmen)m(ts.)41 b(Eac)m(h)30 b(segmen)m(t)227 │ │ │ │ 5407 y(is)36 b(an)f(\\edge")i(that)g(connects)f(t)m(w)m(o)h(\\adjacen)m │ │ │ │ (t")h(domains.)56 b(This)34 b(allo)m(ws)j(us)e(to)h(use)g(a)g(v)-5 │ │ │ │ b(arian)m(t)36 b(of)g(the)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1070 4 v 1251 100 a Fn(GPart)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fo(7)227 399 y(Kernighan-Lin)k(algorithm)h(to)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1106 4 v 1287 100 a Fn(GPart)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fo(7)227 399 y(Kernighan-Lin)k(algorithm)h(to)g │ │ │ │ (\014nd)e(an)h(\\edge")i(separator)e(formed)g(of)g(segmen)m(ts,)j(whic) │ │ │ │ m(h)d(is)g(really)i(a)227 511 y(v)m(ertex)30 b(separator,)h(a)e(subset) │ │ │ │ f(of)h(\010.)40 b(The)29 b Fn(alpha)e Fo(parameter)j(is)f(used)f(in)h │ │ │ │ (the)g(cost)h(function)e(ev)-5 b(aluation)227 670 y(for)33 │ │ │ │ b(the)f(partition,)i(cost)q(\([)p Fk(S;)15 b(B)5 b(;)15 │ │ │ │ b(W)e Fo(]\))30 b(=)f Fm(j)p Fk(S)5 b Fm(j)1776 551 y │ │ │ │ Fh(\022)1838 670 y Fo(1)20 b(+)g Fk(\013)2062 608 y Fo(max)q │ │ │ │ @@ -5653,17 +5642,17 @@ │ │ │ │ Fo(\))p Fm(g)969 5407 y Fk(Y)1022 5421 y Fj(3)1144 5407 │ │ │ │ y Fo(=)83 b Fm(f)p Fk(y)28 b Fm(2)d Fk(Y)50 b Fm(j)31 │ │ │ │ b Fk(y)d Fm(2)d Fk(Ad)-10 b(j)5 b Fo(\()p Fk(B)26 b Fm(n)21 │ │ │ │ b Fk(Y)f Fo(\))30 b(and)g Fk(y)e Fm(2)d Fk(Ad)-10 b(j)5 │ │ │ │ b Fo(\()p Fk(W)34 b Fm(n)21 b Fk(Y)f Fo(\))p Fm(g)p eop │ │ │ │ end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1070 4 v │ │ │ │ -1252 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 227 399 a Fo(The)e Fn(YVmapIV)e Fo(ob)5 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(GPart)28 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 227 399 a Fo(The)e Fn(YVmapIV)e Fo(ob)5 │ │ │ │ b(ject)30 b(con)m(tains)g(the)g(list)f(of)h(v)m(ertices)g(in)f(the)g │ │ │ │ (wide)g(separator)h Fk(Y)20 b Fo(.)40 b(The)29 b Fn(IV)f │ │ │ │ Fo(ob)5 b(ject)30 b(that)227 511 y(is)i(returned,)g(\(called)h │ │ │ │ Fn(YCmapIV)d Fo(in)i(the)g(calling)i(metho)s(d\))e(con)m(tains)h(the)f │ │ │ │ (subscripts)f(of)h(the)g Fk(Y)3561 525 y Fj(0)3600 511 │ │ │ │ y Fo(,)h Fk(Y)3711 525 y Fj(1)3750 511 y Fo(,)g Fk(Y)3861 │ │ │ │ 525 y Fj(2)227 624 y Fo(or)e Fk(Y)392 638 y Fj(3)461 │ │ │ │ @@ -5774,17 +5763,17 @@ │ │ │ │ 5135 29 4 v 33 w(smoothYSep\(\))p Fo(.)227 5294 y Fl(Err)-5 │ │ │ │ b(or)40 b(che)-5 b(cking:)52 b Fo(If)36 b Fn(gpart)e │ │ │ │ Fo(is)j Fn(NULL)p Fo(,)e(or)h(if)h Fn(nlevel)c Fk(<)i │ │ │ │ Fo(0,)j(or)f(if)f Fn(alpha)e Fk(<)g Fo(0)p Fk(:)p Fo(0,)39 │ │ │ │ b(an)e(error)e(message)j(is)227 5407 y(prin)m(ted)30 │ │ │ │ b(and)g(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1070 4 v 1251 100 a Fn(GPart)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fo(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1106 4 v 1287 100 a Fn(GPart)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fo(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ b(Bisection)f(metho)s(d)0 589 y Fo(There)30 b(is)g(presen)m(tly)h(one)g │ │ │ │ (metho)s(d)e(to)j(construct)e(the)h(domain/separator)g(tree.)111 │ │ │ │ 787 y(1.)46 b Fn(DSTree)g(*)i(GPart_RBviaDDsep)43 b(\()48 │ │ │ │ b(GPart)e(*gpart,)g(DDsepInfo)f(*info)h(\))i(;)227 932 │ │ │ │ y Fo(This)c(metho)s(d)f(p)s(erforms)f(a)j(recursiv)m(e)f(bisection)h │ │ │ │ (of)f(the)h(graph)e(using)h(the)g Fn(DDSEP)e Fo(algorithm)k(and)227 │ │ │ │ 1045 y(returns)25 b(a)h Fn(DSTree)e Fo(ob)5 b(ject)27 │ │ │ │ @@ -5847,19 +5836,19 @@ │ │ │ │ (whether)e Fn(info)f Fo(is)i Fn(NULL)p Fo(.)f Fn(DDsepInfo)p │ │ │ │ 2663 5150 V 32 w(setDefaultFields\(\))c Fo(is)32 b(called)227 │ │ │ │ 5263 y(to)f(set)g(the)g(default)f(v)-5 b(alues.)227 5407 │ │ │ │ y Fl(Err)g(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(info)g │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1047 4 │ │ │ │ -v 1229 w Fn(GPart)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2853 100 V 111 399 a Fo(4.)46 b Fn(void)h(DDsepInfo_free)d(\() │ │ │ │ -j(DDsepInfo)f(*info)g(\))h(;)227 545 y Fo(This)33 b(metho)s(d)g(c)m │ │ │ │ -(hec)m(ks)h(to)g(see)g(whether)f Fn(info)f Fo(is)h Fn(NULL)p │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1083 4 │ │ │ │ +v 1265 w Fn(GPart)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 111 399 a Fo(4.)46 b Fn(void)h(DDsepInfo_free)d(\()j │ │ │ │ +(DDsepInfo)f(*info)g(\))h(;)227 545 y Fo(This)33 b(metho)s(d)g(c)m(hec) │ │ │ │ +m(ks)h(to)g(see)g(whether)f Fn(info)f Fo(is)h Fn(NULL)p │ │ │ │ Fo(.)g(If)g(so,)h(an)f(error)g(message)i(is)e(prin)m(ted)g(and)g(the) │ │ │ │ 227 658 y(program)f(exits.)46 b(Otherwise,)32 b(it)g(releases)h(an)m(y) │ │ │ │ g(storage)g(b)m(y)f(a)g(call)h(to)g Fn(DDsepInfo)p 3141 │ │ │ │ 658 29 4 v 31 w(clearData\(\))c Fo(then)227 771 y(free's)i(the)f │ │ │ │ (storage)i(for)e(the)h(structure)f(with)g(a)h(call)g(to)h │ │ │ │ Fn(free\(\))p Fo(.)227 917 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fo(If)30 b Fn(info)g Fo(is)g Fn(NULL)p │ │ │ │ @@ -5910,17 +5899,17 @@ │ │ │ │ y Fm(\017)46 b Fo(The)29 b Fn(freeze)e Fo(parameter)j(is)f(used)f(to)i │ │ │ │ (place)g(no)s(des)e(of)h(high)g(degree)h(in)m(to)g(the)f(m)m │ │ │ │ (ultisector.)42 b(If)29 b(the)427 5294 y(external)34 │ │ │ │ b(degree)f(of)g(a)g(v)m(ertex)h(is)f Fn(freeze)d Fo(times)k(the)f(a)m │ │ │ │ (v)m(erage)i(degree,)f(then)e(it)i(is)e(placed)h(in)g(the)427 │ │ │ │ 5407 y(m)m(ultisector.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1047 4 v 1228 100 a Fn(GPart)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fo(11)336 399 y Fm(\017)46 b Fo(The)30 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1083 4 v 1264 100 a Fn(GPart)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fo(11)336 399 y Fm(\017)46 b Fo(The)30 │ │ │ │ b Fl(tar)-5 b(get)32 b Fo(minim)m(um)d(w)m(eigh)m(t)j(for)e(a)h(domain) │ │ │ │ f(is)h Fn(minweight)p Fo(.)336 551 y Fm(\017)46 b Fo(The)30 │ │ │ │ b Fl(tar)-5 b(get)32 b Fo(maxim)m(um)e(w)m(eigh)m(t)i(for)e(a)h(domain) │ │ │ │ f(is)g Fn(maxweight)p Fo(.)336 703 y Fm(\017)46 b Fo(The)30 │ │ │ │ b Fn(seed)f Fo(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s(er)f(seed.) │ │ │ │ 336 856 y Fm(\017)46 b Fo(The)39 b Fn(outIVfile)d Fo(parameter)k(is)f │ │ │ │ (the)g(output)f(\014le)h(for)g(the)g Fn(IV)g Fo(ob)5 │ │ │ │ @@ -5989,20 +5978,20 @@ │ │ │ │ 5181 y Fm(\017)46 b Fo(The)37 b Fn(msgFile)e Fo(parameter)j(determines) │ │ │ │ f(the)g(output)g(\014le)g(|)g(if)g Fn(msgFile)e Fo(is)j │ │ │ │ Fn(stdout)p Fo(,)f(then)g(the)427 5294 y(output)29 b(\014le)h(is)f │ │ │ │ Fl(stdout)p Fo(,)i(otherwise)f(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ Fl(app)-5 b(end)31 b Fo(status)e(to)i(receiv)m(e)g(an)m(y)e(output)427 │ │ │ │ 5407 y(data.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1047 │ │ │ │ -4 v 1229 w Fn(GPart)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 336 399 a Fm(\017)46 b Fo(The)23 │ │ │ │ -b Fn(inGraphFile)d Fo(parameter)k(is)f(the)h(input)e(\014le)i(for)f │ │ │ │ -(the)g Fn(Graph)f Fo(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i │ │ │ │ -(the)f(form)427 511 y Fn(*.graphf)18 b Fo(or)j Fn(*.graphb)p │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1083 │ │ │ │ +4 v 1265 w Fn(GPart)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 336 399 a Fm(\017)46 b Fo(The)23 b │ │ │ │ +Fn(inGraphFile)d Fo(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ +Fn(Graph)f Fo(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f │ │ │ │ +(form)427 511 y Fn(*.graphf)18 b Fo(or)j Fn(*.graphb)p │ │ │ │ Fo(.)35 b(The)19 b Fn(Graph)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fn(Graph)p 3368 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fo(metho)s(d.)336 770 │ │ │ │ y Fm(\017)46 b Fo(The)31 b Fn(inIVfile)d Fo(parameter)k(is)f(the)g │ │ │ │ (input)f(\014le)h(for)g(the)g Fn(IV)f Fo(ob)5 b(ject)32 │ │ │ │ b(that)g(con)m(tains)g(the)f(map)f(from)427 882 y(v)m(ertices)i(to)f │ │ │ │ (domains)g(and)e(m)m(ultisector.)43 b(It)30 b Fn(inIVfile)e │ │ │ │ @@ -6070,17 +6059,17 @@ │ │ │ │ y Fm(\017)46 b Fo(The)30 b Fn(alpha)f Fo(parameter)i(con)m(trols)h(the) │ │ │ │ e(partition)h(ev)-5 b(aluation)32 b(function.)336 5294 │ │ │ │ y Fm(\017)46 b Fo(The)h Fn(maxdomweight)e Fo(parameter)j(con)m(trols)g │ │ │ │ (the)g(recursiv)m(e)g(bisection)h(|)e(no)g(subgraph)f(with)427 │ │ │ │ 5407 y(w)m(eigh)m(t)32 b(less)f(than)f Fn(maxdomweight)d │ │ │ │ Fo(is)j(further)f(split.)p eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1047 4 v 1228 100 a Fn(GPart)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fo(13)336 399 y Fm(\017)46 b Fo(The)41 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1083 4 v 1264 100 a Fn(GPart)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fo(13)336 399 y Fm(\017)46 b Fo(The)41 │ │ │ │ b Fn(DDoption)e Fo(parameter)j(con)m(trols)h(the)f(initial)h │ │ │ │ (domain/segmen)m(t)g(partition)f(on)f(eac)m(h)i(sub-)427 │ │ │ │ 511 y(graph.)60 b(When)37 b Fn(DDDoption)45 b(=)j(1)37 │ │ │ │ b Fo(w)m(e)g(use)g(the)g(\014shnet)f(algorithm)i(for)f(eac)m(h)h │ │ │ │ (subgraph.)59 b(When)427 624 y Fn(DDDoption)46 b(=)h(1)32 │ │ │ │ b Fo(w)m(e)h(use)f(the)h(\014shnet)e(algorithm)j(once)f(for)f(the)g(en) │ │ │ │ m(tire)i(graph)e(and)f(this)i(is)f(then)427 737 y(pro)5 │ │ │ │ @@ -6150,18 +6139,18 @@ │ │ │ │ 5275 y Ff({)45 b Fn(nlayer)h(=)i(2)30 b Fo(|)g(eac)m(h)i(net)m(w)m(ork) │ │ │ │ f(has)f(t)m(w)m(o)i(la)m(y)m(ers)f(but)f(need)g(not)h(b)s(e)f │ │ │ │ (bipartite.)500 5407 y Ff({)45 b Fn(nlayer)h(>)i(2)30 │ │ │ │ b Fo(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f Fn(option/2)e │ │ │ │ Fo(la)m(y)m(ers)k(on)e(eac)m(h)i(side)e(of)h(the)f(separator.)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1047 │ │ │ │ -4 v 1229 w Fn(GPart)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 336 399 a Fm(\017)46 b Fo(The)34 │ │ │ │ -b Fn(outDSTreeFile)d Fo(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1083 │ │ │ │ +4 v 1265 w Fn(GPart)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 336 399 a Fm(\017)46 b Fo(The)34 b │ │ │ │ +Fn(outDSTreeFile)d Fo(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ (the)h Fn(DSTree)e Fo(ob)5 b(ject.)53 b(It)35 b(m)m(ust)f(b)s(e)g(of) │ │ │ │ 427 511 y(the)29 b(form)f Fn(*.dstreef)e Fo(or)j Fn(*.dstreeb)p │ │ │ │ Fo(.)37 b(If)29 b Fn(outDSTreeFile)24 b Fo(is)29 b(not)g │ │ │ │ Fn("none")p Fo(,)e(the)i Fn(DSTree)e Fo(ob)5 b(ject)427 │ │ │ │ 624 y(is)31 b(written)f(to)h(the)g(\014le)f(via)h(the)g │ │ │ │ Fn(DSTree)p 1851 624 29 4 v 33 w(writeToFile\(\))26 b │ │ │ │ Fo(metho)s(d.)p eop end │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -30,15 +30,15 @@ │ │ │ │ │ condensed into the source while the nodes in W \Y are condensed into the sink. The rest of │ │ │ │ │ the network is formed using the structure of the subgraph induced by Y. Given a min-cut of │ │ │ │ │ b │ │ │ │ │ the network we can identify a separator S ⊆ Y that has minimal weight. We examine two │ │ │ │ │ (possibly) different min-cuts and evaluate the partitions induced via their minimal weight │ │ │ │ │ separators, and accept a better partition if present. │ │ │ │ │ 1 │ │ │ │ │ - 2 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 2 GPart : DRAFT October 11, 2021 │ │ │ │ │ This process we call DDSEP, which is short for Domain Decomposition SEParator, explained in more │ │ │ │ │ detail in [?] and [?]. │ │ │ │ │ 1.1 Data Structures │ │ │ │ │ The GPart structure has a pointer to a Graph object and other fields that contain information │ │ │ │ │ about the partition of the graph. │ │ │ │ │ The following fields are always active. │ │ │ │ │ • Graph *graph : pointer to the Graph object │ │ │ │ │ @@ -61,15 +61,15 @@ │ │ │ │ │ • GPart *sib : pointer to a sibling GPart object │ │ │ │ │ • IV vtxMapIV : an IV object of size nvtx + nvbnd, contains a map from the vertices of the │ │ │ │ │ graph to either the vertices of its parent or to the vertices of the root graph │ │ │ │ │ The DDsepInfo helper-object is used during the DDSEP recursive bisection process. It contains │ │ │ │ │ input parameters for the different stages of the DDSEP algorithm, and collects statistics about the │ │ │ │ │ CPUtime spent in each stage. │ │ │ │ │ • These parameters are used to generate the domain decomposition. │ │ │ │ │ - GPart : DRAFT December 20, 2018 3 │ │ │ │ │ + GPart : DRAFT October 11, 2021 3 │ │ │ │ │ – int minweight: minimum target weight for a domain │ │ │ │ │ – int maxweight: maximum target weight for a domain │ │ │ │ │ – double freeze: multiplier used to freeze vertices of high degree into the multisector. │ │ │ │ │ If the degree of v is more than freeze times the median degree, v is placed into the │ │ │ │ │ multisector. │ │ │ │ │ – int seed: random number seed │ │ │ │ │ – int DDoption: If 1, a new domain decomposition is constructed for each subgraph. If │ │ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │ │ – int ntreeobj: number of tree objects in the tree, used to set gpart->id and used to │ │ │ │ │ initialize the DSTree object. │ │ │ │ │ – int msglvl : message level │ │ │ │ │ – FILE *msgFile : message file pointer │ │ │ │ │ 1.2 Prototypes and descriptions of GPart methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ GPart object. There are no IO methods. │ │ │ │ │ - 4 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 4 GPart : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. GPart * GPart_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the GPart structure and then sets the default fields │ │ │ │ │ by a call to GPart setDefaultFields(). │ │ │ │ │ 2. void GPart_setDefaultFields ( GPart *gpart ) ; │ │ │ │ │ @@ -132,15 +132,15 @@ │ │ │ │ │ compidsIV and cweightsIV IV objects are initialized. The remaining fields are not changed │ │ │ │ │ from their default values. │ │ │ │ │ Error checking: If gpart or g is NULL, or if g->nvtx ≤ 0, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 2. void GPart_setMessageInfo ( GPart *gpart, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method sets the msglvl and msgFile fields. │ │ │ │ │ Error checking: If gpart is NULL, an error message is printed and the program exits. │ │ │ │ │ - GPart : DRAFT December 20, 2018 5 │ │ │ │ │ + GPart : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. void GPart_setCweights ( GPart *gpart ) ; │ │ │ │ │ This method sets the component weights vector cweightsIV. We assume that the compidsIV │ │ │ │ │ vector has been set prior to entering this method. The weight of a component is not simply │ │ │ │ │ the sum of the weights of the vertices with that component’s id. We accept the separator or │ │ │ │ │ multisector vertices (those v with compids[v] == 0) but then find the connected components │ │ │ │ │ of the remaining vertices, renumbering the compidsIV vector where necessary. Thus, ncomp │ │ │ │ │ @@ -171,15 +171,15 @@ │ │ │ │ │ This method determines whether the vertex v is adjacent to just one domain or not. We use │ │ │ │ │ this method to make a separator or multisector minimal. If the vertex is adjacent to only one │ │ │ │ │ domain, the return value is 1 and *pdomid is set to the domain’s id. If a vertex is adjacent │ │ │ │ │ to zero or two or more domains, the return value is zero. If a vertex belongs to a domain, it │ │ │ │ │ is considered adjacent to that domain. │ │ │ │ │ Error checking: If gpart, g or domid is NULL, or if v is out of range (i.e., v < 0 or nvtx ≤ v), │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ - 6 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 6 GPart : DRAFT October 11, 2021 │ │ │ │ │ 6. IV * GPart_bndWeightsIV ( GPart *gpart ) ; │ │ │ │ │ This method returns an IV object that contains the weights of the vertices on the boundaries │ │ │ │ │ of the components. │ │ │ │ │ Error checking: If gpart or g is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.4 Domain decomposition methods │ │ │ │ │ There are presently two methods that create a domain decomposition of a graph or a subgraph. │ │ │ │ │ 1. void GPart_DDviaFishnet ( GPart *gpart, double frac, int minweight, │ │ │ │ │ @@ -209,15 +209,15 @@ │ │ │ │ │ double cpus[] ) ; │ │ │ │ │ This method takes a domain decomposition {Φ,Ω ,...,Ω } defined by the compidsIV vector │ │ │ │ │ 1 m │ │ │ │ │ and generates a two set partition [S,B,W]. We first compute the map from vertices to │ │ │ │ │ domains and segments (the segments partition the interface nodes Φ). We then construct the │ │ │ │ │ bipartite graph that represents the connectivity of the domains and segments. Each segment │ │ │ │ │ is an “edge” that connects two “adjacent” domains. This allows us to use a variant of the │ │ │ │ │ - GPart : DRAFT December 20, 2018 7 │ │ │ │ │ + GPart : DRAFT October 11, 2021 7 │ │ │ │ │ Kernighan-Lin algorithm to find an “edge” separator formed of segments, which is really a │ │ │ │ │ vertex separator, a subset of Φ. The alpha parameter is used in the cost function evaluation │ │ │ │ │ for the partition, cost([S,B,W]) = |S|1+αmax{|B|,|W|}. The seed parameter is used │ │ │ │ │ min{|B|,|W|} │ │ │ │ │ to randomize the algorithm. One can make several runswith different seeds and chose the best │ │ │ │ │ partition. The cpus[] array is used to store execution times for segments of the algorithm: │ │ │ │ │ cpus[0] stores the time to compute the domain/segment map; cpus[2] stores the time to │ │ │ │ │ @@ -253,15 +253,15 @@ │ │ │ │ │ 0 │ │ │ │ │ Y = {y∈Y | y∈Adj(B\Y) and y ∈/ Adj(W \Y)} │ │ │ │ │ 1 │ │ │ │ │ Y = {y∈Y | y∈/ Adj(B \Y) and y ∈ Adj(W \Y)} │ │ │ │ │ 2 │ │ │ │ │ Y = {y∈Y | y∈Adj(B\Y) and y ∈Adj(W \Y)} │ │ │ │ │ 3 │ │ │ │ │ - 8 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 8 GPart : DRAFT October 11, 2021 │ │ │ │ │ The YVmapIV object contains the list of vertices in the wide separator Y . The IV object that │ │ │ │ │ is returned, (called YCmapIV in the calling method) contains the subscripts of the Y , Y , Y │ │ │ │ │ 0 1 2 │ │ │ │ │ or Y sets that contains each vertex. │ │ │ │ │ 3 │ │ │ │ │ Error checking: If gpart, g or YVmapIV is NULL, or if nvtx ≤ 0, or if YVmapIV is empty, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ @@ -303,15 +303,15 @@ │ │ │ │ │ improves it (if possible). The methods returns the cost of a (possibly) new two-set partition │ │ │ │ │ b b c │ │ │ │ │ [S,B,W] defined by the compidsIV vector. The wide separator Y that is constructed is │ │ │ │ │ centered around S, i.e., Y includes all nodes in B and W that are nlayer distance or less │ │ │ │ │ from S. This method calls GPart smoothYSep(). │ │ │ │ │ Error checking: If gpart is NULL, or if nlevel < 0, or if alpha < 0.0, an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ - GPart : DRAFT December 20, 2018 9 │ │ │ │ │ + GPart : DRAFT October 11, 2021 9 │ │ │ │ │ 1.2.7 Recursive Bisection method │ │ │ │ │ There is presently one method to construct the domain/separator tree. │ │ │ │ │ 1. DSTree * GPart_RBviaDDsep ( GPart *gpart, DDsepInfo *info ) ; │ │ │ │ │ This method performs a recursive bisection of the graph using the DDSEP algorithm and │ │ │ │ │ returns a DSTree object that represents the domain/separator tree and the map from vertices │ │ │ │ │ to domains and separators. The DDsepInfo structure contains all the parameters to the │ │ │ │ │ different steps of the DDSEP algorithm (the fishnet method to find the domain decomposition, │ │ │ │ │ @@ -341,15 +341,15 @@ │ │ │ │ │ info->DDoption = 1 ; info->msglvl = 0 ; │ │ │ │ │ info->nlayer = 3 ; info->msgFile = stdout ; │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. void DDsepInfo_clearData ( DDsepInfo *info ) ; │ │ │ │ │ This method checks to see whether info is NULL. DDsepInfo setDefaultFields() is called │ │ │ │ │ to set the default values. │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ - 10 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 10 GPart : DRAFT October 11, 2021 │ │ │ │ │ 4. void DDsepInfo_free ( DDsepInfo *info ) ; │ │ │ │ │ This method checks to see whether info is NULL. If so, an error message is printed and the │ │ │ │ │ program exits. Otherwise, it releases any storage by a call to DDsepInfo clearData() then │ │ │ │ │ free’s the storage for the structure with a call to free(). │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ 5. void DDsepInfo_writeCpuTimes ( DDsepInfo *info, FILE *msgFile ) ; │ │ │ │ │ This method writes a breakdown of the CPU times in a meaningful format. Here is sample │ │ │ │ │ @@ -379,15 +379,15 @@ │ │ │ │ │ data. │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The freeze parameter is used to place nodes of high degree into the multisector. If the │ │ │ │ │ external degree of a vertex is freeze times the average degree, then it is placed in the │ │ │ │ │ multisector. │ │ │ │ │ - GPart : DRAFT December 20, 2018 11 │ │ │ │ │ + GPart : DRAFT October 11, 2021 11 │ │ │ │ │ • The target minimum weight for a domain is minweight. │ │ │ │ │ • The target maximum weight for a domain is maxweight. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The outIVfile parameter is the output file for the IV object that contains the map │ │ │ │ │ from vertices to components. If outIVfile is "none", then there is no output, otherwise │ │ │ │ │ outIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ 2. testTwoSetViaBKL msglvl msgFile inGraphFile inIVfile │ │ │ │ │ @@ -417,15 +417,15 @@ │ │ │ │ │ problems. It reads in a Graph object and an IV object that holds the map from vertices to │ │ │ │ │ components (e.g., the output from the driver program testTwoSetViaBKL) from two files, │ │ │ │ │ smooths the separator and then optionally writes out the new component ids map to a file. │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ • The msgFile parameter determines the output file — if msgFile is stdout, then the │ │ │ │ │ output file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ - 12 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 12 GPart : DRAFT October 11, 2021 │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The inIVfile parameter is the input file for the IV object that contains the map from │ │ │ │ │ vertices to domains and multisector. It inIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ • The option parameter specifies the type of network optimization problem that will be │ │ │ │ │ solved. │ │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ • The target maximum weight for a domain is maxweight. │ │ │ │ │ • The freeze parameter is used to place nodes of high degree into the multisector. If the │ │ │ │ │ external degree of a vertex is freeze times the average degree, then it is placed in the │ │ │ │ │ multisector. │ │ │ │ │ • The alpha parameter controls the partition evaluation function. │ │ │ │ │ • The maxdomweight parameter controls the recursive bisection — no subgraph with │ │ │ │ │ weight less than maxdomweight is further split. │ │ │ │ │ - GPart : DRAFT December 20, 2018 13 │ │ │ │ │ + GPart : DRAFT October 11, 2021 13 │ │ │ │ │ • The DDoption parameter controls the initial domain/segment partition on each sub- │ │ │ │ │ graph. When DDDoption = 1 we use the fishnet algorithm for each subgraph. When │ │ │ │ │ DDDoption = 1 we use the fishnet algorithm once for the entire graph and this is then │ │ │ │ │ projected down onto each subgraph. │ │ │ │ │ • The nlayer parameter governs the smoothing process by specifying the type of network │ │ │ │ │ optimization problem that will be solved. │ │ │ │ │ – nlayer = 1 — each network has two layers and is bipartite. │ │ │ │ │ @@ -496,15 +496,15 @@ │ │ │ │ │ DDDoption = 1 we use the fishnet algorithm once for the entire graph and this is then │ │ │ │ │ projected down onto each subgraph. │ │ │ │ │ • The nlayer parameter governs the smoothing process by specifying the type of network │ │ │ │ │ optimization problem that will be solved. │ │ │ │ │ – nlayer = 1 — each network has two layers and is bipartite. │ │ │ │ │ – nlayer = 2 — each network has two layers but need not be bipartite. │ │ │ │ │ – nlayer > 2 — each network has option/2 layers on each side of the separator. │ │ │ │ │ - 14 GPart : DRAFT December 20, 2018 │ │ │ │ │ + 14 GPart : DRAFT October 11, 2021 │ │ │ │ │ • The outDSTreeFile parameter is the output file for the DSTree object. It must be of │ │ │ │ │ the form *.dstreef or *.dstreeb. If outDSTreeFile is not "none", the DSTree object │ │ │ │ │ is written to the file via the DSTree writeToFile() method. │ │ │ │ │ Index │ │ │ │ │ DDsepInfo clearData(), 9 │ │ │ │ │ DDsepInfo free(), 10 │ │ │ │ │ DDsepInfo new(), 9 │ │ ├── ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ ├── Graph.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMR8 CMTI10 CMBX10 CMMI10 │ │ │ │ %%+ CMSY10 CMR6 CMR9 CMTT9 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Graph.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -793,22 +793,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -982,88 +982,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5184,16 +5173,16 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 59 3[44 44 46 1[62 56 62 93 31 59 │ │ │ │ 1[31 62 56 1[51 62 50 62 54 9[116 1[86 5[84 5[42 3[74 │ │ │ │ 1[81 80 11[56 56 56 56 56 56 2[31 46[{}34 99.6264 /CMBX12 │ │ │ │ rf /Fb 141[62 1[62 7[62 6[62 25[62 71[{}5 119.552 /CMTT12 │ │ │ │ rf /Fc 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 │ │ │ │ 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 │ │ │ │ -2[37 46[{}27 119.552 /CMBX12 rf /Fd 141[36 4[76 7[40 │ │ │ │ -1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ +2[37 46[{}27 119.552 /CMBX12 rf /Fd 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ /CMSL10 rf /Fe 141[39 1[39 7[39 6[39 10[39 9[39 2[39 │ │ │ │ 1[39 1[39 69[{}9 74.7198 /CMTT9 rf /Ff 135[41 1[41 43 │ │ │ │ 30 30 30 41 43 38 43 64 21 1[23 21 43 38 23 34 1[34 43 │ │ │ │ 38 12[55 37[21 1[21 44[{}24 74.7198 /CMR9 rf /Fg 206[30 │ │ │ │ 49[{}1 49.8132 /CMR6 rf /Fh 145[45 3[25 50[0 4[61 16[91 │ │ │ │ 6[71 4[71 71 4[45 12[71 25 1[{}11 90.9091 /CMSY10 rf │ │ │ │ /Fi 136[65 44 52 30[53 2[56 3[69 7[71 1[67 6[71 1[71 │ │ │ │ @@ -5313,17 +5302,17 @@ │ │ │ │ b(=)d Fi(w)r Fn(\()p Fj(u)p Fn(\))c Fh(\001)g Fi(w)r │ │ │ │ Fn(\()p Fj(v)q Fn(\))p 0 5322 1560 4 v 104 5375 a Fg(1)138 │ │ │ │ 5407 y Ff(The)26 b Fe(EGraph)h Ff(ob)t(ject)g(represen)n(ts)e(a)h │ │ │ │ (graph)g(of)h(the)e(matrix,)h(but)f(stores)h(a)g(list)h(of)f(co)n(v)n │ │ │ │ (ering)g(cliques)g(in)g(an)g Fe(IVL)g Ff(ob)t(ject.)1927 │ │ │ │ 5656 y Fn(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 0 399 a Fn(and)36 b(it)i(is)f(the)g(smallest)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 0 399 a Fn(and)36 b(it)i(is)f(the)g(smallest)h │ │ │ │ (graph)e(with)h(this)g(prop)s(ert)m(y)-8 b(.)60 b(The)36 │ │ │ │ b(compression)h(is)g Fk(loss-less)p Fn(,)j(for)d(giv)m(en)h │ │ │ │ Fj(G)p Fn(\()p Fj(V)q Fi(;)15 b Fj(E)p Fn(\))0 511 y(and)30 │ │ │ │ b Fi(\036)p Fn(,)i(w)m(e)f(can)g(reconstruct)h(the)f(unit)f(w)m(eigh)m │ │ │ │ (t)j(graph)d Fi(G)p Fn(\()p Fi(V)5 b(;)15 b(E)5 b Fn(\).)44 │ │ │ │ b(In)31 b(e\013ect,)h(w)m(e)g(can)f(w)m(ork)g(with)g(the)g(natural)0 │ │ │ │ 624 y(compressed)j(graph)g(to)i(\014nd)d(separators)i(and)f(orderings)g │ │ │ │ @@ -5379,17 +5368,17 @@ │ │ │ │ (non-)p Fm(NULL)e Fn(if)h Fm(type)46 b(/)i(2)f(==)g(1)0 │ │ │ │ 5049 y Fc(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fb(Graph)e Fc(metho)t(ds)0 5294 y Fn(This)e(section)j(con)m(tains)f │ │ │ │ (brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 y Fm(Graph)29 │ │ │ │ b Fn(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1070 4 v 1251 100 a Fm(Graph)29 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1287 100 a Fm(Graph)29 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ b(metho)s(ds)0 605 y Fn(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ (metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ (default)f(\014elds,)h(clearing)0 718 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ (data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 982 │ │ │ │ y(1.)46 b Fm(Graph)h(*)g(Graph_new)e(\()j(void)e(\))i(;)227 │ │ │ │ 1143 y Fn(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e │ │ │ │ (the)h Fm(Graph)f Fn(structure)g(and)g(then)g(sets)i(the)f(default)f │ │ │ │ @@ -5456,17 +5445,17 @@ │ │ │ │ b(or)c Fm(adjType)d Fn(of)i Fm(ewghtType)e Fn(is)i(in)m(v)-5 │ │ │ │ b(alid)42 b(\(they)f(m)m(ust)h(b)s(e)227 5407 y Fm(IVL)p │ │ │ │ 377 5407 V 34 w(CHUNKED)p Fn(,)27 b Fm(IVL)p 943 5407 │ │ │ │ V 33 w(SOLO)h Fn(or)g Fm(IVL)p 1449 5407 V 34 w(UNKNOWN)p │ │ │ │ Fn(\).)f(an)i(error)f(message)i(is)e(prin)m(ted)h(and)f(the)g(program)h │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 111 399 a Fn(2.)46 b Fm(void)h(Graph_init2)e(\()i │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 111 399 a Fn(2.)46 b Fm(void)h(Graph_init2)e(\()i │ │ │ │ (Graph)f(*graph,)g(int)h(type,)g(int)f(nvtx,)h(int)g(nvbnd,)f(int)h │ │ │ │ (nedges,)466 511 y(int)g(totvwght,)e(int)i(totewght,)e(IVL)i(*adjIVL,)f │ │ │ │ (int)h(*vwghts,)e(IVL)i(*ewghtIVL\))227 665 y Fn(This)41 │ │ │ │ b(metho)s(d)f(is)h(used)f(b)m(y)h(the)h(IO)e(read)h(metho)s(ds.)72 │ │ │ │ b(When)41 b(a)h Fm(Graph)d Fn(ob)5 b(ject)42 b(is)g(read)f(from)f(a)i │ │ │ │ (\014le,)227 778 y(the)35 b Fm(IVL)e Fn(ob)5 b(ject\(s\))35 │ │ │ │ b(m)m(ust)f(b)s(e)g(initialized)i(and)d(then)h(read)g(in)g(from)f(the)i │ │ │ │ @@ -5547,17 +5536,17 @@ │ │ │ │ b(alence)27 b(map)e(from)h(the)g(graph)f(to)i(its)f(natural)g │ │ │ │ (compressed)f(graph.)227 5294 y(The)33 b(map)f Fi(\036)e │ │ │ │ Fn(:)g Fi(V)49 b Fh(7!)30 b Fj(V)k Fn(is)f(then)g(constructed)g(\(see)h │ │ │ │ (the)f(In)m(tro)s(duction)g(in)f(this)h(section\))h(and)f(put)f(in)m │ │ │ │ (to)227 5407 y(an)f Fm(IV)e Fn(ob)5 b(ject)32 b(that)f(is)f(then)g │ │ │ │ (returned.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1070 4 v 1251 100 a Fm(Graph)29 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(5)227 399 y Fk(Err)-5 b(or)33 b(che)-5 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1106 4 v 1287 100 a Fm(Graph)29 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(5)227 399 y Fk(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)40 b Fn(If)28 b Fm(graph)g Fn(is)h Fm(NULL)f │ │ │ │ Fn(or)h Fm(nvtx)47 b(<=)g(0)p Fn(,)29 b(an)g(error)g(message)h(is)f │ │ │ │ (prin)m(ted)f(and)h(the)g(program)227 511 y(exits.)111 │ │ │ │ 726 y(2.)46 b Fm(Graph)h(*)g(Graph_compress)92 b(\()47 │ │ │ │ b(Graph)g(*graph,)e(int)i(map[],)f(int)h(coarseType)e(\))j(;)227 │ │ │ │ 839 y(Graph)f(*)g(Graph_compress2)d(\()j(Graph)g(*graph,)e(IV)j │ │ │ │ (*mapIV,)d(int)i(coarseType)e(\))j(;)227 1003 y Fn(This)c │ │ │ │ @@ -5617,17 +5606,17 @@ │ │ │ │ 5130 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(w)m(eigh)m(t)i(of)f │ │ │ │ (adj\()p Fm(v)p Fn(\).)227 5294 y Fk(Err)-5 b(or)39 b(che)-5 │ │ │ │ b(cking:)50 b Fn(If)35 b Fm(graph)f Fn(is)i Fm(NULL)p │ │ │ │ Fn(,)e(or)i Fm(v)f Fn(is)h(out)f(of)h(range,)h(an)f(error)f(message)h │ │ │ │ (is)g(prin)m(ted)f(and)g(the)227 5407 y(program)30 b(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 111 399 a Fn(3.)46 b Fm(int)h(Graph_adjAndSize)d(\() │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 111 399 a Fn(3.)46 b Fm(int)h(Graph_adjAndSize)d(\() │ │ │ │ j(Graph)f(*graph,)g(int)h(u,)g(int)g(*pusize,)f(int)h(**puadj\))e(;)227 │ │ │ │ 545 y Fn(This)31 b(metho)s(d)f(\014lls)h Fm(*pusize)f │ │ │ │ Fn(with)h(the)g(size)h(of)f(the)h(adjacency)g(list)g(for)f │ │ │ │ Fm(u)g Fn(and)f Fm(*puadj)g Fn(p)s(oin)m(ts)h(to)h(the)227 │ │ │ │ 658 y(start)f(of)g(the)f(list)h(v)m(ector.)227 804 y │ │ │ │ Fk(Err)-5 b(or)32 b(che)-5 b(cking:)40 b Fn(If)28 b Fm(graph)f │ │ │ │ Fn(is)h Fm(NULL)p Fn(,)f(or)i(if)f Fm(u)48 b(<)f(0)28 │ │ │ │ @@ -5713,17 +5702,17 @@ │ │ │ │ Fm(map[])f Fn(v)m(ector.)42 b(This)28 b(renders)g(the)i(graph)e(ob)5 │ │ │ │ b(ject)30 b(in)m(v)-5 b(alid.)227 5294 y(The)38 b(graph)g(partitioning) │ │ │ │ h(metho)s(ds)e(map)h(the)h(v)m(ertices)g(bac)m(k)g(to)g(their)g │ │ │ │ (original)g(v)-5 b(alues.)65 b(Presen)m(tly)-8 b(,)227 │ │ │ │ 5407 y(only)31 b(graphs)e(with)i(unit)e(edge)j(w)m(eigh)m(ts)f(are)g │ │ │ │ (allo)m(w)m(ed)h(as)f(input.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1070 4 v 1251 100 a Fm(Graph)29 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(7)227 399 y Fk(Err)-5 b(or)32 b(che)-5 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1106 4 v 1287 100 a Fm(Graph)29 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(7)227 399 y Fk(Err)-5 b(or)32 b(che)-5 │ │ │ │ b(cking:)39 b Fn(If)28 b Fm(graph)f Fn(is)h Fm(NULL)f │ │ │ │ Fn(or)h Fm(icomp)46 b(<)i(0)27 b Fn(or)i Fm(compids)d │ │ │ │ Fn(or)i Fm(pmap)f Fn(is)h Fm(NULL)p Fn(,)f(an)h(error)g(message)227 │ │ │ │ 511 y(is)j(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ 691 y(8.)46 b Fm(int)h(Graph_isSymmetric)c(\()48 b(Graph)e(*graph)g(\)) │ │ │ │ i(;)227 837 y Fn(This)36 b(metho)s(d)g(returns)f Fm(1)i │ │ │ │ Fn(if)f(the)h(graph)f(is)h(symmetric)f(\(i.e.,)k(edge)d │ │ │ │ @@ -5805,17 +5794,17 @@ │ │ │ │ b Fm(1)f Fn(is)g(returned.)40 b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m │ │ │ │ (tered)h(from)f Fm(fprintf)p Fn(,)f(zero)i(is)f(returned.)227 │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(graph)f Fn(or)i Fm(fp)e Fn(are)i Fm(NULL)e Fn(an)i(error)f │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(zero)h(is)g(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1070 4 v │ │ │ │ -1252 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2831 100 V 111 399 a Fn(6.)46 b Fm(int)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1106 4 v │ │ │ │ +1288 w Fm(Graph)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)h(11,)g │ │ │ │ +(2021)p 2795 100 V 111 399 a Fn(6.)46 b Fm(int)h │ │ │ │ (Graph_writeToBinaryFile)42 b(\()47 b(Graph)f(*graph,)g(FILE)h(*fp)g │ │ │ │ (\))g(;)227 554 y Fn(This)27 b(metho)s(d)g(writes)h(a)g │ │ │ │ Fm(Graph)e Fn(ob)5 b(ject)29 b(to)f(a)g(binary)f(\014le.)40 │ │ │ │ b(If)27 b(there)h(are)g(no)g(errors)f(in)g(writing)h(the)g(data,)227 │ │ │ │ 667 y(the)j(v)-5 b(alue)31 b Fm(1)f Fn(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fm(fwrite)p Fn(,)f(zero)i(is)f(returned.)227 822 y Fk(Err)-5 │ │ │ │ @@ -5879,17 +5868,17 @@ │ │ │ │ b(alence)37 b(map)f(to)227 5181 y(its)g(natural)g(compressed)f(graph)g │ │ │ │ (\(the)i(\014rst)d(graph)h(need)h(not)g(b)s(e)f(unit)g(w)m(eigh)m(t\),) │ │ │ │ k(and)c(constructs)h(the)227 5294 y(natural)24 b(compressed)f(graph.)38 │ │ │ │ b(The)23 b(equiv)-5 b(alence)25 b(map)e(and)g(compressed)g(graph)g(are) │ │ │ │ h(optionally)h(written)227 5407 y(out)31 b(to)g(\014les.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1070 4 v 1251 100 a Fm(Graph)29 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2783 100 V 1070 w Fn(9)336 399 y Fh(\017)46 b Fn(The)28 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1106 4 v 1287 100 a Fm(Graph)29 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2747 100 V 1106 w Fn(9)336 399 y Fh(\017)46 b Fn(The)28 │ │ │ │ b Fm(msglvl)f Fn(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ (output)h(|)f(taking)i Fm(msglvl)46 b(>=)h(3)28 b Fn(means)427 │ │ │ │ 511 y(that)j(all)h(ob)5 b(jects)31 b(are)f(written)h(to)g(the)f │ │ │ │ (message)i(\014le.)336 660 y Fh(\017)46 b Fn(The)33 b │ │ │ │ Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 773 y(message)27 b(\014le)f(is)g Fk(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ @@ -5972,17 +5961,17 @@ │ │ │ │ g(graph)f(to)i(a)f(formatted)h(\014le)f(\(if)427 5101 │ │ │ │ y Fm(outGraphFile)24 b Fn(is)j(of)h(the)f(form)g Fm(*.graphf)p │ │ │ │ Fn(\),)f(or)h(a)h(binary)f(\014le)g(\(if)g Fm(outGraphFile)d │ │ │ │ Fn(is)k(of)f(the)g(form)427 5214 y Fm(*.graphb)p Fn(\).)111 │ │ │ │ 5407 y(4.)46 b Fm(mkGridGraph)f(msglvl)h(msgFile)g(stencil)g(n1)h(n2)g │ │ │ │ (n3)g(outFile)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1047 4 │ │ │ │ -v 1229 w Fm(Graph)29 b Fd(:)41 b Fk(DRAFT)30 b Fd(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2853 100 V 227 399 a Fn(This)c(driv)m(er)h(program)g(creates)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1083 4 │ │ │ │ +v 1265 w Fm(Graph)29 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 227 399 a Fn(This)c(driv)m(er)h(program)g(creates)h │ │ │ │ (a)f(Graph)g(ob)5 b(ject)29 b(for)g(a)g(\014nite)g(di\013erence)h(op)s │ │ │ │ (erator)f(on)g(a)g Fm(n1)17 b Fh(\002)g Fm(n2)g Fh(\002)g │ │ │ │ Fm(n3)227 511 y Fn(regular)31 b(grid.)336 707 y Fh(\017)46 │ │ │ │ b Fn(The)28 b Fm(msglvl)f Fn(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ (of)f(output)h(|)f(taking)i Fm(msglvl)46 b(>=)h(3)28 │ │ │ │ b Fn(means)427 820 y(that)j(all)h(ob)5 b(jects)31 b(are)f(written)h(to) │ │ │ │ g(the)f(message)i(\014le.)336 969 y Fh(\017)46 b Fn(The)33 │ │ │ │ @@ -6051,17 +6040,17 @@ │ │ │ │ Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 5294 y(message)27 b(\014le)f(is)g Fk(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fk(app)-5 b(end)28 │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 5407 │ │ │ │ y(data.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1047 4 v 1228 100 a Fm(Graph)29 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2761 100 V 1047 w Fn(11)336 399 y Fh(\017)46 b Fn(The)37 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1083 4 v 1264 100 a Fm(Graph)29 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2725 100 V 1083 w Fn(11)336 399 y Fh(\017)46 b Fn(The)37 │ │ │ │ b Fm(inFile)f Fn(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ Fm(Graph)e Fn(ob)5 b(ject.)64 b(It)37 b(m)m(ust)h(b)s(e)f(of)h(the)f │ │ │ │ (form)427 511 y Fm(*.graphf)18 b Fn(or)j Fm(*.graphb)p │ │ │ │ Fn(.)35 b(The)19 b Fm(Graph)g Fn(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fm(Graph)p 3368 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fn(metho)s(d.)111 1065 │ │ │ │ y(7.)46 b Fm(testWirebasket)e(msglvl)i(msgFile)g(inGraphFile)f │ │ │ │ @@ -6118,18 +6107,18 @@ │ │ │ │ Fn(15)29 b(grid.)40 b(They)27 b(sho)m(w)h(the)h(stages)227 │ │ │ │ 5294 y(for)36 b Fm(radius)46 b(=)i(1)36 b Fn(on)g(the)g(left)h(and)f │ │ │ │ Fm(radius)46 b(=)i(2)35 b Fn(on)i(the)f(righ)m(t.)59 │ │ │ │ b(The)36 b(domains)g(are)g(3)25 b Fh(\002)f Fn(3)36 b(subgrids)227 │ │ │ │ 5407 y(whose)30 b(v)m(ertices)i(ha)m(v)m(e)g(lab)s(els)f(equal)g(to)g │ │ │ │ (zero.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1047 │ │ │ │ -4 v 1229 w Fm(Graph)29 b Fd(:)41 b Fk(DRAFT)30 b Fd(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2853 100 V 429 1927 a @beginspecial 0 @llx │ │ │ │ -0 @lly 600 @urx 600 @ury 1943 @rwi 1943 @rhi @setspecial │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1083 │ │ │ │ +4 v 1265 w Fm(Graph)29 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2817 100 V 429 1927 a @beginspecial 0 @llx 0 │ │ │ │ +@lly 600 @urx 600 @ury 1943 @rwi 1943 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../Graph/doc/rad1.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ /radius 15 def │ │ │ │ /Helvetica findfont 18.75 scalefont setfont │ │ │ │ /M {moveto} def │ │ │ │ /L {lineto} def │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -27,15 +27,15 @@ │ │ │ │ │ weight vertices in the weighted vertex. The weight of an edge is w(u,v), the number of (u,v) edges │ │ │ │ │ in the unit weight graph where u ∈ u and v ∈ v. │ │ │ │ │ Thenaturalcompressedgraph[?],[?]isveryimportantformanymatricesfromstructralanalysis │ │ │ │ │ and computational fluid mechanics. This type of graph has one special property: │ │ │ │ │ w(u,v) = w(u)·w(v) │ │ │ │ │ 1The EGraph object represents a graph of the matrix, but stores a list of covering cliques in an IVL object. │ │ │ │ │ 1 │ │ │ │ │ - 2 Graph : DRAFT December 20, 2018 │ │ │ │ │ + 2 Graph : DRAFT October 11, 2021 │ │ │ │ │ and it is the smallest graph with this property. The compression is loss-less, for given G(V,E) │ │ │ │ │ and φ, we can reconstruct the unit weight graph G(V,E). In effect, we can work with the natural │ │ │ │ │ compressed graph to find separators and orderings and map back to the unit weight graph. The │ │ │ │ │ savings in time and space can be considerable. │ │ │ │ │ The Graph object has a method to find the φ map for the natural compressed graph; it requires │ │ │ │ │ O(|V|) space and O(|E|) time. There is a method to compress a graph (i.e., given G(V,E) and │ │ │ │ │ an arbitrary φ, construct G(V,E)) and a method to expand a graph (i.e., given G(V,E) and an │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ • int totewght : total edge weight │ │ │ │ │ • IVL *adjIVL : pointer to IVL object to hold adjacency lists │ │ │ │ │ • int *vwghts : pointer to a vertex to hold vertex weights non-NULL if type % 2 == 1 │ │ │ │ │ • IVL *ewghtIVL : pointer to IVL object to hold edge weight lists, non-NULL if type / 2 == 1 │ │ │ │ │ 1.2 Prototypes and descriptions of Graph methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ Graph object. │ │ │ │ │ - Graph : DRAFT December 20, 2018 3 │ │ │ │ │ + Graph : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Graph * Graph_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Graph structure and then sets the default fields │ │ │ │ │ by a call to Graph setDefaultFields(). │ │ │ │ │ 2. void Graph_setDefaultFields ( Graph *graph ) ; │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ int adjType, int ewghtType ) ; │ │ │ │ │ Thisisthebasicinitializer method. Anypreviousdataisclearedwithacall toGraph clearData(). │ │ │ │ │ Thenthescalar fields are set and the adjIVL object is initialized. If type is 1 or 3, the vwghts │ │ │ │ │ vector is initialized to zeros. If type is 2 or 3, the ewghtIVL object is initialized. │ │ │ │ │ Error checking: If graph is NULL, type is invalid (type must be in [0,3]), nvtx is non- │ │ │ │ │ positive, nvbnd or nedges is negative, or adjType of ewghtType is invalid (they must be │ │ │ │ │ IVL CHUNKED, IVL SOLO or IVL UNKNOWN). an error message is printed and the program exits. │ │ │ │ │ - 4 Graph : DRAFT December 20, 2018 │ │ │ │ │ + 4 Graph : DRAFT October 11, 2021 │ │ │ │ │ 2. void Graph_init2 ( Graph *graph, int type, int nvtx, int nvbnd, int nedges, │ │ │ │ │ int totvwght, int totewght, IVL *adjIVL, int *vwghts, IVL *ewghtIVL) │ │ │ │ │ This method is used by the IO read methods. When a Graph object is read from a file, │ │ │ │ │ the IVL object(s) must be initialized and then read in from the file. Therefore, we need an │ │ │ │ │ initialization method that allows us to set pointers to the IVL objects and the vwghts vector. │ │ │ │ │ Note, adjIVL, vwghts and ewghtIVL are owned by the Graph object and will be free’d when │ │ │ │ │ the Graph object is free’d. │ │ │ │ │ @@ -130,15 +130,15 @@ │ │ │ │ │ 1.2.3 Compress and Expand methods │ │ │ │ │ These three methods find an equivalence map for the natural compressed graph, compress a graph, │ │ │ │ │ and expand a graph. │ │ │ │ │ 1. IV * Graph_equivMap ( Graph *graph ) ; │ │ │ │ │ This method constructs the equivalence map from the graph to its natural compressed graph. │ │ │ │ │ The map φ : V 7→ V is then constructed (see the Introduction in this section) and put into │ │ │ │ │ an IV object that is then returned. │ │ │ │ │ - Graph : DRAFT December 20, 2018 5 │ │ │ │ │ + Graph : DRAFT October 11, 2021 5 │ │ │ │ │ Error checking: If graph is NULL or nvtx <= 0, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 2. Graph * Graph_compress ( Graph *graph, int map[], int coarseType ) ; │ │ │ │ │ Graph * Graph_compress2 ( Graph *graph, IV *mapIV, int coarseType ) ; │ │ │ │ │ This Graph and map objects (map[] or mapIV) are checked and if any errors are found, │ │ │ │ │ the appropriate message is printed and the program exits. The compressed graph object │ │ │ │ │ is constructed and returned. Note, the compressed graph does not have a boundary, even │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ 1. int Graph_sizeOf ( Graph *graph ) ; │ │ │ │ │ This method returns the number of bytes taken by this object. │ │ │ │ │ Error checking: If graph is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. Graph_externalDegree ( Graph *graph, int v ) ; │ │ │ │ │ This method returns the weight of adj(v). │ │ │ │ │ Error checking: If graph is NULL, or v is out of range, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ - 6 Graph : DRAFT December 20, 2018 │ │ │ │ │ + 6 Graph : DRAFT October 11, 2021 │ │ │ │ │ 3. int Graph_adjAndSize ( Graph *graph, int u, int *pusize, int **puadj) ; │ │ │ │ │ This method fills *pusize with the size of the adjacency list for u and *puadj points to the │ │ │ │ │ start of the list vector. │ │ │ │ │ Error checking: If graph is NULL, or if u < 0 or u >= nvtx or if pusize or puadj is NULL, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 4. int Graph_adjAndEweights ( Graph *graph, int u, int *pusize, │ │ │ │ │ int **puadj, int **puewghts) ; │ │ │ │ │ @@ -205,15 +205,15 @@ │ │ │ │ │ list for the vertex in the parent graph. Each adjacency list for a boundary vertex of the │ │ │ │ │ subgraph is new storage, and only these lists are free’d when the subgraph is free’d. A map │ │ │ │ │ vector is created that maps the subgraphs’s vertices (both internal and boundary) into the │ │ │ │ │ parent graph’s vertices; the address of the map vector is put into *pmap. The adjacency lists │ │ │ │ │ for the subgraph are overwritten by the map[] vector. This renders the graph object invalid. │ │ │ │ │ The graph partitioning methods map the vertices back to their original values. Presently, │ │ │ │ │ only graphs with unit edge weights are allowed as input. │ │ │ │ │ - Graph : DRAFT December 20, 2018 7 │ │ │ │ │ + Graph : DRAFT October 11, 2021 7 │ │ │ │ │ Error checking: If graph is NULL or icomp < 0 or compids or pmap is NULL, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 8. int Graph_isSymmetric ( Graph *graph ) ; │ │ │ │ │ This method returns 1 if the graph is symmetric (i.e., edge (i,j) is present if and only if │ │ │ │ │ edge (j,i) is present) and 0 otherwise. │ │ │ │ │ Error checking: If graph is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.6 IO methods │ │ │ │ │ @@ -242,15 +242,15 @@ │ │ │ │ │ file and returns the value returned from the called routine. │ │ │ │ │ Error checking: If graph or fn are NULL, or if fn is not of the form *.graphf (for a formatted │ │ │ │ │ file) or *.graphb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 5. int Graph_writeToFormattedFile ( Graph *graph, FILE *fp ) ; │ │ │ │ │ This method writes a Graph object to a formatted file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If graph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ - 8 Graph : DRAFT December 20, 2018 │ │ │ │ │ + 8 Graph : DRAFT October 11, 2021 │ │ │ │ │ 6. int Graph_writeToBinaryFile ( Graph *graph, FILE *fp ) ; │ │ │ │ │ This method writes a Graph object to a binary file. If there are no errors in writing the data, │ │ │ │ │ the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If graph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 7. int Graph_writeForHumanEye ( Graph *graph, FILE *fp ) ; │ │ │ │ │ This method writes a Graph object to a file in a human readable format. The method │ │ │ │ │ Graph writeStats()is called to write out the header and statistics. The value 1 is returned. │ │ │ │ │ @@ -276,15 +276,15 @@ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ 2. compressGraph msglvl msgFile inGraphFile coarseType outMapFile outGraphFile │ │ │ │ │ This driver program reads in a Graph object from a file, computes the equivalence map to │ │ │ │ │ its natural compressed graph (the first graph need not be unit weight), and constructs the │ │ │ │ │ natural compressed graph. The equivalence map and compressed graph are optionally written │ │ │ │ │ out to files. │ │ │ │ │ - Graph : DRAFT December 20, 2018 9 │ │ │ │ │ + Graph : DRAFT October 11, 2021 9 │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ that all objects are written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ @@ -317,15 +317,15 @@ │ │ │ │ │ (if inMapFile is of the form *.ivf), or a binary file (if inMapFile is of the form *.ivb). │ │ │ │ │ • The outGraphFile parameter is the output file for the compressed Graph object. If │ │ │ │ │ outGraphFile is none then the Graph object is not written to a file. Otherwise, │ │ │ │ │ the Graph writeToFile() method is called to write the graph to a formatted file (if │ │ │ │ │ outGraphFile is of the form *.graphf), or a binary file (if outGraphFile is of the form │ │ │ │ │ *.graphb). │ │ │ │ │ 4. mkGridGraph msglvl msgFile stencil n1 n2 n3 outFile │ │ │ │ │ - 10 Graph : DRAFT December 20, 2018 │ │ │ │ │ + 10 Graph : DRAFT October 11, 2021 │ │ │ │ │ This driver program creates a Graph object for a finite difference operator on a n1×n2×n3 │ │ │ │ │ regular grid. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ that all objects are written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ @@ -355,15 +355,15 @@ │ │ │ │ │ Graph isSymmetric() method. This was useful in one application where the Graph object │ │ │ │ │ was constructed improperly. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the Graph object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ - Graph : DRAFT December 20, 2018 11 │ │ │ │ │ + Graph : DRAFT October 11, 2021 11 │ │ │ │ │ • The inFile parameter is the input file for the Graph object. It must be of the form │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ 7. testWirebasket msglvl msgFile inGraphFile inStagesFile │ │ │ │ │ outStagesFile radius │ │ │ │ │ This driver program reads in a Graph object and and a file that contains the stages ids of the │ │ │ │ │ vertices, (stage equal to zero means the vertex is in the Schur complement), and overwrites the │ │ │ │ │ @@ -386,15 +386,15 @@ │ │ │ │ │ the form *.ivf or *.ivb. The IV object is written to the file via the IV writeToFile() │ │ │ │ │ method. │ │ │ │ │ • The radius parameter is used to define the stage of a Schur complement vertex, namely │ │ │ │ │ the stage is the number of domains that are found within radius edges of the vertex. │ │ │ │ │ The two plots below illustrate the wirebasket stages for a 15×15 grid. They show the stages │ │ │ │ │ for radius = 1 on the left and radius = 2 on the right. The domains are 3 × 3 subgrids │ │ │ │ │ whose vertices have labels equal to zero. │ │ │ │ │ - 12 Graph : DRAFT December 20, 2018 │ │ │ │ │ + 12 Graph : DRAFT October 11, 2021 │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 4 0 0 0 4 0 0 0 4 0 0 0 │ │ │ │ │ 2 2 2 4 2 2 2 4 2 2 2 4 2 2 2 2 2 4 4 4 2 4 4 4 2 4 4 4 2 2 │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 4 0 0 0 4 0 0 0 4 0 0 0 │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 4 0 0 0 4 0 0 0 4 0 0 0 │ │ ├── ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ ├── I2Ohash.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMTI10 CMSL10 CMEX10 │ │ │ │ %%+ CMMI8 CMR8 CMMI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o I2Ohash.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1718,22 +1718,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1907,88 +1907,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3882,15 +3871,15 @@ │ │ │ │ @start /Fa 150[31 43[45 61[{}2 90.9091 /CMMI10 rf /Fb │ │ │ │ 205[35 50[{}1 66.4176 /CMR8 rf /Fc 150[24 105[{}1 66.4176 │ │ │ │ /CMMI8 rf /Fd 142[83 32[88 80[{}2 83.022 /CMEX10 rf /Fe │ │ │ │ 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 │ │ │ │ 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}24 │ │ │ │ 99.6264 /CMBX12 rf /Ff 139[62 62 3[62 4[62 1[62 2[62 │ │ │ │ 1[62 62 62 17[62 5[62 22[62 50[{}12 119.552 /CMTT12 rf │ │ │ │ -/Fg 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 │ │ │ │ +/Fg 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 │ │ │ │ 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fh 134[44 3[49 30 │ │ │ │ 37 38 1[46 46 51 2[42 1[28 46 42 1[42 46 42 1[46 12[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}23 90.9091 /CMTI10 rf │ │ │ │ /Fi 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 │ │ │ │ 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 │ │ │ │ 119.552 /CMBX12 rf /Fj 143[76 91[71 4[45 15[{}3 90.9091 │ │ │ │ /CMSY10 rf /Fk 133[48 48 48 48 48 48 48 48 48 1[48 48 │ │ │ │ @@ -3969,17 +3958,17 @@ │ │ │ │ b(n)m(um)m(b)s(er)29 b(of)h(items)h(in)f(the)h(hash)f(table.)136 │ │ │ │ 5294 y Fj(\017)46 b Fk(I2OP)h(*baseI2OP)35 b Fl(:)j(p)s(oin)m(ter)g(to) │ │ │ │ h(an)f Fk(I2OP)f Fl(ob)5 b(ject)39 b(that)f(k)m(eeps)h(trac)m(k)g(of)f │ │ │ │ (all)h(the)f Fk(I2OP)f Fl(ob)5 b(jects)38 b(that)227 │ │ │ │ 5407 y(ha)m(v)m(e)32 b(b)s(een)e(allo)s(cated)i(b)m(y)e(the)h(hash)e │ │ │ │ (table.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1022 4 v │ │ │ │ -1204 w Fk(I2Ohash)28 b Fg(:)41 b Fh(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 136 399 a Fj(\017)46 b Fk(I2OP)h(*freeI2OP)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1058 4 v │ │ │ │ +1240 w Fk(I2Ohash)28 b Fg(:)41 b Fh(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 136 399 a Fj(\017)46 b Fk(I2OP)h(*freeI2OP)28 │ │ │ │ b Fl(:)i(p)s(oin)m(ter)h(to)g(the)f(\014rst)g Fk(I2OP)f │ │ │ │ Fl(ob)5 b(ject)31 b(on)g(the)f(free)h(list.)136 604 y │ │ │ │ Fj(\017)46 b Fk(I2OP)h(**heads)26 b Fl(:)39 b(p)s(oin)m(ter)29 │ │ │ │ b(to)f(a)h(v)m(ector)g(of)g(p)s(oin)m(ters)f(to)g Fk(I2OP)f │ │ │ │ Fl(ob)5 b(jects,)30 b(used)d(to)i(hold)e(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ 227 717 y(\014rst)h Fk(I2OP)f Fl(ob)5 b(ject)31 b(in)f(eac)m(h)i(list.) │ │ │ │ 141 947 y(A)g(correctly)g(initialized)h(and)e(non)m(trivial)h │ │ │ │ @@ -4029,17 +4018,17 @@ │ │ │ │ Fk(free\(\))p Fl(.)227 4909 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fl(If)30 b Fk(hashtable)e Fl(is)j Fk(NULL)p │ │ │ │ Fl(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h │ │ │ │ (exits.)0 5202 y Fe(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ 5407 y Fl(There)30 b(is)g(one)h(initializer)h(metho)s(d.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1022 4 v 1203 100 a Fk(I2Ohash)29 │ │ │ │ -b Fg(:)40 b Fh(DRAFT)122 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2831 100 V 1022 w Fl(3)111 399 y(1.)46 b Fk(void)h(I2Ohash_init)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1058 4 v 1239 100 a Fk(I2Ohash)29 │ │ │ │ +b Fg(:)40 b Fh(DRAFT)121 b Fg(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2795 100 V 1058 w Fl(3)111 399 y(1.)46 b Fk(void)h(I2Ohash_init)d(\()k │ │ │ │ (I2Ohash)e(*hashtable,)e(int)j(nlist,)f(int)h(nobj,)g(int)g(grow)f(\))i │ │ │ │ (;)227 542 y Fl(This)d(metho)s(d)h(is)g(the)g(basic)g(initializer)i │ │ │ │ (metho)s(d.)87 b(It)46 b(clears)h(an)m(y)g(previous)e(data)i(with)f(a)g │ │ │ │ (call)h(to)227 655 y Fk(I2Ohash)p 569 655 29 4 v 33 w(clearData\(\))p │ │ │ │ Fl(.)36 b(It)27 b(allo)s(cates)i(storage)f(for)e Fk(nlist)f │ │ │ │ Fl(lists)i(and)f(if)g Fk(nobj)g Fl(is)g(p)s(ositiv)m(e,)j(it)e(loads)g │ │ │ │ (the)227 768 y(free)k(list)g(with)f Fk(nobj)f(I2OP)g │ │ │ │ @@ -4115,17 +4104,17 @@ │ │ │ │ (*hashtable,)g(FILE)i(*fp)g(\))g(;)227 5151 y Fl(This)30 │ │ │ │ b(metho)s(d)g(prin)m(ts)g(the)g(hash)g(table)h(in)f(a)h(h)m │ │ │ │ (uman-readable)f(format.)227 5294 y Fh(Err)-5 b(or)41 │ │ │ │ b(che)-5 b(cking:)56 b Fl(If)38 b Fk(hashtable)e Fl(or)i │ │ │ │ Fk(fp)f Fl(is)i Fk(NULL)p Fl(,)e(an)h(error)g(message)h(is)f(prin)m │ │ │ │ (ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1022 4 v │ │ │ │ -1204 w Fk(I2Ohash)28 b Fg(:)41 b Fh(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 0 399 a Fi(1.3)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1058 4 v │ │ │ │ +1240 w Fk(I2Ohash)28 b Fg(:)41 b Fh(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 0 399 a Fi(1.3)135 b(Driv)l(er)46 │ │ │ │ b(programs)g(for)f(the)g Ff(I2Ohash)58 b(object)111 626 │ │ │ │ y Fl(1.)46 b Fk(test_hash)g(msglvl)g(msgFile)f(size)i(grow)g(maxkey)f │ │ │ │ (nent)g(seed)227 777 y Fl(This)34 b(driv)m(er)h(program)g(tests)h(the)f │ │ │ │ Fk(I2Ohash)e Fl(insert)i(metho)s(d.)54 b(It)35 b(inserts)f(a)i(n)m(um)m │ │ │ │ (b)s(er)d(of)i(triples)h(in)m(to)g(a)227 890 y(hash)d(table)h(and)e │ │ │ │ (prin)m(ts)h(out)g(the)h(\\measure")g(of)f(ho)m(w)g(w)m(ell)h │ │ │ │ (distributed)f(the)g(en)m(tries)h(are)f(in)g(the)h(hash)227 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ • int nlist : number of lists in the hash table │ │ │ │ │ • int grow : when no I2OP objects are available to insert a new triple, │ │ │ │ │ the object can allocate grow more I2OP objects and put them on the free list. │ │ │ │ │ • nitem : number of items in the hash table. │ │ │ │ │ • I2OP *baseI2OP : pointer to an I2OP object that keeps track of all the I2OP objects that │ │ │ │ │ have been allocated by the hash table. │ │ │ │ │ 1 │ │ │ │ │ - 2 I2Ohash : DRAFT December 20, 2018 │ │ │ │ │ + 2 I2Ohash : DRAFT October 11, 2021 │ │ │ │ │ • I2OP *freeI2OP : pointer to the first I2OP object on the free list. │ │ │ │ │ • I2OP **heads : pointer to a vector of pointers to I2OP objects, used to hold a pointer to the │ │ │ │ │ first I2OP object in each list. │ │ │ │ │ Acorrectly initialized and nontrivial I2Ohash object will have nlist > 0. If grow is zero and │ │ │ │ │ a new triple is given to the hash table to be inserted, a fatal error occurs. │ │ │ │ │ 1.2 Prototypes and descriptions of I2Ohash methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ @@ -51,15 +51,15 @@ │ │ │ │ │ Error checking: If hashtable is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void I2Ohash_free ( I2Ohash *hashtable ) ; │ │ │ │ │ This method releases any storage by a call to I2Ohash clearData() then free’s the storage │ │ │ │ │ for the structure with a call to free(). │ │ │ │ │ Error checking: If hashtable is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.2 Initializer methods │ │ │ │ │ There is one initializer method. │ │ │ │ │ - I2Ohash : DRAFT December 20, 2018 3 │ │ │ │ │ + I2Ohash : DRAFT October 11, 2021 3 │ │ │ │ │ 1. void I2Ohash_init ( I2Ohash *hashtable, int nlist, int nobj, int grow ) ; │ │ │ │ │ This method is the basic initializer method. It clears any previous data with a call to │ │ │ │ │ I2Ohash clearData(). It allocates storage for nlist lists and if nobj is positive, it loads the │ │ │ │ │ free list with nobj I2OP objects. │ │ │ │ │ Error checking: If hashtable is NULL, or if nlist ≤ 0, or if nobj and grow are both zero, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ the triples are evenly distributed among nlist/k lists, the value is √k. │ │ │ │ │ Error checking: If hashtable is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ 1. void I2Ohash_writeForHumanEye ( I2Ohash *hashtable, FILE *fp ) ; │ │ │ │ │ This method prints the hash table in a human-readable format. │ │ │ │ │ Error checking: If hashtable or fp is NULL, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 4 I2Ohash : DRAFT December 20, 2018 │ │ │ │ │ + 4 I2Ohash : DRAFT October 11, 2021 │ │ │ │ │ 1.3 Driver programs for the I2Ohash object │ │ │ │ │ 1. test_hash msglvl msgFile size grow maxkey nent seed │ │ │ │ │ This driver program tests the I2Ohash insert method. It inserts a number of triples into a │ │ │ │ │ hash table and prints out the “measure” of how well distributed the entries are in the hash │ │ │ │ │ table. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ ├── ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ ├── IIheap.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMMI10 CMR8 CMSY10 │ │ │ │ %%+ CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o IIheap.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -576,22 +576,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -765,88 +765,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3260,16 +3249,16 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 2[51 62 50 1[54 11[86 11[42 6[80 14[56 56 56 2[31 46[{}22 │ │ │ │ -99.6264 /CMBX12 rf /Fb 141[36 4[76 7[40 1[40 51 29[69 │ │ │ │ -9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ +99.6264 /CMBX12 rf /Fb 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Fc 143[62 7[62 2[62 3[62 23[62 73[{}5 119.552 /CMTT12 │ │ │ │ rf /Fd 235[71 4[45 15[{}2 90.9091 /CMSY10 rf /Fe 134[71 │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ rf /Ff 205[35 50[{}1 66.4176 /CMR8 rf /Fg 145[55 30[69 │ │ │ │ 79[{}2 90.9091 /CMMI10 rf /Fh 134[44 2[42 49 30 37 38 │ │ │ │ 2[46 51 74 23 42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 │ │ │ │ @@ -3341,17 +3330,17 @@ │ │ │ │ 4724 y(maxsize)p Fj(.)0 5059 y Fe(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fc(IIheap)d Fe(metho)t(ds)0 │ │ │ │ 5294 y Fj(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ (elong)f(to)h(the)0 5407 y Fi(IIheap)29 b Fj(ob)5 b(ject.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1046 4 v │ │ │ │ -1228 w Fi(IIheap)28 b Fb(:)41 b Fh(DRAFT)30 b Fb(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fi(IIheap)28 b Fb(:)41 b Fh(DRAFT)30 b Fb(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 601 y Fj(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 714 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 965 y(1.)46 b Fi(IIheap)g(*)i │ │ │ │ (IIheap_new)d(\()i(void)g(\))g(;)227 1121 y Fj(This)25 │ │ │ │ b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ Fi(IIheap)d Fj(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ @@ -3401,17 +3390,17 @@ │ │ │ │ 5095 y Fj(1.)46 b Fi(int)h(IIheap_sizeOf)d(\()k(IIheap)e(*heap)g(\))i │ │ │ │ (;)227 5251 y Fj(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er) │ │ │ │ f(of)i(b)m(ytes)g(tak)m(en)g(b)m(y)g(this)f(ob)5 b(ject.)227 │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(heap)g Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1046 4 v 1227 100 a Fi(IIheap)29 │ │ │ │ -b Fb(:)41 b Fh(DRAFT)121 b Fb(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fj(3)111 399 y(2.)46 b Fi(void)h(IIheap_root)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1263 100 a Fi(IIheap)29 │ │ │ │ +b Fb(:)41 b Fh(DRAFT)121 b Fb(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fj(3)111 399 y(2.)46 b Fi(void)h(IIheap_root)e(\()i │ │ │ │ (IIheap)f(*heap,)g(int)h(*pkey,)f(int)h(*pvalue)f(\))h(;)227 │ │ │ │ 549 y Fj(This)32 b(metho)s(d)g(\014lls)h Fi(*pid)e Fj(and)i │ │ │ │ Fi(*pkey)e Fj(with)h(the)h(k)m(ey)h(and)e(v)-5 b(alue,)34 │ │ │ │ b(resp)s(ectiv)m(ely)-8 b(,)35 b(of)e(the)g(ro)s(ot)g(elemen)m(t,)227 │ │ │ │ 662 y(an)e(elemen)m(t)g(with)f(minim)m(um)g(v)-5 b(alue.)41 │ │ │ │ b(If)30 b Fi(size)47 b(==)g(0)30 b Fj(then)g Fi(-1)g │ │ │ │ Fj(is)g(returned.)227 812 y Fh(Err)-5 b(or)30 b(che)-5 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -17,15 +17,15 @@ │ │ │ │ │ location loc │ │ │ │ │ A correctly initialized and nontrivial IIheap object will have maxsize > 0 and 0 <= size < │ │ │ │ │ maxsize. │ │ │ │ │ 1.2 Prototypes and descriptions of IIheap methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ IIheap object. │ │ │ │ │ 1 │ │ │ │ │ - 2 IIheap : DRAFT December 20, 2018 │ │ │ │ │ + 2 IIheap : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. IIheap * IIheap_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the IIheap structure and then sets the default fields │ │ │ │ │ by a call to IIheap setDefaultFields(). │ │ │ │ │ 2. void IIheap_setDefaultFields ( IIheap *heap ) ; │ │ │ │ │ @@ -49,15 +49,15 @@ │ │ │ │ │ IVinit(). The entries in the three vectors are set to -1. │ │ │ │ │ Error checking: If heap is NULL, or if maxsize ≤ 0, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. int IIheap_sizeOf ( IIheap *heap ) ; │ │ │ │ │ This method returns the number of bytes taken by this object. │ │ │ │ │ Error checking: If heap is NULL, an error message is printed and the program exits. │ │ │ │ │ - IIheap : DRAFT December 20, 2018 3 │ │ │ │ │ + IIheap : DRAFT October 11, 2021 3 │ │ │ │ │ 2. void IIheap_root ( IIheap *heap, int *pkey, int *pvalue ) ; │ │ │ │ │ This method fills *pid and *pkey with the key and value, respectively, of the root element, │ │ │ │ │ an element with minimum value. If size == 0 then -1 is returned. │ │ │ │ │ Error checking: If heap, pkey or pvalue is NULL, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 3. void IIheap_insert ( IIheap *heap, int key, int value ) ; │ │ │ │ │ This method inserts the pair (key,value) into the heap. │ │ ├── ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ ├── IV.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMBX10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o IV.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1150,22 +1150,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1339,88 +1339,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3300,16 +3289,16 @@ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 56 56 56 56 │ │ │ │ 2[31 46[{}25 99.6264 /CMBX12 rf /Fb 139[62 4[62 4[62 │ │ │ │ 4[62 1[62 62 11[62 12[62 73[{}8 119.552 /CMTT12 rf /Fc │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 │ │ │ │ 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 │ │ │ │ 119.552 /CMBX12 rf /Fd 138[49 30 37 38 1[46 46 51 74 │ │ │ │ 1[42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 │ │ │ │ -2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fe 141[36 4[76 │ │ │ │ -7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 │ │ │ │ +2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fe 139[35 1[36 │ │ │ │ +2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 │ │ │ │ 90.9091 /CMSL10 rf /Ff 152[45 45 86[45 15[{}3 90.9091 │ │ │ │ /CMSY10 rf /Fg 169[79 12[40 73[{}2 90.9091 /CMBX10 rf │ │ │ │ /Fh 130[48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 │ │ │ │ 4[48 48 48 48 2[48 48 48 48 48 48 1[48 48 1[48 48 48 │ │ │ │ 1[48 48 2[48 48 48 48 2[48 3[48 48 48 48 48 1[48 48 48 │ │ │ │ 48 48 48 48 5[48 48 33[{}66 90.9091 /CMTT10 rf /Fi 131[91 │ │ │ │ @@ -3401,17 +3390,17 @@ │ │ │ │ (v)m(enience)0 5294 y(mak)m(es)i(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ b(ject.)44 b(Originally)32 b(its)g(use)f(w)m(as)g(restricted)h(to)h │ │ │ │ (reading)e(and)g(writing)g Fh(*.iv)p Ff(f)p Fh(f,b)p │ │ │ │ Ff(g)0 5407 y Fi(\014les,)g(but)e(no)m(w)i Fh(IV)e Fi(ob)5 │ │ │ │ b(jects)32 b(app)s(ear)d(m)m(uc)m(h)i(more)f(frequen)m(tly)h(in)f(new)g │ │ │ │ (dev)m(elopmen)m(t.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1146 4 v │ │ │ │ -1328 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 0 399 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1182 4 v │ │ │ │ +1364 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 0 399 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ 620 y Fi(The)30 b Fh(IV)g Fi(structure)g(has)g(four)f(\014elds.)136 │ │ │ │ 791 y Ff(\017)46 b Fh(int)h(size)29 b Fi(:)41 b(presen)m(t)30 │ │ │ │ b(size)i(of)e(the)h(v)m(ector.)136 965 y Ff(\017)46 b │ │ │ │ Fh(int)h(maxsize)29 b Fi(:)40 b(maxim)m(um)30 b(size)i(of)e(the)h(v)m │ │ │ │ (ector.)136 1139 y Ff(\017)46 b Fh(int)h(owned)30 b Fi(:)44 │ │ │ │ b(o)m(wner)32 b(\015ag)g(for)f(the)h(data.)46 b(When)31 │ │ │ │ b Fh(owned)46 b(=)i(1)p Fi(,)32 b(storage)h(for)f Fh(maxsize)d(int)p │ │ │ │ @@ -3469,17 +3458,17 @@ │ │ │ │ (call)g(to)f Fh(IV)p 2148 5151 V 34 w(clearData\(\))d │ │ │ │ Fi(then)i(free's)h(the)g(storage)h(for)f(the)227 5264 │ │ │ │ y(structure)h(with)g(a)h(call)h(to)f Fh(free\(\))p Fi(.)227 │ │ │ │ 5407 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 │ │ │ │ b Fh(iv)g Fi(is)h Fh(NULL)p Fi(,)e(an)h(error)g(message)i(is)e(prin)m │ │ │ │ (ted)g(and)g(the)g(program)h(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1146 4 v 1328 100 a Fh(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fi(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1182 4 v 1364 100 a Fh(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fi(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)0 606 y Fi(These)33 b(metho)s(d)f(allo)m(w)j(access)g(to)e │ │ │ │ (information)h(in)f(the)g(data)h(\014elds)e(without)i(explicitly)g │ │ │ │ (follo)m(wing)h(p)s(oin)m(ters.)0 719 y(There)g(is)h(o)m(v)m(erhead)h │ │ │ │ (in)m(v)m(olv)m(ed)h(with)d(these)h(metho)s(d)g(due)f(to)h(the)g │ │ │ │ (function)g(call)h(and)e(error)h(c)m(hec)m(king)h(inside)0 │ │ │ │ 832 y(the)31 b(metho)s(ds.)111 1097 y(1.)46 b Fh(int)h(IV_owned)f(\()h │ │ │ │ (IV)g(*iv)g(\))h(;)227 1258 y Fi(This)24 b(metho)s(d)g(returns)g(the)g │ │ │ │ @@ -3535,17 +3524,17 @@ │ │ │ │ Fh(loc)p Fi('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ Fh(value)p Fi(.)227 5294 y Fd(Err)-5 b(or)32 b(che)-5 │ │ │ │ b(cking:)40 b Fi(If)27 b Fh(iv)p Fi(,)i Fh(loc)47 b(<)g(0)28 │ │ │ │ b Fi(or)g Fh(loc)47 b(>=)g(size)p Fi(,)28 b(or)g(if)h │ │ │ │ Fh(vec)e Fi(is)h Fh(NULL)g Fi(an)g(error)g(message)h(is)f(prin)m(ted) │ │ │ │ 227 5407 y(and)i(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1146 4 v │ │ │ │ -1328 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1182 4 v │ │ │ │ +1364 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ 596 y Fi(1.)46 b Fh(void)h(IV_init)f(\()h(IV)g(*iv,)g(int)g(size,)f │ │ │ │ (int)h(*entries)f(\))h(;)227 747 y Fi(This)36 b(metho)s(d)g │ │ │ │ (initializes)j(the)d(ob)5 b(ject)38 b(giv)m(en)f(a)g(size)h(for)e(the)h │ │ │ │ (v)m(ector)h(and)e(a)h(p)s(ossible)f(p)s(oin)m(ter)g(to)i(the)227 │ │ │ │ 860 y(v)m(ectors)28 b(storage.)41 b(An)m(y)26 b(previous)g(data)h(with) │ │ │ │ f(a)h(call)g(to)g Fh(IV)p 2277 860 29 4 v 34 w(clearData\(\))p │ │ │ │ Fi(.)36 b(If)26 b Fh(entries)46 b(!=)h(NULL)25 b Fi(then)227 │ │ │ │ @@ -3624,17 +3613,17 @@ │ │ │ │ (v)m(ector)j(b)m(y)d Fh(offset)p Fi(.)46 b(This)31 b(is)i(a)g │ │ │ │ (dangerous)f(metho)s(d)g(to)h(use)g(b)s(ecause)f(the)h(state)h(of)227 │ │ │ │ 5407 y(the)j(v)m(ector)h(is)e(lost,)j(namely)e Fh(vec)p │ │ │ │ Fi(,)g(the)g(base)f(of)h(the)f(en)m(tries,)j(is)e(corrupted.)58 │ │ │ │ b(If)35 b(the)i(ob)5 b(ject)37 b(o)m(wns)g(its)p eop │ │ │ │ end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1146 4 v 1328 100 a Fh(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fi(5)227 399 y(en)m(tries)d(and)e Fh(IV)p │ │ │ │ +TeXDict begin 5 4 bop 91 100 1182 4 v 1364 100 a Fh(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fi(5)227 399 y(en)m(tries)d(and)e Fh(IV)p │ │ │ │ 792 399 29 4 v 34 w(free\(\))p Fi(,)g Fh(IV)p 1262 399 │ │ │ │ V 34 w(setSize\(\))e Fi(or)j Fh(IV)p 1958 399 V 34 w(setMaxsize\(\))d │ │ │ │ Fi(is)j(called)h(b)s(efore)f(the)g(base)g(has)g(b)s(een)227 │ │ │ │ 511 y(shifted)h(bac)m(k)g(to)g(its)h(original)f(p)s(osition,)h(a)f │ │ │ │ (segmen)m(tation)i(violation)f(will)f(lik)m(ely)i(result.)40 │ │ │ │ b(This)28 b(is)g(a)i(v)m(ery)227 624 y(useful)g(metho)s(d,)g(but)g(use) │ │ │ │ g(with)g(caution.)227 779 y Fd(Err)-5 b(or)34 b(che)-5 │ │ │ │ @@ -3695,17 +3684,17 @@ │ │ │ │ (;)227 5294 y Fi(This)24 b(metho)s(d)f(examines)i(the)g(en)m(tries)g │ │ │ │ (in)f(the)g(v)m(ector.)40 b(Let)25 b Fh(k)f Fi(b)s(e)g(en)m(try)g │ │ │ │ Fh(i)g Fi(in)g(the)h(v)m(ector.)40 b(If)24 b Fh(tags[k])46 │ │ │ │ b(!=)227 5407 y(keepTag)p Fi(,)28 b(the)i(en)m(try)g(is)g(mo)m(v)m(ed)g │ │ │ │ (to)h(the)f(end)f(of)g(the)h(v)m(ector,)i(otherwise)e(it)g(is)g(mo)m(v) │ │ │ │ m(ed)g(to)h(the)f(b)s(eginning)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fi(6)p 136 100 1146 4 v │ │ │ │ -1328 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 227 399 a Fi(of)f(the)g(v)m(ector.)42 b(The)29 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fi(6)p 136 100 1182 4 v │ │ │ │ +1364 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 227 399 a Fi(of)f(the)g(v)m(ector.)42 b(The)29 │ │ │ │ b(size)h(of)g(the)g(v)m(ector)h(is)e(reset)i(to)f(b)s(e)f(the)g(n)m(um) │ │ │ │ m(b)s(er)g(of)g(tagged)i(en)m(tries)g(that)f(are)g(no)m(w)227 │ │ │ │ 511 y(in)g(the)h(leading)g(lo)s(cations.)227 660 y Fd(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(iv)g Fi(of)h │ │ │ │ Fh(tags)e Fi(is)h Fh(NULL)f Fi(an)i(error)f(message)h(is)g(prin)m(ted)f │ │ │ │ (and)f(the)i(program)f(exits.)111 844 y(9.)46 b Fh(void)h │ │ │ │ (IV_filterPurge)d(\()j(IV)g(*iv,)g(int)g(tags[],)f(int)h(purgeTag)e(\)) │ │ │ │ @@ -3764,17 +3753,17 @@ │ │ │ │ Fh(loc)p Fi('th)g(lo)s(cation)h(of)g(the)f Fh(iv)f Fi(ob)5 │ │ │ │ b(ject)39 b(b)m(y)f(one)h(and)e(returns)g(the)h(new)227 │ │ │ │ 5146 y(v)-5 b(alue.)227 5294 y Fd(Err)g(or)38 b(che)-5 │ │ │ │ b(cking:)49 b Fi(If)34 b Fh(iv)g Fi(is)h Fh(NULL)f Fi(or)g(if)h │ │ │ │ Fh(loc)f Fi(is)h(out)g(of)f(range,)j(an)d(error)h(message)h(is)e(prin)m │ │ │ │ (ted)h(and)f(the)227 5407 y(program)c(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1146 4 v 1328 100 a Fh(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fi(7)66 399 y(15.)46 b Fh(int)h(IV_findValue)e(\()i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1182 4 v 1364 100 a Fh(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fi(7)66 399 y(15.)46 b Fh(int)h(IV_findValue)e(\()i │ │ │ │ (IV)g(*iv,)g(int)g(value)f(\))i(;)227 547 y Fi(This)30 │ │ │ │ b(metho)s(d)f(lo)s(oks)i(for)e Fh(value)g Fi(in)h(its)g(en)m(tries.)42 │ │ │ │ b(If)29 b Fh(value)g Fi(is)h(presen)m(t,)g(the)h(\014rst)e(lo)s(cation) │ │ │ │ j(is)e(returned,)227 660 y(otherwise)h Fh(-1)f Fi(is)g(returned.)40 │ │ │ │ b(The)30 b(cost)h(is)f(linear)h(in)f(the)h(n)m(um)m(b)s(er)e(of)h(en)m │ │ │ │ (tries.)227 808 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fi(If)30 b Fh(iv)g Fi(is)h Fh(NULL)p Fi(,)e(an)h(error)g(message)i │ │ │ │ @@ -3845,17 +3834,17 @@ │ │ │ │ 5294 y Fd(Err)-5 b(or)36 b(che)-5 b(cking:)43 b Fi(If)31 │ │ │ │ b Fh(iv)g Fi(or)h Fh(fn)f Fi(are)i Fh(NULL)p Fi(,)d(or)i(if)g │ │ │ │ Fh(fn)f Fi(is)h(not)g(of)g(the)g(form)g Fh(*.ivf)e Fi(\(for)i(a)g │ │ │ │ (formatted)g(\014le\))227 5407 y(or)f Fh(*.ivb)e Fi(\(for)h(a)h(binary) │ │ │ │ e(\014le\),)j(an)e(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ (metho)s(d)f(returns)f(zero.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fi(8)p 136 100 1146 4 v │ │ │ │ -1328 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 111 399 a Fi(2.)46 b Fh(int)h(IV_readFromFormattedFile)41 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fi(8)p 136 100 1182 4 v │ │ │ │ +1364 w Fh(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 111 399 a Fi(2.)46 b Fh(int)h(IV_readFromFormattedFile)41 │ │ │ │ b(\()48 b(IV)f(*iv,)g(FILE)f(*fp)h(\))h(;)227 550 y Fi(This)27 │ │ │ │ b(metho)s(d)g(reads)h(in)f(an)g Fh(IV)g Fi(ob)5 b(ject)29 │ │ │ │ b(from)e(a)h(formatted)g(\014le.)40 b(If)27 b(there)h(are)g(no)g │ │ │ │ (errors)f(in)g(reading)h(the)227 663 y(data,)k(the)e(v)-5 │ │ │ │ b(alue)31 b Fh(1)f Fi(is)g(returned.)40 b(If)30 b(an)g(IO)g(error)g(is) │ │ │ │ g(encoun)m(tered)h(from)f Fh(fscanf)p Fi(,)f(zero)i(is)g(returned.)227 │ │ │ │ 815 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 │ │ │ │ @@ -3933,17 +3922,17 @@ │ │ │ │ h(separated)g(b)m(y)g(a)g(whitespace.)40 b(The)227 5255 │ │ │ │ y(v)-5 b(alue)31 b Fh(1)f Fi(is)h(returned.)227 5407 │ │ │ │ y Fd(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fi(If)22 b │ │ │ │ Fh(iv)g Fi(or)g Fh(fp)g Fi(or)g Fh(pierr)f Fi(are)i Fh(NULL)p │ │ │ │ Fi(,)e(an)i(error)f(message)h(is)g(prin)m(ted)e(and)h(zero)h(is)g │ │ │ │ (returned.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1146 4 v 1328 100 a Fh(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fi(9)66 399 y(10.)46 b Fh(int)h(IV_writeForMatlab)c │ │ │ │ +TeXDict begin 9 8 bop 91 100 1182 4 v 1364 100 a Fh(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fi(9)66 399 y(10.)46 b Fh(int)h(IV_writeForMatlab)c │ │ │ │ (\()48 b(IV)f(*iv,)g(char)f(*name,)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ 549 y Fi(This)37 b(metho)s(d)h(writes)f(the)i(en)m(tries)f(of)g(the)g │ │ │ │ (v)m(ector)i(to)e(a)g(\014le)g(suitable)h(to)f(b)s(e)g(read)f(b)m(y)h │ │ │ │ (Matlab.)64 b(The)227 662 y(c)m(haracter)31 b(string)e │ │ │ │ Fh(name)f Fi(is)h(the)g(name)g(of)g(the)g(v)m(ector,)i(e.g,)g(if)e │ │ │ │ Fh(name)46 b(=)i("A")p Fi(,)28 b(then)h(w)m(e)g(ha)m(v)m(e)h(lines)g │ │ │ │ (of)f(the)227 775 y(form)227 1000 y Fh(A\(1\))47 b(=)g(32)h(;)227 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -24,15 +24,15 @@ │ │ │ │ │ IV setMaxsize() methods) than it is to duplicate code to work on an int vector. │ │ │ │ │ Onemustchoose where to use this object. There is a substantial performance penalty for doing the │ │ │ │ │ simplest operations, and so when we need to manipulate an int vector inside a loop, we extract │ │ │ │ │ out the size and pointer to the base array from the IV object. On the other hand, the convenience │ │ │ │ │ makes it a widely used object. Originally its use was restricted to reading and writing *.iv{f,b} │ │ │ │ │ files, but now IV objects appear much more frequently in new development. │ │ │ │ │ 1 │ │ │ │ │ - 2 IV : DRAFT December 20, 2018 │ │ │ │ │ + 2 IV : DRAFT October 11, 2021 │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The IV structure has four fields. │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ • int maxsize : maximum size of the vector. │ │ │ │ │ • int owned : owner flag for the data. When owned = 1, storage for maxsize int’s has been │ │ │ │ │ allocated by this object and can be free’d by the object. When nowned = 0 but maxsize > │ │ │ │ │ 0, this object points to entries that have been allocated elsewhere, and these entries will not │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ the storage for vec is free’d by a call to IVfree(). The structure’s default fields are then set │ │ │ │ │ with a call to IV setDefaultFields(). │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void IV_free ( IV *iv ) ; │ │ │ │ │ This method releases any storage by a call to IV clearData() then free’s the storage for the │ │ │ │ │ structure with a call to free(). │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ - IV : DRAFT December 20, 2018 3 │ │ │ │ │ + IV : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ These method allow access to information in the data fields without explicitly following pointers. │ │ │ │ │ There is overhead involved with these method due to the function call and error checking inside │ │ │ │ │ the methods. │ │ │ │ │ 1. int IV_owned ( IV *iv ) ; │ │ │ │ │ This method returns the value of owned. If owned = 1, then the object owns the data pointed │ │ │ │ │ to by vec and will free this data with a call to IVfree() when its data is cleared by a call to │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ the vector. │ │ │ │ │ Error checking: If iv, psize or pentries is NULL an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 7. void IV_setEntry ( IV *iv, int loc, int value ) ; │ │ │ │ │ This method sets the loc’th entry of the vector to value. │ │ │ │ │ Error checking: If iv, loc < 0 or loc >= size, or if vec is NULL an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ - 4 IV : DRAFT December 20, 2018 │ │ │ │ │ + 4 IV : DRAFT October 11, 2021 │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ 1. void IV_init ( IV *iv, int size, int *entries ) ; │ │ │ │ │ This method initializes the object given a size for the vector and a possible pointer to the │ │ │ │ │ vectors storage. Any previous data with a call to IV clearData(). If entries != NULL then │ │ │ │ │ the vec field is set to entries, the size and maxsize fields are set to size , and owned is │ │ │ │ │ set to zero because the object does not own the entries. If entries is NULL and if size > 0 │ │ │ │ │ then a vector is allocated by the object, and the object owns this storage. │ │ │ │ │ @@ -128,15 +128,15 @@ │ │ │ │ │ Error checking: If iv is NULL or newsize < 0, or if 0 < maxsize < newsize and owned == │ │ │ │ │ 0, an error message is printed and the program exits. │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ 1. void IV_shiftBase ( IV *iv, int offset ) ; │ │ │ │ │ This method shifts the base entries of the vector and decrements the present size and max- │ │ │ │ │ imum size of the vector by offset. This is a dangerous method to use because the state of │ │ │ │ │ the vector is lost, namely vec, the base of the entries, is corrupted. If the object owns its │ │ │ │ │ - IV : DRAFT December 20, 2018 5 │ │ │ │ │ + IV : DRAFT October 11, 2021 5 │ │ │ │ │ entries and IV free(), IV setSize() or IV setMaxsize() is called before the base has been │ │ │ │ │ shifted back to its original position, a segmentation violation will likely result. This is a very │ │ │ │ │ useful method, but use with caution. │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. void IV_push ( IV *iv, int val ) ; │ │ │ │ │ This method pushes an entry onto the vector. If the vector is full, i.e., if size = maxsize │ │ │ │ │ - 1, then the size of the vector is doubled if possible. If the storage cannot grow, i.e., if the │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ the program exits. │ │ │ │ │ 7. int IV_sizeOf ( IV *iv ) ; │ │ │ │ │ This method returns the number of bytes taken by the object. │ │ │ │ │ Error checking: If iv is NULL an error message is printed and the program exits. │ │ │ │ │ 8. void IV_filterKeep ( IV *iv, int tags[], int keepTag ) ; │ │ │ │ │ This method examines the entries in the vector. Let k be entry i in the vector. If tags[k] != │ │ │ │ │ keepTag, the entry is moved to the end of the vector, otherwise it is moved to the beginning │ │ │ │ │ - 6 IV : DRAFT December 20, 2018 │ │ │ │ │ + 6 IV : DRAFT October 11, 2021 │ │ │ │ │ of the vector. The size of the vector is reset to be the number of tagged entries that are now │ │ │ │ │ in the leading locations. │ │ │ │ │ Error checking: If iv of tags is NULL an error message is printed and the program exits. │ │ │ │ │ 9. void IV_filterPurge ( IV *iv, int tags[], int purgeTag ) ; │ │ │ │ │ This method examines the entries in the vector. Let k be entry i in the vector. If tags[k] == │ │ │ │ │ purgeTag, the entry is moved to the end of the vector, otherwise it is moved to the beginning │ │ │ │ │ of the vector. The size of the vector is reset to be the number of untagged entries that are │ │ │ │ │ @@ -201,15 +201,15 @@ │ │ │ │ │ Error checking: If iv is NULL or if loc is out of range, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 14. int IV_decrement ( IV *iv, int loc ) ; │ │ │ │ │ This method decrements the loc’th location of the iv object by one and returns the new │ │ │ │ │ value. │ │ │ │ │ Error checking: If iv is NULL or if loc is out of range, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ - IV : DRAFT December 20, 2018 7 │ │ │ │ │ + IV : DRAFT October 11, 2021 7 │ │ │ │ │ 15. int IV_findValue ( IV *iv, int value ) ; │ │ │ │ │ This method looks for value in its entries. If value is present, the first location is returned, │ │ │ │ │ otherwise -1 is returned. The cost is linear in the number of entries. │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ 16. int IV_findValueAscending ( IV *iv, int value ) ; │ │ │ │ │ Thismethodlooksforvalueinitsentries. Ifvalueispresent, alocation isreturned, otherwise │ │ │ │ │ -1 is returned. This method assumes that the entries are sorted in ascending order. The cost │ │ │ │ │ @@ -238,15 +238,15 @@ │ │ │ │ │ is size, followed by the size entries found in vec[]. │ │ │ │ │ 1. int IV_readFromFile ( IV *iv, char *fn ) ; │ │ │ │ │ This method reads an IV object from a formatted file. It tries to open the file and if it is │ │ │ │ │ successful, it then calls IV readFromFormattedFile() or IV readFromBinaryFile(), closes │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ Error checking: If iv or fn are NULL, or if fn is not of the form *.ivf (for a formatted file) │ │ │ │ │ or *.ivb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ - 8 IV : DRAFT December 20, 2018 │ │ │ │ │ + 8 IV : DRAFT October 11, 2021 │ │ │ │ │ 2. int IV_readFromFormattedFile ( IV *iv, FILE *fp ) ; │ │ │ │ │ This method reads in an IV object from a formatted file. If there are no errors in reading the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Error checking: If iv or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 3. int IV_readFromBinaryFile ( IV *iv, FILE *fp ) ; │ │ │ │ │ This method reads in an IV object from a binary file. If there are no errors in reading the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ @@ -274,15 +274,15 @@ │ │ │ │ │ This method writes the header and statistics to a file. The value 1 is returned. │ │ │ │ │ Error checking: If iv or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 9. int IV_fp80 ( IV *iv, FILE *fp, int column, int *pierr ) ; │ │ │ │ │ This method is just a wrapper around the IVfp80() method for an int method. The entries │ │ │ │ │ in the vector are found on lines with eighty columns and are separated by a whitespace. The │ │ │ │ │ value 1 is returned. │ │ │ │ │ Error checking: If iv or fp or pierr are NULL, an error message is printed and zero is returned. │ │ │ │ │ - IV : DRAFT December 20, 2018 9 │ │ │ │ │ + IV : DRAFT October 11, 2021 9 │ │ │ │ │ 10. int IV_writeForMatlab ( IV *iv, char *name, FILE *fp ) ; │ │ │ │ │ This method writes the entries of the vector to a file suitable to be read by Matlab. The │ │ │ │ │ character string name is the name of the vector, e.g, if name = "A", then we have lines of the │ │ │ │ │ form │ │ │ │ │ A(1) = 32 ; │ │ │ │ │ A(2) = -433 ; │ │ │ │ │ ... │ │ ├── ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ ├── IVL.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMBX10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o IVL.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1145,22 +1145,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1334,88 +1334,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3361,16 +3350,16 @@ │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 │ │ │ │ 62 56 1[51 62 50 1[54 11[86 5[84 1[106 67 2[42 6[80 10[56 │ │ │ │ 56 56 56 56 56 56 2[31 46[{}32 99.6264 /CMBX12 rf /Fb │ │ │ │ 169[62 9[62 2[62 73[{}3 119.552 /CMTT12 rf /Fc 137[42 │ │ │ │ 49 30 37 38 1[46 46 51 1[23 42 1[28 46 42 1[42 46 42 │ │ │ │ 1[46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}24 90.9091 │ │ │ │ -/CMTI10 rf /Fd 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 │ │ │ │ -5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 152[45 │ │ │ │ +/CMTI10 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 152[45 │ │ │ │ 45 86[45 12[71 2[{}4 90.9091 /CMSY10 rf /Ff 134[71 2[71 │ │ │ │ 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 60 │ │ │ │ 75 65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}27 119.552 │ │ │ │ /CMBX12 rf /Fg 132[52 36[79 9[63 2[40 9[49 63[{}5 90.9091 │ │ │ │ /CMBX10 rf /Fh 130[48 1[48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 │ │ │ │ 1[48 1[48 1[48 1[48 48 48 48 48 2[48 48 48 48 48 48 1[48 │ │ │ │ @@ -3452,17 +3441,17 @@ │ │ │ │ b(Absolutely)31 b(no)f(free'ing)h(of)f(data)h(is)g(done)f(when)f(the)i │ │ │ │ Fh(IVL)e Fi(ob)5 b(ject)32 b(is)e(free'd.)227 5407 y(The)g(storage)i │ │ │ │ (managemen)m(t)g(is)e(handled)g(b)m(y)g Fh(IVL)p 1972 │ │ │ │ 5407 V 34 w(setList\(\))d Fi(and)j Fh(IVL)p 2786 5407 │ │ │ │ V 34 w(setPointerToList\(\))p Fi(.)1927 5656 y(1)p eop │ │ │ │ end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1123 4 v │ │ │ │ -1304 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2778 100 V 136 399 a Fe(\017)46 b Fh(int)h(maxnlist)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1159 4 v │ │ │ │ +1340 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2742 100 V 136 399 a Fe(\017)46 b Fh(int)h(maxnlist)28 │ │ │ │ b Fi(:)41 b(maxim)m(um)30 b(n)m(um)m(b)s(er)f(of)i(lists.)227 │ │ │ │ 543 y Fh(int)47 b(nlist)29 b Fi(:)41 b(n)m(um)m(b)s(er)29 │ │ │ │ b(of)h(lists.)227 688 y(W)-8 b(e)33 b(ma)m(y)g(not)f(kno)m(w)g(ho)m(w)g │ │ │ │ (man)m(y)g(lists)g(w)m(e)h(will)f(need)g(for)f(the)h(ob)5 │ │ │ │ b(ject)33 b(|)f Fh(maxnlist)d Fi(is)j(the)h(dimension)227 │ │ │ │ 801 y(of)j(the)f Fh(sizes[])e Fi(and)i Fh(p)p 1102 801 │ │ │ │ 29 4 v 34 w(vec[])e Fi(arra)m(ys)j(and)f Fh(nlist)e Fi(is)i(the)h │ │ │ │ @@ -3529,17 +3518,17 @@ │ │ │ │ b Fh(tsize)f Fi(are)i(zero,)g Fh(incr)e Fi(is)i Fh(1024)p │ │ │ │ Fi(,)e(and)h Fh(sizes)p Fi(,)f Fh(p)p 2126 5262 V 34 │ │ │ │ w(vec)h Fi(and)g Fh(chunk)e Fi(are)j Fh(NULL)p Fi(.)227 │ │ │ │ 5407 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 │ │ │ │ b Fh(ivl)g Fi(is)g Fh(NULL)p Fi(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ (ted)f(and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1123 4 v 1304 100 a Fh(IVL)29 │ │ │ │ -b Fd(:)i Fc(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2731 100 V 1123 w Fi(3)111 399 y(3.)46 b Fh(void)h(IVL_clearData)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1159 4 v 1340 100 a Fh(IVL)29 │ │ │ │ +b Fd(:)i Fc(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2695 100 V 1159 w Fi(3)111 399 y(3.)46 b Fh(void)h(IVL_clearData)d(\()k │ │ │ │ (IVL)e(*ivl)h(\))h(;)227 566 y Fi(This)32 b(metho)s(d)f(clears)i(an)m │ │ │ │ (y)g(data)f(allo)s(cated)j(b)m(y)d(this)g(ob)5 b(ject)33 │ │ │ │ b(and)e(then)h(sets)h(the)f(default)g(\014elds)g(with)g(a)227 │ │ │ │ 679 y(call)j(to)g Fh(IVL)p 662 679 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ Fi(.)46 b(An)m(y)34 b(storage)i(held)d(b)m(y)h(the)g │ │ │ │ Fh(Ichunk)e Fi(structures)h(is)h(free'd,)h(and)227 792 │ │ │ │ y(if)c Fh(sizes)e Fi(or)h Fh(p)p 745 792 V 34 w(vec)f │ │ │ │ @@ -3587,17 +3576,17 @@ │ │ │ │ (int)g(incr)f(\))i(;)227 5126 y Fi(This)30 b(metho)s(d)g(sets)g(the)h │ │ │ │ (storage)h(incremen)m(t)f(to)g Fh(incr)p Fi(.)227 5294 │ │ │ │ y Fc(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fi(If)21 b │ │ │ │ Fh(ivl)g Fi(is)i Fh(NULL)e Fi(or)h Fh(incr)f Fi(is)h(negativ)m(e,)k(an) │ │ │ │ c(error)f(message)j(is)e(prin)m(ted)f(and)h(the)g(program)227 │ │ │ │ 5407 y(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1123 4 v │ │ │ │ -1304 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2778 100 V 0 399 a Fa(1.2.3)112 b(Initialization)39 b(and)f(resizing)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1159 4 v │ │ │ │ +1340 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2742 100 V 0 399 a Fa(1.2.3)112 b(Initialization)39 b(and)f(resizing)g │ │ │ │ (metho)s(ds)111 606 y Fi(1.)46 b Fh(void)h(IVL_init1)e(\()j(IVL)f │ │ │ │ (*ivl,)f(int)h(type,)f(int)h(maxnlist)f(\))h(;)227 767 │ │ │ │ y Fi(This)34 b(metho)s(d)g(is)g(used)g(when)f(only)i(the)f(n)m(um)m(b)s │ │ │ │ (er)f(of)i(lists)g(is)f(kno)m(wn.)52 b(An)m(y)35 b(previous)e(data)j │ │ │ │ (is)e(cleared)227 879 y(with)c(a)f(call)i(to)g Fh(IVL)p │ │ │ │ 935 879 29 4 v 33 w(clearData\(\))p Fi(.)37 b(The)30 │ │ │ │ b Fh(type)e Fi(\014eld)h(is)h(set.)41 b(If)29 b Fh(maxnlist)45 │ │ │ │ @@ -3676,17 +3665,17 @@ │ │ │ │ 5085 y Fc(Err)-5 b(or)32 b(che)-5 b(cking:)40 b Fi(If)27 │ │ │ │ b Fh(ivl)h Fi(is)g Fh(NULL)f Fi(or)i(if)f Fh(newmaxnlist)d │ │ │ │ Fi(is)k(negativ)m(e,)i(an)d(error)g(message)h(is)g(prin)m(ted)f(and)227 │ │ │ │ 5198 y(the)j(program)f(exits.)111 5407 y(6.)46 b Fh(void)h │ │ │ │ (IVL_setNlist)d(\()k(IVL)f(*ivl,)f(int)h(newnlist)f(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1123 4 v 1304 100 a Fh(IVL)29 │ │ │ │ -b Fd(:)i Fc(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2731 100 V 1123 w Fi(5)227 399 y(This)39 b(metho)s(d)f(is)h(used)g(to)g │ │ │ │ +TeXDict begin 5 4 bop 91 100 1159 4 v 1340 100 a Fh(IVL)29 │ │ │ │ +b Fd(:)i Fc(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2695 100 V 1159 w Fi(5)227 399 y(This)39 b(metho)s(d)f(is)h(used)g(to)g │ │ │ │ (c)m(hange)i(the)e(n)m(um)m(b)s(er)f(of)h(lists.)68 b(If)38 │ │ │ │ b Fh(newnlist)46 b(>)h(maxnlist)p Fi(,)40 b(storage)g(for)227 │ │ │ │ 511 y(the)h(lists)g(is)f(increased)g(via)h(a)g(call)g(to)g(the)g │ │ │ │ Fh(IVL)p 1956 511 29 4 v 33 w(setMaxnlist\(\))c Fi(metho)s(d.)70 │ │ │ │ b(Then)39 b Fh(nlist)g Fi(is)h(set)h(to)227 624 y Fh(newnlist)p │ │ │ │ Fi(.)227 852 y Fc(Err)-5 b(or)39 b(che)-5 b(cking:)50 │ │ │ │ b Fi(If)35 b Fh(ivl)g Fi(is)g Fh(NULL)p Fi(,)g(or)g(if)g │ │ │ │ @@ -3729,17 +3718,17 @@ │ │ │ │ 5294 y Fi(This)39 b(metho)s(d)f(sets)i(the)g(size)g(and)e(\(p)s │ │ │ │ (ossibly\))i(p)s(oin)m(ter)f(to)h(a)g(list)f(of)h(en)m(tries.)68 │ │ │ │ b(The)39 b(b)s(eha)m(vior)g(of)h(the)227 5407 y(metho)s(d)30 │ │ │ │ b(dep)s(ends)f(on)h(the)g(t)m(yp)s(e)h(of)g(the)f Fh(ivl)g │ │ │ │ Fi(ob)5 b(ject.)41 b(Here)31 b(is)f(the)h(\015o)m(w)f(c)m(hart:)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fi(6)p 136 100 1123 4 v │ │ │ │ -1304 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2778 100 V 605 311 2918 4 v 605 2506 4 2196 v 663 414 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fi(6)p 136 100 1159 4 v │ │ │ │ +1340 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2742 100 V 605 311 2918 4 v 605 2506 4 2196 v 663 414 │ │ │ │ a Fi(if)g Fh(ilist)46 b(>=)h(maxnlist)28 b Fi(then)898 │ │ │ │ 527 y(the)j(n)m(um)m(b)s(er)e(of)h(lists)h(is)g(increased)f(via)h(a)g │ │ │ │ (call)h(to)f Fh(IVL)p 2816 527 29 4 v 33 w(setMaxnlist\(\))663 │ │ │ │ 640 y Fi(endif)663 753 y(if)g Fh(ilist)46 b(>=)h(nlist)29 │ │ │ │ b Fi(then)898 866 y Fh(nlist)g Fi(is)i(increased)663 │ │ │ │ 979 y(endif)663 1092 y(if)g Fh(isize)46 b(=)i(0)30 b │ │ │ │ Fi(then)898 1205 y(release)i(the)e(storage)i(for)f(that)f(list,)i │ │ │ │ @@ -3782,17 +3771,17 @@ │ │ │ │ y(int)g(IVL_sum)f(\()h(IVL)g(*ivl)g(\))g(;)227 5246 y │ │ │ │ Fi(These)30 b(metho)s(ds)g(return)f(some)i(simple)f(information)h(ab)s │ │ │ │ (out)f(the)h(ob)5 b(ject.)227 5407 y Fc(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fi(If)30 b Fh(ivl)g Fi(is)g Fh(NULL)f │ │ │ │ Fi(then)i(an)f(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program) │ │ │ │ f(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1123 4 v 1304 100 a Fh(IVL)29 │ │ │ │ -b Fd(:)i Fc(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2731 100 V 1123 w Fi(7)111 399 y(3.)46 b Fh(int)h(IVL_sortUp)e(\()j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1159 4 v 1340 100 a Fh(IVL)29 │ │ │ │ +b Fd(:)i Fc(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2695 100 V 1159 w Fi(7)111 399 y(3.)46 b Fh(int)h(IVL_sortUp)e(\()j │ │ │ │ (IVL)f(*ivl)f(\))i(;)227 559 y Fi(This)30 b(metho)s(d)g(sorts)g(eac)m │ │ │ │ (h)i(list)f(in)m(to)g(ascending)g(order.)227 720 y Fc(Err)-5 │ │ │ │ b(or)28 b(che)-5 b(cking:)37 b Fi(If)23 b Fh(ivl)g Fi(is)g │ │ │ │ Fh(NULL)g Fi(or)g Fh(nlist)46 b(<)i(0)23 b Fi(then)g(an)h(error)f │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)h(program)227 │ │ │ │ 833 y(exits.)111 1042 y(4.)46 b Fh(int)h(*)h(IVL_equivMap1)c(\()j(IVL)g │ │ │ │ (*ivl)g(\))g(;)227 1155 y(IV)95 b(*)48 b(IVL_equivMap2)c(\()j(IVL)g │ │ │ │ @@ -3860,17 +3849,17 @@ │ │ │ │ b(so)227 5246 y(w)m(e)31 b(create)h(and)e(return)f(a)i(new)f │ │ │ │ Fh(IVL)f Fi(ob)5 b(ject)31 b(that)g(con)m(tains)h(en)m(tries)f(for)f │ │ │ │ (the)h(uncompressed)e(graph.)227 5407 y Fc(Err)-5 b(or)30 │ │ │ │ b(che)-5 b(cking:)38 b Fi(If)26 b Fh(ivl)f Fi(or)h Fh(eqmapIV)e │ │ │ │ Fi(is)i Fh(NULL)p Fi(,)f(an)h(error)f(message)i(is)f(prin)m(ted)g(and)f │ │ │ │ (the)h(program)g(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fi(8)p 136 100 1123 4 v │ │ │ │ -1304 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2778 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fi(8)p 136 100 1159 4 v │ │ │ │ +1340 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)h Fd(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2742 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 b(metho)s(ds)111 │ │ │ │ 598 y Fi(1.)46 b Fh(IVL)h(*)h(IVL_make9P)d(\()i(int)g(n1,)g(int)g(n2,)g │ │ │ │ (int)g(ncomp)f(\))h(;)227 752 y Fi(This)35 b(metho)s(d)g(returns)f(an)h │ │ │ │ Fh(IVL)f Fi(ob)5 b(ject)36 b(that)g(con)m(tains)h(the)e(full)g │ │ │ │ (adjacency)i(structure)d(for)h(a)h(9-p)s(oin)m(t)227 │ │ │ │ 865 y(op)s(erator)31 b(on)f(a)h Fh(n1)20 b Fe(\002)g │ │ │ │ Fh(n2)29 b Fi(grid)h(with)g Fh(ncomp)f Fi(comp)s(onen)m(ts)i(at)g(eac)m │ │ │ │ (h)h(grid)e(p)s(oin)m(t.)227 1018 y Fc(Err)-5 b(or)37 │ │ │ │ @@ -3934,17 +3923,17 @@ │ │ │ │ 5254 y(data,)h(the)e(v)-5 b(alue)31 b Fh(1)f Fi(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fh(fscanf)p Fi(,)f(zero)i(is)g(returned.)227 5407 y Fc(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(ivl)g Fi(or)g │ │ │ │ Fh(fp)g Fi(are)h Fh(NULL)e Fi(an)h(error)g(message)i(is)e(prin)m(ted)g │ │ │ │ (and)g(zero)h(is)f(returned.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1123 4 v 1304 100 a Fh(IVL)29 │ │ │ │ -b Fd(:)i Fc(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2731 100 V 1123 w Fi(9)111 399 y(3.)46 b Fh(int)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1159 4 v 1340 100 a Fh(IVL)29 │ │ │ │ +b Fd(:)i Fc(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2695 100 V 1159 w Fi(9)111 399 y(3.)46 b Fh(int)h │ │ │ │ (IVL_readFromBinaryFile)42 b(\()47 b(IVL)g(*ivl,)g(FILE)f(*fp)h(\))h(;) │ │ │ │ 227 556 y Fi(This)25 b(metho)s(d)g(reads)g(an)g Fh(IVL)g │ │ │ │ Fi(ob)5 b(ject)26 b(from)f(a)h(binary)f(\014le.)39 b(If)25 │ │ │ │ b(there)h(are)f(no)h(errors)f(in)g(reading)g(the)h(data,)227 │ │ │ │ 669 y(the)31 b(v)-5 b(alue)31 b Fh(1)f Fi(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fh(fread)p Fi(,)f(zero)i(is)g(returned.)227 826 y Fc(Err)-5 │ │ │ │ @@ -4011,17 +4000,17 @@ │ │ │ │ Fh(IVL)e Fi(ob)5 b(ject)29 b(from)e Fh(inFile)e Fi(and)i(writes)h(out)g │ │ │ │ (the)f(ob)5 b(ject)29 b(to)f Fh(outFile)336 5294 y Fe(\017)46 │ │ │ │ b Fi(The)28 b Fh(msglvl)f Fi(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ (of)f(output)h(|)f(taking)i Fh(msglvl)46 b(>=)h(3)28 │ │ │ │ b Fi(means)427 5407 y(the)j Fh(IVL)e Fi(ob)5 b(ject)32 │ │ │ │ b(is)e(written)g(to)i(the)e(message)i(\014le.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fi(10)p 182 100 1100 4 │ │ │ │ -v 1282 w Fh(IVL)30 b Fd(:)g Fc(DRAFT)g Fd(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2801 100 V 336 399 a Fe(\017)46 b Fi(The)33 b Fh(msgFile)e │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fi(10)p 182 100 1136 4 │ │ │ │ +v 1318 w Fh(IVL)29 b Fd(:)i Fc(DRAFT)f Fd(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2765 100 V 336 399 a Fe(\017)46 b Fi(The)33 b Fh(msgFile)e │ │ │ │ Fi(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fh(msgFile)e Fi(is)i Fh(stdout)p Fi(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fc(stdout)p Fi(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fc(app)-5 b(end)28 │ │ │ │ b Fi(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)336 770 y Fe(\017)46 b Fi(The)25 b Fh(inFile)e │ │ │ │ Fi(parameter)i(is)g(the)g(input)f(\014le)g(for)h(the)g │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ Each list is allocated separately using the IVinit() function. When the IVL object is │ │ │ │ │ free’d, each list is free’d separately using the IVfree() function. │ │ │ │ │ – IVL UNKNOWN │ │ │ │ │ This storage mode is available for the cases where storage for a list is aliased to another │ │ │ │ │ location. Absolutely no free’ing of data is done when the IVL object is free’d. │ │ │ │ │ The storage management is handled by IVL setList() and IVL setPointerToList(). │ │ │ │ │ 1 │ │ │ │ │ - 2 IVL : DRAFT December 20, 2018 │ │ │ │ │ + 2 IVL : DRAFT October 11, 2021 │ │ │ │ │ • int maxnlist : maximum number of lists. │ │ │ │ │ int nlist : number of lists. │ │ │ │ │ We may not know how many lists we will need for the object — maxnlist is the dimension │ │ │ │ │ of the sizes[] and p vec[] arrays and nlist is the present number of active lists. When │ │ │ │ │ we initialize the object using one of the IVL init{1,2,3}() methods, we set nlist equal to │ │ │ │ │ maxnlist. We resize the object using IVL setMaxnlist(). │ │ │ │ │ • int tsize : total number of list entries. │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ 1. IVL * IVL_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the IVL structure and then sets the default fields by │ │ │ │ │ a call to IVL setDefaultFields(). │ │ │ │ │ 2. void IVL_setDefaultFields ( IVL *ivl ) ; │ │ │ │ │ This method sets the default fields of the object — type = IVL NOTYPE, maxnlist, nlist │ │ │ │ │ and tsize are zero, incr is 1024, and sizes, p vec and chunk are NULL. │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ - IVL : DRAFT December 20, 2018 3 │ │ │ │ │ + IVL : DRAFT October 11, 2021 3 │ │ │ │ │ 3. void IVL_clearData ( IVL *ivl ) ; │ │ │ │ │ This method clears any data allocated by this object and then sets the default fields with a │ │ │ │ │ call to IVL setDefaultFields(). Any storage held by the Ichunk structures is free’d, and │ │ │ │ │ if sizes or p vec are not NULL, they are free’d. │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void IVL_free ( IVL *ivl ) ; │ │ │ │ │ This method releases any storage by a call to IVL clearData() then free’s the storage for │ │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ │ 5. int IVL_incr ( IVL *ivl ) ; │ │ │ │ │ This method returns incr, the storage increment. │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ 6. int IVL_setincr ( IVL *ivl, int incr ) ; │ │ │ │ │ This method sets the storage increment to incr. │ │ │ │ │ Error checking: If ivl is NULL or incr is negative, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 4 IVL : DRAFT December 20, 2018 │ │ │ │ │ + 4 IVL : DRAFT October 11, 2021 │ │ │ │ │ 1.2.3 Initialization and resizing methods │ │ │ │ │ 1. void IVL_init1 ( IVL *ivl, int type, int maxnlist ) ; │ │ │ │ │ This method is used when only the number of lists is known. Any previous data is cleared │ │ │ │ │ with a call to IVL clearData(). The type field is set. If maxnlist > 0, storage is allocated │ │ │ │ │ for the sizes[] and p vec[] arrays and nlist is set to maxnlist. │ │ │ │ │ Error checking: If ivl is NULL or type is invalid or maxnlist is negative, an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ @@ -124,15 +124,15 @@ │ │ │ │ │ newmaxnlist == maxnlist,nothingisdone. Otherwise,newstorageforsizes[]andp vec[] │ │ │ │ │ is allocated, the information for the first nlist lists is copied over, and the old storage │ │ │ │ │ free’d. Note, maxnlist is set to newmaxnlist and nlist is set to the minimum of nlist and │ │ │ │ │ newmaxnlist. │ │ │ │ │ Error checking: If ivl is NULL or if newmaxnlist is negative, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 6. void IVL_setNlist ( IVL *ivl, int newnlist ) ; │ │ │ │ │ - IVL : DRAFT December 20, 2018 5 │ │ │ │ │ + IVL : DRAFT October 11, 2021 5 │ │ │ │ │ This method is used to change the number of lists. If newnlist > maxnlist, storage for │ │ │ │ │ the lists is increased via a call to the IVL setMaxnlist() method. Then nlist is set to │ │ │ │ │ newnlist. │ │ │ │ │ Error checking: If ivl is NULL, or if newnlist is negative, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 1.2.4 List manipulation methods │ │ │ │ │ 1. void IVL_listAndSize ( IVL *ivl, int ilist, int *psize, int **pivec) ; │ │ │ │ │ @@ -151,15 +151,15 @@ │ │ │ │ │ if so an error message is printed and the program exits. In method IVL firstInList(), if │ │ │ │ │ sizes[ilist] > 0 and p vec[ilist] = NULL, an error message is printed and the program │ │ │ │ │ exits. In method IVL nextInList(), if pi is not in the valid range for list ilist, an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ 3. void IVL_setList ( IVL *ivl, int ilist, int isize, int ivec[] ) ; │ │ │ │ │ This method sets the size and (possibly) pointer to a list of entries. The behavior of the │ │ │ │ │ method depends on the type of the ivl object. Here is the flow chart: │ │ │ │ │ - 6 IVL : DRAFT December 20, 2018 │ │ │ │ │ + 6 IVL : DRAFT October 11, 2021 │ │ │ │ │ if ilist >= maxnlist then │ │ │ │ │ the number of lists is increased via a call to IVL setMaxnlist() │ │ │ │ │ endif │ │ │ │ │ if ilist >= nlist then │ │ │ │ │ nlist is increased │ │ │ │ │ endif │ │ │ │ │ if isize = 0 then │ │ │ │ │ @@ -189,15 +189,15 @@ │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int IVL_min ( IVL *ivl ) ; │ │ │ │ │ int IVL_max ( IVL *ivl ) ; │ │ │ │ │ int IVL_maxListSize ( IVL *ivl ) ; │ │ │ │ │ int IVL_sum ( IVL *ivl ) ; │ │ │ │ │ These methods return some simple information about the object. │ │ │ │ │ Error checking: If ivl is NULL then an error message is printed and the program exits. │ │ │ │ │ - IVL : DRAFT December 20, 2018 7 │ │ │ │ │ + IVL : DRAFT October 11, 2021 7 │ │ │ │ │ 3. int IVL_sortUp ( IVL *ivl ) ; │ │ │ │ │ This method sorts each list into ascending order. │ │ │ │ │ Error checking: If ivl is NULL or nlist < 0 then an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 4. int * IVL_equivMap1 ( IVL *ivl ) ; │ │ │ │ │ IV * IVL_equivMap2 ( IVL *ivl ) ; │ │ │ │ │ Two lists are equivalent if their contents are identical. These methods are used to find the │ │ │ │ │ @@ -226,15 +226,15 @@ │ │ │ │ │ and the program exits. │ │ │ │ │ 8. IVL * IVL_expand ( IVL *ivl, IV *eqmapIV ) ; │ │ │ │ │ This method was created in support of a symbolic factorization. An IVL object is constructed │ │ │ │ │ using a compressed graph. it must be expanded to reflect the compressed graph. The number │ │ │ │ │ of lists does not change (there is one list per front) but the size of each list may change. so │ │ │ │ │ we create and return a new IVL object that contains entries for the uncompressed graph. │ │ │ │ │ Error checking: If ivl or eqmapIV is NULL, an error message is printed and the program exits. │ │ │ │ │ - 8 IVL : DRAFT December 20, 2018 │ │ │ │ │ + 8 IVL : DRAFT October 11, 2021 │ │ │ │ │ 1.2.6 Miscellaneous methods │ │ │ │ │ 1. IVL * IVL_make9P ( int n1, int n2, int ncomp ) ; │ │ │ │ │ This method returns an IVL object that contains the full adjacency structure for a 9-point │ │ │ │ │ operator on a n1×n2 grid with ncomp components at each grid point. │ │ │ │ │ Error checking: If n1, n2 or ncomp is less than or equal to zero, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 2. IVL * IVL_make13P ( int n1, int n2 ) ; │ │ │ │ │ @@ -261,15 +261,15 @@ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ Error checking: If ivl or fn are NULL, or if fn is not of the form *.ivlf (for a formatted file) │ │ │ │ │ or *.ivlb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 2. int IVL_readFromFormattedFile ( IVL *ivl, FILE *fp ) ; │ │ │ │ │ This method reads an IVL object from a formatted file. If there are no errors in reading the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Error checking: If ivl or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ - IVL : DRAFT December 20, 2018 9 │ │ │ │ │ + IVL : DRAFT October 11, 2021 9 │ │ │ │ │ 3. int IVL_readFromBinaryFile ( IVL *ivl, FILE *fp ) ; │ │ │ │ │ This method reads an IVL object from a binary file. If there are no errors in reading the data, │ │ │ │ │ the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ Error checking: If ivl or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 4. int IVL_writeToFile ( IVL *ivl, char *fn ) ; │ │ │ │ │ This method writes an IVL object to a file. If the the file can be opened successfully, the │ │ │ │ │ method calls IVL writeFromFormattedFile() or IVL writeFromBinaryFile(), closes the │ │ │ │ │ @@ -293,15 +293,15 @@ │ │ │ │ │ Error checking: If ivl or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 1.3 Driver programs for the IVL object │ │ │ │ │ This section contains brief descriptions of six driver programs. │ │ │ │ │ 1. testIO msglvl msgFile inFile outFile │ │ │ │ │ This driver program reads in a IVL object from inFile and writes out the object to outFile │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the IVL object is written to the message file. │ │ │ │ │ - 10 IVL : DRAFT December 20, 2018 │ │ │ │ │ + 10 IVL : DRAFT October 11, 2021 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The inFileparameter is the input file for the IVL object. It must be of the form *.ivlf │ │ │ │ │ or *.ivlb. The IVL object is read from the file via the IVL readFromFile() method. │ │ │ │ │ • The outFile parameter is the output file for the IVL object. It must be of the form │ │ │ │ │ *.ivlf or *.ivlb. The IVL object is written to the file via the IVL writeToFile() │ │ ├── ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ ├── Ideq.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMSY10 CMSL10 CMMI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Ideq.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -797,22 +797,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -986,88 +986,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2986,15 +2975,15 @@ │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 195[71 60[{}1 90.9091 /CMMI10 rf /Fb 133[50 │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}24 99.6264 /CMBX12 │ │ │ │ -rf /Fc 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 │ │ │ │ +rf /Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 │ │ │ │ 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fd 142[62 11[62 │ │ │ │ 62 26[62 73[{}4 119.552 /CMTT12 rf /Fe 240[45 15[{}1 │ │ │ │ 90.9091 /CMSY10 rf /Ff 134[71 3[75 52 53 55 1[75 67 75 │ │ │ │ 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 17[67 │ │ │ │ 67 2[37 46[{}22 119.552 /CMBX12 rf /Fg 138[49 2[38 42 │ │ │ │ 1[46 51 2[42 1[28 46 42 1[42 46 42 14[65 1[66 11[59 62 │ │ │ │ 69 2[68 6[28 58[{}19 90.9091 /CMTI10 rf /Fh 133[48 48 │ │ │ │ @@ -3060,17 +3049,17 @@ │ │ │ │ b(,)31 b Fh(head)47 b(=)h(tail)e(=)i(-1)p Fi(.)0 5049 │ │ │ │ y Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fd(Ideq)e Ff(metho)t(ds)0 5294 y Fi(This)25 b(section)h(con)m(tains)h │ │ │ │ (brief)e(descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i │ │ │ │ (metho)s(ds)d(that)j(b)s(elong)e(to)h(the)g Fh(Ideq)0 │ │ │ │ 5407 y Fi(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1094 4 v │ │ │ │ -1275 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1130 4 v │ │ │ │ +1311 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 616 y Fi(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 729 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 1021 y(1.)46 b Fh(Ideq)h(*)g │ │ │ │ (Ideq_new)f(\()h(void)g(\))g(;)227 1194 y Fi(This)32 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fh(Ideq)f Fi(structure)h(and)f(then)h(sets)h(the)f(default)g(\014elds) │ │ │ │ @@ -3125,17 +3114,17 @@ │ │ │ │ Fi(and)h Fh(maxsize)e Fi(\014elds)i(are)h(set.)41 b(The)30 │ │ │ │ b(metho)s(d)f(then)i(returns)e Fh(1)p Fi(.)227 5294 y │ │ │ │ Fg(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fi(If)23 b Fh(deq)g │ │ │ │ Fi(is)g Fh(NULL)p Fi(,)g(or)h(if)f Fh(newsize)h Fa(<)h │ │ │ │ Fi(0,)g(an)f(error)f(message)i(is)e(prin)m(ted)g(and)g(the)h(program) │ │ │ │ 227 5407 y(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1094 4 v 1275 100 a Fh(Ideq)29 │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1311 100 a Fh(Ideq)29 │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 603 y Fi(1.)46 b Fh(void)h(Ideq_clear)e(\()i(Ideq)g │ │ │ │ (*deq)g(\))g(;)227 762 y Fi(This)30 b(metho)s(d)g(clears)h(the)g │ │ │ │ (dequeue.)40 b(The)30 b Fh(head)f Fi(and)h Fh(tail)f │ │ │ │ Fi(\014elds)h(are)h(set)f(to)i Fh(-1)p Fi(.)227 921 y │ │ │ │ Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(deq)g │ │ │ │ Fi(is)g Fh(NULL)p Fi(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g │ │ │ │ (the)g(program)g(exits.)111 1125 y(2.)46 b Fh(int)h(Ideq_head)e(\()j │ │ │ │ @@ -3204,17 +3193,17 @@ │ │ │ │ 3130 5136 V 34 w(resize\(\))d Fi(metho)s(d.)227 5248 │ │ │ │ y(Otherwise,)f(the)f(item)h(is)g(placed)f(in)m(to)i(the)e(list)h(and)f │ │ │ │ Fh(1)g Fi(is)h(returned.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(is)g Fh(NULL)p │ │ │ │ Fi(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1094 4 v │ │ │ │ -1275 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 0 399 a Fb(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1130 4 v │ │ │ │ +1311 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 0 399 a Fb(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ 595 y Fi(1.)46 b Fh(void)h(Ideq_writeForHumanEye)42 b(\()47 │ │ │ │ b(Ideq)g(*deq)g(\))g(;)227 745 y Fi(This)31 b(metho)s(d)g(write)h(the)f │ │ │ │ (state)i(of)f(the)f(ob)5 b(ject,)33 b(\(the)f(size,)h(head)f(and)e │ │ │ │ (tail\))k(and)c(the)i(list)g(of)g(en)m(tries)g(to)227 │ │ │ │ 858 y(a)f(\014le.)227 1008 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(or)g Fh(fp)g Fi(is)g │ │ │ │ Fh(NULL)p Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ • IV iv : an IV object to hold the list vector. │ │ │ │ │ A correctly initialized and nontrivial Ideq object will have maxsize > 0. When the dequeue is │ │ │ │ │ empty, head = tail = -1. │ │ │ │ │ 1.2 Prototypes and descriptions of Ideq methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Ideq │ │ │ │ │ object. │ │ │ │ │ 1 │ │ │ │ │ - 2 Ideq : DRAFT December 20, 2018 │ │ │ │ │ + 2 Ideq : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Ideq * Ideq_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Ideq structure and then sets the default fields │ │ │ │ │ by a call to Ideq setDefaultFields(). │ │ │ │ │ 2. void Ideq_setDefaultFields ( Ideq *deq ) ; │ │ │ │ │ @@ -47,15 +47,15 @@ │ │ │ │ │ initializer. │ │ │ │ │ If the present size of the list (the number of entries between head and tail inclusive) is larger │ │ │ │ │ than newsize, the method returns -1. Otherwise, a new int vector is allocated and filled │ │ │ │ │ with the entries in the list. The old int vector is free’d, the new vector is spliced into the IV │ │ │ │ │ object, and the head, tail and maxsize fields are set. The method then returns 1. │ │ │ │ │ Error checking: If deq is NULL, or if newsize < 0, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - Ideq : DRAFT December 20, 2018 3 │ │ │ │ │ + Ideq : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. void Ideq_clear ( Ideq *deq ) ; │ │ │ │ │ This method clears the dequeue. The head and tail fields are set to -1. │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int Ideq_head ( Ideq *deq ) ; │ │ │ │ │ This method returns the value at the head of the list without removing that value. If head │ │ │ │ │ == -1 then -1 is returned. Note, the list may be nonempty and the first value may be -1, so │ │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ │ may signal an empty list or a terminating element. │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ 7. int Ideq_insertAtTail ( Ideq *deq, int val ) ; │ │ │ │ │ This method inserts a value val into the list at the tail of the list. If there is no room in │ │ │ │ │ the list, -1 is returned and the dequeue must be resized using the Ideq resize() method. │ │ │ │ │ Otherwise, the item is placed into the list and 1 is returned. │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ - 4 Ideq : DRAFT December 20, 2018 │ │ │ │ │ + 4 Ideq : DRAFT October 11, 2021 │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ 1. void Ideq_writeForHumanEye ( Ideq *deq ) ; │ │ │ │ │ This method write the state of the object, (the size, head and tail) and the list of entries to │ │ │ │ │ a file. │ │ │ │ │ Error checking: If deq or fp is NULL, an error message is printed and the program exits. │ │ │ │ │ Index │ │ │ │ │ Ideq clear(), 3 │ │ ├── ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ ├── InpMtx.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMTI10 CMMI10 CMMI7 │ │ │ │ %%+ CMSL10 CMBX10 CMR7 CMR6 CMTT8 CMCSC10 Helvetica │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o InpMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2093,22 +2093,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2282,88 +2282,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5194,37 +5183,37 @@ │ │ │ │ 62 50 62 54 11[86 1[62 2[77 84 1[106 3[42 1[88 4[80 8[56 │ │ │ │ 56 56 56 56 56 56 56 56 56 1[31 37 31 44[{}41 99.6264 │ │ │ │ /CMBX12 rf /Ff 135[62 3[62 3[62 1[62 32[62 3[62 73[{}6 │ │ │ │ 119.552 /CMTT12 rf /Fg 134[71 2[71 75 52 53 55 1[75 67 │ │ │ │ 75 112 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 │ │ │ │ 16[67 67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fh 132[48 │ │ │ │ 38[66 4[72 75 8[63 10[27 58[{}6 83.022 /CMBX10 rf /Fi │ │ │ │ -141[33 4[69 7[37 1[37 46 29[63 9[23 1[42 5[42 42 42 3[23 │ │ │ │ -44[{}12 83.022 /CMSL10 rf /Fj 148[35 27 23 20[39 11[54 │ │ │ │ -12[20 59[{}6 58.1154 /CMMI7 rf /Fk 134[41 47 1[40 10[43 │ │ │ │ -34 29 7[44 7[48 69 21[63 62 2[65 1[65 23 46[47 53 11[{}16 │ │ │ │ -83.022 /CMMI10 rf /Fl 137[38 45 28 34 35 1[42 42 47 1[21 │ │ │ │ -38 1[25 42 38 1[38 42 38 1[42 12[59 1[61 11[54 56 63 │ │ │ │ -2[62 6[25 12[30 45[{}25 83.022 /CMTI10 rf /Fm 201[0 32[65 │ │ │ │ -65 4[42 12[65 1[65{}6 83.022 /CMSY10 rf /Fn 133[44 44 │ │ │ │ -44 44 44 44 44 44 44 1[44 44 44 44 44 44 44 44 44 44 │ │ │ │ -44 44 44 44 44 44 1[44 1[44 1[44 1[44 44 44 44 44 44 │ │ │ │ -44 44 1[44 44 44 44 44 1[44 44 44 44 44 44 44 44 44 44 │ │ │ │ -2[44 44 1[44 1[44 44 44 1[44 44 44 44 44 44 44 44 44 │ │ │ │ -44 44 44 44 44 5[44 34[{}72 83.022 /CMTT10 rf /Fo 131[83 │ │ │ │ -42 37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 │ │ │ │ -23 46 42 25 37 46 37 46 42 9[85 1[62 60 46 61 1[57 65 │ │ │ │ -62 76 52 2[30 62 1[54 57 63 60 59 62 3[65 1[23 23 42 │ │ │ │ -42 42 42 42 42 42 42 42 42 42 23 28 23 65 42 32 32 23 │ │ │ │ -24[69 46 46 48 11[{}72 83.022 /CMR10 rf /Fp 135[123 2[129 │ │ │ │ -90 1[95 1[129 1[129 3[71 65 3[106 129 103 129 113 17[175 │ │ │ │ -1[220 3[87 14[65 58[{}17 206.559 /CMBX12 rf /Fq 135[106 │ │ │ │ -3[106 3[106 1[106 32[106 3[106 73[{}6 206.559 /CMTT12 │ │ │ │ -rf /Fr 139[75 1[79 1[108 7[108 2[88 3[94 29[140 17[97 │ │ │ │ -49[{}8 172.188 /CMBX12 rf end │ │ │ │ +139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 7[42 42 42 │ │ │ │ +3[23 44[{}12 83.022 /CMSL10 rf /Fj 148[35 27 23 20[39 │ │ │ │ +11[54 12[20 59[{}6 58.1154 /CMMI7 rf /Fk 134[41 47 1[40 │ │ │ │ +10[43 34 29 7[44 7[48 69 21[63 62 2[65 1[65 23 46[47 │ │ │ │ +53 11[{}16 83.022 /CMMI10 rf /Fl 137[38 45 28 34 35 1[42 │ │ │ │ +42 47 1[21 38 1[25 42 38 1[38 42 38 1[42 12[59 1[61 11[54 │ │ │ │ +56 63 2[62 6[25 12[30 45[{}25 83.022 /CMTI10 rf /Fm 201[0 │ │ │ │ +32[65 65 4[42 12[65 1[65{}6 83.022 /CMSY10 rf /Fn 133[44 │ │ │ │ +44 44 44 44 44 44 44 44 1[44 44 44 44 44 44 44 44 44 │ │ │ │ +44 44 44 44 44 44 44 1[44 1[44 1[44 1[44 44 44 44 44 │ │ │ │ +44 44 44 1[44 44 44 44 44 1[44 44 44 44 44 44 44 44 44 │ │ │ │ +44 2[44 44 1[44 1[44 44 44 1[44 44 44 44 44 44 44 44 │ │ │ │ +44 44 44 44 44 44 5[44 34[{}72 83.022 /CMTT10 rf /Fo │ │ │ │ +131[83 42 37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 │ │ │ │ +44 25 23 46 42 25 37 46 37 46 42 9[85 1[62 60 46 61 1[57 │ │ │ │ +65 62 76 52 2[30 62 1[54 57 63 60 59 62 3[65 1[23 23 │ │ │ │ +42 42 42 42 42 42 42 42 42 42 42 23 28 23 65 42 32 32 │ │ │ │ +23 24[69 46 46 48 11[{}72 83.022 /CMR10 rf /Fp 135[123 │ │ │ │ +2[129 90 1[95 1[129 1[129 3[71 65 3[106 129 103 129 113 │ │ │ │ +17[175 1[220 3[87 14[65 58[{}17 206.559 /CMBX12 rf /Fq │ │ │ │ +135[106 3[106 3[106 1[106 32[106 3[106 73[{}6 206.559 │ │ │ │ +/CMTT12 rf /Fr 139[75 1[79 1[108 7[108 2[88 3[94 29[140 │ │ │ │ +17[97 49[{}8 172.188 /CMBX12 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -5308,17 +5297,17 @@ │ │ │ │ Fn(InpMtx)p 1881 5140 V 28 w(changeStorageMode)o(\(\))p │ │ │ │ Fo(.)101 5308 y(5.)42 b(Create)18 b(an)h Fn(IVL)g Fo(ob)5 │ │ │ │ b(ject)19 b(that)h(con)n(tains)e(the)i(full)h(adjacency)d(of)i │ │ │ │ Fk(A)r Fo(+)r Fk(A)2384 5277 y Fj(T)2456 5308 y Fo(b)n(y)g(calling)e │ │ │ │ (the)i Fn(InpMtx)p 3222 5308 V 29 w(fullAdjacency\(\))208 │ │ │ │ 5407 y Fo(metho)r(d.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 125 100 1124 4 v │ │ │ │ -1289 w Fn(InpMtx)26 b Fi(:)37 b Fl(DRAFT)27 b Fi(Decem)n(b)r(er)g(20,)g │ │ │ │ -(2018)p 2776 100 V 101 390 a Fo(6.)42 b(Create)26 b(a)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 125 100 1157 4 v │ │ │ │ +1322 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Octob)r(er)e(11,)h │ │ │ │ +(2021)p 2743 100 V 101 390 a Fo(6.)42 b(Create)26 b(a)h │ │ │ │ Fn(Graph)f Fo(ob)5 b(ject)27 b(using)h(the)g Fn(Graph)p │ │ │ │ 1627 390 27 4 v 29 w(init2\(\))d Fo(metho)r(d)j(and)f(the)h │ │ │ │ Fn(IVL)f Fo(ob)5 b(ject)27 b(as)g(an)g(input)i(argumen)n(t.)0 │ │ │ │ 591 y(A)i(similar)e(functionalit)n(y)i(exists)f(for)f(creating)h(a)f │ │ │ │ Fn(Graph)g Fo(ob)5 b(ject)30 b(from)g(a)g(linear)f(com)n(bination)h(of) │ │ │ │ g(t)n(w)n(o)g Fn(InpMtx)e Fo(ob)5 b(jects)0 691 y(that)33 │ │ │ │ b(con)n(tains)e(the)i(matrices)e Fk(A)i Fo(and)f Fk(B)t │ │ │ │ @@ -5408,17 +5397,17 @@ │ │ │ │ (or)g(t)n(w)n(o)390 5168 y(double)28 b(precision)e(v)-5 │ │ │ │ b(alues.)301 5308 y Fh({)41 b Fn(INPMTX)p 659 5308 V │ │ │ │ 29 w(SORTED)25 b Fo(|)j(data)f(is)h(sorted)f(and)g(distinct)i(triples,) │ │ │ │ e(the)h(primary)f(k)n(ey)g(is)h(the)g(\014rst)f(co)r(ordinate,)g(the) │ │ │ │ 390 5407 y(secondary)f(k)n(ey)h(is)g(the)h(second)f(co)r(ordinate.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1124 4 v 1290 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)110 b Fi(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2737 100 V 1124 w Fo(3)301 390 y Fh({)41 b Fn(INPMTX)p │ │ │ │ +TeXDict begin 3 2 bop 83 100 1157 4 v 1323 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2704 100 V 1157 w Fo(3)301 390 y Fh({)41 b Fn(INPMTX)p │ │ │ │ 659 390 27 4 v 29 w(BY)p 776 390 V 31 w(VECTORS)32 b │ │ │ │ Fo(|)i(data)h(is)f(sorted)g(and)h(distinct)g(v)n(ectors.)57 │ │ │ │ b(All)35 b(en)n(tries)f(in)h(a)f(v)n(ector)f(share)h(some-)390 │ │ │ │ 490 y(thing)41 b(in)g(common.)75 b(F)-7 b(or)40 b(example,)k(when)d │ │ │ │ Fn(coordType)c Fo(is)j Fn(INPMTX)p 2688 490 V 29 w(BY)p │ │ │ │ 2805 490 V 31 w(ROWS)p Fo(,)f Fn(INPMTX)p 3338 490 V │ │ │ │ 29 w(BY)p 3455 490 V 30 w(COLUMNS)f Fo(or)390 589 y Fn(INPMTX)p │ │ │ │ @@ -5514,17 +5503,17 @@ │ │ │ │ (stored)g(as)g(unsorted)g(pairs)g(or)h(triples,)g(and)f │ │ │ │ Fn(0)h Fo(other-)208 5242 y(wise.)125 5407 y Fm(\017)41 │ │ │ │ b Fn(INPMTX)p 477 5407 V 28 w(IS)p 593 5407 V 31 w(SORTED\(mtx\))23 │ │ │ │ b Fo(returns)k Fn(1)g Fo(if)h(the)g(en)n(tries)f(are)g(stored)g(as)g │ │ │ │ (sorted)f(pairs)h(or)g(triples,)g(and)h Fn(0)f Fo(otherwise.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 125 100 1124 4 v │ │ │ │ -1289 w Fn(InpMtx)26 b Fi(:)37 b Fl(DRAFT)27 b Fi(Decem)n(b)r(er)g(20,)g │ │ │ │ -(2018)p 2776 100 V 125 390 a Fm(\017)41 b Fn(INPMTX)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 125 100 1157 4 v │ │ │ │ +1322 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Octob)r(er)e(11,)h │ │ │ │ +(2021)p 2743 100 V 125 390 a Fm(\017)41 b Fn(INPMTX)p │ │ │ │ 477 390 27 4 v 28 w(IS)p 593 390 V 31 w(BY)p 712 390 │ │ │ │ V 31 w(VECTORS\(mtx\))22 b Fo(returns)27 b Fn(1)g Fo(if)i(the)f(en)n │ │ │ │ (tries)e(are)h(stored)g(as)g(v)n(ectors,)f(and)h Fn(0)g │ │ │ │ Fo(otherwise.)125 560 y Fm(\017)41 b Fn(INPMTX)p 477 │ │ │ │ 560 V 28 w(IS)p 593 560 V 31 w(INDICES)p 932 560 V 28 │ │ │ │ w(ONLY\(mtx\))24 b Fo(returns)j Fn(1)h Fo(if)g(the)g(en)n(tries)f(are)f │ │ │ │ (not)i(stored,)f(and)g Fn(0)g Fo(otherwise.)125 730 y │ │ │ │ @@ -5590,17 +5579,17 @@ │ │ │ │ 5137 y Fm(\017)41 b Fn(INPMTX)p 659 5137 V 29 w(BY)p │ │ │ │ 776 5137 V 31 w(COLUMNS)24 b Fo({)k(storage)d(b)n(y)j(column)f(triples) │ │ │ │ 307 5272 y Fm(\017)41 b Fn(INPMTX)p 659 5272 V 29 w(BY)p │ │ │ │ 776 5272 V 31 w(CHEVRONS)24 b Fo({)j(storage)f(b)n(y)h(c)n(hevron)f │ │ │ │ (triples)307 5407 y Fm(\017)41 b Fn(INPMTX)p 659 5407 │ │ │ │ V 29 w(CUSTOM)25 b Fo({)i(custom)h(t)n(yp)r(e)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1124 4 v 1290 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)110 b Fi(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2737 100 V 1124 w Fo(5)208 390 y Fl(Err)l(or)j(che)l(cking:)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1157 4 v 1323 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2704 100 V 1157 w Fo(5)208 390 y Fl(Err)l(or)j(che)l(cking:)38 │ │ │ │ b Fo(If)28 b Fn(inpmtx)e Fo(is)h Fn(NULL)p Fo(,)f(an)i(error)d(message) │ │ │ │ h(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)101 │ │ │ │ 559 y(2.)42 b Fn(int)g(InpMtx_storageMo)o(de)37 b(\()43 │ │ │ │ b(InpMtx)e(*inpmtx)g(\))i(;)208 693 y Fo(This)27 b(metho)r(d)h(returns) │ │ │ │ f(the)h(storage)e(mo)r(de.)307 862 y Fm(\017)41 b Fn(INPMTX)p │ │ │ │ 659 862 27 4 v 29 w(NO)p 776 862 V 31 w(MODE)26 b Fo({)h(none)g(sp)r │ │ │ │ (eci\014ed)307 997 y Fm(\017)41 b Fn(INPMTX)p 659 997 │ │ │ │ @@ -5658,17 +5647,17 @@ │ │ │ │ (exits.)60 5139 y(10.)41 b Fn(int)h(*)h(InpMtx_ivec2)c(\()k(InpMtx)e │ │ │ │ (*inpmtx)g(\))i(;)208 5273 y Fo(This)27 b(metho)r(d)h(returns)f(the)h │ │ │ │ (base)f(address)f(of)i(the)g Fn(ivec2[])d Fo(v)n(ector.)208 │ │ │ │ 5407 y Fl(Err)l(or)30 b(che)l(cking:)38 b Fo(If)28 b │ │ │ │ Fn(inpmtx)e Fo(is)h Fn(NULL)p Fo(,)f(an)i(error)d(message)h(is)i(prin)n │ │ │ │ (ted)f(and)h(the)g(program)d(exits.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 125 100 1124 4 v │ │ │ │ -1289 w Fn(InpMtx)26 b Fi(:)37 b Fl(DRAFT)27 b Fi(Decem)n(b)r(er)g(20,)g │ │ │ │ -(2018)p 2776 100 V 60 390 a Fo(11.)41 b Fn(double)g(*)i(InpMtx_dvec)c │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 125 100 1157 4 v │ │ │ │ +1322 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Octob)r(er)e(11,)h │ │ │ │ +(2021)p 2743 100 V 60 390 a Fo(11.)41 b Fn(double)g(*)i(InpMtx_dvec)c │ │ │ │ (\()k(InpMtx)e(*inpmtx)g(\))i(;)208 524 y Fo(This)27 │ │ │ │ b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i(the)g │ │ │ │ Fn(dvec[])d Fo(v)n(ector.)208 658 y Fl(Err)l(or)30 b(che)l(cking:)38 │ │ │ │ b Fo(If)28 b Fn(inpmtx)e Fo(is)h Fn(NULL)p Fo(,)f(an)i(error)d(message) │ │ │ │ h(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)60 825 │ │ │ │ y(12.)41 b Fn(int)h(*)h(InpMtx_vecids)38 b(\()43 b(InpMtx)f(*inpmtx)e │ │ │ │ (\))j(;)208 959 y Fo(This)27 b(metho)r(d)h(returns)f(the)h(base)f │ │ │ │ @@ -5738,17 +5727,17 @@ │ │ │ │ 208 5174 y Fo(This)27 b(metho)r(d)h(sets)g(the)g(presen)n(t)f(n)n(um)n │ │ │ │ (b)r(er)g(of)g(en)n(tries)g(in)h(the)g(indices)g(and)f(en)n(tries)g(v)n │ │ │ │ (ectors.)208 5308 y Fl(Err)l(or)35 b(che)l(cking:)50 │ │ │ │ b Fo(If)33 b Fn(inpmtx)e Fo(is)i Fn(NULL)p Fo(,)f(or)g(if)h │ │ │ │ Fn(newnent)d Fk(<)i Fo(0,)i(an)f(error)e(message)h(is)h(prin)n(ted)g │ │ │ │ (and)g(the)g(program)208 5407 y(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1124 4 v 1290 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)110 b Fi(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2737 100 V 1124 w Fo(7)60 390 y(19.)41 b Fn(void)g(InpMtx_setMaxnvec)o │ │ │ │ +TeXDict begin 7 6 bop 83 100 1157 4 v 1323 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2704 100 V 1157 w Fo(7)60 390 y(19.)41 b Fn(void)g(InpMtx_setMaxnvec)o │ │ │ │ (tor)c(\()43 b(InpMtx)e(*inpmtx,)f(int)j(newmaxnvector)38 │ │ │ │ b(\))43 b(;)208 516 y Fo(This)27 b(metho)r(d)h(sets)g(the)g(maxin)n(um) │ │ │ │ f(n)n(um)n(b)r(er)g(of)h(v)n(ectors.)208 641 y Fl(Err)l(or)38 │ │ │ │ b(che)l(cking:)58 b Fo(If)38 b Fn(inpmtx)c Fo(is)j Fn(NULL)p │ │ │ │ Fo(,)f(or)g(if)h Fn(newmaxnvector)d Fk(<)k Fo(0,)h(an)e(error)e │ │ │ │ (message)h(is)h(prin)n(ted)g(and)g(the)208 741 y(program)25 │ │ │ │ b(exits.)60 892 y(20.)41 b Fn(void)g(InpMtx_setNvector)c(\()43 │ │ │ │ @@ -5833,17 +5822,17 @@ │ │ │ │ b Fo(and)23 b Fn(InpMtx)p 2609 5083 V 29 w(convertToVectors\()o(\))p │ │ │ │ Fo(,)18 b(as)23 b(appropri-)208 5182 y(ate.)208 5308 │ │ │ │ y Fl(Err)l(or)30 b(che)l(cking:)41 b Fo(If)28 b Fn(inpmtx)e │ │ │ │ Fo(is)j Fn(NULL)d Fo(or)i Fn(newMode)d Fo(is)k(in)n(v)-5 │ │ │ │ b(alid,)28 b(an)g(error)f(message)g(is)h(prin)n(ted)g(and)g(the)h │ │ │ │ (program)208 5407 y(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 125 100 1124 4 v │ │ │ │ -1289 w Fn(InpMtx)26 b Fi(:)37 b Fl(DRAFT)27 b Fi(Decem)n(b)r(er)g(20,)g │ │ │ │ -(2018)p 2776 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 125 100 1157 4 v │ │ │ │ +1322 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Octob)r(er)e(11,)h │ │ │ │ +(2021)p 2743 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ 570 y Fo(1.)k Fn(void)f(InpMtx_inputEntry)c(\()43 b(InpMtx)e(*inpmtx,)g │ │ │ │ (int)h(row,)g(int)g(col)h(\))g(;)208 669 y(void)e(InpMtx_inputRealE)o │ │ │ │ (ntr)o(y)c(\()44 b(InpMtx)d(*inpmtx,)f(int)i(row,)g(int)h(col,)e │ │ │ │ (double)h(value)f(\))i(;)208 769 y(void)e(InpMtx_inputCompl)o(exE)o(nt) │ │ │ │ o(ry)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h(row,)g(int)g(col,)1602 │ │ │ │ 869 y(double)f(real,)h(double)f(imag)h(\))h(;)208 1003 │ │ │ │ y Fo(This)29 b(metho)r(d)g(places)g(a)f(single)h(en)n(try)f(in)n(to)h │ │ │ │ @@ -5932,17 +5921,17 @@ │ │ │ │ (colind[])f(\))i(;)208 5208 y(void)e(InpMtx_inputRealM)o(atr)o(ix)c(\() │ │ │ │ 43 b(InpMtx)e(*inpmtx,)g(int)h(nrow,)f(int)i(col,)338 │ │ │ │ 5308 y(int)g(rowstride,)c(int)j(colstride,)e(int)i(rowind[],)e(int)i │ │ │ │ (colind[],)e(double)h(mtxent[])g(\))i(;)208 5407 y(void)e │ │ │ │ (InpMtx_inputCompl)o(exM)o(at)o(rix)c(\()43 b(InpMtx)e(*inpmtx,)f(int)j │ │ │ │ (nrow,)e(int)h(col,)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 83 100 1124 4 v 1290 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)110 b Fi(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2737 100 V 1124 w Fo(9)338 390 y Fn(int)43 b(rowstride,)c(int)j │ │ │ │ +TeXDict begin 9 8 bop 83 100 1157 4 v 1323 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2704 100 V 1157 w Fo(9)338 390 y Fn(int)43 b(rowstride,)c(int)j │ │ │ │ (colstride,)e(int)i(rowind[],)e(int)i(colind[],)e(double)h(mtxent[])g │ │ │ │ (\))i(;)208 526 y Fo(This)25 b(metho)r(d)h(places)f(a)g(dense)g │ │ │ │ (submatrix)g(in)n(to)g(the)h(matrix)f(ob)5 b(ject.)36 │ │ │ │ b(The)25 b(co)r(ordinate)g(t)n(yp)r(e)g(of)h(the)g(ob)5 │ │ │ │ b(ject)25 b(m)n(ust)208 625 y(b)r(e)h Fn(INPMTX)p 588 │ │ │ │ 625 27 4 v 28 w(BY)p 704 625 V 31 w(ROWS)p Fo(,)e Fn(INPMTX)p │ │ │ │ 1222 625 V 29 w(BY)p 1339 625 V 31 w(COLUMNS)e Fo(or)j │ │ │ │ @@ -6040,23 +6029,23 @@ │ │ │ │ (map)f(a)g(part)g(of)h(a)f(distributed)h(matrix)f(b)r(et)n(w)n(een)h │ │ │ │ (the)g(global)e(and)i(lo)r(cal)f(n)n(um)n(b)r(erings.)208 │ │ │ │ 5407 y Fl(Err)l(or)e(che)l(cking:)37 b Fo(If)23 b Fn(A)p │ │ │ │ Fo(,)f Fn(rowmapIV)e Fo(or)i Fn(colmapIV)d Fo(is)k Fn(NULL)p │ │ │ │ Fo(,)e(an)h(error)f(message)g(is)i(prin)n(ted)g(and)f(the)h(program)e │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 166 100 1104 4 │ │ │ │ -v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 101 390 a Fo(4.)42 b Fn(void)f(InpMtx_permute) │ │ │ │ -d(\()43 b(InpMtx)f(*inpmtx,)e(int)i(rowOldToNew[],)c(int)k │ │ │ │ -(colOldToNew[])d(\))k(;)208 528 y Fo(This)28 b(metho)r(d)g(p)r(erm)n │ │ │ │ -(utes)g(the)h(ro)n(ws)d(and)i(or)g(columns)g(of)g(the)g(matrix.)38 │ │ │ │ -b(If)29 b Fn(rowOldToNew)23 b Fo(and)28 b Fn(colOldToNew)c │ │ │ │ -Fo(are)208 628 y(b)r(oth)29 b Fn(NULL)p Fo(,)e(or)h(if)h(there)g(are)f │ │ │ │ -(no)g(en)n(tries)g(in)i(the)f(matrix,)f(the)i(metho)r(d)f(returns.)40 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 166 100 1136 4 │ │ │ │ +v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 101 390 a Fo(4.)42 b Fn(void)f(InpMtx_permute)d(\() │ │ │ │ +43 b(InpMtx)f(*inpmtx,)e(int)i(rowOldToNew[],)c(int)k(colOldToNew[])d │ │ │ │ +(\))k(;)208 528 y Fo(This)28 b(metho)r(d)g(p)r(erm)n(utes)g(the)h(ro)n │ │ │ │ +(ws)d(and)i(or)g(columns)g(of)g(the)g(matrix.)38 b(If)29 │ │ │ │ +b Fn(rowOldToNew)23 b Fo(and)28 b Fn(colOldToNew)c Fo(are)208 │ │ │ │ +628 y(b)r(oth)29 b Fn(NULL)p Fo(,)e(or)h(if)h(there)g(are)f(no)g(en)n │ │ │ │ +(tries)g(in)i(the)f(matrix,)f(the)i(metho)r(d)f(returns.)40 │ │ │ │ b(Note,)29 b(either)g Fn(rowOldToNew)24 b Fo(or)208 727 │ │ │ │ y Fn(colOldToNew)i Fo(can)k(b)r(e)h Fn(NULL)p Fo(.)e(If)i │ │ │ │ Fn(coordType)40 b(==)i(INPMTX)p 2138 727 27 4 v 29 w(BY)p │ │ │ │ 2255 727 V 31 w(CHEVRONS)p Fo(,)27 b(then)k(the)g(co)r(ordinates)f(are) │ │ │ │ f(c)n(hanged)208 827 y(to)d(ro)n(w)g(co)r(ordinates.)35 │ │ │ │ b(The)27 b(co)r(ordinates)e(are)h(then)h(mapp)r(ed)g(to)g(their)g(new)f │ │ │ │ (v)-5 b(alues.)37 b(The)26 b Fn(storageMode)d Fo(is)j(set)h(to)208 │ │ │ │ @@ -6152,17 +6141,17 @@ │ │ │ │ 5208 V 29 w(SORTED)f Fo(or)i Fn(INPMTX)p 3713 5208 V │ │ │ │ 29 w(BY)p 3830 5208 V 30 w(VECTORS)p Fo(,)208 5308 y(or)i(if)j │ │ │ │ Fn(inputMode)18 b Fo(is)j(not)h Fn(SPOOLES)p 1320 5308 │ │ │ │ V 28 w(REAL)f Fo(or)f Fn(SPOOLES)p 1948 5308 V 29 w(COMPLEX)p │ │ │ │ Fo(,)f(an)i(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program)208 │ │ │ │ 5407 y(exits.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(11)101 390 y(2.)42 b Fn(void)f(InpMtx_nonsym_mmm)o │ │ │ │ +TeXDict begin 11 10 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(11)101 390 y(2.)42 b Fn(void)f(InpMtx_nonsym_mmm)o │ │ │ │ (Vec)o(to)o(r)d(\()43 b(InpMtx)e(*A,)h(DenseMtx)e(*Y,)j(double)e │ │ │ │ (alpha[],)f(DenseMtx)g(*X)j(\))g(;)208 490 y(void)e(InpMtx_sym_mmmVec)o │ │ │ │ (tor)c(\()43 b(InpMtx)e(*A,)h(DenseMtx)f(*Y,)h(double)f(alpha[],)f │ │ │ │ (DenseMtx)h(*X)h(\))i(;)208 589 y(void)d(InpMtx_herm_mmmVe)o(cto)o(r)c │ │ │ │ (\()44 b(InpMtx)d(*A,)h(DenseMtx)e(*Y,)j(double)e(alpha[],)f(DenseMtx)g │ │ │ │ (*X)j(\))g(;)208 689 y(void)e(InpMtx_nonsym_mmm)o(Vec)o(to)o(r_T)c(\() │ │ │ │ 43 b(InpMtx)e(*A,)h(DenseMtx)f(*Y,)h(double)f(alpha[],)f(DenseMtx)h(*X) │ │ │ │ @@ -6264,30 +6253,30 @@ │ │ │ │ b(dimensions)f(and)g(strides)g(for)g Fn(X)1889 5220 y │ │ │ │ Fo(-13)98 b(en)n(tries)27 b(of)h Fn(X)f Fo(are)f Fn(NULL)1889 │ │ │ │ 5319 y Fo(-14)98 b(t)n(yp)r(es)28 b(of)f Fn(A)p Fo(,)h │ │ │ │ Fn(X)f Fo(and)g Fn(Y)g Fo(are)g(not)h(iden)n(tical)1889 │ │ │ │ 5419 y(-15)98 b(n)n(um)n(b)r(er)27 b(of)h(columns)f(in)h │ │ │ │ Fn(X)f Fo(and)h Fn(Y)f Fo(are)g(not)g(equal)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 166 100 1104 │ │ │ │ -4 v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 101 390 a Fo(4.)42 b Fn(int)g │ │ │ │ -(InpMtx_nonsym_gm)o(vm)37 b(\()43 b(InpMtx)e(*A,)i(double)e(beta[],)f │ │ │ │ -(int)j(ny,)f(double)f(y[],)1297 490 y(double)g(alpha[],)g(int)h(nx,)g │ │ │ │ -(double)f(x[])i(\))g(;)208 589 y(int)f(InpMtx_sym_gmvm)37 │ │ │ │ -b(\()43 b(InpMtx)f(*A,)g(double)f(beta[],)g(int)h(ny,)g(double)f(y[],) │ │ │ │ -1166 689 y(double)h(alpha[],)e(int)i(nx,)h(double)e(x[])h(\))h(;)208 │ │ │ │ -789 y(int)f(InpMtx_herm_gmvm)37 b(\()43 b(InpMtx)e(*A,)h(double)g │ │ │ │ -(beta[],)e(int)j(ny,)f(double)f(y[],)1210 888 y(double)g(alpha[],)f │ │ │ │ -(int)j(nx,)f(double)f(x[])i(\))g(;)208 988 y(int)f(InpMtx_nonsym_gm)o │ │ │ │ -(vm)o(_T)37 b(\()43 b(InpMtx)e(*A,)i(double)e(beta[],)g(int)h(ny,)g │ │ │ │ -(double)f(y[],)1384 1088 y(double)g(alpha[],)g(int)h(nx,)g(double)g │ │ │ │ -(x[])g(\))h(;)208 1187 y(int)f(InpMtx_nonsym_gm)o(vm)o(_H)37 │ │ │ │ -b(\()43 b(InpMtx)e(*A,)i(double)e(beta[],)g(int)h(ny,)g(double)f(y[],) │ │ │ │ -1384 1287 y(double)g(alpha[],)g(int)h(nx,)g(double)g(x[])g(\))h(;)208 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 166 100 1136 │ │ │ │ +4 v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 101 390 a Fo(4.)42 b Fn(int)g(InpMtx_nonsym_gm)o(vm) │ │ │ │ +37 b(\()43 b(InpMtx)e(*A,)i(double)e(beta[],)f(int)j(ny,)f(double)f │ │ │ │ +(y[],)1297 490 y(double)g(alpha[],)g(int)h(nx,)g(double)f(x[])i(\))g(;) │ │ │ │ +208 589 y(int)f(InpMtx_sym_gmvm)37 b(\()43 b(InpMtx)f(*A,)g(double)f │ │ │ │ +(beta[],)g(int)h(ny,)g(double)f(y[],)1166 689 y(double)h(alpha[],)e │ │ │ │ +(int)i(nx,)h(double)e(x[])h(\))h(;)208 789 y(int)f(InpMtx_herm_gmvm)37 │ │ │ │ +b(\()43 b(InpMtx)e(*A,)h(double)g(beta[],)e(int)j(ny,)f(double)f(y[],) │ │ │ │ +1210 888 y(double)g(alpha[],)f(int)j(nx,)f(double)f(x[])i(\))g(;)208 │ │ │ │ +988 y(int)f(InpMtx_nonsym_gm)o(vm)o(_T)37 b(\()43 b(InpMtx)e(*A,)i │ │ │ │ +(double)e(beta[],)g(int)h(ny,)g(double)f(y[],)1384 1088 │ │ │ │ +y(double)g(alpha[],)g(int)h(nx,)g(double)g(x[])g(\))h(;)208 │ │ │ │ +1187 y(int)f(InpMtx_nonsym_gm)o(vm)o(_H)37 b(\()43 b(InpMtx)e(*A,)i │ │ │ │ +(double)e(beta[],)g(int)h(ny,)g(double)f(y[],)1384 1287 │ │ │ │ +y(double)g(alpha[],)g(int)h(nx,)g(double)g(x[])g(\))h(;)208 │ │ │ │ 1414 y Fo(These)27 b(\014v)n(e)g(metho)r(ds)h(p)r(erform)f(the)h(follo) │ │ │ │ n(wing)f(computations.)608 1582 y Fn(InpMtx)p 877 1582 │ │ │ │ 27 4 v 28 w(nonsym)p 1169 1582 V 29 w(gmvm\(\))172 b │ │ │ │ Fk(y)26 b Fo(:=)d Fk(\014)t(y)e Fo(+)d Fk(\013Ax)164 │ │ │ │ b Fo(nonsymmetric)99 b(real)27 b(or)f(complex)608 1681 │ │ │ │ y Fn(InpMtx)p 877 1681 V 28 w(sym)p 1037 1681 V 31 w(gmvm\(\))302 │ │ │ │ b Fk(y)26 b Fo(:=)d Fk(\014)t(y)e Fo(+)d Fk(\013Ax)164 │ │ │ │ @@ -6366,17 +6355,17 @@ │ │ │ │ (of)h Fk(A)3522 5150 y Fj(T)3575 5180 y Fk(A)p Fo(,)h(where)208 │ │ │ │ 5280 y Fn(inpmtxA)c Fo(con)n(tains)j(the)h(en)n(tries)f(in)h │ │ │ │ Fk(A)p Fo(.)208 5407 y Fl(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fo(If)28 b Fn(inpmtxA)d Fo(is)j Fn(NULL)p Fo(,)e(an)h(error)f │ │ │ │ (message)g(is)h(prin)n(ted)h(and)f(the)h(program)e(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ +TeXDict begin 13 12 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ b(extraction)e(metho)s(d)101 569 y Fo(1.)42 b Fn(int)g │ │ │ │ (InpMtx_initFromS)o(ub)o(mat)o(ri)o(x)c(\()43 b(InpMtx)e(*B,)h(InpMtx)f │ │ │ │ (*A,)i(IV)f(*BrowsIV,)731 669 y(IV)g(*BcolsIV,)e(int)j(symmetryflag,)38 │ │ │ │ b(int)k(msglvl,)f(FILE)h(*msgFile)e(\))j(;)208 802 y │ │ │ │ Fo(This)27 b(metho)r(d)g(\014lls)h Fn(B)e Fo(with)i(the)g(submatrix)e │ │ │ │ (formed)h(from)g(the)g(ro)n(ws)f(and)h(columns)g(of)g │ │ │ │ Fn(A)g Fo(found)g(in)h Fn(BrowsIV)c Fo(and)208 902 y │ │ │ │ @@ -6464,18 +6453,18 @@ │ │ │ │ Fo(to)29 b Fk(a)2795 5320 y Fj(j;i)2869 5308 y Fo(.)43 │ │ │ │ b(The)29 b(second)g(metho)r(d)g(mo)n(v)n(es)208 5407 │ │ │ │ y Fk(a)252 5419 y Fj(i;j)353 5407 y Fo(for)22 b Fk(i)h(>)g(j)28 │ │ │ │ b Fo(to)23 b Fk(a)818 5419 y Fj(j;i)892 5407 y Fo(,)i(\(If)f(the)f │ │ │ │ (matrix)g(is)g(Hermitian,)h(the)f(sign)g(of)g(the)h(imaginary)d(part)i │ │ │ │ (of)g(an)g(en)n(try)f(is)h(dealt)h(with)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 166 100 1104 │ │ │ │ -4 v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 208 390 a Fo(in)g(the)g(correct)f(fashion.\)) │ │ │ │ -36 b(In)27 b(other)g(w)n(ords,)e(using)i(these)g(metho)r(ds)g(will)g │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 166 100 1136 │ │ │ │ +4 v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 208 390 a Fo(in)g(the)g(correct)f(fashion.\))36 │ │ │ │ +b(In)27 b(other)g(w)n(ords,)e(using)i(these)g(metho)r(ds)g(will)g │ │ │ │ (restore)f(the)h(lo)n(w)n(er)f(or)g(upp)r(er)h(triangular)208 │ │ │ │ 490 y(structure)g(after)g(a)g(p)r(erm)n(utation.)208 │ │ │ │ 641 y Fl(Err)l(or)38 b(che)l(cking:)56 b Fo(If)37 b Fn(inpmtx)d │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)h Fn(coordType)32 b │ │ │ │ Fo(is)37 b(in)n(v)-5 b(alid,)38 b(an)e(error)f(message)g(is)h(prin)n │ │ │ │ (ted)g(and)h(the)208 741 y(program)25 b(exits.)101 945 │ │ │ │ y(5.)42 b Fn(void)f(InpMtx_log10profi)o(le)c(\()43 b(InpMtx)e(*inpmtx,) │ │ │ │ @@ -6567,17 +6556,17 @@ │ │ │ │ 5020 y(-5)98 b Fn(nrow)26 b Fo(or)h Fn(ncol)f Fo(negativ)n(e)1985 │ │ │ │ 5120 y(-6)98 b Fn(symflag)25 b Fo(is)j(in)n(v)-5 b(alid)1985 │ │ │ │ 5220 y(-7)98 b Fn(\(symflag,inputMod)o(e\))21 b Fo(in)n(v)-5 │ │ │ │ b(alid)1985 5319 y(-8)98 b Fn(\(symflag,nrow,nco)o(l\))21 │ │ │ │ b Fo(in)n(v)-5 b(alid)1985 5419 y(-9)98 b Fn(nitem)26 │ │ │ │ b Fo(negativ)n(e)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ +TeXDict begin 15 14 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ b(metho)s(ds)0 568 y Fo(There)k(are)f(the)i(usual)f(eigh)n(t)g(IO)g │ │ │ │ (routines.)78 b(The)42 b(\014le)f(structure)g(of)g(a)g │ │ │ │ Fn(InpMtx)e Fo(ob)5 b(ject)42 b(is)f(simple:)65 b(The)41 │ │ │ │ b(\014rst)g(en-)0 667 y(tries)i(in)h(the)g(\014le)g(are)e │ │ │ │ Fn(coordType)p Fo(,)i Fn(storageMode)p Fo(,)f Fn(inputMode)p │ │ │ │ Fo(,)h Fn(nent)e Fo(and)h Fn(nvector)p Fo(.)82 b(If)44 │ │ │ │ b Fn(nent)e(>)h(0)p Fo(,)48 b(then)c(the)0 767 y Fn(ivec1IV)33 │ │ │ │ @@ -6674,20 +6663,20 @@ │ │ │ │ y(the)h(storage)d(mo)r(de)j(is)f(b)n(y)h(triples,)f(triples)g(are)g │ │ │ │ (written)h(out.)37 b(The)27 b(v)-5 b(alue)28 b Fn(1)f │ │ │ │ Fo(is)h(returned.)208 5407 y Fl(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fo(If)28 b Fn(inpmtx)e Fo(or)g Fn(fp)h Fo(are)g Fn(NULL)p │ │ │ │ Fo(,)f(an)h(error)f(message)g(is)h(prin)n(ted)h(and)f(zero)g(is)g │ │ │ │ (returned.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fo(16)p 166 100 1104 │ │ │ │ -4 v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 101 390 a Fo(8.)42 b Fn(int)g │ │ │ │ -(InpMtx_writeStat)o(s)37 b(\()44 b(InpMtx)d(*inpmtx,)f(FILE)i(*fp)g(\)) │ │ │ │ -h(;)208 520 y Fo(This)27 b(metho)r(d)h(writes)f(the)h(statistics)g(ab)r │ │ │ │ -(out)f(the)h(ob)5 b(ject)28 b(to)f(a)g(\014le.)37 b(h)n(uman.)g(The)28 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 166 100 1136 │ │ │ │ +4 v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 101 390 a Fo(8.)42 b Fn(int)g(InpMtx_writeStat)o(s) │ │ │ │ +37 b(\()44 b(InpMtx)d(*inpmtx,)f(FILE)i(*fp)g(\))h(;)208 │ │ │ │ +520 y Fo(This)27 b(metho)r(d)h(writes)f(the)h(statistics)g(ab)r(out)f │ │ │ │ +(the)h(ob)5 b(ject)28 b(to)f(a)g(\014le.)37 b(h)n(uman.)g(The)28 │ │ │ │ b(v)-5 b(alue)27 b Fn(1)g Fo(is)h(returned.)208 649 y │ │ │ │ Fl(Err)l(or)i(che)l(cking:)38 b Fo(If)28 b Fn(inpmtx)e │ │ │ │ Fo(or)g Fn(fp)h Fo(are)g Fn(NULL)p Fo(,)f(an)h(error)f(message)g(is)h │ │ │ │ (prin)n(ted)h(and)f(zero)g(is)g(returned.)101 808 y(9.)42 │ │ │ │ b Fn(void)f(InpMtx_writeForMa)o(tla)o(b)c(\()44 b(InpMtx)d(*mtx,)g │ │ │ │ (char)h(*mtxname,)e(FILE)i(*fp)g(\))h(;)208 937 y Fo(This)27 │ │ │ │ b(metho)r(d)h(writes)f(out)h(a)f Fn(InpMtx)e Fo(ob)5 │ │ │ │ @@ -6764,17 +6753,17 @@ │ │ │ │ b(structure)h(of)h Fk(A)19 b Fo(+)f Fk(A)1267 5238 y │ │ │ │ Fj(T)1319 5268 y Fo(,)28 b(diagonal)e(edges)h(included.)p │ │ │ │ 0 5330 1560 4 v 92 5384 a Fc(1)127 5407 y Fb(http://math.nist.gov/mc)q │ │ │ │ (sd/S)q(taf)q(f/KR)q(emi)q(ngto)q(n/h)q(arwe)q(ll)p 1890 │ │ │ │ 5407 22 4 v 32 w(io/harwell)p 2271 5407 V 28 w(io.html)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(17)307 390 y Fm(\017)41 b Fo(The)19 │ │ │ │ +TeXDict begin 17 16 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(17)307 390 y Fm(\017)41 b Fo(The)19 │ │ │ │ b Fn(msglvl)e Fo(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ (output)h(|)f(taking)f Fn(msglvl)41 b(>=)i(3)19 b Fo(means)f(the)h │ │ │ │ Fn(InpMtx)390 490 y Fo(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h │ │ │ │ (message)e(\014le.)307 627 y Fm(\017)41 b Fo(The)32 b │ │ │ │ Fn(msgFile)c Fo(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fn(msgFile)d Fo(is)i Fn(stdout)p Fo(,)f(then)i(the)g(message)390 │ │ │ │ 727 y(\014le)c(is)f Fl(stdout)p Fo(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ @@ -6870,19 +6859,19 @@ │ │ │ │ b(driv)n(er)f(program)f(reads)h(in)i Fn(InpMtx)d Fo(ob)5 │ │ │ │ b(ject)23 b(from)g(the)g(\014le)h Fn(inFile)d Fo(that)i(holds)g(a)g │ │ │ │ (matrix)g Fk(A)p Fo(.)36 b(It)23 b(then)h(creates)208 │ │ │ │ 5407 y(a)j Fn(Graph)e Fo(ob)5 b(ject)28 b(for)f Fk(B)g │ │ │ │ Fo(=)c Fk(A)1141 5377 y Fj(T)1193 5407 y Fk(A)28 b Fo(and)g(writes)f │ │ │ │ (it)h(to)f(the)h(\014le)g Fn(outFile)p Fo(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fo(18)p 166 100 1104 │ │ │ │ -4 v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 307 390 a Fm(\017)41 b Fo(The)19 │ │ │ │ -b Fn(msglvl)e Fo(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ -(output)h(|)f(taking)f Fn(msglvl)41 b(>=)i(3)19 b Fo(means)f(the)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 166 100 1136 │ │ │ │ +4 v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 307 390 a Fm(\017)41 b Fo(The)19 b │ │ │ │ +Fn(msglvl)e Fo(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output)h │ │ │ │ +(|)f(taking)f Fn(msglvl)41 b(>=)i(3)19 b Fo(means)f(the)h │ │ │ │ Fn(InpMtx)390 490 y Fo(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h │ │ │ │ (message)e(\014le.)307 618 y Fm(\017)41 b Fo(The)32 b │ │ │ │ Fn(msgFile)c Fo(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fn(msgFile)d Fo(is)i Fn(stdout)p Fo(,)f(then)i(the)g(message)390 │ │ │ │ 718 y(\014le)c(is)f Fl(stdout)p Fo(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fl(app)l(end)g Fo(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ (y)g(output)h(data.)307 846 y Fm(\017)41 b Fo(The)27 │ │ │ │ @@ -6973,17 +6962,17 @@ │ │ │ │ 5308 y Fo(This)22 b(driv)n(er)f(program)g(w)n(as)g(used)i(to)f │ │ │ │ (generate)g(a)g Fn(type)42 b(1)22 b(Graph)e Fo(ob)5 b(ject)23 │ │ │ │ b(\(w)n(eigh)n(ted)f(v)n(ertices,)g(unit)i(w)n(eigh)n(t)e(edges\))208 │ │ │ │ 5407 y(from)27 b(a)g(\014le)h(that)g(con)n(tained)f(the)h(adjacency)e │ │ │ │ (structure)h(of)h(a)f(matrix)g(in)h(the)g(follo)n(wing)f(form.)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(19)469 390 y Fn(nvtx)42 b(nadj)469 │ │ │ │ +TeXDict begin 19 18 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(19)469 390 y Fn(nvtx)42 b(nadj)469 │ │ │ │ 490 y(vwghts[nvtx])469 589 y(offsets[nvtx+1])469 689 │ │ │ │ y(indices[nadj])208 878 y Fo(There)33 b(are)g Fn(nvtx)f │ │ │ │ Fo(v)n(ertices)h(in)h(the)g(graph)f(and)g(the)i(adjacency)e(v)n(ector)f │ │ │ │ (has)i Fn(nadj)e Fo(en)n(tries.)55 b(It)34 b(w)n(as)f(not)h(kno)n(wn) │ │ │ │ 208 978 y(whether)27 b(the)h(adjacency)f(structure)h(con)n(tained)f │ │ │ │ Fn(\(v,v\))e Fo(en)n(tries)i(or)g(if)i(it)f(w)n(as)f(only)g(the)h(upp)r │ │ │ │ (er)g(or)f(lo)n(w)n(er)f(triangle.)208 1078 y(Our)k Fn(Graph)f │ │ │ │ @@ -7073,24 +7062,24 @@ │ │ │ │ Fo(is)j(the)g(\014le)g(that)h(holds)f(the)g Fn(Coords)e │ │ │ │ Fo(ob)5 b(ject)32 b(|)g(m)n(ust)g(b)r(e)h(of)f(the)h(form)e │ │ │ │ Fn(*.coordsf)e Fo(or)390 5278 y Fn(*.coordsb)p Fo(.)307 │ │ │ │ 5407 y Fm(\017)41 b Fo(The)28 b Fn(coordType)c Fo(determines)j(the)h │ │ │ │ (co)r(ordinate)f(t)n(yp)r(e)g(for)g(the)h Fn(InpMtx)e │ │ │ │ Fo(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fo(20)p 166 100 1104 │ │ │ │ -4 v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 456 390 a Fh({)41 b Fn(1)28 │ │ │ │ -b Fo(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(ro)n(ws)456 │ │ │ │ -516 y Fh({)41 b Fn(2)28 b Fo(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g │ │ │ │ -(columns)456 642 y Fh({)41 b Fn(3)28 b Fo(|)f(storage)f(of)i(en)n │ │ │ │ -(tries)f(b)n(y)g(c)n(hevrons)307 795 y Fm(\017)41 b Fo(The)28 │ │ │ │ -b Fn(seed)f Fo(parameter)f(is)i(used)g(as)f(a)h(random)f(n)n(um)n(b)r │ │ │ │ -(er)h(seed)g(to)f(determine)i(the)f(ro)n(w)f(and)g(column)h(p)r(erm)n │ │ │ │ -(u-)390 895 y(tations)f(for)g(the)h(matrix-v)n(ector)e(m)n(ultiply)-7 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fo(20)p 166 100 1136 │ │ │ │ +4 v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 456 390 a Fh({)41 b Fn(1)28 b Fo(|)f(storage)f(of)i │ │ │ │ +(en)n(tries)f(b)n(y)g(ro)n(ws)456 516 y Fh({)41 b Fn(2)28 │ │ │ │ +b Fo(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(columns)456 │ │ │ │ +642 y Fh({)41 b Fn(3)28 b Fo(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(c) │ │ │ │ +n(hevrons)307 795 y Fm(\017)41 b Fo(The)28 b Fn(seed)f │ │ │ │ +Fo(parameter)f(is)i(used)g(as)f(a)h(random)f(n)n(um)n(b)r(er)h(seed)g │ │ │ │ +(to)f(determine)i(the)f(ro)n(w)f(and)g(column)h(p)r(erm)n(u-)390 │ │ │ │ +895 y(tations)f(for)g(the)h(matrix-v)n(ector)e(m)n(ultiply)-7 │ │ │ │ b(.)307 1047 y Fm(\017)41 b Fo(The)23 b Fn(outInpMtxFile)18 │ │ │ │ b Fo(parameter)j(is)i(the)g(output)h(\014le)f(for)f(the)h │ │ │ │ Fn(InpMtx)e Fo(ob)5 b(ject.)35 b(If)23 b Fn(outInpMtxFile)18 │ │ │ │ b Fo(is)23 b Fn(none)390 1147 y Fo(then)j(the)g Fn(InpMtx)e │ │ │ │ Fo(ob)5 b(ject)25 b(is)h(not)f(written)h(to)g(a)f(\014le.)36 │ │ │ │ b(Otherwise,)26 b(the)g Fn(InpMtx)p 2928 1147 27 4 v │ │ │ │ 29 w(writeToFile\(\))20 b Fo(metho)r(d)26 b(is)390 1246 │ │ │ │ @@ -7150,17 +7139,17 @@ │ │ │ │ 4969 y(...)556 5069 y(xnpts)42 b(ynpts)f(])i(;)208 5308 │ │ │ │ y Fo(whic)n(h)24 b(can)h(b)r(e)g(used)g(to)g(generate)e(the)i(follo)n │ │ │ │ (wing)f(matlab)h(plot.)36 b(An)25 b(example)f(is)h(giv)n(en)f(b)r(elo)n │ │ │ │ (w)h(for)f(the)h Fa(bcsstk23)208 5407 y Fo(matrix,)i(where)g │ │ │ │ Fn(npts)42 b(=)h(200)p Fo(,)26 b Fn(tausmall)41 b(=)i(1.e-10)25 │ │ │ │ b Fo(and)i Fn(taubig)42 b(=)h(1.e100)p Fo(.)p eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(21)1154 1747 y @beginspecial 47 │ │ │ │ +TeXDict begin 21 20 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(21)1154 1747 y @beginspecial 47 │ │ │ │ @llx 197 @lly 550 @urx 604 @ury 2160 @rwi 1728 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../InpMtx/doc/BCSSTK23.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%Creator: MATLAB, The Mathworks, Inc. │ │ │ │ %%Title: profile.eps │ │ │ │ %%CreationDate: 03/13/97 09:20:11 │ │ │ │ %%DocumentNeededFonts: Helvetica │ │ │ │ @@ -7565,23 +7554,23 @@ │ │ │ │ Fn(InpMtx)c Fo(ob)5 b(ject)43 b(that)g(holds)g(the)g(matrix.)83 │ │ │ │ b(It)390 5308 y(m)n(ust)40 b(b)r(e)f(of)h(the)f(form)g │ │ │ │ Fn(*.inpmtxf)d Fo(or)j Fn(*.inpmtxb)p Fo(.)68 b(The)39 │ │ │ │ b Fn(InpMtx)e Fo(ob)5 b(ject)39 b(is)h(written)f(to)g(the)h(\014le)g │ │ │ │ (via)390 5407 y(the)28 b Fn(InpMtx)p 802 5407 V 29 w(writeToFile\(\))22 │ │ │ │ b Fo(metho)r(d.)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fo(22)p 166 100 1104 │ │ │ │ -4 v 1268 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)28 b Fi(Decem)n(b)r(er)f │ │ │ │ -(20,)g(2018)p 2797 100 V 60 390 a Fo(12.)41 b Fn(testMMM)f(msglvl)h │ │ │ │ -(msgFile)g(dataType)f(symflag)h(coordType)f(transpose)556 │ │ │ │ -490 y(nrow)i(ncol)g(nitem)g(nrhs)g(seed)f(alphaReal)f(alphaImag)208 │ │ │ │ -623 y Fo(This)32 b(driv)n(er)f(program)f(tests)i(the)h(matrix-matrix)e │ │ │ │ -(m)n(ultiply)h(metho)r(ds.)52 b(This)32 b(driv)n(er)f(program)f │ │ │ │ -(generates)h Fk(A)p Fo(,)i(a)208 723 y Fn(nrow)14 b Fm(\002)i │ │ │ │ -Fn(ncol)25 b Fo(matrix)h(using)g Fn(nitem)f Fo(input)i(en)n(tries,)f │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fo(22)p 166 100 1136 │ │ │ │ +4 v 1301 w Fn(InpMtx)25 b Fi(:)37 b Fl(DRAFT)27 b Fi(Octob)r(er)g(11,)g │ │ │ │ +(2021)p 2764 100 V 60 390 a Fo(12.)41 b Fn(testMMM)f(msglvl)h(msgFile)g │ │ │ │ +(dataType)f(symflag)h(coordType)f(transpose)556 490 y(nrow)i(ncol)g │ │ │ │ +(nitem)g(nrhs)g(seed)f(alphaReal)f(alphaImag)208 623 │ │ │ │ +y Fo(This)32 b(driv)n(er)f(program)f(tests)i(the)h(matrix-matrix)e(m)n │ │ │ │ +(ultiply)h(metho)r(ds.)52 b(This)32 b(driv)n(er)f(program)f(generates)h │ │ │ │ +Fk(A)p Fo(,)i(a)208 723 y Fn(nrow)14 b Fm(\002)i Fn(ncol)25 │ │ │ │ +b Fo(matrix)h(using)g Fn(nitem)f Fo(input)i(en)n(tries,)f │ │ │ │ Fk(X)33 b Fo(and)26 b Fk(Y)19 b Fo(,)27 b Fn(nrow)15 │ │ │ │ b Fm(\002)h Fn(nrhs)25 b Fo(matrices,)h(and)g(all)g(are)g(\014lled)h │ │ │ │ (with)208 823 y(random)33 b(n)n(um)n(b)r(ers.)58 b(It)35 │ │ │ │ b(then)h(computes)e Fk(Y)54 b Fo(:=)34 b Fk(Y)42 b Fo(+)23 │ │ │ │ b Fk(\013AX)7 b Fo(,)37 b Fk(Y)53 b Fo(:=)35 b Fk(Y)42 │ │ │ │ b Fo(+)23 b Fk(\013A)2748 792 y Fj(T)2801 823 y Fk(X)41 │ │ │ │ b Fo(or)34 b Fk(Y)53 b Fo(:=)35 b Fk(Y)42 b Fo(+)23 b │ │ │ │ @@ -7675,17 +7664,17 @@ │ │ │ │ (the)g(matrix.)307 5274 y Fm(\017)41 b Fn(nrhs)26 b Fo(is)i(the)g(n)n │ │ │ │ (um)n(b)r(er)f(of)h(columns)f(in)h Fk(X)34 b Fo(and)27 │ │ │ │ b Fk(Y)19 b Fo(.)307 5407 y Fm(\017)41 b Fo(The)21 b │ │ │ │ Fn(seed)e Fo(parameter)g(is)h(a)g(random)g(n)n(um)n(b)r(er)g(seed)g │ │ │ │ (used)g(to)h(\014ll)f(the)h(matrix)f(en)n(tries)g(with)h(random)f(n)n │ │ │ │ (um)n(b)r(ers.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(23)307 390 y Fm(\017)41 b Fn(alphaReal)24 │ │ │ │ +TeXDict begin 23 22 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(23)307 390 y Fm(\017)41 b Fn(alphaReal)24 │ │ │ │ b Fo(and)k Fn(alphaImag)c Fo(form)j(the)h Fk(\013)g Fo(scalar)e(in)i │ │ │ │ (the)g(m)n(ultiply)-7 b(.)307 523 y Fm(\017)41 b Fn(betaReal)25 │ │ │ │ b Fo(and)i Fn(betaImag)d Fo(form)k(the)g Fk(\014)k Fo(scalar)26 │ │ │ │ b(in)h(the)h(m)n(ultiply)-7 b(.)60 706 y(14.)41 b Fn(testGMVM)f(msglvl) │ │ │ │ h(msgFile)g(dataType)f(symflag)h(coordType)e(transpose)600 │ │ │ │ 805 y(nrow)j(ncol)g(nitem)f(seed)h(alphaReal)e(alphaImag)g(betaReal)g │ │ │ │ (betaImag)208 938 y Fo(This)18 b(driv)n(er)g(program)e(tests)j(the)g │ │ │ │ @@ -7866,17 +7855,17 @@ │ │ │ │ y Fn(InpMtx)p 2261 5005 V 28 w(storageMode\(\))p Fo(,)h(5)1992 │ │ │ │ 5105 y Fn(InpMtx)p 2261 5105 V 28 w(supportNonsym\(\))p │ │ │ │ Fo(,)f(9)1992 5206 y Fn(InpMtx)p 2261 5206 V 28 w(supportNonsymH\(\))p │ │ │ │ Fo(,)g(9)1992 5307 y Fn(InpMtx)p 2261 5307 V 28 w(supportNonsymT\(\))p │ │ │ │ Fo(,)g(9)1992 5407 y Fn(InpMtx)p 2261 5407 V 28 w(supportSym\(\))p │ │ │ │ Fo(,)h(9)1908 5656 y(24)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 83 100 1104 4 v 1269 100 a Fn(InpMtx)25 │ │ │ │ -b Fi(:)37 b Fl(DRAFT)111 b Fi(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2716 100 V 1104 w Fo(25)0 390 y Fn(InpMtx)p 269 390 27 │ │ │ │ +TeXDict begin 25 24 bop 83 100 1136 4 v 1302 100 a Fn(InpMtx)25 │ │ │ │ +b Fi(:)37 b Fl(DRAFT)110 b Fi(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2683 100 V 1136 w Fo(25)0 390 y Fn(InpMtx)p 269 390 27 │ │ │ │ 4 v 29 w(supportSymH\(\))p Fo(,)22 b(9)0 490 y Fn(InpMtx)p │ │ │ │ 269 490 V 29 w(sym)p 430 490 V 30 w(gmmm\(\))p Fo(,)j(11)0 │ │ │ │ 589 y Fn(InpMtx)p 269 589 V 29 w(sym)p 430 589 V 30 w(gmvm\(\))p │ │ │ │ Fo(,)g(11)0 689 y Fn(InpMtx)p 269 689 V 29 w(sym)p 430 │ │ │ │ 689 V 30 w(mmm\(\))p Fo(,)h(10)0 789 y Fn(InpMtx)p 269 │ │ │ │ 789 V 29 w(vecids\(\))p Fo(,)e(6)0 888 y Fn(InpMtx)p │ │ │ │ 269 888 V 29 w(vector\(\))p Fo(,)g(6)0 988 y Fn(InpMtx)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -28,15 +28,15 @@ │ │ │ │ │ be efficient to have sufficient elbow room to minimize the number of sorts and compressions. In this │ │ │ │ │ case, a tight upper bound on the necessary storage is the sum of the sizes of the elemental matrices. │ │ │ │ │ The entries are assembled by a call to InpMtx changeStorageMode(). │ │ │ │ │ T │ │ │ │ │ 5. CreateanIVLobjectthatcontainsthefull adjacencyofA+A bycallingtheInpMtx fullAdjacency() │ │ │ │ │ method. │ │ │ │ │ 1 │ │ │ │ │ - 2 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 2 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 6. Create a Graph object using the Graph init2() method and the IVL object as an input argument. │ │ │ │ │ A similar functionality exists for creating a Graph object from a linear combination of two InpMtx objects │ │ │ │ │ that contains the matrices A and B. The InpMtx fullAdjacency2() method returns an IVL object with │ │ │ │ │ the full adjacency of (A+B)+(A+B)T. These two methods are called by the DPencil fullAdjacency() │ │ │ │ │ methods to return the full adjacency of a matrix pencil. │ │ │ │ │ Here is a common sequence of events to use this object when we want to assemble the entries of a sparse │ │ │ │ │ matrix. │ │ │ │ │ @@ -68,15 +68,15 @@ │ │ │ │ │ j,j j,k k,j │ │ │ │ │ – INPMTX CUSTOM — custom coordinates. │ │ │ │ │ • int storageMode : mode of storage │ │ │ │ │ – INPMTX RAW DATA — data is raw pairs or triples, two coordinates and (optionally) one or two │ │ │ │ │ double precision values. │ │ │ │ │ – INPMTX SORTED — data is sorted and distinct triples, the primary key is the first coordinate, the │ │ │ │ │ secondary key is the second coordinate. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 3 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 3 │ │ │ │ │ – INPMTX BY VECTORS — data is sorted and distinct vectors. All entries in a vector share some- │ │ │ │ │ thing in common. For example, when coordType is INPMTX BY ROWS, INPMTX BY COLUMNS or │ │ │ │ │ INPMTX BY CHEVRONS, row vectors, column vectors, or chevron vectors are stored, respectively. │ │ │ │ │ WhencoordTypeis INPMTX CUSTOM, a custom type, entries in the same vector have something in │ │ │ │ │ common but it need not be a common row, column or chevron coordinate. │ │ │ │ │ • int inputMode : mode of data input │ │ │ │ │ – INPMTX INDICES ONLY — only indices are stored, not entries. │ │ │ │ │ @@ -106,15 +106,15 @@ │ │ │ │ │ • INPMTX IS BY COLUMNS(mtx) returns 1 if the entries are stored by columns, and 0 otherwise. │ │ │ │ │ • INPMTX IS BY CHEVRONS(mtx) returns 1 if the entries are stored by chevrons, and 0 otherwise. │ │ │ │ │ • INPMTX IS BY CUSTOM(mtx) returns 1 if the entries are stored by some custom coordinate, and 0 │ │ │ │ │ otherwise. │ │ │ │ │ • INPMTX IS RAW DATA(mtx) returns 1 if the entries are stored as unsorted pairs or triples, and 0 other- │ │ │ │ │ wise. │ │ │ │ │ • INPMTX IS SORTED(mtx) returns 1 if the entries are stored as sorted pairs or triples, and 0 otherwise. │ │ │ │ │ - 4 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 4 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ • INPMTX IS BY VECTORS(mtx) returns 1 if the entries are stored as vectors, and 0 otherwise. │ │ │ │ │ • INPMTX IS INDICES ONLY(mtx) returns 1 if the entries are not stored, and 0 otherwise. │ │ │ │ │ • INPMTX IS REAL ENTRIES(mtx) returns 1 if the entries are real, and 0 otherwise. │ │ │ │ │ • INPMTX IS COMPLEX ENTRIES(mtx) returns 1 if the entries are complex, and 0 otherwise. │ │ │ │ │ 1.2 Prototypes and descriptions of InpMtx methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the InpMtx object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ @@ -140,15 +140,15 @@ │ │ │ │ │ 1. int InpMtx_coordType ( InpMtx *inpmtx ) ; │ │ │ │ │ This method returns the coordinate type. │ │ │ │ │ • INPMTX NO TYPE – none specified │ │ │ │ │ • INPMTX BY ROWS – storage by row triples │ │ │ │ │ • INPMTX BY COLUMNS – storage by column triples │ │ │ │ │ • INPMTX BY CHEVRONS – storage by chevron triples │ │ │ │ │ • INPMTX CUSTOM – custom type │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 5 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 5 │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int InpMtx_storageMode ( InpMtx *inpmtx ) ; │ │ │ │ │ This method returns the storage mode. │ │ │ │ │ • INPMTX NO MODE – none specified │ │ │ │ │ • INPMTX RAW DATA – raw triples │ │ │ │ │ • INPMTX SORTED – sorted and distinct triples │ │ │ │ │ • INPMTX BY VECTORS – vectors by the first coordinate │ │ │ │ │ @@ -176,15 +176,15 @@ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 9. int * InpMtx_ivec1 ( InpMtx *inpmtx ) ; │ │ │ │ │ This method returns the base address of the ivec1[] vector. │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 10. int * InpMtx_ivec2 ( InpMtx *inpmtx ) ; │ │ │ │ │ This method returns the base address of the ivec2[] vector. │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ - 6 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 6 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 11. double * InpMtx_dvec ( InpMtx *inpmtx ) ; │ │ │ │ │ This method returns the base address of the dvec[] vector. │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 12. int * InpMtx_vecids ( InpMtx *inpmtx ) ; │ │ │ │ │ This method returns the base address of the vecids[] vector. │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 13. int * InpMtx_sizes ( InpMtx *inpmtx ) ; │ │ │ │ │ @@ -217,15 +217,15 @@ │ │ │ │ │ This method sets the maxinum number of entries in the indices and entries vectors. │ │ │ │ │ Error checking: If inpmtx is NULL, or if newmaxnent < 0, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 18. void InpMtx_setNent ( InpMtx *inpmtx, int newnent ) ; │ │ │ │ │ This method sets the present number of entries in the indices and entries vectors. │ │ │ │ │ Error checking: If inpmtx is NULL, or if newnent < 0, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 7 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 7 │ │ │ │ │ 19. void InpMtx_setMaxnvector ( InpMtx *inpmtx, int newmaxnvector ) ; │ │ │ │ │ This method sets the maxinum number of vectors. │ │ │ │ │ Error checking: If inpmtx is NULL, or if newmaxnvector < 0, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 20. void InpMtx_setNvector ( InpMtx *inpmtx, int newnvector ) ; │ │ │ │ │ This method sets the present number of vectors. │ │ │ │ │ Error checking: If inpmtx is NULL, or if newnvector < 0, an error message is printed and the program │ │ │ │ │ @@ -261,15 +261,15 @@ │ │ │ │ │ exits. │ │ │ │ │ 3. void InpMtx_changeStorageMode ( InpMtx *inpmtx, int newMode ) ; │ │ │ │ │ If storageMode = newMode, the method returns. Otherwise, a translation between the three valid │ │ │ │ │ modes is made by calling InpMtx sortAndCompress()and InpMtx convertToVectors(),as appropri- │ │ │ │ │ ate. │ │ │ │ │ Error checking: If inpmtx is NULL or newMode is invalid, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 8 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 8 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 1.2.4 Input methods │ │ │ │ │ 1. void InpMtx_inputEntry ( InpMtx *inpmtx, int row, int col ) ; │ │ │ │ │ void InpMtx_inputRealEntry ( InpMtx *inpmtx, int row, int col, double value ) ; │ │ │ │ │ void InpMtx_inputComplexEntry ( InpMtx *inpmtx, int row, int col, │ │ │ │ │ double real, double imag ) ; │ │ │ │ │ This method places a single entry into the matrix object. The coordinate type of the object must be │ │ │ │ │ INPMTX BY ROWS, INPMTX BY COLUMNS or INPMTX BY CHEVRONS. The triple is formed and inserted into │ │ │ │ │ @@ -307,15 +307,15 @@ │ │ │ │ │ Error checking: If inpmtx is NULL, or chv or chvsize are negative, or chvind or chvent are NULL, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 5. void InpMtx_inputMatrix ( InpMtx *inpmtx, int nrow, int col, │ │ │ │ │ int rowstride, int colstride, int rowind[], int colind[] ) ; │ │ │ │ │ void InpMtx_inputRealMatrix ( InpMtx *inpmtx, int nrow, int col, │ │ │ │ │ int rowstride, int colstride, int rowind[], int colind[], double mtxent[] ) ; │ │ │ │ │ void InpMtx_inputComplexMatrix ( InpMtx *inpmtx, int nrow, int col, │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 9 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 9 │ │ │ │ │ int rowstride, int colstride, int rowind[], int colind[], double mtxent[] ) ; │ │ │ │ │ This method places a dense submatrix into the matrix object. The coordinate type of the object must │ │ │ │ │ be INPMTX BY ROWS, INPMTX BY COLUMNS or INPMTX BY CHEVRONS. The individual entries of the matrix │ │ │ │ │ are placed into the vector storage as triples, and the vectors are resized if necessary. │ │ │ │ │ Error checking: If inpmtx is NULL, or col or row are negative, or rowstride or colstride are less │ │ │ │ │ than 1, or rowind, colind or mtxent are NULL, an error message is printed and the program exits. │ │ │ │ │ 6. void InpMtx_inputTriples ( InpMtx *inpmtx, int ntriples, │ │ │ │ │ @@ -351,15 +351,15 @@ │ │ │ │ │ and A will contain only part of the larger global matrix A. Finding the row an column support enables │ │ │ │ │ one to construct local data structures for X and the product αAX. │ │ │ │ │ Error checking: If A or supIV is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. void InpMtx_mapEntries ( InpMtx *A, IV *rowmapIV, IV *colmapIV ) ; │ │ │ │ │ These methods are used to map a matrix from one numbering system to another. The primary use of │ │ │ │ │ this method is to map a part of a distributed matrix between the global and local numberings. │ │ │ │ │ Error checking: If A, rowmapIV or colmapIV is NULL, an error message is printed and the program exits. │ │ │ │ │ - 10 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 10 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 4. void InpMtx_permute ( InpMtx *inpmtx, int rowOldToNew[], int colOldToNew[] ) ; │ │ │ │ │ This method permutes the rows and or columns of the matrix. If rowOldToNew and colOldToNew are │ │ │ │ │ both NULL, or if there are no entries in the matrix, the method returns. Note, either rowOldToNew or │ │ │ │ │ colOldToNew can be NULL. If coordType == INPMTX BY CHEVRONS, then the coordinates are changed │ │ │ │ │ to row coordinates. The coordinates are then mapped to their new values. The storageMode is set to │ │ │ │ │ 1, (raw triples). │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -395,15 +395,15 @@ │ │ │ │ │ InpMtx nonsym mmm H() Y := Y +αA X nonsymmetric complex │ │ │ │ │ A, X and Y must all be real or all be complex. When A is real, then α = alpha[0]. When A is complex, │ │ │ │ │ then α = alpha[0] + i* alpha[1]. The values of α must be loaded into an array of length 1 or 2. │ │ │ │ │ Error checking: If A, Y or X are NULL, or if coordType is not INPMTX BY ROWS, INPMTX BY COLUMNS or │ │ │ │ │ INPMTX BY CHEVRONS,orifstorageModeisnotoneofINPMTX RAW DATA,INPMTX SORTEDorINPMTX BY VECTORS, │ │ │ │ │ or if inputModeis not SPOOLES REAL or SPOOLES COMPLEX,an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 11 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 11 │ │ │ │ │ 2. void InpMtx_nonsym_mmmVector ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ void InpMtx_sym_mmmVector ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ void InpMtx_herm_mmmVector ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ void InpMtx_nonsym_mmmVector_T ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ void InpMtx_nonsym_mmmVector_H ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ These five methods perform the following computations. │ │ │ │ │ InpMtx nonsym mmm() y := y +αAx nonsymmetric real or complex │ │ │ │ │ @@ -443,15 +443,15 @@ │ │ │ │ │ -1 A is NULL -9 alpha is NULL │ │ │ │ │ -2 type of A is invalid -10 X is NULL │ │ │ │ │ -3 indices of entries of A are NULL -11 type of X is invalid │ │ │ │ │ -4 beta is NULL -12 bad dimensions and strides for X │ │ │ │ │ -5 Y is NULL -13 entries of X are NULL │ │ │ │ │ -6 type of Y is invalid -14 types of A, X and Y are not identical │ │ │ │ │ -7 bad dimensions and strides for Y -15 number of columns in X and Y are not equal │ │ │ │ │ - 12 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 12 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 4. int InpMtx_nonsym_gmvm ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ double alpha[], int nx, double x[] ) ; │ │ │ │ │ int InpMtx_sym_gmvm ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ double alpha[], int nx, double x[] ) ; │ │ │ │ │ int InpMtx_herm_gmvm ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ double alpha[], int nx, double x[] ) ; │ │ │ │ │ int InpMtx_nonsym_gmvm_T ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ @@ -492,15 +492,15 @@ │ │ │ │ │ Error checking: If inpmtxAisNULL,orifthecoordinatetypeisnotINPMTX BY ROWSorINPMTX BY COLUMNS, │ │ │ │ │ or if the storage mode is not INPMTX BY VECTORS, an error message is printed and the program exits. │ │ │ │ │ 3. IVL * InpMtx_adjForATA ( InpMtx *inpmtxA ) ; │ │ │ │ │ T │ │ │ │ │ This method creates and returns an IVL object that holds the full adjacency structure of A A, where │ │ │ │ │ inpmtxA contains the entries in A. │ │ │ │ │ Error checking: If inpmtxA is NULL, an error message is printed and the program exits. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 13 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 13 │ │ │ │ │ 1.2.8 Submatrix extraction method │ │ │ │ │ 1. int InpMtx_initFromSubmatrix ( InpMtx *B, InpMtx *A, IV *BrowsIV, │ │ │ │ │ IV *BcolsIV, int symmetryflag, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method fills B with the submatrix formed from the rows and columns of A found in BrowsIV and │ │ │ │ │ BcolsIV. The row and column indices in B are local with respect to BrowsIV and BcolsIV. │ │ │ │ │ Whensymmetryflagis SPOOLES SYMMETRICor SPOOLES HERMITIAN, then we assume that when i 6= j, │ │ │ │ │ A orA isstored, but not both. (A could be stored by rows of its upper triangle, or by columns of │ │ │ │ │ @@ -538,15 +538,15 @@ │ │ │ │ │ void InpMtx_mapToUpperTriangleH ( InpMtx *inpmtx ) ; │ │ │ │ │ If the InpMtxobject holds only the loweror upper triangle of a matrix (as when the matrix is symmetric │ │ │ │ │ or Hermitian), and is then permuted, it is not likely that the permuted object will only have entries in │ │ │ │ │ the lower or upper triangle. The first method moves a for i < j to a . The second method moves │ │ │ │ │ i,j j,i │ │ │ │ │ a for i > j to a , (If the matrix is Hermitian, the sign of the imaginary part of an entry is dealt with │ │ │ │ │ i,j j,i │ │ │ │ │ - 14 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 14 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ in the correct fashion.) In other words, using these methods will restore the lower or upper triangular │ │ │ │ │ structure after a permutation. │ │ │ │ │ Error checking: If inpmtx is NULL, or if coordType is invalid, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 5. void InpMtx_log10profile ( InpMtx *inpmtx, int npts, DV *xDV, DV *yDV, │ │ │ │ │ double tausmall, double taubig, │ │ │ │ │ int *pnzero, int *pnsmall, int *pnbig ) ; │ │ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ │ returned. If nitem is not positive, -9 is returned. Otherwise, 1 is returned. │ │ │ │ │ Return codes: │ │ │ │ │ 1 normal return -5 nrow or ncol negative │ │ │ │ │ -1 inpmtx is NULL -6 symflag is invalid │ │ │ │ │ -2 inputMode invalid -7 (symflag,inputMode)invalid │ │ │ │ │ -3 coordType invalid -8 (symflag,nrow,ncol)invalid │ │ │ │ │ -4 storageMode invalid -9 nitem negative │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 15 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 15 │ │ │ │ │ 1.2.10 IO methods │ │ │ │ │ There are the usual eight IO routines. The file structure of a InpMtx object is simple: The first en- │ │ │ │ │ tries in the file are coordType, storageMode, inputMode, nent and nvector. If nent > 0, then the │ │ │ │ │ ivec1IV and ivec2IV vectors follow, If nent > 0 and inputMode = SPOOLES REAL or SPOOLES COMPLEX, │ │ │ │ │ the dvecDVvectorfollows. If storageMode = INPMTX BY VECTORSand nvector > 0, the vecidsIV,sizesIV │ │ │ │ │ and offsetsIV vectors follow. │ │ │ │ │ 1. int InpMtx_readFromFile ( InpMtx *inpmtx, char *fn ) ; │ │ │ │ │ @@ -624,15 +624,15 @@ │ │ │ │ │ is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If inpmtx or fp is NULL, an error message is printed and the method returns zero. │ │ │ │ │ 7. int InpMtx_writeForHumanEye ( InpMtx *inpmtx, FILE *fp ) ; │ │ │ │ │ Thismethodwritestheobjecttoafilesuitableforreadingbyahuman. ThemethodInpMtx writeStats() │ │ │ │ │ is called to write out the header and statistics. The data is written out in the appropriate way, e.g., if │ │ │ │ │ the storage mode is by triples, triples are written out. The value 1 is returned. │ │ │ │ │ Error checking: If inpmtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - 16 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 16 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 8. int InpMtx_writeStats ( InpMtx *inpmtx, FILE *fp ) ; │ │ │ │ │ This method writes the statistics about the object to a file. human. The value 1 is returned. │ │ │ │ │ Error checking: If inpmtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 9. void InpMtx_writeForMatlab ( InpMtx *mtx, char *mtxname, FILE *fp ) ; │ │ │ │ │ This method writes out a InpMtx object to a file in a Matlab format. A sample line is │ │ │ │ │ a(10,5) = -1.550328201511e-01 + 1.848033378871e+00*i ; │ │ │ │ │ for complex matrices, or │ │ │ │ │ @@ -663,15 +663,15 @@ │ │ │ │ │ to write the object to a formatted file (if outFile is of the form *.inpmtxf), or a binary file (if │ │ │ │ │ outFile is of the form *.inpmtxb). │ │ │ │ │ 2. testFullAdj msglvl msgFile nvtx nent seed │ │ │ │ │ This driver program tests the InpMtx fullAdjacency() method. If first generates a InpMtx object │ │ │ │ │ filled with random entries of a matrix A and then constructs an IVL object that contains the full │ │ │ │ │ adjacency structure of A +AT, diagonal edges included. │ │ │ │ │ 1http://math.nist.gov/mcsd/Staff/KRemington/harwell io/harwell io.html │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 17 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 17 │ │ │ │ │ • Themsglvlparameterdeterminestheamountofoutput—takingmsglvl >= 3meanstheInpMtx │ │ │ │ │ object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The nvtx parameter is the number of rows and columns in A. │ │ │ │ │ • The nent parameter is an upper bound on the number of entries in A. (Since the locations of the │ │ │ │ │ entries are generated via random numbers, there may be duplicate entries.) │ │ │ │ │ @@ -707,15 +707,15 @@ │ │ │ │ │ • The outFile parameter is the output file for the InpMtx object. If outFile is none then the │ │ │ │ │ InpMtx object is not written to a file. Otherwise, the InpMtx writeToFile() method is called │ │ │ │ │ to write the object to a formatted file (if outFile is of the form *.inpmtxf), or a binary file (if │ │ │ │ │ outFile is of the form *.inpmtxb). │ │ │ │ │ 5. createGraphForATA msglvl msgFile inFile outFile │ │ │ │ │ This driver program reads in InpMtx object from the file inFile that holds a matrix A. It then creates │ │ │ │ │ a Graph object for B = ATA and writes it to the file outFile. │ │ │ │ │ - 18 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 18 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ • Themsglvlparameterdeterminestheamountofoutput—takingmsglvl >= 3meanstheInpMtx │ │ │ │ │ object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The inFile parameter is the input file for the InpMtx object. It must be of the form *.inpmtxf │ │ │ │ │ or *.inpmtxb. The InpMtx object is read from the file via the InpMtx readFromFile() method. │ │ │ │ │ • The outFile parameter is the output file for the InpMtx object. If outFile is none then the │ │ │ │ │ @@ -752,15 +752,15 @@ │ │ │ │ │ binary file (if outGraphFile is of the form *.graphb). │ │ │ │ │ • The flag parameter is used to specify whether the offsets and indices are 0-indexed (as in C) or │ │ │ │ │ 1-indexed (as in Fortran). If they are 1-indexed, the offsets and indices are decremented prior to │ │ │ │ │ loading into the InpMtx object. │ │ │ │ │ 7. weightedAdjToGraph msglvl msgFile inAdjacencyFile outGraphFile flag │ │ │ │ │ This driver program was used to generate a type 1 Graph object (weighted vertices, unit weight edges) │ │ │ │ │ from a file that contained the adjacency structure of a matrix in the following form. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 19 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 19 │ │ │ │ │ nvtx nadj │ │ │ │ │ vwghts[nvtx] │ │ │ │ │ offsets[nvtx+1] │ │ │ │ │ indices[nadj] │ │ │ │ │ There are nvtx vertices in the graph and the adjacency vector has nadj entries. It was not known │ │ │ │ │ whether the adjacency structure contained (v,v) entries or if it was only the upper or lower triangle. │ │ │ │ │ Our Graph object is symmetric with loops, i.e., (u,v) is present if and only if (v,u) is present, and │ │ │ │ │ @@ -798,15 +798,15 @@ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any message data. │ │ │ │ │ • The EGraphFile is the file that holds the EGraph object — must be of the form *.egraphf or │ │ │ │ │ *.egraphb. │ │ │ │ │ • The CoordsFile is the file that holds the Coords object — must be of the form *.coordsf or │ │ │ │ │ *.coordsb. │ │ │ │ │ • The coordType determines the coordinate type for the InpMtx object. │ │ │ │ │ - 20 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 20 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ – 1 — storage of entries by rows │ │ │ │ │ – 2 — storage of entries by columns │ │ │ │ │ – 3 — storage of entries by chevrons │ │ │ │ │ • The seed parameter is used as a random number seed to determine the row and column permu- │ │ │ │ │ tations for the matrix-vector multiply. │ │ │ │ │ • The outInpMtxFileparameteris the output file for the InpMtx object. If outInpMtxFileis none │ │ │ │ │ then the InpMtx object is not written to a file. Otherwise, the InpMtx writeToFile() method is │ │ │ │ │ @@ -839,15 +839,15 @@ │ │ │ │ │ profile plot. The message file will contain line of the form. │ │ │ │ │ data = [ ... │ │ │ │ │ x1 y1 │ │ │ │ │ ... │ │ │ │ │ xnpts ynpts ] ; │ │ │ │ │ which can be used to generate the following matlab plot. An example is given below for the bcsstk23 │ │ │ │ │ matrix, where npts = 200, tausmall = 1.e-10 and taubig = 1.e100. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 21 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 21 │ │ │ │ │ BCSSTK23: profile of magnitudes of matrix entries │ │ │ │ │ 1600 │ │ │ │ │ 1400 │ │ │ │ │ 1200 │ │ │ │ │ 1000 │ │ │ │ │ 800 │ │ │ │ │ # of entries │ │ │ │ │ @@ -883,15 +883,15 @@ │ │ │ │ │ • n1 is the number of points in the first direction. │ │ │ │ │ • n2 is the number of points in the second direction. │ │ │ │ │ • n3 is the number of points in the third direction. │ │ │ │ │ • Theseedparameterisarandomnumberseedusedtofillthematrixentrieswithrandomnumbers. │ │ │ │ │ • The outFile parameter is the output file for the InpMtx object that holds the matrix. It │ │ │ │ │ must be of the form *.inpmtxf or *.inpmtxb. The InpMtx object is written to the file via │ │ │ │ │ the InpMtx writeToFile() method. │ │ │ │ │ - 22 InpMtx : DRAFT December 20, 2018 │ │ │ │ │ + 22 InpMtx : DRAFT October 11, 2021 │ │ │ │ │ 12. testMMM msglvl msgFile dataType symflag coordType transpose │ │ │ │ │ nrow ncol nitem nrhs seed alphaReal alphaImag │ │ │ │ │ This driver program tests the matrix-matrix multiply methods. This driver program generates A, a │ │ │ │ │ nrow×ncol matrix using nitem input entries, X and Y, nrow×nrhs matrices, and all are filled with │ │ │ │ │ T H │ │ │ │ │ random numbers. It then computes Y := Y + αAX, Y := Y + αA X or Y := Y + αA X. The │ │ │ │ │ program’s output is a file which when sent into Matlab, outputs the error in the computation. │ │ │ │ │ @@ -930,15 +930,15 @@ │ │ │ │ │ T │ │ │ │ │ Y := βY +αA X. │ │ │ │ │ • nrowA is the number of rows in A │ │ │ │ │ • ncolA is the number of columns in A │ │ │ │ │ • nitem is the number of matrix entries that are assembled into the matrix. │ │ │ │ │ • nrhs is the number of columns in X and Y. │ │ │ │ │ • Theseedparameterisarandomnumberseedusedtofillthematrixentrieswithrandomnumbers. │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 23 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 23 │ │ │ │ │ • alphaReal and alphaImag form the α scalar in the multiply. │ │ │ │ │ • betaReal and betaImag form the β scalar in the multiply. │ │ │ │ │ 14. testGMVM msglvl msgFile dataType symflag coordType transpose │ │ │ │ │ nrow ncol nitem seed alphaReal alphaImag betaReal betaImag │ │ │ │ │ Thisdriverprogramteststhegeneralizedmatrix-vectormultiplymethods. ItgeneratesA, anrow×ncol │ │ │ │ │ matrix using nitem input entries, x and y, and fills the matrices with random numbers. It then │ │ │ │ │ T H │ │ │ │ │ @@ -1013,15 +1013,15 @@ │ │ │ │ │ InpMtx inputRealTriples(), 9 InpMtx sortAndCompress(), 13 │ │ │ │ │ InpMtx inputRow(), 8 InpMtx storageMode(), 5 │ │ │ │ │ InpMtx inputTriples(), 9 InpMtx supportNonsym(), 9 │ │ │ │ │ InpMtx ivec1(), 5 InpMtx supportNonsymH(), 9 │ │ │ │ │ InpMtx ivec2(), 5 InpMtx supportNonsymT(), 9 │ │ │ │ │ InpMtx log10profile(), 13 InpMtx supportSym(), 9 │ │ │ │ │ 24 │ │ │ │ │ - InpMtx : DRAFT December 20, 2018 25 │ │ │ │ │ + InpMtx : DRAFT October 11, 2021 25 │ │ │ │ │ InpMtx supportSymH(), 9 │ │ │ │ │ InpMtx sym gmmm(), 11 │ │ │ │ │ InpMtx sym gmvm(), 11 │ │ │ │ │ InpMtx sym mmm(), 10 │ │ │ │ │ InpMtx vecids(), 6 │ │ │ │ │ InpMtx vector(), 6 │ │ │ │ │ InpMtx writeForHumanEye(), 15 │ │ ├── ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ ├── LinSol.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMBX10 CMR10 CMTT10 │ │ │ │ %%+ CMSL10 CMMI10 CMEX10 CMMI7 CMTI10 CMSY10 CMTT12 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o LinSol.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0527 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2535,22 +2535,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2724,88 +2724,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6083,34 +6072,32 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ -dup 68 /D put │ │ │ │ dup 71 /G put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 82 /R put │ │ │ │ dup 83 /S put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ dup 102 /f put │ │ │ │ dup 103 /g put │ │ │ │ dup 104 /h put │ │ │ │ dup 105 /i put │ │ │ │ dup 108 /l put │ │ │ │ -dup 109 /m put │ │ │ │ dup 110 /n put │ │ │ │ dup 111 /o put │ │ │ │ dup 112 /p put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ dup 117 /u put │ │ │ │ @@ -6289,199 +6276,186 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547BA1B44C698428BA878986BAD1DA8368E8F5B3774FCBE3C72540A92C │ │ │ │ -7BA6298D386975A4FE6B5612A807D5C03EE4582DBD9DD9BF6A01C6C70A9A765A │ │ │ │ -38D20AB1B02DA94DEF94BF1A2CD76923DACC5566750775CD474EAA165C02262F │ │ │ │ -2A896898A8F67CBCBCE53648ABE9CC1CAC420AAD2B48D9054F2A27FDA27BF115 │ │ │ │ -23732B2C0353E3035E724B186BBDB27C03905EF40F67F69E3F63A93FBEBCA436 │ │ │ │ -7803AEC143D8163B0686A713DDA163148F362FA5348389E0F834ABD204D14CB7 │ │ │ │ -AB6DFBFF780676E89ED96284B58545408904AD53098EE76659405336A5207814 │ │ │ │ -3FC60F431CFAB56AE03ED36E18D5B577B68431D905734282B590DB1CC6353A26 │ │ │ │ -58BE5C97A55E92ADDCD8D653EB41C38D55CE9E13F294A872DDEC30183118927E │ │ │ │ -5A666B87BFF4B6C1FC47420CF7F5F09CD664C837EB47F8ABB08D781F54ABB8BC │ │ │ │ -3DB89F3DD85939EC795AE70B3FD0841E79C6A9291688C40D6EDAF8C3562541DA │ │ │ │ -77D93BB4A7F4A8A9AC2937BB52FB92ED00568E59303B7A7977B4072E84E7EDA0 │ │ │ │ -AE8C199A9F9B243C57388C0D51A21B1B7B1F9B0994749F1C5A5F330F4B1D4E16 │ │ │ │ -BD58DD423CFE6CABAC756A9C0525F72745F77C4E981B4B46A769C5C497C79E39 │ │ │ │ -347AFC48FE4F89D25EAD7F8BAB714D2CD4676B51C3F6162DECB3470DF8F57831 │ │ │ │ -000EBC4CDF111B0E1AD72837BD7652E657C0204E119D3AC89284EFB3704BCD33 │ │ │ │ -00E7B2ECD9F2795B1D9F0C1DBE655F2C133B211C5664D78EA5B79DEE550D2449 │ │ │ │ -3448F8DCA52684207FFA56E5948AB984769A02C4286A117443A109D58D99AE71 │ │ │ │ -31593442B7301CE5AD314018CAF5D33B950491C9EB58E3506F55C3BF1A26474C │ │ │ │ -6ACA7EDE43D9F2559BC6817B5954E2B4067794BBF7C82AB061DE1FF614A00EED │ │ │ │ -BE406430D3EB2099961D0F83895AB3F7C288405F799899207967F6A7543A6C33 │ │ │ │ -5ACE1913D32419C55AE11E62720F748E655CAB8C89CE4AB58B921F77395F7009 │ │ │ │ -CB6BDFB259607DE61BEC5816A0209CF94A99EFBBC4A714BB8A1E102B57DE4996 │ │ │ │ -60083B1EFEAEB2B3973380CFE1D41D17ED38B666D5F3E701D813155CC47F1B45 │ │ │ │ -6B57CFA6C2C63908B9073CB9E6A5D212E0F74AF199C33FF73552D9330303A2B2 │ │ │ │ -662E52D25407C29589ACF6CF0F48AF503423BA4CE52902174B9D626F4FE8BE5F │ │ │ │ -E7DD080CA038F8DDEE6ABAC53A586285BA6EADA154B0B64A1C30002F341CBD07 │ │ │ │ -D1D8E1A55FA30BA6252F70775DD839E3DD3B58ADBD45DA4AEF8D6B4ACA35A87B │ │ │ │ -A4EC4540F3EE47DE4066E8353AD102F213E4119049627A1D97F40B7F36A5B403 │ │ │ │ -241786C65333286A10D73EFAFEB46477A67318E40006DB8727EF667CC98A7D77 │ │ │ │ -B899B08862882995B2A8DD22FFC5808DA0F15CBBF0315684B025179C6C7BCBBB │ │ │ │ -3030CC81B0BF427D3A0B9D0AD8D10C09EC7BCF1A75DB3C0B645025AE54F83A7B │ │ │ │ -B5CF66439CFA8948A10550B0A8DC4F820AEC356440825568E7F8AF06DA6D79E4 │ │ │ │ -9601062ED66AEB88E99F0411A2CEFD190C6E4A9217E6DF410C4E06E61BA5F28F │ │ │ │ -455B072717DCE66CD04BA96B55E68F64205FD806395BC9878DEAA8EC67935E68 │ │ │ │ -16D1BE0B9AE5905AD0374D0C3F3386D71738FE955FD70C233EA478DCDCA67D0B │ │ │ │ -D184373318A7087957DE8B54F5D2DE9FE8C2EBE31E42215DB08EBF77D9CCF958 │ │ │ │ -7FC4408AF1EF47432AC50E8A3FC0A3D82A32EB7E5D905418C13DA1F88A0D8F73 │ │ │ │ -26E4869EACCAE0DFA2A481FC8F09F337206B724654322894424E97B17BF6C461 │ │ │ │ -ABEC281DF139286666CC6BEA138408163E6365FC266AEAEB1A8AB6411D52D6E1 │ │ │ │ -1FD00743FEDE28995FEC92A8CAB8A2883FC35EB998F9BAC88C019D3A5BAA08F6 │ │ │ │ -7F92AD1656CEEADA0A9AEBAEE63F0A5AD9E4383C83D11AB8D59C11B577106A67 │ │ │ │ -9E9D57523C288B46287E80D2AB8DA533EF8DE5C42E28D6C7E4B04BE6DED482BC │ │ │ │ -211686B60F8A43CE10F4C6FB2EDCEF2819C2B74EF55410901D699073A53751CA │ │ │ │ -E8E1A8362FE97F209BA5BE07126E5B9A356148D53864211919E7280D677F24A7 │ │ │ │ -34C7B160A8A184669FAC0A57F55F3F8A7753DF52E0675E2530B05876C83C9B9F │ │ │ │ -72B5BD5092A71E6D52BEAC1EC540BBE1D7616F6A5C30B5D3BA214041FAAA5F51 │ │ │ │ -7719739BFF38E78C1159C9AFF68535AB055BAE2456202929F940459DCD51539B │ │ │ │ -8B0A806512543CB4C81CFA08A0DFAFCD45A1908113F47E4E3323E59C5A19D3FE │ │ │ │ -BB42AE2401EE1A917AEC184DB54C1CE8AF1260EE9E059644410642B4D3E66CF1 │ │ │ │ -1C9E805BFC13002155C48544505D741867F13B814F76C84FA85FF22A970A1C26 │ │ │ │ -B118656FA53F637DD573F23F45A478054140FFE05DCC23284BA4B72878A6B904 │ │ │ │ -7406AF933F48C09EF85215A2F198832F1B96FF380C82A9F74A7A2E9CD55F9026 │ │ │ │ -50482BA36AA45E315977156D4BEB83E63E56246794355A69B43C777038C86FFB │ │ │ │ -E74B4AF812E928170C280B2002C76224FF5C3AE72C4279EC9BACEF24C6A5DB3C │ │ │ │ -AB5575DFA53A705D34B0851B146EC4D2EF1DF3CBE3CDE48DD3CB62600635F95F │ │ │ │ -208C6891EF2A7E3DD533A7521C4AE89B5C9383948221FD90FB9BF69DAAB78CB3 │ │ │ │ -040E7D98EFA7AFA176D695A0A1DBE731B4C69E559D8F1170D9478BE568834B63 │ │ │ │ -34CED83DFEA98E1B0914B3499146781563A48B7B24D2C8E10C687D5DC5B3D1D3 │ │ │ │ -C5C208BD1FA9AC16C97461915C7E964217B09AAAD05DAD8B85687BDD20928917 │ │ │ │ -F385F6A1AD843B460BE83EBA3F54E2F9D550F6BCEC607F2E9145301ACFE2189A │ │ │ │ -440A701AF3D9E3FCBFC996F0352DA645CEB9627AE7F4E60D261BA597AD88DC50 │ │ │ │ -BB3A67E24716BA72E4062842638BD7E989D939108451968AA32B652CB71D1E84 │ │ │ │ -6D005465843B29F7C10D15AE693561CEB9A9ADFE0694F9DE62D4F1583C6BBD35 │ │ │ │ -5EC78D3C82C49D5160A45B6FE946E0FA73157A7D2B4CFA741D08431E75E27C32 │ │ │ │ -C7EA36E23E22D86F4901C18AF382A6569B0C31CD242A9CDEED0BF2AC789D5DFB │ │ │ │ -89115AEEDDBEF26580EB2B92B909520C3FB51EEE5024DA96BFB7C68BE7E51624 │ │ │ │ -22FA3ED5781E5E4E92D59BC879143546095BA3A62EADAD62D6239AE21B66A0DA │ │ │ │ -18DC523C2BF97EB29C90AB8877F4524A3F0D9DC1050414B1E276DCD3E53226CD │ │ │ │ -3F7D032B56023472CA2A7B6C348D43BE8E871BC203F82BE17675C1785B24EECC │ │ │ │ -B22B121EE8177A56E05BE80BBAAB3F6B54649AD33CBBA6CB15FE77BD7F1759A1 │ │ │ │ -32AB1E11B24EE66E1D478AA9DDD12288C65317FEB7F623D95BD3A0F92C46FF5A │ │ │ │ -DA835691684930D8D90DFBA267E3941F15F28C1457C02D403B34D7798F08B280 │ │ │ │ -79A50F01B78C834395223923756A570BFDB078D33390052148A9FAFFBEAA0880 │ │ │ │ -864CC4813F48BABB961F1A9DAA5B6DCB979B23ADCE15AA7A5AE5B5B8FFA1EB1F │ │ │ │ -1258BE6B0DBFF9E79239350EE8D5D27194120DE992F904AA2A0E353C3D589260 │ │ │ │ -D2DE4006C8DCDE5D238FB514F8CDD9B3F550B2E5E9315B4AFC92C650FA028348 │ │ │ │ -7E6F6BE6A5F95D490E56583E301E55564013A1A46F17BA3AD4E79A6E6D8BB681 │ │ │ │ -0319F85B6C7A4E350D7FA74B1958E62641E1850E02FE61AA909CA930F6B1C555 │ │ │ │ -95F9B030197C3749A681D6913C6FFBF4C3141FFE7166F0B6734CF30E8C051F39 │ │ │ │ -D023E4488AD704BAECAB5550C6C4C5A76CC0C77F7357DDA5929DA33BF851A3DF │ │ │ │ -73099205B9769D712D4C0E29FF5FD9870CF0A5F8D9C8CFCB3F26338E023D38DB │ │ │ │ -E879A436A5DEA6D0F9F067A2ED39F4F0A5FD9C12E733B0C87D5DC83BEE02D73A │ │ │ │ -3082B3D3A7A29048AEDD76CC54C4BED908AC7E5F69EB1B53DE9DB0B987BDCCFB │ │ │ │ -F651128C844E807E803F90694277DD1A501DAB1D1CA3AE6B16AAA0611D11C411 │ │ │ │ -D34D47BAC18D3C2DE885B0C370FB10ECE3E6280500C14C4D2FA1DC7FC654BF38 │ │ │ │ -5F67220A6C80604CA8306D3F8B92BC4B9B27AB50C72261CBF3609FDD9406E7D9 │ │ │ │ -0D6EDC38529603AEA6BE338E220C4D572DE7BF531700348AD9DA955F1E2A85D4 │ │ │ │ -6417EA349DD8F0548B873677875E3C4926E3379F4058FBCADB244013757CC03C │ │ │ │ -7EEFDD5686A17DBA0560497AAFE82A059D40841D00D30F62EBE68DA4D3AAD229 │ │ │ │ -545986F0126AB25A5CA22572DE3741B6C01DAC27F8DFED822EEE2D0732268CA5 │ │ │ │ -78B3308488F450EF4CCE0CC3ABA7F05F916E9840D0F1D0000C98502E2097EE99 │ │ │ │ -0664CFED32C76DCAD3F2038887008A891A01230908FA7C5D6777052DDAC01D7D │ │ │ │ -B3F10747B526D7C4541FBBC1DBDF53E7AC765EB903CEC0EC9F2F29B5DF55A37A │ │ │ │ -E5FF5608C53CB0DAB2838B3DB1A27FD8CD6B70E40F1DDD63F8FD8E9F6326EC5D │ │ │ │ -9C6B0E4665449C9820356296DA2759C4E98331E6E1B93DAB6AC44D888C7FEE2F │ │ │ │ -CFA4D45BBF328B3A9F2B02AC77AF103EC18A08FB0247C84879B99C1441827BAC │ │ │ │ -76C819606EBAE57312C30205B11A0EADAED1DF7C1CB21C1DA87741F54B7F99AA │ │ │ │ -381FFFA3C31107D52DFC70812E75E423AD832F405BA4C09D95129FC5A6338005 │ │ │ │ -BE906614812FBFFBEA6E61050B98FB0442F48C5831EAFCB4CF4B6D1049F2DDE7 │ │ │ │ -86D207CF0988725FD1DAE922C234F5B75B9515CF1AC261B490F4EDCEE317FE04 │ │ │ │ -82A2453CFF491F3B38C3A828F67CFDFF1FC9B984A519594C5371FC00CCD89D93 │ │ │ │ -88C45A513A7DC58A1E9EB2F42971CB705DC2C37410C6FE76477487FFEAD3876E │ │ │ │ -9F3A0FEF1B7B6D69612FB8FC7AD31B25745A96C62B7E0A84DC87BDB532A487D3 │ │ │ │ -300ED521B7F03129227AE2D57CA07761BF41F30269492493A3C6CFA73CBE7389 │ │ │ │ -4ADE7FCA30A161269C700A5439F8D0E06F5FF6C4AFD07D6CA47BB6BB9A9A81A2 │ │ │ │ -8956BB5F476AF32F178C5BAF49CA88A9D8991A89CABFF7DE4C91A1DDD43856F7 │ │ │ │ -3D60F34E85F306C2CC20DE764D099432DEAB6FF4EE5FC442F545C2BD8CE9A89B │ │ │ │ -44F7D525A2E897FE7F5C01FD758143E625BC5BC8CBEFB87445FEA461AFE508CD │ │ │ │ -57536CF93172D9D64F1F3E473001621F70BA1F2A6A5E6055750D8A5EE522E82D │ │ │ │ -15376A5925AC674DE3EAA52E1CB932CBB55E16ED06CFFA3D8F315A5F8F8B263D │ │ │ │ -037DFD87D2E75721B477C67914E0DEDF4A8CB082D577AB73C937C15E36258F86 │ │ │ │ -5DE766C84AEF43D82A4AC95EB370B02A09DC7606C286E548CC9E0D30EE83A598 │ │ │ │ -D598230DCFC257DA41493076E32E794D2CEDAB47EEB8B95B939ED3135E975665 │ │ │ │ -0F2E819CEBEAE8081F6A09B7F8EC745A81B8930C74C44D24F7D11F20E31D2A73 │ │ │ │ -FC722BD5C566A4829F2E5B896580AA11CC2A360A8511F0BA82E2529978440B5A │ │ │ │ -EDE894E2442B4D929BA3E69DCD058182AE2919FE40FC341AE2EBCEF83921A8D2 │ │ │ │ -61D24D11B3B576ED3E85B607992BFAD16EA86BFD9564586C18C5AB8B15F0580A │ │ │ │ -FC911CE738C48498AE64B96C70837ED573859E744F3DFCBF22454F22E358DF3F │ │ │ │ -F7DDB5DA7B15EA2D3CB877FE38C58A7FF3E3E6C9D900A53207FE471666491832 │ │ │ │ -492F8080801A56E08EBD73BC7461D68EBA68E11E1D8F6ED2C1773E75C14F3244 │ │ │ │ -AE18ABC084CDE9A29F15007C9751BE82B330C3D398FF9B1E4FA440C18D1FB0BD │ │ │ │ -037B8C322515546EAD9C880932805BB089BBC7C9164C8745D71E9F46002E4140 │ │ │ │ -D777B676D7E2DE0AD0D90787647465EF988F3B4299078D79F5990C8D0A77E1DF │ │ │ │ -4929B4A01FB96E3EB0E55040BB1905BF3AF74490DC53E8AF084EC44D15158E84 │ │ │ │ -25ADF1D1A68DF8C98C82C55866C7318672BAE4DF91967F16F4C409D99217FB2A │ │ │ │ -8E0364A94B3B0B50D2EEBD9C52DEF3716171F8832471DA3ADEE2C5E40110A4B7 │ │ │ │ -AF00BA23C4E288A4C37D543D67E029C2F0982597AB9B77A40647B0201C74609D │ │ │ │ -A5C51A90E7C413E86F22C9CF50B777DD21FAB362C96D8162FB20EDD04CCAF7BA │ │ │ │ -DA5BBF9864C39F92600F41AF862EE63F5DECDF834730764D54030526EF68C5A1 │ │ │ │ -161922B323B6B71E4E6B75E990DDF57281B8C7AA2D8606619FD9F0EF9511618F │ │ │ │ -FFECB82D59E1F3E6A79A73B9301AC8EA538C8E35F600B07B31204FEDF7731A21 │ │ │ │ -573722C0BA6BD467BEEB097FF31C13D001AEF4FA6BDF999C4E2D97F4AA1EED20 │ │ │ │ -3D637026B57FD08B58FCC69DFAE4F65269EE9BE158777E8869682E6679A6640C │ │ │ │ -6E41FBABBFEAEFD5B37BDD4ECEB95D50DD43BACB22642A89209B0ED47517BA39 │ │ │ │ -F4284D79AF91432ED940F8CDE6CC2BD880DCB5C7EE0D1A854E61F9CC07851D80 │ │ │ │ -7C3D61A3FF534D45E387BE795B9D63CF5A78704E4F89B77AFFC297A81A0443A2 │ │ │ │ -5A73BE1545FC539FC772243E1C7E25DA82CA5300A0BA786E8046CD3C745C2BE1 │ │ │ │ -CB00B38FCF6917315ED301BCFB7D7BFD047475F0F2E840C16B52E0E97C4F6060 │ │ │ │ -754C228F06268D28EEEF7A3F72440CFBCC2287BBEDB4651373C56A925EF94B30 │ │ │ │ -65E12A63C686B10C0EF4E89228CD903F32ED62342AA0EFDC331B225D2D0CF7EE │ │ │ │ -B998963AC358359E9D94784A90D376F5B4B3B6B66118531142DC9665D2A2EF50 │ │ │ │ -64042F45D4B53266279A401A4728928A6D99F8AE8627A160850D622FE36C0113 │ │ │ │ -268118F0389C68B3AA8EE192D932A27F0796C862673F58E8C6BF537CA1DFA097 │ │ │ │ -E2AADBB9429E9F775BCF8625F7BBE101D5EFD2F59B6149C461B3C4FFEA8D3FC3 │ │ │ │ -2170AEB35905223B91512278D5636BF78304B19DCAA1CBF1C34DF160BD5A1607 │ │ │ │ -53AB930ED0D5B185EFDC2794EE2143121ADE508C6B09A5322A5AA7B15CF1353F │ │ │ │ -69D07EA14C4D31B43B41C3CD39FE3FA680E233AC410A1AE5059B756DCAAE6FB2 │ │ │ │ -03D593F4CC6859A8F279D8A766D6B3FE2DB3DE8FAC9046138D28B95B23451167 │ │ │ │ -A9A8DCBD4A99BB7C4320B403FDA026198186CFAFDFCE076D2B29DA20D463E3E2 │ │ │ │ -7C37565A9DA101921B5AEA06C7BCBDC1E6999516947E87C8048F3C75A09A21DD │ │ │ │ -6F930B238BA8D77C19A1A58DB4B442FB67F650FA662A55165C1C9B09F773FCF5 │ │ │ │ -97A9CDA19C71B303597CDAEB42F60C03B7A1BAAB331132F37ED4C79B813D3ABB │ │ │ │ -ECC075069DAC8E2915C9522D3EB3DDBFEDF6CD5FED40C18CE3FA9908A85D7404 │ │ │ │ -62BD15EE45FBE9F5EF0D031C4B56D22E46253CC398455D1AC222CFC4B8FCCF13 │ │ │ │ -D7B8CFF192982C5657F5853BD6EDB05378112D48397748842F87452D3991EBDA │ │ │ │ -D462E15F5A077B688EACF1B9BFB30537F9E431A462253BF4C9F67B389B31ED61 │ │ │ │ -C2F0A8C45EDDB07E1F7376AE7CB83C1545FC3E3BCE3D6D4E514D37E3514BAF33 │ │ │ │ -3B75D47CDCB714AF245B18184AFA3F84709248B8ECB5607E88A1E686CBF54B4F │ │ │ │ -CA2EDE692C2C2E9D08F71FEEBDE7B46136988250DD7532247D18D1620790245C │ │ │ │ -DCFC561A6A9F19A40DCB0CC7F27769F71B81A15080D7C580BAA921158682DC09 │ │ │ │ -61E419CE3C35253E205D8E60898A168ED70171C98E4D74FDD1DF6002601F2F3E │ │ │ │ -3BB569D0AB1064CA7CED8EE2227C935C1693DA4DD190385A2F2FE2C200FEBA3F │ │ │ │ -C399D8BD0FA731765A94E84CDDF27CBFF5CB3C5D2B9FBAA072B1379A02D15CE6 │ │ │ │ -A8E1CB81221F5C1AB462180741D95F1D1ADE4B2B2B75613C0242EFDD42A9CAFA │ │ │ │ -B6E6A096C4D0473A55A844EA3597B3A6717CACEBF395DE0EF9429DCF8410EC5A │ │ │ │ -17198BDFF1F1193F585D9749D271710E1FBFC8287691498B18572221D9AD6AAB │ │ │ │ -CBAB1D3EE097A7E58EFB1F337C504C3325BE9C008EA9E5378D7E30FB3AA2A50E │ │ │ │ -A767112545D289A30B5366F36EE6B1D955C6BAB668A1A286572D6BB9EE42AEAE │ │ │ │ -A5FD33BC1FDC89834EF0942B9C98DB11FDD0F8795B82D04AF6A53E77FF838F2D │ │ │ │ -0E639B78F48E1BE50C0C767F8636D7B1A7D359F5542A846B2021401BE0314B5B │ │ │ │ -7C4791179C1EF9C3F016BF8DBA24F0BEA6D5822B6A9CDD08F4181E4B83058D60 │ │ │ │ -5728089CB1E09F25BAF3EEDAB993EBD9DE145ACA7D711A790592FC560B7DC449 │ │ │ │ -013957CF6DB21E60DE8B4664CFAED62A1C9C7BD7301F01949D611F588415B041 │ │ │ │ -71B71A909E20868EFE4D48DD2A44483DB3187E59CD0C7C2FB60987E0CCBD05BF │ │ │ │ -3BE7E8CA91B7195089E5D90C388DF5D25D2B54C6C042C21592DE814D2B6CDABF │ │ │ │ -359A81728A5133A4CD71AD8E95963971B11F5FC0C042677EEE6B534D7EC23E94 │ │ │ │ -A6C794444F511190B195D5099DE3BB235AB56F235CCC94CAD596ECE707E1CBBF │ │ │ │ -A8702147D0270066EC8A53A73FAF20D021D25C2D8C8DB82252A16848F3193BDF │ │ │ │ -0B269EC1FCD2A80EC9A20091CD15A620322D0C73203B87F95C27E3E12E716DE8 │ │ │ │ - │ │ │ │ +B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ +98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ +7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ +5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ +8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ +9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ +CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ +AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8CF5B49B75A4E │ │ │ │ +6E3C8B942BB0C245A4883F7CEC74DA71ACB7860AC58E1CF0A452E886EFD770DD │ │ │ │ +EB58E9A1F5ECFE5DA468B3FD0835062F04C5A67AE11CFF17CAA08CC48C702141 │ │ │ │ +98E88B8633F687DA556C608A64E8A8E0B2DB9C7FDD36E6A90DBA0B960ABD7ABC │ │ │ │ +48884E2E8FB81902AACDB05BFB17B2A36DEABEC5FE7DC7A1F29DA16EA3C9A0CD │ │ │ │ +E4F78552CD1461C1508818D21278A0AC42B63DEE8787EFC7FAF8A46EB1F23E9E │ │ │ │ +E2C8FB75E3EA8A670ACF955AFCCF8F1121571C4D11D37EAC00C52E3ED63E1A59 │ │ │ │ +65AFA307468769483EA933B84966D621DDDF7904518C6BAE37468BD0BF18B04F │ │ │ │ +654A8C7A7D3F61AFED8B76364F5825B4D32165E5BA098B9F9CB11550F8D881A1 │ │ │ │ +05D46F5CBCD20B7CCB26F439219A213E2C0C5578D7DCFA8DBD0C1FC9100A6D65 │ │ │ │ +69DF21353EA28C20DF4D19C94297C3D5EC34A1754A04E3B08882FE0584ABB180 │ │ │ │ +359E4E378DF15AB500328C8CACF4AB826389D19C67851D40C512E2FC8702765D │ │ │ │ +4158A62EA137A1CDFEA9111131612F1CAC58B4C3B664F057A4EEE20555887B9F │ │ │ │ +CBC2C21FC9843EF6AD02DFB534EB3783BCDD95023CB3BB66E488A228B2B4CD37 │ │ │ │ +C2AF7121A180BF9397DA2BF3CF705ACA483C9BBEA07E86D01F3C532BFCEAF914 │ │ │ │ +0B86917135F1ED8C48A957DF3B5C282918102642E560F875A47AC63FDB596873 │ │ │ │ +AE24753FD07C5269073255A13F3269288E8C21643970DEA40D307AE8B69BB211 │ │ │ │ +39A3C0F0B93FE5D989CE5141550AC596E51134005DD4F954BB1C10278678BB89 │ │ │ │ +252575D25E79649532A8EEDBA399586EFCC775400CAF3056E6AE231F669B97D6 │ │ │ │ +F324F9D5A15956C745805664C7ACD47048FA041670EB44E8EAC62C1D5FD21CE1 │ │ │ │ +595EC51B805040A2509196C3C15F98F4D6239B4055124F62F4D42BE73DD97C89 │ │ │ │ +3CA7B77CECA0233AF312CD31CC639BA736EDA7DF17602C225562D2F39B65D343 │ │ │ │ +AD09A04967470B138F54125A18B8F2FF95B2156C0B01CDC4A9BF9E466652877A │ │ │ │ +F939AAD02589A46B523DFB1909936D4EA76C180F2DE9A5564EE2EAEDE6068E5D │ │ │ │ +EEFE589211766D34A2FCCD9FD5193EE01635D3EB73B817EFF06FC0231EA5A9D2 │ │ │ │ +4FAC0CB10D43D86EAEC33FB6EE6168C6C4822BAC620CC194F493290CEE7DC9E5 │ │ │ │ +037346B6706058716D767F438418A09605DC1C2BE1B2D8CD41A14226DC7C0C75 │ │ │ │ +94A208EBDE49186CD143201186D8F4BDD2BB4A96501DDE76E18B166C311C6D83 │ │ │ │ +656C55D66E614617E36C6E37FDF02E184A1BEC5174674E19B8956F1DA3481CA3 │ │ │ │ +0F31D4E62985CA799F1288A8BDFF7D9479EF49CCF0EA181ECC8077D831952B56 │ │ │ │ +8C66ED703CC260B6D9D0C7CF146E86F06980837582344EB63AC30B142DE59CB1 │ │ │ │ +F935DCFD3C8933CB33B0B3A1E255CAF09CBAFC76E1D4946BE7B1AD552F988691 │ │ │ │ +A077D786E129FDB813EABE125C3AA256B952DAF0ABE8277CD8C62A4BA166A2B5 │ │ │ │ +E81442D419FF18F77A3B4D6C46E240C31F98EC1820D694680810A37DFE620407 │ │ │ │ +F4219BD5CD7A3393173167A48E3A9E9741FDE02707ACFF0E026680776E5758B8 │ │ │ │ +8125BD54BB88B53E869954FE9056E89E3C7356D17602C55ABA0EC88849ABB69B │ │ │ │ +452C737F42F59458507216F1F3E9BBF25A3541CBF85E1D1DAB678A22459C3F55 │ │ │ │ +A867B33D9F890B8530E2C6FDCD566438A615443E26E4BF5009F8028E4B0EEEDA │ │ │ │ +C2BD2AC3CD2B4222CE82183C3B67BD87E00F678E843CE52A1D2C2EFF82B84853 │ │ │ │ +484B7E21421C565C8BC445FE56997800675870C706F6E1CB017CE3C483DDAE11 │ │ │ │ +BB707BEAF6ECBDA2FECFA89BF8BEDDE9D44BA2F327D38A00A87AF2283F786407 │ │ │ │ +48C377ECB8BCCBAEFC19CED1261AD0D7CA2E85E9CA80925AE67CF4C78CA759ED │ │ │ │ +A6819047B30E960A439F315C8A1919C26D77ECC107C3B5B14C12D6E8465AEA62 │ │ │ │ +81BED4071331EC1AD5A512D81F6F75C6B7D525CA2A5008032A9ACAF82020E2EF │ │ │ │ +C542371567FBF442FE2C7358438D5CA2618EB7607B9877A4729F7945ED1C82C0 │ │ │ │ +E5DA2843254F58924580D991BCF387CAD18059EE3E0B998D61BF05F1F808AD18 │ │ │ │ +7095668EF171D3BA367A21533FA0E64C2EC3ED8EA6874ED0D1FC9A92FCDEE364 │ │ │ │ +F2714D06B3021B7F25558F247F7DE70C6C4C13938BFE42AB40B4FDA70FADEAED │ │ │ │ +F870D844634F656F75FB9E8DD31A7FFCF29783F3B244386C9331F1FC74D20C9A │ │ │ │ +58CBF225A050E16208BC7B0E86F11A926A19EC1477405A768D7C9CB21CBF1E70 │ │ │ │ +2A43C2AC226FF4095991418DCBC25D528CCB76B494A14A2285532FEA9D1D33A4 │ │ │ │ +87C922592DDA00068E8FDF75CC286065F2BB89470932C32C57ECD70163DD3E13 │ │ │ │ +CC2E88F0C11AA28DD32062D6B03F7777C2C9F7E9D007604923DECDB89077D485 │ │ │ │ +D5C09A4A4456E23D8D8B892368AC6526B987E9603B00EEA550D8B6C98A1FC485 │ │ │ │ +B4E540FF671061071BD92B6CFB7B2FBB96688CE526B617165D8D8F8C17CC090E │ │ │ │ +101CBA3CBEBD890ECFC27266DF5DE0D139458997153AAEE01E5F2C52034881AC │ │ │ │ +BC042C3C6B6CE1800F24C0305879E11FDB4E9DB8F1F4C71E7371A6A21F16F4F6 │ │ │ │ +D4122CCE2BE3A3032682767F361961718951081C9F4726146B4C4A5BD3D2141B │ │ │ │ +3792BFDB4A9A6E1FDA533BB2FCA2267F13F45ED8B85A215AF8723036E883893C │ │ │ │ +655A7212EACD6094BB821179F5349F2C83E5C84387C474510A6C3CA215A43BEE │ │ │ │ +D2EFC760EA90EAB76821F2824193F9A36549AC1B13975FD0F3EFEFD3BDECA9C1 │ │ │ │ +7DC66FD1B957A742A0D2C40FE99E2E79F32AC30BE43F4C53F91402A48F3BF5A3 │ │ │ │ +1D7157B12A095C90171CD0F42860469F952997A0CB0F929AFDD5DF5D88F6155A │ │ │ │ +BB4F725253F1CE9DD149BB8CB10298425A18063D77F52EE6C3804A66C1B485F2 │ │ │ │ +EE16B50B3F0DCA8656160974D8415A439CC715EE9225A092CB5BD04741C2C93F │ │ │ │ +5CF1546572770BBA80DFC7BDAA385E27540982380190D4F22EA5F2B547CB70A7 │ │ │ │ +61D135DAE4AD29F51D6E74E1493049AF91EAF8C28AB18E28B919187FCB887B2E │ │ │ │ +B4541C96F14DA220CBA3073053B9384D056156C7547527F21D69706B235DC2A5 │ │ │ │ +2F89D97153D78C86CC8B7A86EFD408EB98C0B89B18439B6240AFC898457D900D │ │ │ │ +A72BE07614F56E9600F49445A1246C192554E3EEB8294D2A59E33473BB4E5D42 │ │ │ │ +9292354166F26EE1C27871704B4ACFAD8F885A3D4CA3A07ACB9D282BEAD8E120 │ │ │ │ +5CA0ACF5BDF1FEAFDCB292D22B94AF515B0A3E501C0685A395E71374E6D235F0 │ │ │ │ +B789FA571E3E72D6A94188D2780EFAF1611DD57D6ADD0A99648F9C1738F196BA │ │ │ │ +C313922D6E2EEF5FF86447A0296680DFACB63AFBC77CBEEF8A6E73A68A90E49A │ │ │ │ +AC012E36D75A22E45F7B82FF0623BBFB987E5368CDBA14CF36D3CF7293DD9F54 │ │ │ │ +49F4FD0AE33EDB55D958E1FE250AA8B4F176989E0F570064E21A6DC6C11B3CED │ │ │ │ +EF946EA2F3CA9AD300B9D85868842C0F694303BE508049A361AD628D61094742 │ │ │ │ +A31860C864ADF5D413920EE27B9BCC58E07F4FBD60CC64E68F3947DFBE7721A2 │ │ │ │ +B7B8AE6B58964C53AA1CB48D155EBBE1BA010CA5CA9FC31CF54F9BD4FD383C67 │ │ │ │ +CB2AE5B99CCC94A4CDB6129B9FFDAE376AA2748BD090D6E96B99BB51A5B80627 │ │ │ │ +8758571DE198EF9457EF20C57E572EAF65FF7960325FAF1A6278AAA45877A192 │ │ │ │ +66FFF0BBFE1912B757CAC21C0DB06FAEDDF76C278AAA374E8AA908E4CDB96CB0 │ │ │ │ +5B81C766750115BF3DD8FFCB20736C28A50F639965DD0C2F27FEEC05BD7D8000 │ │ │ │ +BC0D9147F9BFC4D4789868AD2A3A70E874A57540036D0E0CF3451C0F6BF63670 │ │ │ │ +91BD71D7EAB2ED482EBE93CD4E741A4F4A66250B0EFFFE206D501F1B5D091EE5 │ │ │ │ +712F44BD82EFAEDA580B1E0B4D70DB5F8C4580EFC9DB46654EA4D4DC00B7B1F9 │ │ │ │ +55E03C4DC322E40B8A42E0C90E3480A4799C128F6EE874E9A525AF8E7137DDCE │ │ │ │ +275F3C72AC2D315238B9FDD0F7105079595D82E6A6633AC4006632E2A02DE729 │ │ │ │ +DF56CC641EA3AFF05257F29958122BAC3B47FC7E04A91C85E5BFB0F1F39CA153 │ │ │ │ +F50B0D48AD5185A3C3E0AD51AC7EC75266F64CA1D5938AB1D1EF7B25BB3D52BF │ │ │ │ +2DE3369ADE7171E410DE9ABDE70E58CF19CD2143FF775B67A8AE3A40E220E886 │ │ │ │ +7C9475D6D4E93DD0BCAFA9C932653DF647C1791ED8E9C9175C65087EE7CA7FB0 │ │ │ │ +F5152A4035DE6E6DD6A4ED15A8504FC6AA75E9EEE93E5D9FABA4EDF990A7EA41 │ │ │ │ +EC971A3B9BA5D63E8BE4455B983BB754E280F78960E21C492804BFEEB00CA97D │ │ │ │ +A4DB3F44371AFECF7F343269A54B0FEE9FB56660DB0BB528FDB0085E74A60E9C │ │ │ │ +04DAFB2FDEC569F186EBAAC6544EB2E809882A6E9DF7E7C4EF2C4AC6A1B5EBEC │ │ │ │ +FC7BABD97D40363980604040F71658291D4B1F960B3AD8BCFBD996519AF1CE5C │ │ │ │ +D12E103674A5ED91F8E2950FF09AFCC7AFA4F4A384842695428E5862BD4BA3AA │ │ │ │ +4C4BD4AF8D6DC59887F27038F03A264F9F3D95D19FC88CA242CB3B3C1476319E │ │ │ │ +3B7C05B6525872CBBFCFE8B2425B576E29CEB3702C733065C93A9D2C0DA84114 │ │ │ │ +3BA3E2414A2A8651F0738994F562E47DDCFD995C30CC5433A1F04797B0EA3A90 │ │ │ │ +AB3A1375FCB5A601AF87A526B98836DCFB51D477E2CBD98A45779B9945D16CD5 │ │ │ │ +3C8020A1FA53CB67389FFF85E26634F5A70F18A6594657BFAF09FA3C290970DA │ │ │ │ +9395B985D725012E2D1578B089EC2B6E855552196307DA477E019B9816BBB2D2 │ │ │ │ +AB86888A6FE17D20E29EB44205D0D5C80FE890B20C3D7C0F3F1DFE1B0AC4F54F │ │ │ │ +A2D21CAC00247FDCCAA59079237A53725CA0AB2BB57CEBAE858D6ED282F29CEA │ │ │ │ +4A896540C34FF73C9ED430D9212CBEE0D357AE16EB527C0A7E5E5007E0E1DD49 │ │ │ │ +EE8FA2BCC1C49D7D82A1E9F2ABBC6ACF3DB361A4CEA46C8CA4B1A8DED889283C │ │ │ │ +DC0D48FDDF5CBE078492EBCDFAD13DE32161836F72ADC5F943D4885785D4D1F0 │ │ │ │ +7D7ADE74C4329B8EA2D10EEEE93FE469B253F999D742EE61F2215879404BB0CB │ │ │ │ +09A81903A11410E6689553FF893A5B3520C5FCD143A1177D85CF2779751269FE │ │ │ │ +91F74DD55B402E9E96BBB839FEA92EBE24991CA25FA08521146CE820EEF6BE08 │ │ │ │ +0472B2E6303792C5D7961C73C5B3DB080A8490276702D6E708A02CD6D71C04EC │ │ │ │ +69A537E749426FA209CB1F169529096F08994B7E7528FA335FBEC6C73B2FF77D │ │ │ │ +60DABD7EB016A1C2A025BE63CE5170E701604C6DC9099E10EE66D56DD9A3113D │ │ │ │ +74DD8A13BE586DB39631FFB94F211965D38242DC206EA6F2BD69835AA6D8001C │ │ │ │ +11EC552D51D12EB2B67509545665260EB0FBCCCA5B71D3926AF8360CDD7A2E6B │ │ │ │ +8A77E84FDBEBE3511E1847614929D6737AA81B7CAD4F40C97636BC64FEF26A74 │ │ │ │ +E7EB9567ADACE0728CC763C58FFB1D0CB1F3FE640356F67E1200884BA278AFB3 │ │ │ │ +8D33FF87F5B6AD48F5BE8C5E16F5090225F888C932E354C0217BE71FA6482C50 │ │ │ │ +FBE15B0FFC62B6D8687C4928378F214886D925EC2CF39C289D59D30973B39408 │ │ │ │ +6D8781C96FFF771783C2CFF68E0193D9A7CF393A68706E79EBF5167A50B5E62A │ │ │ │ +871B03408BC1ED0CABBC93D23F3F0382AB4792F8894D5C7156210581A9D69CDD │ │ │ │ +CCF16B7C4CD908E4B695DD600436E0BF5E281D54190605A375BA612D52506CA1 │ │ │ │ +3B97618985AA898F3CA292635BA010DD4D5EABDDA1F8A2DF1695595A53747D6F │ │ │ │ +9633AAAD3EA6BC13D865866C734F5E80887A490038AE00F3D42A4777688183DA │ │ │ │ +3830F2A8DBEC794DF3676DF86061C8C6396A4D58D621065DF0BCDBD623B24376 │ │ │ │ +4F4C40A67FDC5780E74B92469C115BC1104AF67922AD80A8C7D194EEABC95D69 │ │ │ │ +B3B1648326908BEF4DEFFDC8801C70A27C5151DDFA2F139F0D437E96BFAFD759 │ │ │ │ +E05F2D75FB10C4DF23F21DCE3BB6E3708E7B14987D63490D6B0CB80BFB0DA297 │ │ │ │ +504F7745F5683F14471CCB4CDB9F30E4E5D317255C1B06D225DA97A56C786675 │ │ │ │ +E0373893D0E412309339F9A7A60586104C08BC3C1CFA3B0DD4BE6322E3A39AA7 │ │ │ │ +917E37D68B7F10EF2FB00CC4A25DD075C4F894DEE9B9939B43C8C269C6E8B413 │ │ │ │ +96187D7EA9B377844D487DDDFD133622914B1391156FDB064EBA7A121A322DD8 │ │ │ │ +D522EA45CC790609B78F194BADB44E98E3C17BE81E8B2F6D57CE235797B7C3C7 │ │ │ │ +AEA0202BA035625243B131F6620AB3D2587D06CA2A3402C877BFF80B00297753 │ │ │ │ +ED724580750AE3328A10E684011D1F4218466020EB2E43419ADC8C272A3AF0B1 │ │ │ │ +1C36302C6E9CDB89F34B1C57BA82DA6251115B11C9F20F577FE0600BF9D21E97 │ │ │ │ +926D2D3DE383E62E15BB42FAEC9A58857297A0B4F5BCE71C6E4D3DE65D2FB407 │ │ │ │ +54D05E83DC91C50CC16342F2E044B27252C0451396093C85C44A3D416E586FEC │ │ │ │ +E6B9BD2F65EFD0D4AD0D3C4F5DE0177778ACA627B42048F0339E0DD3886A8F17 │ │ │ │ +3E02B295EF6C96FF0AEC30A6A93C745F308232469B830A26782780F61B8D8C55 │ │ │ │ +64BEAF8A632FA2BF313C664C6AAB3B377FB7901826ADE22CABC9B31688A1C4F1 │ │ │ │ +2217FA2AFB78372D6B288FCED30F45A9D2C5BA5D9C26E9D0BFAD336700DF3874 │ │ │ │ +9D8F3B4ECF62EB07D845AE6D0AEBC5B3DDB60A1CDC784D4C7584A2C57C4F2627 │ │ │ │ +F68DB4FBCFE8F5D07B521E2651C02843A3310866206F0FEA1687A778C51DF5B8 │ │ │ │ +5C87CA91B8492330673B631FEA89AFA61E15FE5C6DE5A710ADDC2BFDB9A98879 │ │ │ │ +A7D177087169977CBB93A72024D8FB61B3D2985B1AB2AA59AFFDFF25861A558C │ │ │ │ +23B4E6BC6932A21990B4EEFD97AE5D18EFC22A9CCDB10775BB9938100697AD80 │ │ │ │ +FF93072B7C51D614DDB9CAB5CB65A566CCD926711DC38B8F97EA7389D4FF55C1 │ │ │ │ +92AD33130A50807C6F8A05B980739C32066F74D281AA8E2D6C64810386B2F2DB │ │ │ │ +36CDB344396168B83CADABC3BA9FAE53FE9B27AFE0B54FA98AB43962DC2AECD3 │ │ │ │ +C19B782A5B6A223D0ED3DA705732C1E90ECF523D71AB0DF44DB8CFB53B1EBE93 │ │ │ │ +A2955D36C644C7C6D863BD533DF57DBD4C7577A04E3C426BD4F9FBD67701457A │ │ │ │ +FB6F77C68E1932C95F8B5D44BA336F3525B9A66276D51B9C453E7A7E288648C9 │ │ │ │ +C98B81BE6304ABF2252E04190B3302CD894CA96F10F0A34AF3CE508EC6C129AE │ │ │ │ +6005D276D92269E5D7FCC9F7760D887AE31277FA96697B041CE8B49B2EF47796 │ │ │ │ +DD5FE892F18EF48EDA06933F008CBFF0EF6F457FCDC5E9C4A95426E3340FE64C │ │ │ │ +6C770BE9843FF9DF4F06EFAC3A1DBAF18374DEE98D64E2B5CA6ADB254A5AFBA4 │ │ │ │ +106E893721109A425E244AF58DE3738A20FBAA7FC5958188557890B046FD3A67 │ │ │ │ +91234E863DAB57F860D7BAF99296E2A18F0A6B4AD3ED22C0460C2A943E31422C │ │ │ │ +E9B2A07F93AF4673252E16B5124EE07E194F3D04782FFAE89DD755A547EB4A06 │ │ │ │ +7771FB6063A1A2DB936D479139E566C89028C96810375F7936284A0A93EA682D │ │ │ │ +14DC794E4D07FBD3493383067096221B32616E46B071EE03EE91D22AC1C865A9 │ │ │ │ +5E1B019FFA1EB8DD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6912,16 +6886,16 @@ │ │ │ │ 6[25 8[42 2[25 30 25 31[47 12[{}35 83.022 /CMTI10 rf │ │ │ │ /Fg 149[27 23 20[39 11[54 12[20 59[{}5 58.1154 /CMMI7 │ │ │ │ rf /Fh 157[46 44[55 55 55 55 50[{}5 83.022 /CMEX10 rf │ │ │ │ /Fi 137[40 48 2[37 3[50 1[25 1[34 29 1[40 1[39 1[36 1[44 │ │ │ │ 7[48 69 2[57 4[53 3[57 2[36 4[69 2[62 2[65 1[65 23 23 │ │ │ │ 58[{}23 83.022 /CMMI10 rf /Fj 135[102 3[75 1[79 1[108 │ │ │ │ 1[108 4[54 108 2[88 108 2[94 29[140 138 146 11[97 97 │ │ │ │ -97 97 97 49[{}18 172.188 /CMBX12 rf /Fk 141[33 4[69 7[37 │ │ │ │ -1[37 46 29[63 9[23 1[42 5[42 42 42 3[23 44[{}12 83.022 │ │ │ │ +97 97 97 49[{}18 172.188 /CMBX12 rf /Fk 139[32 1[33 2[42 │ │ │ │ +9[37 1[37 46 18[65 20[23 7[42 42 42 3[23 44[{}12 83.022 │ │ │ │ /CMSL10 rf /Fl 130[44 1[44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 │ │ │ │ 1[44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 44 44 │ │ │ │ 2[44 44 44 44 44 44 44 44 44 2[44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 1[44 44 44 33[{}84 83.022 /CMTT10 rf /Fm 131[232 2[123 │ │ │ │ 123 1[123 129 90 92 95 1[129 116 129 194 65 1[71 65 129 │ │ │ │ @@ -6937,20 +6911,20 @@ │ │ │ │ 2[65 72 1[91 57 2[36 3[63 73 69 68 72 8[48 48 1[48 48 │ │ │ │ 48 48 48 48 1[27 46[{}44 83.022 /CMBX10 rf /Fp 133[34 │ │ │ │ 41 41 55 41 43 30 30 30 1[43 38 43 64 21 2[21 43 38 23 │ │ │ │ 34 43 34 43 38 9[79 2[55 43 57 1[52 60 1[70 48 2[28 58 │ │ │ │ 3[59 55 54 58 7[38 38 38 38 38 38 38 38 38 38 1[21 26 │ │ │ │ 21 44[{}50 74.7198 /CMR9 rf /Fq 205[30 30 49[{}2 49.8132 │ │ │ │ /CMR6 rf /Fr 205[35 35 49[{}2 66.4176 /CMR8 rf /Fs 133[43 │ │ │ │ -3[51 54 38 38 38 1[54 49 54 81 27 2[27 54 49 30 43 54 │ │ │ │ -43 54 49 13[54 72 1[66 8[77 2[75 70 69 73 8[49 5[49 49 │ │ │ │ -49 3[27 44[{}33 99.6264 /CMR12 rf /Ft 172[90 2[110 121 │ │ │ │ -2[97 6[106 69[{}5 143.462 /CMBX12 rf /Fu 134[70 2[70 │ │ │ │ -73 51 52 51 70 73 66 73 111 36 1[40 36 1[66 40 58 1[58 │ │ │ │ -73 66 9[137 3[73 3[103 2[83 6[90 18[66 3[36 46[{}27 143.462 │ │ │ │ +3[51 54 38 38 38 1[54 49 54 1[27 2[27 54 49 30 43 54 │ │ │ │ +43 54 49 13[54 72 1[66 76 7[77 3[70 69 73 14[49 49 49 │ │ │ │ +3[27 44[{}31 99.6264 /CMR12 rf /Ft 172[90 2[110 121 2[97 │ │ │ │ +6[106 69[{}5 143.462 /CMBX12 rf /Fu 134[70 2[70 73 51 │ │ │ │ +52 51 70 73 66 73 111 36 1[40 36 1[66 40 58 1[58 73 66 │ │ │ │ +9[137 3[73 3[103 2[83 6[90 18[66 3[36 46[{}27 143.462 │ │ │ │ /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ @@ -6963,15 +6937,15 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 1103 1879 a Fu(W)-11 b(rapp)t(er)44 │ │ │ │ b(Ob)7 b(jects)43 b(for)g(Solving)1099 2062 y(a)g(Linear)g(System)g(of) │ │ │ │ g(Equations)1306 2245 y(using)g Ft(SPOOLES)g Fu(2.2)1052 │ │ │ │ 2635 y Fs(Clev)m(e)35 b(Ashcraft)699 2751 y(Bo)s(eing)e(Shared)g │ │ │ │ (Services)i(Group)1995 2715 y Fr(1)2483 2635 y Fs(P)m(eter)f(Sc)m │ │ │ │ (hartz)2342 2751 y(CSAR)f(Corp)s(oration)3162 2715 y │ │ │ │ -Fr(2)1547 3013 y Fs(Decem)m(b)s(er)h(20,)e(2018)104 4919 │ │ │ │ +Fr(2)1586 3013 y Fs(Octob)s(er)f(11,)g(2021)104 4919 │ │ │ │ y Fq(1)138 4951 y Fp(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ b(Mail)d(Stop)e(7L-21,)k(Seattle,)g(W)-6 b(ashington)34 │ │ │ │ b(98124.)64 b(This)35 b(researc)n(h)g(w)n(as)h(supp)r(orted)e(in)g │ │ │ │ (part)h(b)n(y)e(the)0 5042 y(D)n(ARP)-6 b(A)20 b(Con)n(tract)j(D)n │ │ │ │ (ABT63-95-C-0122)i(and)d(the)f(DoD)h(High)g(P)n(erformance)i(Computing) │ │ │ │ f(Mo)r(dernization)g(Program)h(Common)0 5133 y(HPC)i(Soft)n(w)n(are)h │ │ │ │ (Supp)r(ort)d(Initiativ)n(e.)104 5193 y Fq(2)138 5224 │ │ │ │ @@ -7099,17 +7073,17 @@ │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)93 b(30)125 5407 y(5.3)83 b(Protot)n(yp)r(es)26 b(and)i │ │ │ │ (descriptions)f(of)34 b Fl(BridgeMPI)24 b Fn(metho)r(ds)29 │ │ │ │ b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(32)1929 5656 y(1)p eop │ │ │ │ end │ │ │ │ %%Page: 2 4 │ │ │ │ -TeXDict begin 2 3 bop 83 100 748 4 v 913 100 a Fo(SPOOLES)32 │ │ │ │ +TeXDict begin 2 3 bop 83 100 781 4 v 946 100 a Fo(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fn(2)315 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fn(2)315 │ │ │ │ 390 y(5.3.1)94 b(Basic)27 b(metho)r(ds)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(32)315 515 y(5.3.2)h(Instance)27 b(metho)r(ds)j(.)41 │ │ │ │ b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)93 b(33)315 639 y(5.3.3)h(P)n(arameter)25 │ │ │ │ @@ -7231,18 +7205,18 @@ │ │ │ │ h(structures)f(using)h(serial)g(metho)r(ds.)48 b(In)32 │ │ │ │ b(the)f(MPI)g(en)n(vironmen)n(t,)h(the)0 5382 y(data)26 │ │ │ │ b(structures)h(for)f Fi(A)p Fn(,)h Fi(X)34 b Fn(and)26 │ │ │ │ b Fi(Y)46 b Fn(ma)n(y)26 b(b)r(e)i(distributed,)f(and)g(all)f(w)n │ │ │ │ (orking)g(data)g(structures)g(that)h(con)n(tain)g(the)g(factor)1929 │ │ │ │ 5656 y(3)p eop end │ │ │ │ %%Page: 4 6 │ │ │ │ -TeXDict begin 4 5 bop 83 100 748 4 v 913 100 a Fo(SPOOLES)32 │ │ │ │ +TeXDict begin 4 5 bop 83 100 781 4 v 946 100 a Fo(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fn(4)0 │ │ │ │ -390 y(matrices)i(and)h(their)h(supp)r(orting)e(information)h(are)f │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fn(4)0 │ │ │ │ +390 y(matrices)j(and)h(their)h(supp)r(orting)e(information)h(are)f │ │ │ │ (distributed.)45 b(The)30 b(MPI)g(co)r(de)g(is)g(m)n(uc)n(h)g(more)g │ │ │ │ (complex)f(than)i(the)0 490 y(serial)19 b(or)g(m)n(ultithreaded)h(co)r │ │ │ │ (des,)h(for)e(not)h(only)g(are)f(the)h(factor)f(and)h(solv)n(es)e │ │ │ │ (parallel)h(and)h(distributed)g(\(as)f(is)h(the)h(sym)n(b)r(olic)0 │ │ │ │ 589 y(factorization\),)j(but)h(there)g(is)f(a)h(great)e(deal)h(of)h │ │ │ │ (supp)r(ort)f(co)r(de)h(necessary)e(b)r(ecause)h(of)h(the)g │ │ │ │ (distributed)g(data)f(structures.)125 714 y(The)19 b(wrapp)r(er)f │ │ │ │ @@ -7343,18 +7317,18 @@ │ │ │ │ (and)0 5308 y(en)n(tries)f(in)i(the)f Fi(j)5 b Fn(-th)35 │ │ │ │ b(column)g(of)g(the)g(lo)n(w)n(er)f(triangle.)58 b(It)35 │ │ │ │ b(is)g(the)h(natural)e(data)g(structure)h(for)f(the)i(assem)n(bly)e(of) │ │ │ │ h(the)0 5407 y(matrix)27 b(en)n(tries)g(in)n(to)g(the)h(\\fron)n(ts")e │ │ │ │ (used)i(to)f(factor)g(the)h(matrix.)1929 5656 y(5)p eop │ │ │ │ end │ │ │ │ %%Page: 6 8 │ │ │ │ -TeXDict begin 6 7 bop 83 100 748 4 v 913 100 a Fo(SPOOLES)32 │ │ │ │ +TeXDict begin 6 7 bop 83 100 781 4 v 946 100 a Fo(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fn(6)125 │ │ │ │ -390 y(The)h Fl(InpMtx)e Fn(ob)5 b(ject)29 b(can)f(hold)g(one)h(of)f │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fn(6)125 │ │ │ │ +390 y(The)i Fl(InpMtx)e Fn(ob)5 b(ject)29 b(can)f(hold)g(one)h(of)f │ │ │ │ (three)h(t)n(yp)r(es)f(of)h(en)n(tries)f(as)g(\\indices)g(only")f(\(no) │ │ │ │ i(en)n(tries)f(are)f(presen)n(t\),)i(real)0 490 y(en)n(tries,)22 │ │ │ │ b(or)e(complex)h(en)n(tries.)34 b(The)22 b(t)n(yp)r(e)f(is)g(sp)r │ │ │ │ (eci\014ed)h(b)n(y)f(the)g Fl(inputMode)d Fn(parameter)i(to)h(the)h │ │ │ │ Fl(InpMtx)p 3296 490 27 4 v 29 w(init\(\))d Fn(metho)r(d.)125 │ │ │ │ 678 y Fe(\017)41 b Fl(INPMTX)p 477 678 V 28 w(INDICES)p │ │ │ │ 813 678 V 29 w(ONLY)24 b Fn(where)i(the)g(triples)g Fi(l)r(ang)s(l)r │ │ │ │ @@ -7441,17 +7415,17 @@ │ │ │ │ (submatrices,)f(and)h(eac)n(h)e(input)j(metho)r(d)f(has)f(three)g(t)n │ │ │ │ (yp)r(es)g(of)h(input,)h(e.g,)0 5219 y(indices)28 b(only)-7 │ │ │ │ b(,)27 b(real)g(en)n(tries,)g(or)f(complex)h(en)n(tries.)37 │ │ │ │ b(Here)27 b(are)f(the)i(protot)n(yp)r(es)f(b)r(elo)n(w.)125 │ │ │ │ 5407 y Fe(\017)41 b Fn(Input)28 b(metho)r(ds)g(for)f(\\indices)g(only") │ │ │ │ g(mo)r(de.)p eop end │ │ │ │ %%Page: 7 9 │ │ │ │ -TeXDict begin 7 8 bop 83 100 748 4 v 913 100 a Fo(SPOOLES)32 │ │ │ │ +TeXDict begin 7 8 bop 83 100 781 4 v 946 100 a Fo(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fn(7)208 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fn(7)208 │ │ │ │ 390 y Fl(void)41 b(InpMtx_inputEntry)c(\()43 b(InpMtx)e(*mtxA,)g(int)i │ │ │ │ (row,)f(int)g(col)g(\))i(;)208 490 y(void)d(InpMtx_inputRow)d(\()43 │ │ │ │ b(InpMtx)e(*mtxA,)g(int)i(row,)f(int)g(rowsize,)e(int)i(rowind[])f(\))i │ │ │ │ (;)208 589 y(void)e(InpMtx_inputColum)o(n)d(\()43 b(InpMtx)e(*mtxA,)g │ │ │ │ (int)h(col,)g(int)h(colsize,)d(int)i(colind[])f(\))i(;)208 │ │ │ │ 689 y(void)e(InpMtx_inputMatri)o(x)d(\()43 b(InpMtx)e(*mtxA,)g(int)h │ │ │ │ (nrow,)g(int)g(ncol,)g(int)g(rowstride,)1341 789 y(int)g(colstride,)e │ │ │ │ @@ -7504,17 +7478,17 @@ │ │ │ │ 262 4582 y(entries[0])c(=)k(4.0)f(;)262 4682 y(count)f(=)i(1)g(;)262 │ │ │ │ 4781 y(if)f(\()h(ii)g(<)g(n1)g(\))g({)392 4881 y(indices[count])38 │ │ │ │ b(=)43 b(ij)g(+)g(1)g(;)392 4980 y(entries[count])38 │ │ │ │ b(=)43 b(-1.0)f(;)392 5080 y(count++)f(;)262 5180 y(})262 │ │ │ │ 5279 y(if)h(\()h(jj)g(<)g(n2)g(\))g({)392 5379 y(indices[count])38 │ │ │ │ b(=)43 b(ij)g(+)g(n1)g(;)p eop end │ │ │ │ %%Page: 8 10 │ │ │ │ -TeXDict begin 8 9 bop 83 100 748 4 v 913 100 a Fo(SPOOLES)32 │ │ │ │ +TeXDict begin 8 9 bop 83 100 781 4 v 946 100 a Fo(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fn(8)392 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fn(8)392 │ │ │ │ 390 y Fl(entries[count])38 b(=)43 b(-1.0)f(;)392 490 │ │ │ │ y(count++)f(;)262 589 y(})262 689 y(InpMtx_inputRea)o(lR)o(ow\()o(mt)o │ │ │ │ (xA,)c(ij,)42 b(count,)f(indices,)f(entries\))h(;)131 │ │ │ │ 789 y(})0 888 y(})0 988 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o(tx) │ │ │ │ o(A,)c(INPMTX_BY_VECTORS)o(\))g(;)0 1169 y Fn(The)24 │ │ │ │ b(pro)r(cess)f(b)r(egins)i(b)n(y)f(allo)r(cating)f(an)h │ │ │ │ Fl(InpMtx)e Fn(ob)5 b(ject)24 b Fl(mtxA)e Fn(using)i(the)h │ │ │ │ @@ -7593,17 +7567,17 @@ │ │ │ │ 5208 y Fl(void)42 b(DenseMtx_rowIndi)o(ce)o(s)c(\()43 │ │ │ │ b(DenseMtx)d(*mtx,)i(int)g(*pnrow,)f(int)h(*prowind)e(\))j(;)0 │ │ │ │ 5308 y(void)f(DenseMtx_columnI)o(nd)o(ice)o(s)37 b(\()44 │ │ │ │ b(DenseMtx)c(*mtx,)h(int)i(*pncol,)d(int)j(*pcolind)d(\))j(;)0 │ │ │ │ 5407 y(double)e(*)i(DenseMtx_entries)37 b(\()43 b(DenseMtx)e(*mtx)h(\)) │ │ │ │ h(;)p eop end │ │ │ │ %%Page: 9 11 │ │ │ │ -TeXDict begin 9 10 bop 83 100 748 4 v 913 100 a Fo(SPOOLES)32 │ │ │ │ +TeXDict begin 9 10 bop 83 100 781 4 v 946 100 a Fo(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)27 b(20,)g(2018)p 3113 100 V 748 w Fn(9)0 │ │ │ │ +b(Octob)r(er)27 b(11,)f(2021)p 3080 100 V 781 w Fn(9)0 │ │ │ │ 390 y(W)-7 b(e)28 b(w)n(ould)f(use)h(them)g(as)f(follo)n(ws.)0 │ │ │ │ 578 y Fl(double)128 b(*entries)41 b(;)0 678 y(int)260 │ │ │ │ b(ncol,)42 b(nrow,)f(*colind,)g(*rowind)f(;)0 877 y(DenseMtx_rowIndi)o │ │ │ │ (ces)o(\(m)o(tx)o(,)e(&nrow,)j(&rowind\))f(;)0 977 y(DenseMtx_columnI)o │ │ │ │ (ndi)o(ce)o(s\()o(mtx)o(,)d(&ncol,)42 b(&colind\))e(;)0 │ │ │ │ 1076 y(entries)h(=)i(DenseMtx_entries)o(\(m)o(tx\))37 │ │ │ │ b(;)0 1264 y Fn(W)-7 b(e)35 b(can)f(no)n(w)g(\014ll)h(the)g(indices)f │ │ │ │ @@ -7658,17 +7632,17 @@ │ │ │ │ b(InpMtx)d(*obj,)g(char)h(*filename)e(\))j(;)125 5242 │ │ │ │ y Fe(\017)e Fl(int)h(InpMtx)p 651 5242 V 29 w(readFromFormatte)o(dF)o │ │ │ │ (ile)37 b(\()43 b(InpMtx)e(*obj,)g(FILE)h(*fp)h(\))g(;)125 │ │ │ │ 5407 y Fe(\017)e Fl(int)h(InpMtx)p 651 5407 V 29 w(readFromBinaryFi)o │ │ │ │ (le)37 b(\()43 b(InpMtx)e(*obj,)h(FILE)g(*fp)g(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 10 12 │ │ │ │ -TeXDict begin 10 11 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(10)125 │ │ │ │ +TeXDict begin 10 11 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(10)125 │ │ │ │ 390 y Fe(\017)41 b Fl(int)h(InpMtx)p 651 390 27 4 v 29 │ │ │ │ w(writeToFile)d(\()k(InpMtx)e(*obj,)h(char)g(*filename)d(\))44 │ │ │ │ b(;)125 556 y Fe(\017)d Fl(int)h(InpMtx)p 651 556 V 29 │ │ │ │ w(writeToFormatted)o(Fi)o(le)37 b(\()43 b(InpMtx)e(*obj,)h(FILE)g(*fp)g │ │ │ │ (\))h(;)125 722 y Fe(\017)e Fl(int)h(InpMtx)p 651 722 │ │ │ │ V 29 w(writeToBinaryFil)o(e)37 b(\()44 b(InpMtx)d(*obj,)g(FILE)h(*fp)g │ │ │ │ (\))i(;)125 888 y Fe(\017)d Fl(int)h(InpMtx)p 651 888 │ │ │ │ @@ -7793,17 +7767,17 @@ │ │ │ │ Fl(Bridge)d Fn(metho)r(ds.)0 5115 y Fd(3.1)135 b(A)45 │ │ │ │ b(quic)l(k)g(lo)t(ok)g(at)h(serial)g(driv)l(er)f(program)0 │ │ │ │ 5321 y Fn(The)28 b(en)n(tire)f(listing)g(of)h(this)g(serial)e(driv)n │ │ │ │ (er)h(is)g(found)h(in)g(App)r(endix)g(A.)38 b(W)-7 b(e)28 │ │ │ │ b(no)n(w)f(extract)f(parts)h(of)h(the)g(co)r(de.)1908 │ │ │ │ 5656 y(11)p eop end │ │ │ │ %%Page: 12 14 │ │ │ │ -TeXDict begin 12 13 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(12)125 │ │ │ │ +TeXDict begin 12 13 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(12)125 │ │ │ │ 390 y Fe(\017)41 b Fn(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ 606 y Fl(msglvl)302 b(=)43 b(atoi\(argv[1]\))c(;)208 │ │ │ │ 706 y(msgFileName)82 b(=)43 b(argv[6])e(;)208 805 y(neqns)346 │ │ │ │ b(=)43 b(atoi\(argv[3]\))c(;)208 905 y(type)390 b(=)43 │ │ │ │ b(atoi\(argv[4]\))c(;)208 1005 y(symmetryflag)f(=)43 │ │ │ │ b(atoi\(argv[5]\))c(;)208 1104 y(mtxFileName)82 b(=)43 │ │ │ │ b(argv[6])e(;)208 1204 y(rhsFileName)82 b(=)43 b(argv[7])e(;)208 │ │ │ │ @@ -7858,17 +7832,17 @@ │ │ │ │ 5006 y Fn(The)28 b Fl(nrhs)f Fn(parameter)g(con)n(tains)g(the)i(n)n(um) │ │ │ │ n(b)r(er)f(of)g(righ)n(t)g(hand)g(sides,)g(or)g(equiv)-5 │ │ │ │ b(alen)n(tly)e(,)28 b(the)h(n)n(um)n(b)r(er)f(of)g(columns)208 │ │ │ │ 5106 y(in)f Fi(Y)19 b Fn(.)125 5272 y Fe(\017)41 b Fn(Create)26 │ │ │ │ b(and)i(setup)g(the)g Fl(Bridge)d Fn(ob)5 b(ject.)p eop │ │ │ │ end │ │ │ │ %%Page: 13 15 │ │ │ │ -TeXDict begin 13 14 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(13)208 │ │ │ │ +TeXDict begin 13 14 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(13)208 │ │ │ │ 390 y Fl(bridge)41 b(=)i(Bridge_new\(\))38 b(;)208 490 │ │ │ │ y(Bridge_setMatri)o(xPa)o(ra)o(ms)o(\(br)o(id)o(ge,)f(neqns,)k(type,)g │ │ │ │ (symmetryflag\))e(;)208 589 y(Bridge_setMessa)o(geI)o(nf)o(o\()o(bri)o │ │ │ │ (dg)o(e,)e(msglvl,)k(msgFile\))f(;)208 689 y(rc)i(=)h │ │ │ │ (Bridge_setup\(brid)o(ge,)37 b(mtxA\))k(;)208 888 y Fn(The)19 │ │ │ │ b Fl(Bridge)d Fn(ob)5 b(ject)19 b(is)g(allo)r(cated)f(b)n(y)g │ │ │ │ Fl(Bridge)p 1687 888 27 4 v 29 w(new\(\))p Fn(,)h(and)g(v)-5 │ │ │ │ @@ -7924,17 +7898,17 @@ │ │ │ │ (of)h(zeros)f(to)h(allo)n(w)f(in)h(a)f(fron)n(t)h(during)f(the)i(sup)r │ │ │ │ (erno)r(de)e(amalgama-)390 5039 y(tion)j(pro)r(cess.)301 │ │ │ │ 5172 y Fo({)41 b Fl(int)i(maxsize)24 b Fn(:)37 b(maxim)n(um)28 │ │ │ │ b(size)f(of)h(a)f(fron)n(t)g(when)h(the)g(fron)n(ts)f(are)f(split.)301 │ │ │ │ 5305 y Fo({)41 b Fl(int)i(seed)26 b Fn(:)37 b(random)26 │ │ │ │ b(n)n(um)n(b)r(er)i(seed.)p eop end │ │ │ │ %%Page: 14 16 │ │ │ │ -TeXDict begin 14 15 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(14)301 │ │ │ │ +TeXDict begin 14 15 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(14)301 │ │ │ │ 390 y Fo({)41 b Fl(double)g(compressCutoff)22 b Fn(:)36 │ │ │ │ b(if)28 b(the)g Fl(Neqns)d Fi(<)i Fl(compressCutoff)21 │ │ │ │ b Fe(\003)27 b Fl(neqns)p Fn(,)e(then)j(the)f(compressed)f(graph)390 │ │ │ │ 490 y(is)i(formed,)f(ordered)f(and)i(used)f(to)h(create)e(the)i(sym)n │ │ │ │ (b)r(olic)g(factorization.)125 642 y Fe(\017)41 b Fn(Matrix)27 │ │ │ │ b(parameters:)301 795 y Fo({)41 b Fl(int)i(type)26 b │ │ │ │ Fn(:)37 b(t)n(yp)r(e)27 b(of)h(en)n(tries,)f Fl(SPOOLES)p │ │ │ │ @@ -8031,17 +8005,17 @@ │ │ │ │ b(factor)g(time)2242 5120 y Fl(cpus[10])d Fn(:)100 b(time)28 │ │ │ │ b(to)f(p)r(erm)n(ute)h(rhs)2242 5220 y Fl(cpus[11])c │ │ │ │ Fn(:)100 b(time)28 b(to)f(solv)n(e)2242 5319 y Fl(cpus[12])d │ │ │ │ Fn(:)100 b(time)28 b(to)f(p)r(erm)n(ute)h(solution)2242 │ │ │ │ 5419 y Fl(cpus[13])c Fn(:)100 b(total)27 b(solv)n(e)g(time)p │ │ │ │ eop end │ │ │ │ %%Page: 15 17 │ │ │ │ -TeXDict begin 15 16 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(15)0 │ │ │ │ +TeXDict begin 15 16 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(15)0 │ │ │ │ 390 y Fd(3.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)58 │ │ │ │ b Fc(Bridge)42 b Fd(metho)t(ds)0 597 y Fn(This)22 b(section)f(con)n │ │ │ │ (tains)g(brief)h(descriptions)f(including)h(protot)n(yp)r(es)f(of)h │ │ │ │ (all)g(metho)r(ds)g(that)g(b)r(elong)g(to)f(the)i Fl(Bridge)c │ │ │ │ Fn(ob)5 b(ject.)0 854 y Fb(3.3.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 1032 y Fn(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g │ │ │ │ (to)h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ @@ -8099,17 +8073,17 @@ │ │ │ │ b Fl(int)g(Bridge_newToOldI)o(V)37 b(\()44 b(Bridge)d(*bridge,)f(IV)j │ │ │ │ (**pobj)e(\))i(;)208 5229 y Fn(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fl(*pobj)e Fn(with)i(its)f Fl(newToOldIV)d Fn(p)r(oin)n(ter.)208 │ │ │ │ 5362 y Ff(R)l(eturn)k(value:)38 b Fn(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)e(-2)h(if)34 │ │ │ │ b Fl(pobj)26 b Fn(is)i Fl(NULL)p Fn(.)p eop end │ │ │ │ %%Page: 16 18 │ │ │ │ -TeXDict begin 16 17 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(16)101 │ │ │ │ +TeXDict begin 16 17 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(16)101 │ │ │ │ 390 y(3.)42 b Fl(int)g(Bridge_frontETre)o(e)37 b(\()44 │ │ │ │ b(Bridge)d(*bridge,)f(ETree)i(**pobj)f(\))i(;)208 523 │ │ │ │ y Fn(This)27 b(metho)r(d)h(\014lls)g Fl(*pobj)e Fn(with)i(its)f │ │ │ │ Fl(frontETree)d Fn(p)r(oin)n(ter.)208 656 y Ff(R)l(eturn)k(value:)38 │ │ │ │ b Fn(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)e(-2)h(if)34 b │ │ │ │ Fl(pobj)26 b Fn(is)i Fl(NULL)p Fn(.)101 822 y(4.)42 b │ │ │ │ @@ -8170,17 +8144,17 @@ │ │ │ │ 208 5233 y Fn(This)27 b(metho)r(d)h(sets)g(the)g(message)e(lev)n(el)h │ │ │ │ (and)g(\014le.)208 5366 y Ff(R)l(eturn)h(value:)38 b │ │ │ │ Fn(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b Fl(bridge)25 │ │ │ │ b Fn(is)j Fl(NULL)p Fn(,)e(-2)h(if)34 b Fl(msglvl)26 │ │ │ │ b Fi(>)h Fn(0)g(and)g Fl(msgFile)e Fn(is)j Fl(NULL)p │ │ │ │ Fn(.)p eop end │ │ │ │ %%Page: 17 19 │ │ │ │ -TeXDict begin 17 18 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(17)0 │ │ │ │ +TeXDict begin 17 18 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(17)0 │ │ │ │ 390 y Fb(3.3.4)112 b(Setup)38 b(metho)s(ds)101 568 y │ │ │ │ Fn(1.)k Fl(int)g(Bridge_setup)d(\()k(Bridge)e(*bridge,)f(InpMtx)h │ │ │ │ (*mtxA)h(\))h(;)208 701 y Fn(This)38 b(metho)r(d)i(orders)d(the)i │ │ │ │ (graph,)h(generates)d(the)j(fron)n(t)e(tree,)j(computes)e(the)g(sym)n │ │ │ │ (b)r(olic)f(factorization,)i(and)208 801 y(creates)26 │ │ │ │ b(the)i(t)n(w)n(o)f(p)r(erm)n(utation)g(v)n(ectors.)208 │ │ │ │ 934 y Ff(R)l(eturn)h(value:)38 b Fn(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ @@ -8295,17 +8269,17 @@ │ │ │ │ g Fl(BridgeMT)d Fn(driv)n(er)h(program)g(\(whose)i(complete)g(listing)g │ │ │ │ (is)g(found)g(in)0 5308 y(App)r(endix)27 b(B\).)36 b(Section)26 │ │ │ │ b(4.2)f(describ)r(es)h(the)g(in)n(ternal)f(data)h(\014elds)g(of)g(the)g │ │ │ │ Fl(BridgeMT)d Fn(ob)5 b(ject.)36 b(Section)26 b(3.3)f(con)n(tains)g │ │ │ │ (the)0 5407 y(protot)n(yp)r(es)h(and)i(descriptions)f(of)g(all)h │ │ │ │ Fl(Bridge)d Fn(metho)r(ds.)1908 5656 y(18)p eop end │ │ │ │ %%Page: 19 21 │ │ │ │ -TeXDict begin 19 20 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(19)0 │ │ │ │ +TeXDict begin 19 20 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(19)0 │ │ │ │ 390 y Fd(4.1)135 b(A)45 b(quic)l(k)g(lo)t(ok)g(at)h(the)f(m)l │ │ │ │ (ultithreaded)h(driv)l(er)g(program)0 596 y Fn(The)28 │ │ │ │ b(en)n(tire)f(listing)g(of)h(this)g(m)n(ultithreaded)f(driv)n(er)g(is)g │ │ │ │ (found)h(in)g(App)r(endix)g(B.)37 b(W)-7 b(e)28 b(no)n(w)f(extract)g │ │ │ │ (parts)g(of)g(the)h(co)r(de.)125 785 y Fe(\017)41 b Fn(Deco)r(de)27 │ │ │ │ b(the)h(input.)208 998 y Fl(msglvl)302 b(=)43 b(atoi\(argv[1]\))c(;)208 │ │ │ │ 1097 y(msgFileName)82 b(=)43 b(argv[6])e(;)208 1197 y(neqns)346 │ │ │ │ @@ -8362,18 +8336,18 @@ │ │ │ │ 125 5011 y Fe(\017)41 b Fn(Read)27 b(in)h(the)g Fl(DenseMtx)c │ │ │ │ Fn(ob)5 b(ject)27 b(for)h Fi(Y)18 b Fn(.)208 5208 y Fl(mtxY)41 │ │ │ │ b(=)j(DenseMtx_new\(\))37 b(;)208 5308 y(rc)42 b(=)h(DenseMtx_readFrom) │ │ │ │ o(Fil)o(e\()o(mtx)o(Y,)37 b(mtxFileName\))i(;)208 5407 │ │ │ │ y(DenseMtx_dimens)o(ion)o(s\()o(mt)o(xY,)e(&nrow,)k(&nrhs\))g(;)p │ │ │ │ eop end │ │ │ │ %%Page: 20 22 │ │ │ │ -TeXDict begin 20 21 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(20)208 │ │ │ │ -390 y(The)i Fl(nrhs)f Fn(parameter)g(con)n(tains)g(the)i(n)n(um)n(b)r │ │ │ │ +TeXDict begin 20 21 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(20)208 │ │ │ │ +390 y(The)h Fl(nrhs)f Fn(parameter)g(con)n(tains)g(the)i(n)n(um)n(b)r │ │ │ │ (er)f(of)g(righ)n(t)g(hand)g(sides,)g(or)g(equiv)-5 b(alen)n(tly)e(,)28 │ │ │ │ b(the)h(n)n(um)n(b)r(er)f(of)g(columns)208 490 y(in)f │ │ │ │ Fi(Y)19 b Fn(.)125 656 y Fe(\017)41 b Fn(Create)26 b(and)i(setup)g(the) │ │ │ │ g Fl(BridgeMT)c Fn(ob)5 b(ject.)208 855 y Fl(bridge)41 │ │ │ │ b(=)i(BridgeMT_new\(\))38 b(;)208 955 y(BridgeMT_setMat)o(rix)o(Pa)o │ │ │ │ (ra)o(ms\()o(br)o(idg)o(e,)f(neqns,)k(type,)h(symmetryflag\))c(;)208 │ │ │ │ 1054 y(BridgeMT_setMes)o(sag)o(eI)o(nf)o(o\(b)o(ri)o(dge)o(,)f(msglvl,) │ │ │ │ @@ -8427,17 +8401,17 @@ │ │ │ │ b(The)28 b(solution)g(is)g(then)g(solv)n(ed.)208 5006 │ │ │ │ y(Again,)d(note)h(the)g(presence)g(of)f Fl(permuteflag)p │ │ │ │ Fn(.)32 b(When)27 b Fl(1)p Fn(,)f Fl(mtxY)e Fn(needs)i(to)f(b)r(e)i(p)r │ │ │ │ (erm)n(uted)f(in)n(to)f(the)i(new)f(ordering,)208 5106 │ │ │ │ y(and)h Fl(mtxX)f Fn(is)h(returned)h(in)g(the)f(original)g(ordering.)p │ │ │ │ eop end │ │ │ │ %%Page: 21 23 │ │ │ │ -TeXDict begin 21 22 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(21)0 │ │ │ │ +TeXDict begin 21 22 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(21)0 │ │ │ │ 390 y Fd(4.2)135 b(The)45 b Fc(BridgeMT)c Fd(Data)46 │ │ │ │ b(Structure)0 596 y Fn(The)28 b Fl(BridgeMT)c Fn(structure)j(has)g(the) │ │ │ │ h(follo)n(wing)f(\014elds.)125 784 y Fe(\017)41 b Fn(Graph)27 │ │ │ │ b(parameters:)301 949 y Fo({)41 b Fl(int)i(neqns)25 b │ │ │ │ Fn(:)37 b(n)n(um)n(b)r(er)27 b(of)h(equations,)f(i.e.,)h(n)n(um)n(b)r │ │ │ │ (er)f(of)h(v)n(ertices)e(in)i(the)g(graph.)301 1081 y │ │ │ │ Fo({)41 b Fl(int)i(nedges)25 b Fn(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ @@ -8515,17 +8489,17 @@ │ │ │ │ b Fn(:)k(ob)5 b(ject)28 b(that)g(con)n(tains)e(the)i(sym)n(b)r(olic)f │ │ │ │ (factorization)g(of)g(the)h(matrix.)301 5308 y Fo({)41 │ │ │ │ b Fl(SubMtxManager)d(*mtxmanager)33 b Fn(:)55 b(ob)5 │ │ │ │ b(ject)37 b(that)g(manages)f(the)h Fl(SubMtx)d Fn(ob)5 │ │ │ │ b(jects)37 b(that)g(store)f(the)h(factor)390 5407 y(en)n(tries)27 │ │ │ │ b(and)h(are)e(used)i(in)g(the)g(solv)n(es.)p eop end │ │ │ │ %%Page: 22 24 │ │ │ │ -TeXDict begin 22 23 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(22)301 │ │ │ │ +TeXDict begin 22 23 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(22)301 │ │ │ │ 390 y Fo({)41 b Fl(FrontMtx)f(*frontmtx)24 b Fn(:)37 │ │ │ │ b(ob)5 b(ject)28 b(that)g(stores)e(the)i Fi(L)p Fn(,)f │ │ │ │ Fi(D)j Fn(and)d Fi(U)37 b Fn(factor)27 b(matrices.)301 │ │ │ │ 523 y Fo({)41 b Fl(IV)i(*oldToNewIV)23 b Fn(:)28 b(ob)5 │ │ │ │ b(ject)27 b(that)h(stores)e(old-to-new)h(p)r(erm)n(utation)g(v)n │ │ │ │ (ector.)301 656 y Fo({)41 b Fl(IV)i(*newToOldIV)23 b │ │ │ │ Fn(:)28 b(ob)5 b(ject)27 b(that)h(stores)e(new-to-old)h(p)r(erm)n │ │ │ │ @@ -8599,17 +8573,17 @@ │ │ │ │ 4973 y Fb(4.3.1)112 b(Basic)38 b(metho)s(ds)0 5151 y │ │ │ │ Fn(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g(to)h │ │ │ │ (supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ (\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 5251 │ │ │ │ y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)p eop │ │ │ │ end │ │ │ │ %%Page: 23 25 │ │ │ │ -TeXDict begin 23 24 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(23)101 │ │ │ │ +TeXDict begin 23 24 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(23)101 │ │ │ │ 390 y(1.)42 b Fl(BridgeMT)e(*)j(BridgeMT_new)c(\()k(void)f(\))h(;)208 │ │ │ │ 521 y Fn(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f(storage)f(for)h │ │ │ │ (the)h Fl(BridgeMT)d Fn(structure)i(and)g(then)i(sets)e(the)h(default)g │ │ │ │ (\014elds)g(b)n(y)f(a)208 621 y(call)g(to)g Fl(BridgeMT)p │ │ │ │ 818 621 27 4 v 28 w(setDefaultFields\()o(\))p Fn(.)101 │ │ │ │ 783 y(2.)42 b Fl(int)g(BridgeMT_setDefa)o(ul)o(tFi)o(el)o(ds)37 │ │ │ │ b(\()43 b(BridgeMT)e(*bridge)f(\))j(;)208 913 y Fn(The)27 │ │ │ │ @@ -8673,17 +8647,17 @@ │ │ │ │ b Fl(int)g(BridgeMT_symbfac)o(IV)o(L)c(\()43 b(BridgeMT)d(*bridge,)g │ │ │ │ (IVL)j(**pobj)e(\))i(;)208 5276 y Fn(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fl(*pobj)e Fn(with)i(its)f Fl(symbfacIVL)d Fn(p)r(oin)n(ter.)208 │ │ │ │ 5407 y Ff(R)l(eturn)k(value:)38 b Fn(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)e(-2)h(if)34 │ │ │ │ b Fl(pobj)26 b Fn(is)i Fl(NULL)p Fn(.)p eop end │ │ │ │ %%Page: 24 26 │ │ │ │ -TeXDict begin 24 25 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(24)101 │ │ │ │ +TeXDict begin 24 25 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(24)101 │ │ │ │ 390 y(5.)42 b Fl(int)g(BridgeMT_mtxmana)o(ge)o(r)c(\()43 │ │ │ │ b(BridgeMT)d(*bridge,)g(SubMtxManager)f(**pobj)i(\))i(;)208 │ │ │ │ 523 y Fn(This)27 b(metho)r(d)h(\014lls)g Fl(*pobj)e Fn(with)i(its)f │ │ │ │ Fl(mtxmanager)d Fn(p)r(oin)n(ter.)208 656 y Ff(R)l(eturn)k(value:)38 │ │ │ │ b Fn(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)e(-2)h(if)34 b │ │ │ │ Fl(pobj)26 b Fn(is)i Fl(NULL)p Fn(.)101 822 y(6.)42 b │ │ │ │ @@ -8744,17 +8718,17 @@ │ │ │ │ (Par)o(am)o(s)c(\()43 b(BridgeMT)d(*bridge,)g(int)j(sparsityflag,)38 │ │ │ │ b(int)k(pivotingflag,)818 5125 y(double)f(tau,)h(double)f(droptol,)f │ │ │ │ (int)j(lookahead,)c(PatchAndGoInfo)f(*patchinfo)h(\))k(;)208 │ │ │ │ 5258 y Fn(This)27 b(metho)r(d)h(sets)g(parameters)d(needed)j(for)f(the) │ │ │ │ h(factorization.)208 5391 y Ff(R)l(eturn)g(value:)p eop │ │ │ │ end │ │ │ │ %%Page: 25 27 │ │ │ │ -TeXDict begin 25 26 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(25)1135 │ │ │ │ +TeXDict begin 25 26 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(25)1135 │ │ │ │ 377 y(1)99 b(normal)27 b(return)1107 477 y(-1)99 b Fl(bridge)25 │ │ │ │ b Fn(is)j Fl(NULL)1107 576 y Fn(-2)99 b Fl(sparsityflag)23 │ │ │ │ b Fn(is)k(in)n(v)-5 b(alid)1107 676 y(-3)99 b Fl(pivotingflag)23 │ │ │ │ b Fn(is)k(in)n(v)-5 b(alid)2278 427 y(-4)98 b Fl(tau)27 │ │ │ │ b Fi(<)g Fn(2.0)2278 526 y(-5)98 b Fl(droptol)25 b Fi(<)i │ │ │ │ Fn(0.0)2278 626 y(-6)98 b Fl(lookahead)24 b Fi(<)k Fn(0)101 │ │ │ │ 871 y(4.)42 b Fl(int)g(BridgeMT_setMess)o(ag)o(esI)o(nf)o(o)c(\()43 │ │ │ │ @@ -8817,17 +8791,17 @@ │ │ │ │ b(whic)n(h)h(sp)r(eci\014es)g(the)g(relativ)n(e)f(size)g(of)h(a)g │ │ │ │ (subtree)f(that)h(forms)f(a)208 5132 y(domain.)49 b(If)39 │ │ │ │ b Fl(maptype)30 b Fn(is)i(not)g(one)f(of)h(1,)h(2,)g(3)f(or)f(4,)i(the) │ │ │ │ f(default)h(map)f(is)g(used:)45 b(domain)32 b(decomp)r(osition)g(with) │ │ │ │ 208 5232 y Fl(cutoff)25 b Fn(=)i(1/\(2*)p Fl(nthread)p │ │ │ │ Fn(\).)208 5365 y Ff(R)l(eturn)h(value:)p eop end │ │ │ │ %%Page: 26 28 │ │ │ │ -TeXDict begin 26 27 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(26)618 │ │ │ │ +TeXDict begin 26 27 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(26)618 │ │ │ │ 377 y(1)99 b(normal)26 b(return,)i(factorization)e(did)i(complete)590 │ │ │ │ 477 y(-1)99 b Fl(bridge)25 b Fn(is)i Fl(NULL)2393 377 │ │ │ │ y Fn(-2)99 b Fl(nthread)24 b Fi(<)k Fn(1)2393 477 y(-5)99 │ │ │ │ b Fl(frontETree)23 b Fn(is)28 b(not)f(presen)n(t)101 │ │ │ │ 672 y(2.)42 b Fl(int)g(BridgeMT_factor)37 b(\()43 b(BridgeMT)e │ │ │ │ (*bridge,)f(InpMtx)h(*mtxA,)g(int)i(permuteflag,)38 b(int)43 │ │ │ │ b(*perror)d(\))j(;)208 805 y Fn(This)24 b(metho)r(d)g(p)r(erm)n(utes)g │ │ │ │ @@ -8924,17 +8898,17 @@ │ │ │ │ Fl(BridgeMPI)d Fn(driv)n(er)i(program)f(\(whose)i(complete)g(listing)g │ │ │ │ (is)g(found)h(in)0 5164 y(App)r(endix)32 b(C\).)49 b(Section)32 │ │ │ │ b(5.2)e(describ)r(es)h(the)h(in)n(ternal)f(data)g(\014elds)g(of)h(the)g │ │ │ │ Fl(BridgeMPI)c Fn(ob)5 b(ject.)48 b(Section)31 b(3.3)g(con)n(tains)0 │ │ │ │ 5264 y(the)d(protot)n(yp)r(es)e(and)i(descriptions)f(of)g(all)h │ │ │ │ Fl(Bridge)d Fn(metho)r(ds.)1908 5656 y(27)p eop end │ │ │ │ %%Page: 28 30 │ │ │ │ -TeXDict begin 28 29 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(28)0 │ │ │ │ +TeXDict begin 28 29 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(28)0 │ │ │ │ 390 y Fd(5.1)135 b(A)45 b(quic)l(k)g(lo)t(ok)g(at)h(the)f(MPI)f(driv)l │ │ │ │ (er)i(program)0 594 y Fn(The)28 b(en)n(tire)f(listing)g(of)h(this)g │ │ │ │ (MPI)f(driv)n(er)f(is)i(found)g(in)g(App)r(endix)g(C.)37 │ │ │ │ b(W)-7 b(e)28 b(no)n(w)f(extract)g(parts)g(of)g(the)h(co)r(de.)125 │ │ │ │ 769 y Fe(\017)41 b Fn(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ 966 y Fl(msglvl)302 b(=)43 b(atoi\(argv[1]\))c(;)208 │ │ │ │ 1065 y(msgFileName)82 b(=)43 b(argv[6])e(;)208 1165 y(neqns)346 │ │ │ │ @@ -8998,17 +8972,17 @@ │ │ │ │ (er)f(of)g(columns)208 5308 y(in)d Fi(Y)18 b Fn(.)36 │ │ │ │ b(Pro)r(cessor)23 b(0)h(then)h(broadcasts)e(the)j(error)d(return)h(to)h │ │ │ │ (the)g(other)g(pro)r(cessors.)33 b(If)25 b(an)g(error)e(o)r(ccured)h │ │ │ │ (reading)208 5407 y(in)j(the)h(matrix,)g(all)f(pro)r(cessors)e(call)i │ │ │ │ Fl(MPI)p 1541 5407 V 30 w(Finalize\(\))d Fn(and)j(exit.)p │ │ │ │ eop end │ │ │ │ %%Page: 29 31 │ │ │ │ -TeXDict begin 29 30 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(29)125 │ │ │ │ +TeXDict begin 29 30 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(29)125 │ │ │ │ 390 y Fe(\017)41 b Fn(Create)26 b(and)i(setup)g(the)g │ │ │ │ Fl(BridgeMPI)c Fn(ob)5 b(ject.)208 589 y Fl(bridge)41 │ │ │ │ b(=)i(BridgeMPI_new\(\))37 b(;)208 689 y(BridgeMPI_setMP)o(Ipa)o(ra)o │ │ │ │ (ms)o(\(br)o(id)o(ge,)g(nproc,)k(myid,)g(MPI_COMM_WORLD\))d(;)208 │ │ │ │ 789 y(BridgeMPI_setMa)o(tri)o(xP)o(ar)o(ams)o(\(b)o(rid)o(ge)o(,)f │ │ │ │ (neqns,)42 b(type,)f(symmetryflag\))d(;)208 888 y(BridgeMPI_setMe)o │ │ │ │ (ssa)o(ge)o(In)o(fo\()o(br)o(idg)o(e,)f(msglvl,)k(msgFile\))f(;)208 │ │ │ │ @@ -9064,17 +9038,17 @@ │ │ │ │ o(rid)o(ge)o(,)38 b(permuteflag,)g(mtxX,)k(mtxY\))f(;)208 │ │ │ │ 5139 y Fn(Again,)25 b(note)h(the)g(presence)g(of)f Fl(permuteflag)p │ │ │ │ Fn(.)32 b(When)27 b Fl(1)p Fn(,)f Fl(mtxY)e Fn(needs)i(to)f(b)r(e)i(p)r │ │ │ │ (erm)n(uted)f(in)n(to)f(the)i(new)f(ordering,)208 5239 │ │ │ │ y(and)h Fl(mtxX)f Fn(is)h(returned)h(in)g(the)f(original)g(ordering.)p │ │ │ │ eop end │ │ │ │ %%Page: 30 32 │ │ │ │ -TeXDict begin 30 31 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(30)0 │ │ │ │ +TeXDict begin 30 31 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(30)0 │ │ │ │ 390 y Fd(5.2)135 b(The)45 b Fc(BridgeMPI)40 b Fd(Data)46 │ │ │ │ b(Structure)0 595 y Fn(The)28 b Fl(BridgeMPI)c Fn(structure)j(has)g │ │ │ │ (the)h(follo)n(wing)e(\014elds.)125 776 y Fe(\017)41 │ │ │ │ b Fn(Graph)27 b(parameters:)301 939 y Fo({)41 b Fl(int)i(neqns)25 │ │ │ │ b Fn(:)37 b(n)n(um)n(b)r(er)27 b(of)h(equations,)f(i.e.,)h(n)n(um)n(b)r │ │ │ │ (er)f(of)h(v)n(ertices)e(in)i(the)g(graph.)301 1068 y │ │ │ │ Fo({)41 b Fl(int)i(nedges)25 b Fn(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ @@ -9157,17 +9131,17 @@ │ │ │ │ b(ject)30 b(that)h(de\014nes)f(the)h(factorizations,)e(e.g.,)i(the)g(n) │ │ │ │ n(um)n(b)r(er)f(of)g(fron)n(ts,)h(the)f(tree)390 5308 │ │ │ │ y(they)d(form,)f(the)h(n)n(um)n(b)r(er)g(of)f(in)n(ternal)g(and)h │ │ │ │ (external)e(ro)n(ws)g(for)h(eac)n(h)g(fron)n(t,)h(and)f(the)h(map)g │ │ │ │ (from)f(v)n(ertices)f(to)390 5407 y(the)j(fron)n(t)f(where)g(it)h(is)g │ │ │ │ (con)n(tained.)p eop end │ │ │ │ %%Page: 31 33 │ │ │ │ -TeXDict begin 31 32 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(31)301 │ │ │ │ +TeXDict begin 31 32 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(31)301 │ │ │ │ 390 y Fo({)41 b Fl(IVL)i(*symbfacIVL)23 b Fn(:)k(ob)5 │ │ │ │ b(ject)28 b(that)g(con)n(tains)e(the)i(sym)n(b)r(olic)f(factorization)g │ │ │ │ (of)g(the)h(matrix.)301 510 y Fo({)41 b Fl(SubMtxManager)d(*mtxmanager) │ │ │ │ 33 b Fn(:)55 b(ob)5 b(ject)37 b(that)g(manages)f(the)h │ │ │ │ Fl(SubMtx)d Fn(ob)5 b(jects)37 b(that)g(store)f(the)h(factor)390 │ │ │ │ 610 y(en)n(tries)27 b(and)h(are)e(used)i(in)g(the)g(solv)n(es.)301 │ │ │ │ 729 y Fo({)41 b Fl(FrontMtx)f(*frontmtx)24 b Fn(:)37 │ │ │ │ @@ -9253,17 +9227,17 @@ │ │ │ │ Fn(:)99 b(distribute)28 b(rhs)2257 5020 y Fl(cpus[17])d │ │ │ │ Fn(:)99 b(create)27 b(solution)g(matrix)2257 5120 y Fl(cpus[18])e │ │ │ │ Fn(:)99 b(solv)n(e)2257 5220 y Fl(cpus[19])25 b Fn(:)99 │ │ │ │ b(gather)27 b(solution)2257 5319 y Fl(cpus[20])e Fn(:)99 │ │ │ │ b(p)r(erm)n(ute)28 b(solution)2257 5419 y Fl(cpus[21])d │ │ │ │ Fn(:)99 b(total)28 b(solv)n(e)e(time)p eop end │ │ │ │ %%Page: 32 34 │ │ │ │ -TeXDict begin 32 33 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(32)0 │ │ │ │ +TeXDict begin 32 33 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(32)0 │ │ │ │ 390 y Fd(5.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)58 │ │ │ │ b Fc(BridgeMPI)40 b Fd(metho)t(ds)0 597 y Fn(This)32 │ │ │ │ b(section)f(con)n(tains)g(brief)h(descriptions)f(including)h(protot)n │ │ │ │ (yp)r(es)e(of)i(all)f(metho)r(ds)h(that)h(b)r(elong)e(to)h(the)g │ │ │ │ Fl(BridgeMPI)0 697 y Fn(ob)5 b(ject.)0 954 y Fb(5.3.1)112 │ │ │ │ b(Basic)38 b(metho)s(ds)0 1132 y Fn(As)21 b(usual,)g(there)f(are)g │ │ │ │ (four)g(basic)g(metho)r(ds)g(to)h(supp)r(ort)f(ob)5 b(ject)20 │ │ │ │ @@ -9316,17 +9290,17 @@ │ │ │ │ (\))k(;)208 4561 y Fn(This)35 b(metho)r(d)g(releases)f(an)n(y)g │ │ │ │ (storage)f(b)n(y)i(a)g(call)g(to)g Fl(BridgeMPI)p 2351 │ │ │ │ 4561 V 27 w(clearData\(\))c Fn(and)k(then)h(free)f(the)g(space)g(for) │ │ │ │ 208 4660 y Fl(bridge)p Fn(.)208 4793 y Ff(R)l(eturn)28 │ │ │ │ b(value:)38 b Fn(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 │ │ │ │ b Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)p eop end │ │ │ │ %%Page: 33 35 │ │ │ │ -TeXDict begin 33 34 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(33)0 │ │ │ │ +TeXDict begin 33 34 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(33)0 │ │ │ │ 390 y Fb(5.3.2)112 b(Instance)38 b(metho)s(ds)101 568 │ │ │ │ y Fn(1.)k Fl(int)g(BridgeMPI_oldToN)o(ew)o(IV)37 b(\()43 │ │ │ │ b(BridgeMPI)d(*bridge,)h(IV)h(**pobj)f(\))j(;)208 701 │ │ │ │ y Fn(This)27 b(metho)r(d)h(\014lls)g Fl(*pobj)e Fn(with)i(its)f │ │ │ │ Fl(oldToNewIV)d Fn(p)r(oin)n(ter.)208 834 y Ff(R)l(eturn)k(value:)38 │ │ │ │ b Fn(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)e(-2)h(if)34 b │ │ │ │ @@ -9396,17 +9370,17 @@ │ │ │ │ 5018 y Fn(This)27 b(metho)r(d)h(\014lls)g Fl(*pobj)e │ │ │ │ Fn(with)i(its)f Fl(ownedColumnsIV)22 b Fn(p)r(oin)n(ter.)208 │ │ │ │ 5151 y Ff(R)l(eturn)28 b(value:)38 b Fn(1)27 b(for)g(a)g(normal)g │ │ │ │ (return,)g(-1)g(if)34 b Fl(bridge)25 b Fn(is)j Fl(NULL)p │ │ │ │ Fn(.)e(-2)h(if)34 b Fl(pobj)26 b Fn(is)i Fl(NULL)p Fn(.)p │ │ │ │ eop end │ │ │ │ %%Page: 34 36 │ │ │ │ -TeXDict begin 34 35 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(34)60 │ │ │ │ +TeXDict begin 34 35 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(34)60 │ │ │ │ 390 y(12.)41 b Fl(int)h(BridgeMPI_Xloc)c(\()43 b(BridgeMPI)d(*bridge,)g │ │ │ │ (DenseMtx)g(**pobj)h(\))j(;)208 523 y Fn(This)27 b(metho)r(d)h(\014lls) │ │ │ │ g Fl(*pobj)e Fn(with)i(its)f Fl(Xloc)f Fn(p)r(oin)n(ter.)208 │ │ │ │ 656 y Ff(R)l(eturn)i(value:)38 b Fn(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ (-1)g(if)34 b Fl(bridge)25 b Fn(is)j Fl(NULL)p Fn(.)e(-2)h(if)34 │ │ │ │ b Fl(pobj)26 b Fn(is)i Fl(NULL)p Fn(.)60 822 y(13.)41 │ │ │ │ b Fl(int)h(BridgeMPI_Yloc)c(\()43 b(BridgeMPI)d(*bridge,)g(DenseMtx)g │ │ │ │ @@ -9461,17 +9435,17 @@ │ │ │ │ y Ff(R)l(eturn)g(value:)1099 4938 y Fn(1)99 b(normal)27 │ │ │ │ b(return)1071 5037 y(-1)99 b Fl(bridge)25 b Fn(is)j Fl(NULL)1071 │ │ │ │ 5137 y Fn(-2)99 b Fl(maxdomainsize)23 b Fe(\024)k Fn(0)2096 │ │ │ │ 4987 y(-3)98 b Fl(maxsize)25 b Fe(\024)i Fn(0)2096 5087 │ │ │ │ y(-4)98 b Fl(compressCutoff)22 b Fi(>)28 b Fn(1)p eop │ │ │ │ end │ │ │ │ %%Page: 35 37 │ │ │ │ -TeXDict begin 35 36 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(35)101 │ │ │ │ +TeXDict begin 35 36 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(35)101 │ │ │ │ 390 y(4.)42 b Fl(int)g(BridgeMPI_setFac)o(to)o(rPa)o(ra)o(ms)37 │ │ │ │ b(\()43 b(BridgeMPI)d(*bridge,)g(int)j(sparsityflag,)38 │ │ │ │ b(int)k(pivotingflag,)818 490 y(double)f(tau,)h(double)f(droptol,)f │ │ │ │ (int)j(lookahead,)c(PatchAndGoInfo)f(*patchinfo)h(\))k(;)208 │ │ │ │ 623 y Fn(This)27 b(metho)r(d)h(sets)g(parameters)d(needed)j(for)f(the)h │ │ │ │ (factorization.)208 756 y Ff(R)l(eturn)g(value:)1135 │ │ │ │ 933 y Fn(1)99 b(normal)27 b(return)1107 1033 y(-1)99 │ │ │ │ @@ -9528,18 +9502,18 @@ │ │ │ │ Fn(parameter)h(can)h(b)r(e)h(one)f(of)h(four)f(v)-5 b(alues:)307 │ │ │ │ 4725 y Fe(\017)41 b Fn(1)27 b(|)h(wrap)f(map)307 4858 │ │ │ │ y Fe(\017)41 b Fn(2)27 b(|)h(balanced)f(map)307 4991 │ │ │ │ y Fe(\017)41 b Fn(3)27 b(|)h(subtree-subset)f(map)307 │ │ │ │ 5124 y Fe(\017)41 b Fn(4)27 b(|)h(domain)f(decomp)r(osition)g(map)p │ │ │ │ eop end │ │ │ │ %%Page: 36 38 │ │ │ │ -TeXDict begin 36 37 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(36)208 │ │ │ │ -390 y(The)c(wrap)g(map)h(and)g(balanced)f(map)g(are)g(not)h │ │ │ │ +TeXDict begin 36 37 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(36)208 │ │ │ │ +390 y(The)22 b(wrap)g(map)h(and)g(balanced)f(map)g(are)g(not)h │ │ │ │ (recommended.)35 b(The)23 b(subtree-subset)f(map)g(is)h(a)f(go)r(o)r(d) │ │ │ │ h(map)f(with)h(a)208 490 y(v)n(ery)j(w)n(ell)i(balanced)f(nested)g │ │ │ │ (dissection)h(ordering.)35 b(The)28 b(domain)f(decomp)r(osition)h(map)f │ │ │ │ (is)h(recommended)f(when)208 589 y(the)j(nested)h(dissection)e(tree)h │ │ │ │ (is)h(im)n(balanced)e(or)g(for)h(the)h(m)n(ultisection)f(ordering.)43 │ │ │ │ b(The)31 b(domain)f(decomp)r(osition)208 689 y(map)i(requires)g(a)g │ │ │ │ Fl(cutoff)f Fn(parameter)g(in)i([0)p Fi(;)14 b Fn(1])32 │ │ │ │ @@ -9618,17 +9592,17 @@ │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 4674 y(/*)174 │ │ │ │ 4774 y(-----------------)o(--)o(-)174 4873 y(get)i(input)e(parameters) │ │ │ │ 174 4973 y(-----------------)o(--)o(-)0 5073 y(*/)0 5172 │ │ │ │ y(if)i(\()g(argc)f(!=)h(10)f(\))i({)131 5272 y(fprintf\(stdout,)479 │ │ │ │ 5372 y("\\n\\n)e(usage)f(:)j(\045s)e(msglvl)g(msgFile)e(neqns)i(type)g │ │ │ │ (symmetryflag")1908 5656 y Fn(37)p eop end │ │ │ │ %%Page: 38 40 │ │ │ │ -TeXDict begin 38 39 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(38)479 │ │ │ │ +TeXDict begin 38 39 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(38)479 │ │ │ │ 390 y Fl("\\n)391 b(mtxFile)41 b(rhsFile)g(seed")479 │ │ │ │ 490 y("\\n)130 b(msglvl)85 b(--)42 b(message)f(level")479 │ │ │ │ 589 y("\\n)261 b(0)43 b(--)g(no)f(output")479 689 y("\\n)261 │ │ │ │ b(1)43 b(--)g(timings)d(and)j(statistics")479 789 y("\\n)261 │ │ │ │ b(2)43 b(and)f(greater)f(--)i(lots)f(of)g(output")479 │ │ │ │ 888 y("\\n)130 b(msgFile)41 b(--)h(message)f(file")479 │ │ │ │ 988 y("\\n)130 b(neqns)f(--)42 b(#)i(of)e(equations")479 │ │ │ │ @@ -9664,17 +9638,17 @@ │ │ │ │ 4674 y("\\n\\n)j(\045s)i(input)e(:")349 4774 y("\\n)h(msglvl)303 │ │ │ │ b(=)43 b(\045d")349 4873 y("\\n)f(msgFile)259 b(=)43 │ │ │ │ b(\045s")349 4973 y("\\n)f(neqns)347 b(=)43 b(\045d")349 │ │ │ │ 5073 y("\\n)f(type)391 b(=)43 b(\045d")349 5172 y("\\n)f(symmetryflag)d │ │ │ │ (=)k(\045d")349 5272 y("\\n)f(mtxFile)259 b(=)43 b(\045s")349 │ │ │ │ 5372 y("\\n)f(rhsFile)259 b(=)43 b(\045s")p eop end │ │ │ │ %%Page: 39 41 │ │ │ │ -TeXDict begin 39 40 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(39)349 │ │ │ │ +TeXDict begin 39 40 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(39)349 │ │ │ │ 390 y Fl("\\n)42 b(solFile)259 b(=)43 b(\045s")349 490 │ │ │ │ y("\\n)f(seed)391 b(=)43 b(\045d")349 589 y("\\n",)349 │ │ │ │ 689 y(argv[0],)d(msglvl,)h(argv[2],)f(neqns,)h(type,)h(symmetryflag,) │ │ │ │ 349 789 y(mtxFileName,)c(rhsFileName,)h(solFileName,)g(seed\))i(;)0 │ │ │ │ 988 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1088 y(/*)131 1187 y(----------------)o(--)131 │ │ │ │ @@ -9709,17 +9683,17 @@ │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(-*/)0 4973 y(/*)131 5073 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ 5172 y(create)g(and)h(setup)g(a)h(Bridge)e(object)131 │ │ │ │ 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(--)0 │ │ │ │ 5372 y(*/)p eop end │ │ │ │ %%Page: 40 42 │ │ │ │ -TeXDict begin 40 41 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(40)0 │ │ │ │ +TeXDict begin 40 41 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(40)0 │ │ │ │ 390 y Fl(bridge)41 b(=)i(Bridge_new\(\))c(;)0 490 y(Bridge_setMatrix)o │ │ │ │ (Par)o(am)o(s\()o(bri)o(dg)o(e,)e(neqns,)k(type,)h(symmetryflag\))c(;)0 │ │ │ │ 589 y(Bridge_setMessag)o(eIn)o(fo)o(\(b)o(rid)o(ge)o(,)g(msglvl,)i │ │ │ │ (msgFile\))h(;)0 689 y(rc)i(=)g(Bridge_setup\(bri)o(dg)o(e,)37 │ │ │ │ b(mtxA\))42 b(;)0 789 y(if)h(\()g(rc)g(!=)f(1)i(\))f({)131 │ │ │ │ 888 y(fprintf\(stderr,)37 b("\\n)42 b(error)g(return)f(\045d)i(from)f │ │ │ │ (Bridge_setup\(\)",)37 b(rc\))42 b(;)131 988 y(exit\(-1\))e(;)0 │ │ │ │ @@ -9759,17 +9733,17 @@ │ │ │ │ (-----\\n"\))i(;)0 5073 y(fprintf\(msgFile,)349 5172 │ │ │ │ y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(permute)d(original)g │ │ │ │ (matrix")349 5272 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h │ │ │ │ (initialize)c(factor)i(matrix")349 5372 y("\\n)173 b(CPU)42 │ │ │ │ b(\0458.3f)g(:)h(time)f(to)h(compute)d(factorization")p │ │ │ │ eop end │ │ │ │ %%Page: 41 43 │ │ │ │ -TeXDict begin 41 42 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(41)349 │ │ │ │ +TeXDict begin 41 42 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(41)349 │ │ │ │ 390 y Fl("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(post-process)38 │ │ │ │ b(factorization")349 490 y("\\n)k(CPU)g(\0458.3f)g(:)h(total)f │ │ │ │ (factorization)c(time\\n",)349 589 y(bridge->cpus[5])o(,)g │ │ │ │ (bridge->cpus[6])o(,)g(bridge->cpus[7])o(,)349 689 y(bridge->cpus[8])o │ │ │ │ (,)g(bridge->cpus[9])o(\))g(;)0 789 y(fprintf\(msgFile,)f("\\n\\n)k │ │ │ │ (factorization)e(statistics")349 888 y("\\n)j(\045d)h(pivots,)d(\045d)j │ │ │ │ (pivot)f(tests,)f(\045d)i(delayed)d(vertices")349 988 │ │ │ │ @@ -9814,17 +9788,17 @@ │ │ │ │ 4973 y(})0 5073 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 5172 y(if)43 b(\()g(strcmp\(solFileNa)o(me)o(,) │ │ │ │ 38 b("none"\))i(!=)j(0)g(\))g({)0 5272 y(/*)131 5372 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)p │ │ │ │ eop end │ │ │ │ %%Page: 42 44 │ │ │ │ -TeXDict begin 42 43 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(42)131 │ │ │ │ +TeXDict begin 42 43 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(42)131 │ │ │ │ 390 y Fl(write)41 b(the)i(solution)d(matrix)h(to)i(a)g(file)131 │ │ │ │ 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)0 │ │ │ │ 589 y(*/)131 689 y(rc)g(=)g(DenseMtx_writeT)o(oFi)o(le)o(\(mt)o(xX)o(,) │ │ │ │ 38 b(solFileName\))g(;)131 789 y(if)43 b(\()g(rc)f(!=)h(1)g(\))h({)262 │ │ │ │ 888 y(fprintf\(msgFile)o(,)610 988 y("\\n)f(fatal)e(error)h(writing)e │ │ │ │ (mtxX)i(to)h(file)f(\045s,)g(rc)h(=)g(\045d",)610 1088 │ │ │ │ y(solFileName,)c(rc\))j(;)262 1187 y(fflush\(msgFile\))37 │ │ │ │ @@ -9869,17 +9843,17 @@ │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 4873 y(/*)174 │ │ │ │ 4973 y(-----------------)o(--)o(-)174 5073 y(get)i(input)e(parameters) │ │ │ │ 174 5172 y(-----------------)o(--)o(-)0 5272 y(*/)0 5372 │ │ │ │ y(if)i(\()g(argc)f(!=)h(11)f(\))i({)1908 5656 y Fn(43)p │ │ │ │ eop end │ │ │ │ %%Page: 44 46 │ │ │ │ -TeXDict begin 44 45 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(44)131 │ │ │ │ +TeXDict begin 44 45 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(44)131 │ │ │ │ 390 y Fl(fprintf\(stdout,)392 490 y("\\n\\n)42 b(usage)f(:)i(\045s)g │ │ │ │ (msglvl)e(msgFile)g(neqns)h(type)f(symmetryflag)e(")392 │ │ │ │ 589 y("\\n)391 b(mtxFile)41 b(rhsFile)g(solFile)f(seed)i(nthread\\n") │ │ │ │ 392 689 y("\\n)130 b(msglvl)84 b(--)43 b(message)e(level")392 │ │ │ │ 789 y("\\n)261 b(0)43 b(--)f(no)h(output")392 888 y("\\n)261 │ │ │ │ b(1)43 b(--)f(timings)f(and)i(statistics")392 988 y("\\n)261 │ │ │ │ b(2)43 b(and)f(greater)f(--)i(lots)e(of)i(output")392 │ │ │ │ @@ -9917,17 +9891,17 @@ │ │ │ │ 4774 y(seed)391 b(=)43 b(atoi\(argv[9]\))38 b(;)0 4873 │ │ │ │ y(nthread)259 b(=)43 b(atoi\(argv[10]\))38 b(;)0 4973 │ │ │ │ y(fprintf\(msgFile,)349 5073 y("\\n\\n)j(\045s)i(input)e(:")349 │ │ │ │ 5172 y("\\n)h(msglvl)303 b(=)43 b(\045d")349 5272 y("\\n)f(msgFile)259 │ │ │ │ b(=)43 b(\045s")349 5372 y("\\n)f(neqns)347 b(=)43 b(\045d")p │ │ │ │ eop end │ │ │ │ %%Page: 45 47 │ │ │ │ -TeXDict begin 45 46 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(45)349 │ │ │ │ +TeXDict begin 45 46 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(45)349 │ │ │ │ 390 y Fl("\\n)42 b(type)391 b(=)43 b(\045d")349 490 y("\\n)f │ │ │ │ (symmetryflag)d(=)k(\045d")349 589 y("\\n)f(mtxFile)259 │ │ │ │ b(=)43 b(\045s")349 689 y("\\n)f(rhsFile)259 b(=)43 b(\045s")349 │ │ │ │ 789 y("\\n)f(solFile)259 b(=)43 b(\045s")349 888 y("\\n)f(nthread)259 │ │ │ │ b(=)43 b(\045d")349 988 y("\\n",)349 1088 y(argv[0],)d(msglvl,)h │ │ │ │ (argv[2],)f(neqns,)h(type,)h(symmetryflag,)349 1187 y(mtxFileName,)c │ │ │ │ (rhsFileName,)h(solFileName,)g(nthread\))h(;)0 1287 y(/*--------------) │ │ │ │ @@ -9963,17 +9937,17 @@ │ │ │ │ d(;)0 4973 y(})0 5073 y(DenseMtx_dimensi)o(ons)o(\(m)o(tx)o(Y,)g │ │ │ │ (&nrow,)k(&nrhs\))g(;)0 5172 y(/*--------------)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(-*/)0 5272 y(/*)131 5372 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)p │ │ │ │ eop end │ │ │ │ %%Page: 46 48 │ │ │ │ -TeXDict begin 46 47 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(46)131 │ │ │ │ +TeXDict begin 46 47 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(46)131 │ │ │ │ 390 y Fl(create)41 b(and)h(setup)g(a)h(BridgeMT)d(object)131 │ │ │ │ 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)0 │ │ │ │ 589 y(*/)0 689 y(bridge)h(=)i(BridgeMT_new\(\))38 b(;)0 │ │ │ │ 789 y(BridgeMT_setMatr)o(ixP)o(ar)o(am)o(s\(b)o(ri)o(dge)o(,)f(neqns,)k │ │ │ │ (type,)h(symmetryflag\))c(;)0 888 y(BridgeMT_setMess)o(age)o(In)o(fo)o │ │ │ │ (\(br)o(id)o(ge,)f(msglvl,)j(msgFile\))h(;)0 988 y(rc)i(=)g │ │ │ │ (BridgeMT_setup\(b)o(ri)o(dge)o(,)37 b(mtxA\))42 b(;)0 │ │ │ │ @@ -10012,17 +9986,17 @@ │ │ │ │ 4774 y(fprintf\(msgFile,)349 4873 y("\\n)173 b(CPU)42 │ │ │ │ b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel)f(factorization",)349 │ │ │ │ 4973 y(bridge->cpus[5])o(\))e(;)0 5073 y(if)43 b(\()g(msglvl)e(>)i(0)g │ │ │ │ (\))h({)131 5172 y(fprintf\(msgFile,)37 b("\\n)42 b(total)g(factor)f │ │ │ │ (operations)e(=)k(\045.0f",)479 5272 y(DV_sum\(bridge->cu)o(mop)o(sD)o │ │ │ │ (V\)\))37 b(;)131 5372 y(fprintf\(msgFile,)p eop end │ │ │ │ %%Page: 47 49 │ │ │ │ -TeXDict begin 47 48 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(47)479 │ │ │ │ +TeXDict begin 47 48 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(47)479 │ │ │ │ 390 y Fl("\\n)43 b(upper)e(bound)h(on)h(speedup)d(due)j(to)f(load)g │ │ │ │ (balance)f(=)i(\045.2f",)479 490 y(DV_sum\(bridge->cu)o(mop)o(sD)o │ │ │ │ (V\)/)o(DV)o(_m)o(ax\()o(br)o(idg)o(e-)o(>c)o(umo)o(ps)o(DV\))o(\))37 │ │ │ │ b(;)131 589 y(fprintf\(msgFile,)g("\\n)42 b(operations)e(distributions) │ │ │ │ e(over)k(threads"\))e(;)131 689 y(DV_writeForHuman)o(Ey)o(e\()o(bri)o │ │ │ │ (dg)o(e->)o(cu)o(mop)o(sD)o(V,)d(msgFile\))j(;)131 789 │ │ │ │ y(fflush\(msgFile\))d(;)0 888 y(})0 988 y(/*--------------)o(---)o(--)o │ │ │ │ @@ -10061,17 +10035,17 @@ │ │ │ │ (cpu)o(s[)o(10)o(]\))c(;)0 4774 y(fflush\(msgFile\))g(;)0 │ │ │ │ 4873 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 4973 y(/*)131 5073 y(----------------)o(--)o(--)o(---)o(-) │ │ │ │ 131 5172 y(setup)k(the)i(parallel)d(solve)131 5272 y(----------------)o │ │ │ │ (--)o(--)o(---)o(-)0 5372 y(*/)p eop end │ │ │ │ %%Page: 48 50 │ │ │ │ -TeXDict begin 48 49 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(48)0 │ │ │ │ +TeXDict begin 48 49 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(48)0 │ │ │ │ 390 y Fl(rc)43 b(=)g(BridgeMT_solveSe)o(tu)o(p\(b)o(ri)o(dge)o(\))37 │ │ │ │ b(;)0 490 y(fprintf\(msgFile,)g("\\n\\n)k(-----)h(PARALLEL)e(SOLVE)i │ │ │ │ (SETUP)f(-----\\n"\))f(;)0 589 y(fprintf\(msgFile,)349 │ │ │ │ 689 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel)f │ │ │ │ (solve",)349 789 y(bridge->cpus[11)o(]\))d(;)0 888 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ @@ -10112,17 +10086,17 @@ │ │ │ │ 4774 y(*/)131 4873 y(rc)g(=)g(DenseMtx_writeT)o(oFi)o(le)o(\(mt)o(xX)o │ │ │ │ (,)38 b(solFileName\))g(;)131 4973 y(if)43 b(\()g(rc)f(!=)h(1)g(\))h({) │ │ │ │ 262 5073 y(fprintf\(msgFile)o(,)610 5172 y("\\n)f(fatal)e(error)h │ │ │ │ (writing)e(mtxX)i(to)h(file)f(\045s,)g(rc)h(=)g(\045d",)610 │ │ │ │ 5272 y(solFileName,)c(rc\))j(;)262 5372 y(fflush\(msgFile\))37 │ │ │ │ b(;)p eop end │ │ │ │ %%Page: 49 51 │ │ │ │ -TeXDict begin 49 50 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(49)262 │ │ │ │ +TeXDict begin 49 50 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(49)262 │ │ │ │ 390 y Fl(exit\(-1\))40 b(;)131 490 y(})0 589 y(})0 689 │ │ │ │ y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (-*/)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(-)131 │ │ │ │ 988 y(free)i(the)g(working)f(data)131 1088 y(----------------)o(--)o │ │ │ │ (--)o(-)0 1187 y(*/)0 1287 y(InpMtx_free\(mtxA)o(\))d(;)0 │ │ │ │ 1386 y(DenseMtx_free\(mt)o(xX\))f(;)0 1486 y(DenseMtx_free\(mt)o(xY\))g │ │ │ │ @@ -10164,17 +10138,17 @@ │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-) │ │ │ │ 131 5172 y(find)g(out)g(the)g(identity)f(of)h(this)g(process)f(and)h │ │ │ │ (the)h(number)e(of)i(process)131 5272 y(----------------)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(-)0 5372 y(*/)1908 5656 y Fn(50)p │ │ │ │ eop end │ │ │ │ %%Page: 51 53 │ │ │ │ -TeXDict begin 51 52 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(51)0 │ │ │ │ +TeXDict begin 51 52 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(51)0 │ │ │ │ 390 y Fl(MPI_Init\(&argc,)37 b(&argv\))k(;)0 490 y(MPI_Comm_rank\(MP)o │ │ │ │ (I_C)o(OM)o(M_)o(WOR)o(LD)o(,)d(&myid\))j(;)0 589 y(MPI_Comm_size\(MP)o │ │ │ │ (I_C)o(OM)o(M_)o(WOR)o(LD)o(,)d(&nproc\))i(;)0 689 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 789 y(/*)174 888 y(-----------------)o(--)o(-)174 988 │ │ │ │ y(get)j(input)e(parameters)174 1088 y(-----------------)o(--)o(-)0 │ │ │ │ @@ -10212,17 +10186,17 @@ │ │ │ │ ("\045s.\045d",)j(argv[2],)h(myid\))g(;)131 4774 y(if)i(\()g(\(msgFile) │ │ │ │ d(=)j(fopen\(buffer,)38 b("w"\)\))k(==)h(NULL)f(\))h({)262 │ │ │ │ 4873 y(fprintf\(stderr,)37 b("\\n)42 b(fatal)g(error)f(in)i(\045s")610 │ │ │ │ 4973 y("\\n)g(unable)e(to)h(open)g(file)g(\045s\\n",)610 │ │ │ │ 5073 y(argv[0],)e(argv[2]\))h(;)262 5172 y(MPI_Finalize\(\))c(;)262 │ │ │ │ 5272 y(return\(0\))i(;)131 5372 y(})p eop end │ │ │ │ %%Page: 52 54 │ │ │ │ -TeXDict begin 52 53 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(52)131 │ │ │ │ +TeXDict begin 52 53 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(52)131 │ │ │ │ 390 y Fl(CVfree\(buffer\))38 b(;)0 490 y(})0 589 y(neqns)347 │ │ │ │ b(=)43 b(atoi\(argv[3]\))38 b(;)0 689 y(type)391 b(=)43 │ │ │ │ b(atoi\(argv[4]\))38 b(;)0 789 y(symmetryflag)h(=)k(atoi\(argv[5]\))38 │ │ │ │ b(;)0 888 y(mtxFileName)83 b(=)43 b(argv[6])d(;)0 988 │ │ │ │ y(rhsFileName)83 b(=)43 b(argv[7])d(;)0 1088 y(solFileName)83 │ │ │ │ b(=)43 b(argv[8])d(;)0 1187 y(seed)391 b(=)43 b(atoi\(argv[9]\))38 │ │ │ │ b(;)0 1287 y(fprintf\(msgFile,)349 1386 y("\\n\\n)j(\045s)i(input)e(:") │ │ │ │ @@ -10258,17 +10232,17 @@ │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(-)131 5272 y(processor)j(0)j │ │ │ │ (broadcasts)c(the)k(error)e(return)g(to)i(the)f(other)g(processors)131 │ │ │ │ 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)p │ │ │ │ eop end │ │ │ │ %%Page: 53 55 │ │ │ │ -TeXDict begin 53 54 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(53)0 │ │ │ │ +TeXDict begin 53 54 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(53)0 │ │ │ │ 390 y Fl(*/)0 490 y(MPI_Bcast\(\(void)37 b(*\))43 b(&rc,)f(1,)h │ │ │ │ (MPI_INT,)d(0,)j(MPI_COMM_WORLD\))37 b(;)0 589 y(if)43 │ │ │ │ b(\()g(rc)g(!=)f(1)i(\))f({)131 689 y(MPI_Finalize\(\))38 │ │ │ │ b(;)131 789 y(return\(-1\))h(;)0 888 y(})0 988 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 1088 y(/*)131 1187 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -10306,17 +10280,17 @@ │ │ │ │ 4873 y(create)i(and)h(setup)g(a)h(BridgeMPI)d(object)131 │ │ │ │ 4973 y(set)i(the)g(MPI,)g(matrix)f(and)i(message)e(parameters)131 │ │ │ │ 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)0 5172 y(*/)0 5272 y(bridge)g(=)i(BridgeMPI_new\(\))38 │ │ │ │ b(;)0 5372 y(BridgeMPI_setMPI)o(par)o(am)o(s\()o(bri)o(dg)o(e,)f │ │ │ │ (nproc,)k(myid,)h(MPI_COMM_WORLD\))37 b(;)p eop end │ │ │ │ %%Page: 54 56 │ │ │ │ -TeXDict begin 54 55 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(54)0 │ │ │ │ +TeXDict begin 54 55 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(54)0 │ │ │ │ 390 y Fl(BridgeMPI_setMat)o(rix)o(Pa)o(ra)o(ms\()o(br)o(idg)o(e,)37 │ │ │ │ b(neqns,)k(type,)h(symmetryflag\))c(;)0 490 y(BridgeMPI_setMes)o(sag)o │ │ │ │ (eI)o(nf)o(o\(b)o(ri)o(dge)o(,)f(msglvl,)k(msgFile\))f(;)0 │ │ │ │ 589 y(/*)131 689 y(----------------)o(-)131 789 y(setup)h(the)i │ │ │ │ (problem)131 888 y(----------------)o(-)0 988 y(*/)0 │ │ │ │ 1088 y(rc)g(=)g(BridgeMPI_setup\()o(br)o(idg)o(e,)37 │ │ │ │ b(mtxA\))42 b(;)0 1187 y(fprintf\(msgFile,)349 1287 y("\\n\\n)f(-----)h │ │ │ │ @@ -10356,17 +10330,17 @@ │ │ │ │ b(;)131 4774 y(MPI_Finalize\(\))38 b(;)131 4873 y(exit\(-1\))i(;)0 │ │ │ │ 4973 y(})0 5073 y(fprintf\(msgFile,)d("\\n\\n)k(-----)h(PARALLEL)e │ │ │ │ (FACTOR)h(SETUP)h(-----\\n"\))e(;)0 5172 y(fprintf\(msgFile,)349 │ │ │ │ 5272 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel) │ │ │ │ f(factorization",)349 5372 y(bridge->cpus[7])o(\))e(;)p │ │ │ │ eop end │ │ │ │ %%Page: 55 57 │ │ │ │ -TeXDict begin 55 56 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(55)0 │ │ │ │ +TeXDict begin 55 56 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(55)0 │ │ │ │ 390 y Fl(if)43 b(\()g(msglvl)e(>)i(0)g(\))h({)131 490 │ │ │ │ y(fprintf\(msgFile,)37 b("\\n)42 b(total)g(factor)f(operations)e(=)k │ │ │ │ (\045.0f")479 589 y("\\n)g(upper)e(bound)h(on)h(speedup)d(due)j(to)f │ │ │ │ (load)g(balance)f(=)i(\045.2f",)479 689 y(DV_sum\(bridge->cu)o(mop)o │ │ │ │ (sD)o(V\),)479 789 y(DV_sum\(bridge->cu)o(mop)o(sD)o(V\)/)o(DV)o(_m)o │ │ │ │ (ax\()o(br)o(idg)o(e-)o(>c)o(umo)o(ps)o(DV\))o(\))37 │ │ │ │ b(;)131 888 y(fprintf\(msgFile,)g("\\n)42 b(operations)e(distributions) │ │ │ │ @@ -10413,17 +10387,17 @@ │ │ │ │ y(tstats[3],)f(tstats[4],)h(tstats[5]\))f(;)0 4973 y(fprintf\(msgFile,) │ │ │ │ 349 5073 y("\\n\\n)128 b(factorization:)38 b(raw)43 b(mflops)e │ │ │ │ (\0458.3f,)g(overall)f(mflops)i(\0458.3f",)349 5172 y(1.e-6*nfactorop)o │ │ │ │ (s/b)o(ri)o(dge)o(->)o(cpu)o(s[)o(11)o(],)349 5272 y(1.e-6*nfactorop)o │ │ │ │ (s/b)o(ri)o(dge)o(->)o(cpu)o(s[)o(13)o(]\))37 b(;)0 5372 │ │ │ │ y(fflush\(msgFile\))g(;)p eop end │ │ │ │ %%Page: 56 58 │ │ │ │ -TeXDict begin 56 57 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(56)0 │ │ │ │ +TeXDict begin 56 57 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(56)0 │ │ │ │ 390 y Fl(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 490 y(/*)131 589 y(----------------)o(--)o(--)o(---)o(-)131 │ │ │ │ 689 y(setup)41 b(the)i(parallel)d(solve)131 789 y(----------------)o │ │ │ │ (--)o(--)o(---)o(-)0 888 y(*/)0 988 y(rc)j(=)g(BridgeMPI_solveS)o(et)o │ │ │ │ (up\()o(br)o(idg)o(e\))37 b(;)0 1088 y(fprintf\(msgFile,)g("\\n\\n)k │ │ │ │ (-----)h(PARALLEL)e(SOLVE)i(SETUP)f(-----\\n")349 1187 │ │ │ │ @@ -10464,17 +10438,17 @@ │ │ │ │ (time)f(to)h(solve)e(linear)g(system")349 5073 y("\\n)173 │ │ │ │ b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(gather)e(solution)f(")349 │ │ │ │ 5172 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(permute)d │ │ │ │ (solution)g(into)i(old)h(ordering")349 5272 y("\\n)f(CPU)g(\0458.3f)g │ │ │ │ (:)h(total)f(solve)f(time")349 5372 y("\\n\\n)g(solve:)g(raw)i(mflops)e │ │ │ │ (\0458.3f,)g(overall)g(mflops)g(\0458.3f",)p eop end │ │ │ │ %%Page: 57 59 │ │ │ │ -TeXDict begin 57 58 bop 83 100 727 4 v 893 100 a Fo(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ -b(Decem)n(b)r(er)28 b(20,)e(2018)p 3092 100 V 727 w Fn(57)349 │ │ │ │ +TeXDict begin 57 58 bop 83 100 760 4 v 925 100 a Fo(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fk(:)120 │ │ │ │ +b(Octob)r(er)27 b(11,)g(2021)p 3060 100 V 760 w Fn(57)349 │ │ │ │ 390 y Fl(bridge->cpus[15)o(],)37 b(bridge->cpus[16],)g │ │ │ │ (bridge->cpus[17])o(,)349 490 y(bridge->cpus[18)o(],)g │ │ │ │ (bridge->cpus[19],)g(bridge->cpus[20])o(,)349 589 y(bridge->cpus[21)o │ │ │ │ (],)349 689 y(1.e-6*nsolveops)o(/br)o(id)o(ge-)o(>c)o(pus)o([1)o(8])o │ │ │ │ (,)349 789 y(1.e-6*nsolveops)o(/br)o(id)o(ge-)o(>c)o(pus)o([2)o(1])o │ │ │ │ (\))h(;)0 888 y(fflush\(msgFile\))f(;)0 988 y(if)43 b(\()g(myid)f(==)h │ │ │ │ (0)g(\))g({)131 1088 y(if)g(\()g(msglvl)e(>)i(0)g(\))g({)262 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ Wrapper Objects for Solving │ │ │ │ │ a Linear System of Equations │ │ │ │ │ using SPOOLES 2.2 │ │ │ │ │ Cleve Ashcraft Peter Schartz │ │ │ │ │ Boeing Shared Services Group1 CSARCorporation2 │ │ │ │ │ - December 20, 2018 │ │ │ │ │ + October 11, 2021 │ │ │ │ │ 1P. O. Box 24346, Mail Stop 7L-21, Seattle, Washington 98124. This research was supported in part by the │ │ │ │ │ DARPAContract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common │ │ │ │ │ HPCSoftware Support Initiative. │ │ │ │ │ 228035 Dorothy Drive, Agoura Hills, CA 91301. This research was supported in part by the DARPA Contract │ │ │ │ │ DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ Support Initiative. │ │ │ │ │ Abstract │ │ │ │ │ @@ -51,15 +51,15 @@ │ │ │ │ │ 4.3.5 Factor methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 │ │ │ │ │ 4.3.6 Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 │ │ │ │ │ 5 The MPI Wrapper Object and Driver 27 │ │ │ │ │ 5.1 Aquick look at the MPI driver program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 │ │ │ │ │ 5.2 The BridgeMPI Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 │ │ │ │ │ 5.3 Prototypes and descriptions of BridgeMPI methods . . . . . . . . . . . . . . . . . . . . . . . . 32 │ │ │ │ │ 1 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 2 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 2 │ │ │ │ │ 5.3.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 │ │ │ │ │ 5.3.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 │ │ │ │ │ 5.3.3 Parameter methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 │ │ │ │ │ 5.3.4 Setup methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 │ │ │ │ │ 5.3.5 Factor methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 │ │ │ │ │ 5.3.6 Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 │ │ │ │ │ A testWrapper.c — A Serial Driver Program 37 │ │ │ │ │ @@ -104,15 +104,15 @@ │ │ │ │ │ the user must generate two SPOOLES objects — a InpMtx object for A and DenseMtx objects for Y and │ │ │ │ │ X. This process is described in section 2. │ │ │ │ │ Serial code has one process and one address space. Multithreaded code can have multiple threads sharing │ │ │ │ │ one address space. The SPOOLES library utilizes multiple threads only in the factorization and solve steps. │ │ │ │ │ All other operations act on the global data structures using serial methods. In the MPI environment, the │ │ │ │ │ data structures for A, X and Y may be distributed, and all working data structures that contain the factor │ │ │ │ │ 3 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 4 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 4 │ │ │ │ │ matrices and their supporting information are distributed. The MPI code is much more complex than the │ │ │ │ │ serial or multithreaded codes, for not only are the factor and solves parallel and distributed (as is the symbolic │ │ │ │ │ factorization), but there is a great deal of support code necessary because of the distributed data structures. │ │ │ │ │ ThewrappermethodsdescribedinthispaperdonotexerciseallthefunctionalityoftheMPIenvironment. │ │ │ │ │ This is due to the present state of the CSAR-Nastran code from CSAR, where the matrix A and right hand │ │ │ │ │ side Y are generated on one processor. We chose to do all the serial preprocessing │ │ │ │ │ • generate a graph of the matrix, │ │ │ │ │ @@ -150,15 +150,15 @@ │ │ │ │ │ • INPMTX BY COLUMNS, where r(i,j) = j, c(i,j) = i. │ │ │ │ │ • INPMTX BY CHEVRONS, where r(i,j) = min(i,j), c(i,j) = j −i. │ │ │ │ │ Rows and columns are self-explanatory, the first coordinate r(i,j) is either the row or column of ai,j. The │ │ │ │ │ j-th “chevron” is composed of the diagonal entry aj,j, entries in the j-th row of the upper triangle, and │ │ │ │ │ entries in the j-th column of the lower triangle. It is the natural data structure for the assembly of the │ │ │ │ │ matrix entries into the “fronts” used to factor the matrix. │ │ │ │ │ 5 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 6 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 6 │ │ │ │ │ The InpMtx object can hold one of three types of entries as “indices only” (no entries are present), real │ │ │ │ │ entries, or complex entries. The type is specified by the inputModeparameter to the InpMtx init() method. │ │ │ │ │ • INPMTX INDICES ONLY where the triples langler(i,j),c(i,j),−i are really only pairs, i.e., no numerical │ │ │ │ │ values are present. This mode is useful for assembling graphs. │ │ │ │ │ • SPOOLES REAL where ai,j is a real number, a double value. │ │ │ │ │ • SPOOLES COMPLEX where a is a complex number, really two consecutive double values. │ │ │ │ │ i,j │ │ │ │ │ @@ -192,15 +192,15 @@ │ │ │ │ │ to assemble finite element matrices.) The knowledgeable user can change the storage mode as necessary, │ │ │ │ │ and thus avoiding expensive sorts when possible. For example, after reading in the matrix data from the │ │ │ │ │ CSAR-Nastran file, the entries are already in sorted form, and the explicit sort can be avoided. │ │ │ │ │ Now let us see how we “input” information into the InpMtx object. There are several input methods, │ │ │ │ │ e.g., single entries, rows, columns, and submatrices, and each input method has three types of input, e.g, │ │ │ │ │ indices only, real entries, or complex entries. Here are the prototypes below. │ │ │ │ │ • Input methods for “indices only” mode. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 7 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 7 │ │ │ │ │ void InpMtx_inputEntry ( InpMtx *mtxA, int row, int col ) ; │ │ │ │ │ void InpMtx_inputRow ( InpMtx *mtxA, int row, int rowsize, int rowind[] ) ; │ │ │ │ │ void InpMtx_inputColumn ( InpMtx *mtxA, int col, int colsize, int colind[] ) ; │ │ │ │ │ void InpMtx_inputMatrix ( InpMtx *mtxA, int nrow, int ncol, int rowstride, │ │ │ │ │ int colstride, int rowind[], colind[] ) ; │ │ │ │ │ • Input methods for real entries. │ │ │ │ │ void InpMtx_inputRealEntry ( InpMtx *mtxA, int row, int col, double value ) ; │ │ │ │ │ @@ -238,15 +238,15 @@ │ │ │ │ │ if ( ii < n1 ) { │ │ │ │ │ indices[count] = ij + 1 ; │ │ │ │ │ entries[count] = -1.0 ; │ │ │ │ │ count++ ; │ │ │ │ │ } │ │ │ │ │ if ( jj < n2 ) { │ │ │ │ │ indices[count] = ij + n1 ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 8 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 8 │ │ │ │ │ entries[count] = -1.0 ; │ │ │ │ │ count++ ; │ │ │ │ │ } │ │ │ │ │ InpMtx_inputRealRow(mtxA, ij, count, indices, entries) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ @@ -279,15 +279,15 @@ │ │ │ │ │ 0,1,...,ncol−1. The entries are not initialized. Zero the entries with a call to DenseMtx zero(). (This is │ │ │ │ │ crucial when loading a sparse right hand side into the DenseMtx object.) │ │ │ │ │ Once we have the DenseMtx object initialized, we want to be able to access the row indices, the column │ │ │ │ │ indices and the entries. We do this through instance methods. │ │ │ │ │ void DenseMtx_rowIndices ( DenseMtx *mtx, int *pnrow, int *prowind ) ; │ │ │ │ │ void DenseMtx_columnIndices ( DenseMtx *mtx, int *pncol, int *pcolind ) ; │ │ │ │ │ double * DenseMtx_entries ( DenseMtx *mtx ) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : December 20, 2018 9 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 9 │ │ │ │ │ Wewould use them as follows. │ │ │ │ │ double *entries ; │ │ │ │ │ int ncol, nrow, *colind, *rowind ; │ │ │ │ │ DenseMtx_rowIndices(mtx, &nrow, &rowind) ; │ │ │ │ │ DenseMtx_columnIndices(mtx, &ncol, &colind) ; │ │ │ │ │ entries = DenseMtx_entries(mtx) ; │ │ │ │ │ We can now fill the indices or the entries. The location of the (irow,jcol) entry is found at offset = │ │ │ │ │ @@ -317,42 +317,42 @@ │ │ │ │ │ The three driver programs that we describe in the next sections read A and Y from files and write X to a │ │ │ │ │ file. So the first thing we know is that the InpMtx and DenseMtx objects can read and write themselves from │ │ │ │ │ and to files. This convention is supported by most of the objects in the SPOOLES library. In fact, there │ │ │ │ │ is a common protocol that is followed. Let us take a look at the common IO methods for the InpMtx. │ │ │ │ │ • int InpMtx readFromFile ( InpMtx *obj, char *filename ) ; │ │ │ │ │ • int InpMtx readFromFormattedFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ • int InpMtx readFromBinaryFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 10 │ │ │ │ │ - • int InpMtx writeToFile ( InpMtx *obj, char *filename ) ; │ │ │ │ │ - • int InpMtx writeToFormattedFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ - • int InpMtx writeToBinaryFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ - • int InpMtx writeForHumanEye ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 10 │ │ │ │ │ + • int InpMtx writeToFile ( InpMtx *obj, char *filename ) ; │ │ │ │ │ + • int InpMtx writeToFormattedFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ + • int InpMtx writeToBinaryFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ + • int InpMtx writeForHumanEye ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ There are corresponding methods for the DenseMtx object, just replace “Inp” by “Dense” in the above │ │ │ │ │ prototypes. │ │ │ │ │ - Two methods take as input char * file names. Each object can be archived in its own file with a │ │ │ │ │ + Two methods take as input char * file names. Each object can be archived in its own file with a │ │ │ │ │ particular suffix. For example, InpMtx objects can be read from and written to files of the form *.inpmtxf │ │ │ │ │ for a formatted file and *.inpmtxb for a binary file. For a DenseMtx object, the file names are *.densemtxf │ │ │ │ │ and *.densemtxb. The InpMtx readFromFile() method looks at the filename argument, and calls the │ │ │ │ │ binary or formatted read methods, depending on the suffix of filename. A normal return code is 1. If the │ │ │ │ │ suffix does not match either *.inpmtxf or *.inpmtxb, an error message is printed and the return code is │ │ │ │ │ 0. Something similar works for writing an InpMtx object to a file using InpMtx writeToFile(), except if │ │ │ │ │ filename’s suffix does not match, the InpMtx writeForHumanEye() method is called. │ │ │ │ │ - Here are three approaches to link A and Y from an application code to the InpMtx and DenseMtx objects │ │ │ │ │ + Here are three approaches to link A and Y from an application code to the InpMtx and DenseMtx objects │ │ │ │ │ demanded by the SPOOLES application. │ │ │ │ │ - • An application could take the simple approach of creating an InpMtx and DenseMtx object to hold A │ │ │ │ │ + • An application could take the simple approach of creating an InpMtx and DenseMtx object to hold A │ │ │ │ │ and Y, write them to a file, and then call a totally separate code that functions much like our drivers, │ │ │ │ │ reading in A and Y, computing X and writing X to a file, which is then read in by the application │ │ │ │ │ code. │ │ │ │ │ - • A second approach, one that was taken during the first integration of the SPOOLES library into │ │ │ │ │ + • A second approach, one that was taken during the first integration of the SPOOLES library into │ │ │ │ │ CSAR-Nastran, was to have the CSAR-Nastran code generate two files for A and Y in CSAR-Nastran │ │ │ │ │ format. (This way CSAR-Nastran did not need to know any of the SPOOLES interface.) Two custom │ │ │ │ │ routines were written to read in the entries of A and Y from the CSAR-Nastran files and construct │ │ │ │ │ InpMtxandDenseMtxobjects. The wrapperroutines wedescribe in the next three chapters were called │ │ │ │ │ to solve for X which was then written to a CSAR-Nastran file. │ │ │ │ │ - • A third approach would be to generate the InpMtx and DenseMtx objects in the application program, │ │ │ │ │ + • A third approach would be to generate the InpMtx and DenseMtx objects in the application program, │ │ │ │ │ and then call the wrapper methods to solve for X, i.e., no IO would be necessary. │ │ │ │ │ Chapter 3 │ │ │ │ │ The Serial Wrapper Object and │ │ │ │ │ Driver │ │ │ │ │ The goal is to solve AX = Y in a serial environment. Section 1 of the User’s Manual presents a listing of │ │ │ │ │ the AllInOne.c driver program for solving AX = Y. There are nine steps, and each requires “mid-level” │ │ │ │ │ knowledge of several objects of the SPOOLES library. To reduce the complexity of using the library, │ │ │ │ │ @@ -375,91 +375,91 @@ │ │ │ │ │ ordering, factor and solve processes. │ │ │ │ │ Section 3.1 takes a quick look at the Bridge driver program (whose complete listing is found in Ap- │ │ │ │ │ pendix A). Section 3.2 describes the internal data fields of the Bridge object. Section 3.3 contains the │ │ │ │ │ prototypes and descriptions of all Bridge methods. │ │ │ │ │ 3.1 Aquick look at serial driver program │ │ │ │ │ The entire listing of this serial driver is found in Appendix A. We now extract parts of the code. │ │ │ │ │ 11 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 12 │ │ │ │ │ - • Decode the input. │ │ │ │ │ - msglvl = atoi(argv[1]) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 12 │ │ │ │ │ + • Decode the input. │ │ │ │ │ + msglvl = atoi(argv[1]) ; │ │ │ │ │ msgFileName = argv[6] ; │ │ │ │ │ - neqns = atoi(argv[3]) ; │ │ │ │ │ - type = atoi(argv[4]) ; │ │ │ │ │ + neqns = atoi(argv[3]) ; │ │ │ │ │ + type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ solFileName = argv[8] ; │ │ │ │ │ - seed = atoi(argv[9]) ; │ │ │ │ │ + seed = atoi(argv[9]) ; │ │ │ │ │ Here is a description of the input parameters. │ │ │ │ │ – msglvl is the message level. │ │ │ │ │ – msgFile is the message file name │ │ │ │ │ – neqns is the number of equations. │ │ │ │ │ – type is the type of entries: 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ – symmetryflagis the type of matrix symmetry: 0 (SPOOLES SYMMETRIC), 1 (SPOOLES HERMITIAN) │ │ │ │ │ - or 2 (SPOOLES NONSYMMETRIC). │ │ │ │ │ + or 2 (SPOOLES NONSYMMETRIC). │ │ │ │ │ – mtxFile is the name of the file from which to read the InpMtx object for A. The file name must │ │ │ │ │ - have the form *.inpmtxb for a binary file or *.inpmtxf for a formatted file. │ │ │ │ │ + have the form *.inpmtxb for a binary file or *.inpmtxf for a formatted file. │ │ │ │ │ – rhsFileis the name of the file from which to read the DenseMtx object for the right hand side Y . │ │ │ │ │ - The file name must have the form *.densemtxb for a binary file or *.densemtxf for a formatted │ │ │ │ │ - file. │ │ │ │ │ + The file name must have the form *.densemtxb for a binary file or *.densemtxf for a formatted │ │ │ │ │ + file. │ │ │ │ │ – solFile is the name of the file to write the DenseMtx object for the solution X. The file name │ │ │ │ │ - must have the form *.densemtxb for a binary file or *.densemtxf for a formatted file, "none" │ │ │ │ │ - for no output, or any other name for a human-readable listing. │ │ │ │ │ + must have the form *.densemtxb for a binary file or *.densemtxf for a formatted file, "none" │ │ │ │ │ + for no output, or any other name for a human-readable listing. │ │ │ │ │ – seed is a random number seed used in the ordering process. │ │ │ │ │ - • Read in the InpMtx object for A. │ │ │ │ │ + • Read in the InpMtx object for A. │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ The rc parameter is the error return. In the driver it is tested for an error, but we omit this from the │ │ │ │ │ present discussion. │ │ │ │ │ - • Read in the DenseMtx object for Y. │ │ │ │ │ + • Read in the DenseMtx object for Y. │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, mtxFileName) ; │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ The nrhs parameter contains the number of right hand sides, or equivalently, the number of columns │ │ │ │ │ in Y . │ │ │ │ │ - • Create and setup the Bridge object. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 13 │ │ │ │ │ + • Create and setup the Bridge object. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 13 │ │ │ │ │ bridge = Bridge_new() ; │ │ │ │ │ Bridge_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ Bridge_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = Bridge_setup(bridge, mtxA) ; │ │ │ │ │ TheBridgeobjectisallocatedbyBridge new(),andvariousparametersareset. Theactualorderingof │ │ │ │ │ the matrix, symbolic factorization, and permutation creation are performed inside the Bridge setup() │ │ │ │ │ method. │ │ │ │ │ - • Compute the matrix factorization. │ │ │ │ │ + • Compute the matrix factorization. │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = Bridge_factor(bridge, mtxA, permuteflag, &error) ; │ │ │ │ │ When permuteflag is 1, it means that the matrix in mtxA has not yet been permuted into the new │ │ │ │ │ ordering and so is done inside the method. The error flag is filled with an error code that tells how │ │ │ │ │ far the factorization was able to proceed. If rc = 1, the factorization completed without any error. │ │ │ │ │ - • Solve the linear system. │ │ │ │ │ + • Solve the linear system. │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ rc = Bridge_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ The DenseMtx object mtxX is created and initialized to be the same type and size as mtxY. Its entries │ │ │ │ │ are explicitly zeroed (this is not necessary but is a good idea in general). The solution is then solved. │ │ │ │ │ Again, note the presence of permuteflag. When 1, mtxY needs to be permuted into the new ordering, │ │ │ │ │ and mtxX is returned in the original ordering. │ │ │ │ │ - 3.2 The Bridge Data Structure │ │ │ │ │ + 3.2 The Bridge Data Structure │ │ │ │ │ The Bridge structure has the following fields. │ │ │ │ │ - • Graph parameters: │ │ │ │ │ + • Graph parameters: │ │ │ │ │ – int neqns : number of equations, i.e., number of vertices in the graph. │ │ │ │ │ – int nedges : number of edges (includes (u,v), (v,u) and (u,u)). │ │ │ │ │ – int Neqns : number of equations in the compressed graph. │ │ │ │ │ – int Nedges : number of edges in the compressed graph. │ │ │ │ │ - • Ordering parameters: │ │ │ │ │ + • Ordering parameters: │ │ │ │ │ – int maxdomainsize : maximum size of a subgraph to not split any further during the nested │ │ │ │ │ - dissection process. │ │ │ │ │ + dissection process. │ │ │ │ │ – int maxnzeros : maximum number of zeros to allow in a front during the supernode amalgama- │ │ │ │ │ - tion process. │ │ │ │ │ + tion process. │ │ │ │ │ – int maxsize : maximum size of a front when the fronts are split. │ │ │ │ │ – int seed : random number seed. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 14 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 14 │ │ │ │ │ – double compressCutoff : if the Neqns < compressCutoff ∗ neqns, then the compressed graph │ │ │ │ │ is formed, ordered and used to create the symbolic factorization. │ │ │ │ │ • Matrix parameters: │ │ │ │ │ – int type : type of entries, SPOOLES REAL or SPOOLES COMPLEX, default value is SPOOLES REAL. │ │ │ │ │ – int symmetryflag: type of symmetry for the matrix, SPOOLES SYMMETRIC, SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC, default value is SPOOLES SYMMETRIC. │ │ │ │ │ • Factorization parameters: │ │ │ │ │ @@ -496,34 +496,34 @@ │ │ │ │ │ cpus[0] : time to construct Graph cpus[7] : time to factor matrix │ │ │ │ │ cpus[1] : time to compress Graph cpus[8] : time to post-process matrix │ │ │ │ │ cpus[2] : time to order Graph cpus[9] : total factor time │ │ │ │ │ cpus[3] : time for symbolic factorization cpus[10] : time to permute rhs │ │ │ │ │ cpus[4] : total setup time cpus[11] : time to solve │ │ │ │ │ cpus[5] : time to permute matrix cpus[12] : time to permute solution │ │ │ │ │ cpus[6] : time to initialize front matrix cpus[13] : total solve time │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 15 │ │ │ │ │ - 3.3 Prototypes and descriptions of Bridge methods │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 15 │ │ │ │ │ + 3.3 Prototypes and descriptions of Bridge methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Bridge object. │ │ │ │ │ 3.3.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ 1. Bridge * Bridge_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Bridge structure and then sets the default fields by a call │ │ │ │ │ to Bridge setDefaultFields(). │ │ │ │ │ 2. int Bridge_setDefaultFields ( Bridge *bridge ) ; │ │ │ │ │ The structure’s fields are set to default values: │ │ │ │ │ - • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ - • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ - • type = SPOOLES REAL. │ │ │ │ │ - • symmetryflag = SPOOLES SYMMETRIC. │ │ │ │ │ - • sparsityflag = SPOOLES DENSE FRONTS. │ │ │ │ │ - • pivotingflag = SPOOLES NO PIVOTING. │ │ │ │ │ - • tau = 100., droptol = 0.001. │ │ │ │ │ - • patchinfo=frontETree=symbfacIVL=mtxmanager=frontmtx=oldToNewIV=newToOldIV │ │ │ │ │ - =NULL. │ │ │ │ │ + • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ + • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ + • type = SPOOLES REAL. │ │ │ │ │ + • symmetryflag = SPOOLES SYMMETRIC. │ │ │ │ │ + • sparsityflag = SPOOLES DENSE FRONTS. │ │ │ │ │ + • pivotingflag = SPOOLES NO PIVOTING. │ │ │ │ │ + • tau = 100., droptol = 0.001. │ │ │ │ │ + • patchinfo=frontETree=symbfacIVL=mtxmanager=frontmtx=oldToNewIV=newToOldIV │ │ │ │ │ + =NULL. │ │ │ │ │ The stats[6] and cpus[14] vectors are filled with zeros. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 3. int Bridge_clearData ( Bridge *bridge ) ; │ │ │ │ │ This method clears the object and free’s any owned data. It then calls Bridge setDefaultFields(). │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 4. int Bridge_free ( Bridge *bridge ) ; │ │ │ │ │ This method releases any storage by a call to Bridge clearData() and then free the space for bridge. │ │ │ │ │ @@ -531,15 +531,15 @@ │ │ │ │ │ 3.3.2 Instance methods │ │ │ │ │ 1. int Bridge_oldToNewIV ( Bridge *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its oldToNewIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 2. int Bridge_newToOldIV ( Bridge *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its newToOldIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 16 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 16 │ │ │ │ │ 3. int Bridge_frontETree ( Bridge *bridge, ETree **pobj ) ; │ │ │ │ │ This method fills *pobj with its frontETree pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 4. int Bridge_symbfacIVL ( Bridge *bridge, IVL **pobj ) ; │ │ │ │ │ This method fills *pobj with its symbfacIVL pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 5. int Bridge_mtxmanager ( Bridge *bridge, SubMtxManager **pobj ) ; │ │ │ │ │ @@ -568,15 +568,15 @@ │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return -3 pivotingflag is invalid │ │ │ │ │ -1 bridge is NULL -4 tau < 2.0 │ │ │ │ │ -2 sparsityflag is invalid -5 droptol < 0.0 │ │ │ │ │ 4. int Bridge_setMessagesInfo ( Bridge *bridge, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method sets the message level and file. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL, -2 if msglvl > 0 and msgFile is NULL. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 17 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 17 │ │ │ │ │ 3.3.4 Setup methods │ │ │ │ │ 1. int Bridge_setup ( Bridge *bridge, InpMtx *mtxA ) ; │ │ │ │ │ This method orders the graph, generates the front tree, computes the symbolic factorization, and │ │ │ │ │ creates the two permutation vectors. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL, -2 if mtxA is NULL. │ │ │ │ │ 2. int Bridge_factorStats ( Bridge *bridge, int type, int symmetryflag, int *pnfront, │ │ │ │ │ int *pnfactorind, int *pnfactorent, int *pnsolveops, double *pnfactorops ) ; │ │ │ │ │ @@ -635,131 +635,131 @@ │ │ │ │ │ (if pivoting is requested), the drop tolerance (for an approximate factorization), and so on. Rather than │ │ │ │ │ burden the user with the knowledge of and setting these parameters, there are decent default values built │ │ │ │ │ into the object. │ │ │ │ │ Section 4.1 takes a quick look at the BridgeMT driver program (whose complete listing is found in │ │ │ │ │ Appendix B). Section 4.2 describes the internal data fields of the BridgeMT object. Section 3.3 contains the │ │ │ │ │ prototypes and descriptions of all Bridge methods. │ │ │ │ │ 18 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 19 │ │ │ │ │ - 4.1 Aquick look at the multithreaded driver program │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 19 │ │ │ │ │ + 4.1 Aquick look at the multithreaded driver program │ │ │ │ │ The entire listing of this multithreaded driver is found in Appendix B. We now extract parts of the code. │ │ │ │ │ - • Decode the input. │ │ │ │ │ - msglvl = atoi(argv[1]) ; │ │ │ │ │ + • Decode the input. │ │ │ │ │ + msglvl = atoi(argv[1]) ; │ │ │ │ │ msgFileName = argv[6] ; │ │ │ │ │ - neqns = atoi(argv[3]) ; │ │ │ │ │ - type = atoi(argv[4]) ; │ │ │ │ │ + neqns = atoi(argv[3]) ; │ │ │ │ │ + type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ solFileName = argv[8] ; │ │ │ │ │ - seed = atoi(argv[9]) ; │ │ │ │ │ - nthread = atoi(argv[10]) ; │ │ │ │ │ + seed = atoi(argv[9]) ; │ │ │ │ │ + nthread = atoi(argv[10]) ; │ │ │ │ │ Here is a description of the input parameters. │ │ │ │ │ – msglvl is the message level. │ │ │ │ │ – msgFile is the message file name │ │ │ │ │ – neqns is the number of equations. │ │ │ │ │ – type is the type of entries: 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ – symmetryflagis the type of matrix symmetry: 0 (SPOOLES SYMMETRIC), 1 (SPOOLES HERMITIAN) │ │ │ │ │ - or 2 (SPOOLES NONSYMMETRIC). │ │ │ │ │ + or 2 (SPOOLES NONSYMMETRIC). │ │ │ │ │ – mtxFile is the name of the file from which to read the InpMtx object for A. The file name must │ │ │ │ │ - have the form *.inpmtxb for a binary file or *.inpmtxf for a formatted file. │ │ │ │ │ + have the form *.inpmtxb for a binary file or *.inpmtxf for a formatted file. │ │ │ │ │ – rhsFileis the name of the file from which to read the DenseMtx object for the right hand side Y . │ │ │ │ │ - The file name must have the form *.densemtxb for a binary file or *.densemtxf for a formatted │ │ │ │ │ - file. │ │ │ │ │ + The file name must have the form *.densemtxb for a binary file or *.densemtxf for a formatted │ │ │ │ │ + file. │ │ │ │ │ – solFile is the name of the file to write the DenseMtx object for the solution X. The file name │ │ │ │ │ - must have the form *.densemtxb for a binary file or *.densemtxf for a formatted file, "none" │ │ │ │ │ - for no output, or any other name for a human-readable listing. │ │ │ │ │ + must have the form *.densemtxb for a binary file or *.densemtxf for a formatted file, "none" │ │ │ │ │ + for no output, or any other name for a human-readable listing. │ │ │ │ │ – seed is a random number seed used in the ordering process. │ │ │ │ │ – nthread is the number of threads to be used in the factorization and solve. │ │ │ │ │ - • Read in the InpMtx object for A. │ │ │ │ │ + • Read in the InpMtx object for A. │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ The rc parameter is the error return. In the driver it is tested for an error, but we omit this from the │ │ │ │ │ present discussion. │ │ │ │ │ - • Read in the DenseMtx object for Y. │ │ │ │ │ + • Read in the DenseMtx object for Y. │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, mtxFileName) ; │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 20 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 20 │ │ │ │ │ The nrhs parameter contains the number of right hand sides, or equivalently, the number of columns │ │ │ │ │ in Y . │ │ │ │ │ - • Create and setup the BridgeMT object. │ │ │ │ │ + • Create and setup the BridgeMT object. │ │ │ │ │ bridge = BridgeMT_new() ; │ │ │ │ │ BridgeMT_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMT_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = BridgeMT_setup(bridge, mtxA) ; │ │ │ │ │ The BridgeMT object is allocated by BridgeMT new(), and various parameters are set. The actual │ │ │ │ │ ordering of the matrix, symbolic factorization, and permutation creation are performed inside the │ │ │ │ │ BridgeMT setup() method. │ │ │ │ │ - • Setup the numerical factorization. │ │ │ │ │ + • Setup the numerical factorization. │ │ │ │ │ rc = BridgeMT_factorSetup(bridge, nthread, 0, 0.0) ; │ │ │ │ │ This step tells the BridgeMT object the number of threads to be used in the factorization and solve. │ │ │ │ │ The third and fourth parameters define the particular type of map of the computations to processors. │ │ │ │ │ When the third parameter is zero, the defaults map is used. If rc = 1, the setup completed without │ │ │ │ │ any error. │ │ │ │ │ - • Compute the matrix factorization. │ │ │ │ │ + • Compute the matrix factorization. │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = BridgeMT_factor(bridge, mtxA, permuteflag, &error) ; │ │ │ │ │ When permuteflag is 1, it means that the matrix in mtxA has not yet been permuted into the new │ │ │ │ │ ordering and so is done inside the method. The error flag is filled with an error code that tells how │ │ │ │ │ far the factorization was able to proceed. If rc = 1, the factorization completed without any error. │ │ │ │ │ - • Setup the solve. │ │ │ │ │ + • Setup the solve. │ │ │ │ │ rc = BridgeMT_solveSetup(bridge) ; │ │ │ │ │ This method sets up the environment for a parallel solve. If rc = 1, the setup completed without any │ │ │ │ │ error. │ │ │ │ │ - • Solve the linear system. │ │ │ │ │ + • Solve the linear system. │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ rc = BridgeMT_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ The DenseMtx object mtxX is created and initialized to be the same type and size as mtxY. Its entries │ │ │ │ │ are explicitly zeroed (this is not necessary but is a good idea in general). The solution is then solved. │ │ │ │ │ Again, note the presence of permuteflag. When 1, mtxY needs to be permuted into the new ordering, │ │ │ │ │ and mtxX is returned in the original ordering. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 21 │ │ │ │ │ - 4.2 The BridgeMT Data Structure │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 21 │ │ │ │ │ + 4.2 The BridgeMT Data Structure │ │ │ │ │ The BridgeMT structure has the following fields. │ │ │ │ │ - • Graph parameters: │ │ │ │ │ + • Graph parameters: │ │ │ │ │ – int neqns : number of equations, i.e., number of vertices in the graph. │ │ │ │ │ – int nedges : number of edges (includes (u,v), (v,u) and (u,u)). │ │ │ │ │ – int Neqns : number of equations in the compressed graph. │ │ │ │ │ – int Nedges : number of edges in the compressed graph. │ │ │ │ │ - • Ordering parameters: │ │ │ │ │ + • Ordering parameters: │ │ │ │ │ – int maxdomainsize : maximum size of a subgraph to not split any further during the nested │ │ │ │ │ - dissection process. │ │ │ │ │ + dissection process. │ │ │ │ │ – int maxnzeros : maximum number of zeros to allow in a front during the supernode amalgama- │ │ │ │ │ - tion process. │ │ │ │ │ + tion process. │ │ │ │ │ – int maxsize : maximum size of a front when the fronts are split. │ │ │ │ │ – int seed : random number seed. │ │ │ │ │ – double compressCutoff : if the Neqns < compressCutoff ∗ neqns, then the compressed graph │ │ │ │ │ - is formed, ordered and used to create the symbolic factorization. │ │ │ │ │ - • Matrix parameters: │ │ │ │ │ + is formed, ordered and used to create the symbolic factorization. │ │ │ │ │ + • Matrix parameters: │ │ │ │ │ – int type : type of entries, SPOOLES REAL or SPOOLES COMPLEX, default value is SPOOLES REAL. │ │ │ │ │ – int symmetryflag: type of symmetry for the matrix, SPOOLES SYMMETRIC, SPOOLES HERMITIAN │ │ │ │ │ - or SPOOLES NONSYMMETRIC, default value is SPOOLES SYMMETRIC. │ │ │ │ │ - • Factorization parameters: │ │ │ │ │ + or SPOOLES NONSYMMETRIC, default value is SPOOLES SYMMETRIC. │ │ │ │ │ + • Factorization parameters: │ │ │ │ │ – int sparsityflag: SPOOLES DENSE FRONTSforadirectfactorization,orSPOOLES SPARSE FRONTS │ │ │ │ │ - for an approximate factorization, default value is SPOOLES DENSE FRONTS. │ │ │ │ │ + for an approximate factorization, default value is SPOOLES DENSE FRONTS. │ │ │ │ │ – int pivotingflag : SPOOLES PIVOTING for pivoting enabled, or SPOOLES NO PIVOTING for no │ │ │ │ │ - pivoting, default value is SPOOLES NO PIVOTING. │ │ │ │ │ + pivoting, default value is SPOOLES NO PIVOTING. │ │ │ │ │ – double tau : used when pivoting is enabled, all entries in L and U have magnitude less than or │ │ │ │ │ - equal to tau, default value is 100. │ │ │ │ │ + equal to tau, default value is 100. │ │ │ │ │ – double droptol: used for an approximation, all entries in L and U that are kept have magnitude │ │ │ │ │ - greater than or equal to droptol. default value is 0.001. │ │ │ │ │ + greater than or equal to droptol. default value is 0.001. │ │ │ │ │ – PatchAndGoInfo *patchinfo : pointer to an object that controls special factorizations for op- │ │ │ │ │ - timization matrices and singular matrices from structural analysis, default value is NULL which │ │ │ │ │ - means no special action is taken. See the Reference Manual for more information. │ │ │ │ │ - • Pointers to objects: │ │ │ │ │ + timization matrices and singular matrices from structural analysis, default value is NULL which │ │ │ │ │ + means no special action is taken. See the Reference Manual for more information. │ │ │ │ │ + • Pointers to objects: │ │ │ │ │ – ETree *frontETree : object that defines the factorizations, e.g., the number of fronts, the tree │ │ │ │ │ - they form, the number of internal and external rows for each front, and the map from vertices to │ │ │ │ │ - the front where it is contained. │ │ │ │ │ + they form, the number of internal and external rows for each front, and the map from vertices to │ │ │ │ │ + the front where it is contained. │ │ │ │ │ – IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ – SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor │ │ │ │ │ - entries and are used in the solves. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 22 │ │ │ │ │ + entries and are used in the solves. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 22 │ │ │ │ │ – FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ – IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ – IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • Multithreaded information: │ │ │ │ │ – int nthread : number of threads to be used during the factor and solve. │ │ │ │ │ – int lookahead : this parameter is used to possibly reduce the idle time of threads during the │ │ │ │ │ factorization. When lookahead is 0, the factorization uses the least amount of working storage │ │ │ │ │ @@ -790,30 +790,30 @@ │ │ │ │ │ cpus[7] : time to initialize front matrix cpus[15] : total solve time │ │ │ │ │ 4.3 Prototypes and descriptions of BridgeMT methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the BridgeMT │ │ │ │ │ object. │ │ │ │ │ 4.3.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 23 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 23 │ │ │ │ │ 1. BridgeMT * BridgeMT_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the BridgeMT structure and then sets the default fields by a │ │ │ │ │ call to BridgeMT setDefaultFields(). │ │ │ │ │ 2. int BridgeMT_setDefaultFields ( BridgeMT *bridge ) ; │ │ │ │ │ The structure’s fields are set to default values: │ │ │ │ │ - • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ - • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ - • type = SPOOLES REAL. │ │ │ │ │ - • symmetryflag = SPOOLES SYMMETRIC. │ │ │ │ │ - • sparsityflag = SPOOLES DENSE FRONTS. │ │ │ │ │ - • pivotingflag = SPOOLES NO PIVOTING. │ │ │ │ │ - • tau = 100., droptol = 0.001. │ │ │ │ │ - • lookahead = nthread = 0. │ │ │ │ │ - • patchinfo,frontETree,symbfacIVL,mtxmanager,frontmtx,oldToNewIV,newToOldIV,ownersIV, │ │ │ │ │ - solvemap and cumopsDV are all set to NULL. │ │ │ │ │ + • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ + • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ + • type = SPOOLES REAL. │ │ │ │ │ + • symmetryflag = SPOOLES SYMMETRIC. │ │ │ │ │ + • sparsityflag = SPOOLES DENSE FRONTS. │ │ │ │ │ + • pivotingflag = SPOOLES NO PIVOTING. │ │ │ │ │ + • tau = 100., droptol = 0.001. │ │ │ │ │ + • lookahead = nthread = 0. │ │ │ │ │ + • patchinfo,frontETree,symbfacIVL,mtxmanager,frontmtx,oldToNewIV,newToOldIV,ownersIV, │ │ │ │ │ + solvemap and cumopsDV are all set to NULL. │ │ │ │ │ The stats[6] and cpus[16] vectors are filled with zeros. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 3. int BridgeMT_clearData ( BridgeMT *bridge ) ; │ │ │ │ │ Thismethodclearstheobjectandfree’sanyowneddata. ItthencallsBridgeMT setDefaultFields(). │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 4. int BridgeMT_free ( BridgeMT *bridge ) ; │ │ │ │ │ This method releases any storage by a call to BridgeMT clearData() and then free the space for │ │ │ │ │ @@ -828,15 +828,15 @@ │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 3. int BridgeMT_frontETree ( BridgeMT *bridge, ETree **pobj ) ; │ │ │ │ │ This method fills *pobj with its frontETree pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 4. int BridgeMT_symbfacIVL ( BridgeMT *bridge, IVL **pobj ) ; │ │ │ │ │ This method fills *pobj with its symbfacIVL pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 24 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 24 │ │ │ │ │ 5. int BridgeMT_mtxmanager ( BridgeMT *bridge, SubMtxManager **pobj ) ; │ │ │ │ │ This method fills *pobj with its mtxmanager pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 6. int BridgeMT_frontmtx ( BridgeMT *bridge, FrontMtx **pobj ) ; │ │ │ │ │ This method fills *pobj with its frontmtx pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 7. int BridgeMT_ownersIV ( BridgeMT *bridge, IV **pobj ) ; │ │ │ │ │ @@ -865,15 +865,15 @@ │ │ │ │ │ 1 normal return -3 maxsize ≤ 0 │ │ │ │ │ -1 bridge is NULL -4 compressCutoff> 1 │ │ │ │ │ -2 maxdomainsize ≤ 0 │ │ │ │ │ 3. int BridgeMT_setFactorParams ( BridgeMT *bridge, int sparsityflag, int pivotingflag, │ │ │ │ │ double tau, double droptol, int lookahead, PatchAndGoInfo *patchinfo ) ; │ │ │ │ │ This method sets parameters needed for the factorization. │ │ │ │ │ Return value: │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 25 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 25 │ │ │ │ │ 1 normal return -4 tau < 2.0 │ │ │ │ │ -1 bridge is NULL -5 droptol < 0.0 │ │ │ │ │ -2 sparsityflag is invalid -6 lookahead < 0 │ │ │ │ │ -3 pivotingflag is invalid │ │ │ │ │ 4. int BridgeMT_setMessagesInfo ( BridgeMT *bridge, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method sets the message level and file. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL, -2 if msglvl > 0 and msgFile is NULL. │ │ │ │ │ @@ -905,15 +905,15 @@ │ │ │ │ │ Thewrapmapandbalancedmaparenotrecommended. Thesubtree-subsetmapisagoodmapwitha │ │ │ │ │ very well balanced nested dissection ordering. The domain decomposition map is recommended when │ │ │ │ │ the nested dissection tree is imbalanced or for the multisection ordering. The domain decomposition │ │ │ │ │ map requires a cutoff parameter in [0,1] which specifies the relative size of a subtree that forms a │ │ │ │ │ domain. If maptype is not one of 1, 2, 3 or 4, the default map is used: domain decomposition with │ │ │ │ │ cutoff = 1/(2*nthread). │ │ │ │ │ Return value: │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 26 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 26 │ │ │ │ │ 1 normal return, factorization did complete -2 nthread < 1 │ │ │ │ │ -1 bridge is NULL -5 frontETree is not present │ │ │ │ │ 2. int BridgeMT_factor ( BridgeMT *bridge, InpMtx *mtxA, int permuteflag, int *perror ) ; │ │ │ │ │ This method permutes the matrix into the new ordering (if permuteflagis 1), factors the matrix, and │ │ │ │ │ then post-processes the factors. │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return, factorization did complete -1 bridge is NULL │ │ │ │ │ @@ -960,133 +960,133 @@ │ │ │ │ │ burden the user with the knowledge of and setting these parameters, there are decent default values built │ │ │ │ │ into the object. Using the BridgeMPI object to solve a linear system of equations can be broken down into │ │ │ │ │ three steps. │ │ │ │ │ Section 5.1 takes a quick look at the BridgeMPI driver program (whose complete listing is found in │ │ │ │ │ Appendix C). Section 5.2 describes the internal data fields of the BridgeMPI object. Section 3.3 contains │ │ │ │ │ the prototypes and descriptions of all Bridge methods. │ │ │ │ │ 27 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 28 │ │ │ │ │ - 5.1 Aquick look at the MPI driver program │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 28 │ │ │ │ │ + 5.1 Aquick look at the MPI driver program │ │ │ │ │ The entire listing of this MPI driver is found in Appendix C. We now extract parts of the code. │ │ │ │ │ - • Decode the input. │ │ │ │ │ - msglvl = atoi(argv[1]) ; │ │ │ │ │ + • Decode the input. │ │ │ │ │ + msglvl = atoi(argv[1]) ; │ │ │ │ │ msgFileName = argv[6] ; │ │ │ │ │ - neqns = atoi(argv[3]) ; │ │ │ │ │ - type = atoi(argv[4]) ; │ │ │ │ │ + neqns = atoi(argv[3]) ; │ │ │ │ │ + type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ solFileName = argv[8] ; │ │ │ │ │ - seed = atoi(argv[9]) ; │ │ │ │ │ + seed = atoi(argv[9]) ; │ │ │ │ │ Here is a description of the input parameters. │ │ │ │ │ – msglvl is the message level. │ │ │ │ │ – msgFile is the message file name │ │ │ │ │ – neqns is the number of equations. │ │ │ │ │ – type is the type of entries: 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ – symmetryflagis the type of matrix symmetry: 0 (SPOOLES SYMMETRIC), 1 (SPOOLES HERMITIAN) │ │ │ │ │ - or 2 (SPOOLES NONSYMMETRIC). │ │ │ │ │ + or 2 (SPOOLES NONSYMMETRIC). │ │ │ │ │ – mtxFile is the name of the file from which to read the InpMtx object for A. The file name must │ │ │ │ │ - have the form *.inpmtxb for a binary file or *.inpmtxf for a formatted file. │ │ │ │ │ + have the form *.inpmtxb for a binary file or *.inpmtxf for a formatted file. │ │ │ │ │ – rhsFileis the name of the file from which to read the DenseMtx object for the right hand side Y . │ │ │ │ │ - The file name must have the form *.densemtxb for a binary file or *.densemtxf for a formatted │ │ │ │ │ - file. │ │ │ │ │ + The file name must have the form *.densemtxb for a binary file or *.densemtxf for a formatted │ │ │ │ │ + file. │ │ │ │ │ – solFile is the name of the file to write the DenseMtx object for the solution X. The file name │ │ │ │ │ - must have the form *.densemtxb for a binary file or *.densemtxf for a formatted file, "none" │ │ │ │ │ - for no output, or any other name for a human-readable listing. │ │ │ │ │ + must have the form *.densemtxb for a binary file or *.densemtxf for a formatted file, "none" │ │ │ │ │ + for no output, or any other name for a human-readable listing. │ │ │ │ │ – seed is a random number seed used in the ordering process. │ │ │ │ │ - • Processor 0 reads in the InpMtx object for A. │ │ │ │ │ + • Processor 0 reads in the InpMtx object for A. │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ The rc parameter is the error return. Processor 0 then broadcasts the error return to the other │ │ │ │ │ processors. If an error occured reading in the matrix, all processors call MPI Finalize() and exit. │ │ │ │ │ - • Processor 0 reads in the DenseMtx object for Y. │ │ │ │ │ + • Processor 0 reads in the DenseMtx object for Y. │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, mtxFileName) ; │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ The nrhs parameter contains the number of right hand sides, or equivalently, the number of columns │ │ │ │ │ in Y . Processor 0 then broadcasts the error return to the other processors. If an error occured reading │ │ │ │ │ in the matrix, all processors call MPI Finalize() and exit. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 29 │ │ │ │ │ - • Create and setup the BridgeMPI object. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 29 │ │ │ │ │ + • Create and setup the BridgeMPI object. │ │ │ │ │ bridge = BridgeMPI_new() ; │ │ │ │ │ BridgeMPI_setMPIparams(bridge, nproc, myid, MPI_COMM_WORLD) ; │ │ │ │ │ BridgeMPI_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMPI_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = BridgeMPI_setup(bridge, mtxA) ; │ │ │ │ │ The BridgeMPI object is allocated by BridgeMPI new(), and various parameters are set. The actual │ │ │ │ │ ordering of the matrix, symbolic factorization, and permutation creation are performed inside the │ │ │ │ │ BridgeMPI setup() method. │ │ │ │ │ - • Setup the numerical factorization. │ │ │ │ │ + • Setup the numerical factorization. │ │ │ │ │ rc = BridgeMPI_factorSetup(bridge, 0, 0.0) ; │ │ │ │ │ This step tells the BridgeMPI object the number of threads to be used in the factorization and solve. │ │ │ │ │ The second and third parameters define the particular type of map of the computations to processors. │ │ │ │ │ Whenthe second parameter is zero, the defaults map is used. If rc = 1, the setup completed without │ │ │ │ │ any error. │ │ │ │ │ - • Compute the matrix factorization. │ │ │ │ │ + • Compute the matrix factorization. │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = BridgeMPI_factor(bridge, mtxA, permuteflag, &error) ; │ │ │ │ │ When permuteflag is 1, it means that the matrix in mtxA has not yet been permuted into the new │ │ │ │ │ ordering and so is done inside the method. The error flag is filled with an error code that tells how │ │ │ │ │ far the factorization was able to proceed. If rc = 1, the factorization completed without any error. │ │ │ │ │ - • Setup the solve. │ │ │ │ │ + • Setup the solve. │ │ │ │ │ rc = BridgeMPI_solveSetup(bridge) ; │ │ │ │ │ This method sets up the environment for a parallel solve. It is called once per factorization, not once │ │ │ │ │ per solve. If rc = 1, the setup completed without any error. │ │ │ │ │ - • Solve the linear system. Processor 0 initializes the DenseMtx object mtxX to hold the global solution │ │ │ │ │ + • Solve the linear system. Processor 0 initializes the DenseMtx object mtxX to hold the global solution │ │ │ │ │ X. Its entries are explicitly zeroed (this is not necessary but is a good idea in general). The solution │ │ │ │ │ is then solved. │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ All processors then cooperate to compute the solution X. │ │ │ │ │ rc = BridgeMPI_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ Again, note the presence of permuteflag. When 1, mtxY needs to be permuted into the new ordering, │ │ │ │ │ and mtxX is returned in the original ordering. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 30 │ │ │ │ │ - 5.2 The BridgeMPI Data Structure │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 30 │ │ │ │ │ + 5.2 The BridgeMPI Data Structure │ │ │ │ │ The BridgeMPI structure has the following fields. │ │ │ │ │ - • Graph parameters: │ │ │ │ │ + • Graph parameters: │ │ │ │ │ – int neqns : number of equations, i.e., number of vertices in the graph. │ │ │ │ │ – int nedges : number of edges (includes (u,v), (v,u) and (u,u)). │ │ │ │ │ – int Neqns : number of equations in the compressed graph. │ │ │ │ │ – int Nedges : number of edges in the compressed graph. │ │ │ │ │ - • Ordering parameters: │ │ │ │ │ + • Ordering parameters: │ │ │ │ │ – int maxdomainsize : maximum size of a subgraph to not split any further during the nested │ │ │ │ │ - dissection process. │ │ │ │ │ + dissection process. │ │ │ │ │ – int maxnzeros : maximum number of zeros to allow in a front during the supernode amalgama- │ │ │ │ │ - tion process. │ │ │ │ │ + tion process. │ │ │ │ │ – int maxsize : maximum size of a front when the fronts are split. │ │ │ │ │ – int seed : random number seed. │ │ │ │ │ – double compressCutoff : if the Neqns < compressCutoff ∗ neqns, then the compressed graph │ │ │ │ │ - is formed, ordered and used to create the symbolic factorization. │ │ │ │ │ - • Matrix parameters: │ │ │ │ │ + is formed, ordered and used to create the symbolic factorization. │ │ │ │ │ + • Matrix parameters: │ │ │ │ │ – int type : type of entries, SPOOLES REAL or SPOOLES COMPLEX, default value is SPOOLES REAL. │ │ │ │ │ – int symmetryflag: type of symmetry for the matrix, SPOOLES SYMMETRIC, SPOOLES HERMITIAN │ │ │ │ │ - or SPOOLES NONSYMMETRIC, default value is SPOOLES SYMMETRIC. │ │ │ │ │ - • Factorization parameters: │ │ │ │ │ + or SPOOLES NONSYMMETRIC, default value is SPOOLES SYMMETRIC. │ │ │ │ │ + • Factorization parameters: │ │ │ │ │ – int sparsityflag: SPOOLES DENSE FRONTSforadirectfactorization,orSPOOLES SPARSE FRONTS │ │ │ │ │ - for an approximate factorization, default value is SPOOLES DENSE FRONTS. │ │ │ │ │ + for an approximate factorization, default value is SPOOLES DENSE FRONTS. │ │ │ │ │ – int pivotingflag : SPOOLES PIVOTING for pivoting enabled, or SPOOLES NO PIVOTING for no │ │ │ │ │ - pivoting, default value is SPOOLES NO PIVOTING. │ │ │ │ │ + pivoting, default value is SPOOLES NO PIVOTING. │ │ │ │ │ – double tau : used when pivoting is enabled, all entries in L and U have magnitude less than or │ │ │ │ │ - equal to tau, default value is 100. │ │ │ │ │ + equal to tau, default value is 100. │ │ │ │ │ – double droptol: used for an approximation, all entries in L and U that are kept have magnitude │ │ │ │ │ - greater than or equal to droptol. default value is 0.001. │ │ │ │ │ + greater than or equal to droptol. default value is 0.001. │ │ │ │ │ – PatchAndGoInfo *patchinfo : pointer to an object that controls special factorizations for op- │ │ │ │ │ - timization matrices and singular matrices from structural analysis, default value is NULL which │ │ │ │ │ - means no special action is taken. See the Reference Manual for more information. │ │ │ │ │ + timization matrices and singular matrices from structural analysis, default value is NULL which │ │ │ │ │ + means no special action is taken. See the Reference Manual for more information. │ │ │ │ │ – int lookahead : this parameter is used to possibly reduce the idle time of threads during the │ │ │ │ │ - factorization. When lookahead is 0, the factorization uses the least amount of working storage │ │ │ │ │ - but threads can be idle. Larger values of lookahead tend to increase the working storage but │ │ │ │ │ - may decrease the execution time. Values of lookahead greater than nthread are not useful. │ │ │ │ │ - • Pointers to objects: │ │ │ │ │ + factorization. When lookahead is 0, the factorization uses the least amount of working storage │ │ │ │ │ + but threads can be idle. Larger values of lookahead tend to increase the working storage but │ │ │ │ │ + may decrease the execution time. Values of lookahead greater than nthread are not useful. │ │ │ │ │ + • Pointers to objects: │ │ │ │ │ – ETree *frontETree : object that defines the factorizations, e.g., the number of fronts, the tree │ │ │ │ │ - they form, the number of internal and external rows for each front, and the map from vertices to │ │ │ │ │ - the front where it is contained. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 31 │ │ │ │ │ + they form, the number of internal and external rows for each front, and the map from vertices to │ │ │ │ │ + the front where it is contained. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 31 │ │ │ │ │ – IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ – SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor │ │ │ │ │ entries and are used in the solves. │ │ │ │ │ – FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ – IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ – IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • MPI information: │ │ │ │ │ @@ -1124,48 +1124,48 @@ │ │ │ │ │ cpus[4] : broadcast the front tree cpus[15] : permute rhs │ │ │ │ │ cpus[5] : broadcast symbolic factor cpus[16] : distribute rhs │ │ │ │ │ cpus[6] : total setup time cpus[17] : create solution matrix │ │ │ │ │ cpus[7] : setup the factorization cpus[18] : solve │ │ │ │ │ cpus[8] : permute matrix cpus[19] : gather solution │ │ │ │ │ cpus[9] : distribute matrix cpus[20] : permute solution │ │ │ │ │ cpus[10] : initialize front matrix cpus[21] : total solve time │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 32 │ │ │ │ │ - 5.3 Prototypes and descriptions of BridgeMPI methods │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 32 │ │ │ │ │ + 5.3 Prototypes and descriptions of BridgeMPI methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the BridgeMPI │ │ │ │ │ object. │ │ │ │ │ 5.3.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ 1. BridgeMPI * BridgeMPI_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the BridgeMPI structure and then sets the default fields by │ │ │ │ │ a call to BridgeMPI setDefaultFields(). │ │ │ │ │ 2. int BridgeMPI_setDefaultFields ( BridgeMPI *bridge ) ; │ │ │ │ │ The structure’s fields are set to default values: │ │ │ │ │ - • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ - • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ - • type = SPOOLES REAL. │ │ │ │ │ - • symmetryflag = SPOOLES SYMMETRIC. │ │ │ │ │ - • sparsityflag = SPOOLES DENSE FRONTS. │ │ │ │ │ - • pivotingflag = SPOOLES NO PIVOTING. │ │ │ │ │ - • tau = 100., droptol = 0.001. │ │ │ │ │ - • lookahead = nproc = 0. │ │ │ │ │ - • myid = -1. │ │ │ │ │ - • patchinfo,frontETree,symbfacIVL,mtxmanager,frontmtx,oldToNewIV,newToOldIV,ownersIV, │ │ │ │ │ - solvemap, cumopsDV, vtxmapIV, rowmapIV, ownedColumnsIV, Aloc, Xloc, Yloc and comm are all │ │ │ │ │ - set to NULL. │ │ │ │ │ + • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ + • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ + • type = SPOOLES REAL. │ │ │ │ │ + • symmetryflag = SPOOLES SYMMETRIC. │ │ │ │ │ + • sparsityflag = SPOOLES DENSE FRONTS. │ │ │ │ │ + • pivotingflag = SPOOLES NO PIVOTING. │ │ │ │ │ + • tau = 100., droptol = 0.001. │ │ │ │ │ + • lookahead = nproc = 0. │ │ │ │ │ + • myid = -1. │ │ │ │ │ + • patchinfo,frontETree,symbfacIVL,mtxmanager,frontmtx,oldToNewIV,newToOldIV,ownersIV, │ │ │ │ │ + solvemap, cumopsDV, vtxmapIV, rowmapIV, ownedColumnsIV, Aloc, Xloc, Yloc and comm are all │ │ │ │ │ + set to NULL. │ │ │ │ │ The stats[6] and cpus[22] vectors are filled with zeros. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 3. int BridgeMPI_clearData ( BridgeMPI *bridge ) ; │ │ │ │ │ Thismethodclearstheobjectandfree’sanyowneddata. ItthencallsBridgeMPI setDefaultFields(). │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 4. int BridgeMPI_free ( BridgeMPI *bridge ) ; │ │ │ │ │ This method releases any storage by a call to BridgeMPI clearData() and then free the space for │ │ │ │ │ bridge. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 33 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 33 │ │ │ │ │ 5.3.2 Instance methods │ │ │ │ │ 1. int BridgeMPI_oldToNewIV ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its oldToNewIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 2. int BridgeMPI_newToOldIV ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its newToOldIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ @@ -1192,15 +1192,15 @@ │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 10. int BridgeMPI_rowmapIV ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its rowmapIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 11. int BridgeMPI_ownedColumns ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its ownedColumnsIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 34 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 34 │ │ │ │ │ 12. int BridgeMPI_Xloc ( BridgeMPI *bridge, DenseMtx **pobj ) ; │ │ │ │ │ This method fills *pobj with its Xloc pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 13. int BridgeMPI_Yloc ( BridgeMPI *bridge, DenseMtx **pobj ) ; │ │ │ │ │ This method fills *pobj with its Yloc pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 14. int BridgeMPI_nproc ( BridgeMPI *bridge, int *pnproc ) ; │ │ │ │ │ @@ -1227,15 +1227,15 @@ │ │ │ │ │ 3. int BridgeMPI_setOrderingParams ( BridgeMPI *bridge, int maxdomainsize, int maxnzeros, │ │ │ │ │ int maxsize, int seed, double compressCutoff ) ; │ │ │ │ │ This method sets parameters needed for the ordering. │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return -3 maxsize ≤ 0 │ │ │ │ │ -1 bridge is NULL -4 compressCutoff> 1 │ │ │ │ │ -2 maxdomainsize ≤ 0 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 35 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 35 │ │ │ │ │ 4. int BridgeMPI_setFactorParams ( BridgeMPI *bridge, int sparsityflag, int pivotingflag, │ │ │ │ │ double tau, double droptol, int lookahead, PatchAndGoInfo *patchinfo ) ; │ │ │ │ │ This method sets parameters needed for the factorization. │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return -4 tau < 2.0 │ │ │ │ │ -1 bridge is NULL -5 droptol < 0.0 │ │ │ │ │ -2 sparsityflag is invalid -6 lookahead < 0 │ │ │ │ │ @@ -1264,15 +1264,15 @@ │ │ │ │ │ 1. int BridgeMPI_factorSetup ( BridgeMPI *bridge, int maptype, double cutoff ) ; │ │ │ │ │ This method constructs the map from fronts to owning processors, and computes the number of factor │ │ │ │ │ operations that each thread will execute. The maptype parameter can be one of four values: │ │ │ │ │ • 1 — wrap map │ │ │ │ │ • 2 — balanced map │ │ │ │ │ • 3 — subtree-subset map │ │ │ │ │ • 4 — domain decomposition map │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 36 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 36 │ │ │ │ │ Thewrapmapandbalancedmaparenotrecommended. Thesubtree-subsetmapisagoodmapwitha │ │ │ │ │ very well balanced nested dissection ordering. The domain decomposition map is recommended when │ │ │ │ │ the nested dissection tree is imbalanced or for the multisection ordering. The domain decomposition │ │ │ │ │ map requires a cutoff parameter in [0,1] which specifies the relative size of a subtree that forms a │ │ │ │ │ domain. If maptype is not one of 1, 2, 3 or 4, the default map is used: domain decomposition with │ │ │ │ │ cutoff = 1/(2*nthread). │ │ │ │ │ Return value: 1 normal return, factorization did complete, -1 bridge is NULL, -2 frontETree is not │ │ │ │ │ @@ -1328,171 +1328,171 @@ │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 10 ) { │ │ │ │ │ fprintf(stdout, │ │ │ │ │ "\n\n usage : %s msglvl msgFile neqns type symmetryflag" │ │ │ │ │ 37 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 38 │ │ │ │ │ - "\n mtxFile rhsFile seed" │ │ │ │ │ - "\n msglvl -- message level" │ │ │ │ │ - "\n 0 -- no output" │ │ │ │ │ - "\n 1 -- timings and statistics" │ │ │ │ │ - "\n 2 and greater -- lots of output" │ │ │ │ │ - "\n msgFile -- message file" │ │ │ │ │ - "\n neqns -- # of equations" │ │ │ │ │ - "\n type -- type of entries" │ │ │ │ │ - "\n 1 -- real" │ │ │ │ │ - "\n 2 -- complex" │ │ │ │ │ - "\n symmetryflag -- symmetry flag" │ │ │ │ │ - "\n 0 -- symmetric" │ │ │ │ │ - "\n 1 -- hermitian" │ │ │ │ │ - "\n 2 -- nonsymmetric" │ │ │ │ │ - "\n neqns -- # of equations" │ │ │ │ │ - "\n mtxFile -- input file for A matrix InpMtx object" │ │ │ │ │ - "\n must be *.inpmtxf or *.inpmtxb" │ │ │ │ │ - "\n rhsFile -- input file for Y DenseMtx object" │ │ │ │ │ - "\n must be *.densemtxf or *.densemtxb" │ │ │ │ │ - "\n solFile -- output file for X DenseMtx object" │ │ │ │ │ - "\n must be none, *.densemtxf or *.densemtxb" │ │ │ │ │ - "\n seed -- random number seed" │ │ │ │ │ - "\n", │ │ │ │ │ - argv[0]) ; │ │ │ │ │ - return(0) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 38 │ │ │ │ │ + "\n mtxFile rhsFile seed" │ │ │ │ │ + "\n msglvl -- message level" │ │ │ │ │ + "\n 0 -- no output" │ │ │ │ │ + "\n 1 -- timings and statistics" │ │ │ │ │ + "\n 2 and greater -- lots of output" │ │ │ │ │ + "\n msgFile -- message file" │ │ │ │ │ + "\n neqns -- # of equations" │ │ │ │ │ + "\n type -- type of entries" │ │ │ │ │ + "\n 1 -- real" │ │ │ │ │ + "\n 2 -- complex" │ │ │ │ │ + "\n symmetryflag -- symmetry flag" │ │ │ │ │ + "\n 0 -- symmetric" │ │ │ │ │ + "\n 1 -- hermitian" │ │ │ │ │ + "\n 2 -- nonsymmetric" │ │ │ │ │ + "\n neqns -- # of equations" │ │ │ │ │ + "\n mtxFile -- input file for A matrix InpMtx object" │ │ │ │ │ + "\n must be *.inpmtxf or *.inpmtxb" │ │ │ │ │ + "\n rhsFile -- input file for Y DenseMtx object" │ │ │ │ │ + "\n must be *.densemtxf or *.densemtxb" │ │ │ │ │ + "\n solFile -- output file for X DenseMtx object" │ │ │ │ │ + "\n must be none, *.densemtxf or *.densemtxb" │ │ │ │ │ + "\n seed -- random number seed" │ │ │ │ │ + "\n", │ │ │ │ │ + argv[0]) ; │ │ │ │ │ + return(0) ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ - msgFile = stdout ; │ │ │ │ │ + msgFile = stdout ; │ │ │ │ │ } else if ( (msgFile = fopen(argv[2], "w")) == NULL ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ - "\n unable to open file %s\n", │ │ │ │ │ - argv[0], argv[2]) ; │ │ │ │ │ - return(-1) ; │ │ │ │ │ + fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ + "\n unable to open file %s\n", │ │ │ │ │ + argv[0], argv[2]) ; │ │ │ │ │ + return(-1) ; │ │ │ │ │ } │ │ │ │ │ - neqns = atoi(argv[3]) ; │ │ │ │ │ - type = atoi(argv[4]) ; │ │ │ │ │ + neqns = atoi(argv[3]) ; │ │ │ │ │ + type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ solFileName = argv[8] ; │ │ │ │ │ - seed = atoi(argv[9]) ; │ │ │ │ │ + seed = atoi(argv[9]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n %s input :" │ │ │ │ │ - "\n msglvl = %d" │ │ │ │ │ - "\n msgFile = %s" │ │ │ │ │ - "\n neqns = %d" │ │ │ │ │ - "\n type = %d" │ │ │ │ │ + "\n msglvl = %d" │ │ │ │ │ + "\n msgFile = %s" │ │ │ │ │ + "\n neqns = %d" │ │ │ │ │ + "\n type = %d" │ │ │ │ │ "\n symmetryflag = %d" │ │ │ │ │ - "\n mtxFile = %s" │ │ │ │ │ - "\n rhsFile = %s" │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 39 │ │ │ │ │ - "\n solFile = %s" │ │ │ │ │ - "\n seed = %d" │ │ │ │ │ + "\n mtxFile = %s" │ │ │ │ │ + "\n rhsFile = %s" │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 39 │ │ │ │ │ + "\n solFile = %s" │ │ │ │ │ + "\n seed = %d" │ │ │ │ │ "\n", │ │ │ │ │ argv[0], msglvl, argv[2], neqns, type, symmetryflag, │ │ │ │ │ mtxFileName, rhsFileName, solFileName, seed) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ------------------ │ │ │ │ │ - read in the matrix │ │ │ │ │ - ------------------ │ │ │ │ │ + ------------------ │ │ │ │ │ + read in the matrix │ │ │ │ │ + ------------------ │ │ │ │ │ */ │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n fatal error reading mtxA from file %s, rc = %d", │ │ │ │ │ - mtxFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n fatal error reading mtxA from file %s, rc = %d", │ │ │ │ │ + mtxFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n InpMtx object ") ; │ │ │ │ │ - InpMtx_writeForHumanEye(mtxA, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n InpMtx object ") ; │ │ │ │ │ + InpMtx_writeForHumanEye(mtxA, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - read in the right hand side matrix │ │ │ │ │ - ---------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + read in the right hand side matrix │ │ │ │ │ + ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, rhsFileName) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n fatal error reading mtxY from file %s, rc = %d", │ │ │ │ │ - rhsFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n fatal error reading mtxY from file %s, rc = %d", │ │ │ │ │ + rhsFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n DenseMtx object for right hand side") ; │ │ │ │ │ - DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n DenseMtx object for right hand side") ; │ │ │ │ │ + DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - -------------------------------- │ │ │ │ │ - create and setup a Bridge object │ │ │ │ │ - -------------------------------- │ │ │ │ │ + -------------------------------- │ │ │ │ │ + create and setup a Bridge object │ │ │ │ │ + -------------------------------- │ │ │ │ │ */ │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 40 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 40 │ │ │ │ │ bridge = Bridge_new() ; │ │ │ │ │ Bridge_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ Bridge_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = Bridge_setup(bridge, mtxA) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, "\n error return %d from Bridge_setup()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n error return %d from Bridge_setup()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to construct Graph" │ │ │ │ │ - "\n CPU %8.3f : time to compress Graph" │ │ │ │ │ - "\n CPU %8.3f : time to order Graph" │ │ │ │ │ - "\n CPU %8.3f : time for symbolic factorization" │ │ │ │ │ + "\n CPU %8.3f : time to construct Graph" │ │ │ │ │ + "\n CPU %8.3f : time to compress Graph" │ │ │ │ │ + "\n CPU %8.3f : time to order Graph" │ │ │ │ │ + "\n CPU %8.3f : time for symbolic factorization" │ │ │ │ │ "\n CPU %8.3f : total setup time\n", │ │ │ │ │ bridge->cpus[0], bridge->cpus[1], │ │ │ │ │ bridge->cpus[2], bridge->cpus[3], bridge->cpus[4]) ; │ │ │ │ │ rc = Bridge_factorStats(bridge, type, symmetryflag, &nfront, │ │ │ │ │ - &nfind, &nfent, &nsolveops, &nfactorops) ; │ │ │ │ │ + &nfind, &nfent, &nsolveops, &nfactorops) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, │ │ │ │ │ - "\n error return %d from Bridge_factorStats()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, │ │ │ │ │ + "\n error return %d from Bridge_factorStats()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n factor matrix statistics" │ │ │ │ │ "\n %d fronts, %d indices, %d entries" │ │ │ │ │ "\n %d solve operations, %12.4e factor operations", │ │ │ │ │ nfront, nfind, nfent, nsolveops, nfactorops) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------- │ │ │ │ │ - factor the matrix │ │ │ │ │ - ----------------- │ │ │ │ │ + ----------------- │ │ │ │ │ + factor the matrix │ │ │ │ │ + ----------------- │ │ │ │ │ */ │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = Bridge_factor(bridge, mtxA, permuteflag, &error) ; │ │ │ │ │ if ( rc == 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n factorization completed successfully\n") ; │ │ │ │ │ + fprintf(msgFile, "\n\n factorization completed successfully\n") ; │ │ │ │ │ } else { │ │ │ │ │ - fprintf(msgFile, "\n return code from factorization = %d" │ │ │ │ │ - "\n error code = %d", │ │ │ │ │ - rc, error) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n return code from factorization = %d" │ │ │ │ │ + "\n error code = %d", │ │ │ │ │ + rc, error) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- FACTORIZATION -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ - "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ - "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 41 │ │ │ │ │ - "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ + "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ + "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ + "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 41 │ │ │ │ │ + "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ "\n CPU %8.3f : total factorization time\n", │ │ │ │ │ bridge->cpus[5], bridge->cpus[6], bridge->cpus[7], │ │ │ │ │ bridge->cpus[8], bridge->cpus[9]) ; │ │ │ │ │ fprintf(msgFile, "\n\n factorization statistics" │ │ │ │ │ "\n %d pivots, %d pivot tests, %d delayed vertices" │ │ │ │ │ "\n %d entries in D, %d entries in L, %d entries in U", │ │ │ │ │ bridge->stats[0], bridge->stats[1], bridge->stats[2], │ │ │ │ │ @@ -1500,67 +1500,67 @@ │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n factorization: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[7], │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[9]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ---------------- │ │ │ │ │ - solve the system │ │ │ │ │ - ---------------- │ │ │ │ │ + ---------------- │ │ │ │ │ + solve the system │ │ │ │ │ + ---------------- │ │ │ │ │ */ │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ rc = Bridge_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ if ( rc == 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n solve completed successfully\n") ; │ │ │ │ │ + fprintf(msgFile, "\n\n solve completed successfully\n") ; │ │ │ │ │ } else { │ │ │ │ │ - fprintf(msgFile, "\n" " return code from solve = %d\n", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n" " return code from solve = %d\n", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- SOLVE -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to permute rhs into new ordering" │ │ │ │ │ - "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ - "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ + "\n CPU %8.3f : time to permute rhs into new ordering" │ │ │ │ │ + "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ + "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ "\n CPU %8.3f : total solve time\n", │ │ │ │ │ bridge->cpus[10], bridge->cpus[11], │ │ │ │ │ bridge->cpus[12], bridge->cpus[13]) ; │ │ │ │ │ fprintf(msgFile, "\n\n solve: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[11], │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[13]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ - DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ + DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( strcmp(solFileName, "none") != 0 ) { │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------- │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 42 │ │ │ │ │ - write the solution matrix to a file │ │ │ │ │ - ----------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - rc = DenseMtx_writeToFile(mtxX, solFileName) ; │ │ │ │ │ - if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - "\n fatal error writing mtxX to file %s, rc = %d", │ │ │ │ │ - solFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ - } │ │ │ │ │ + ----------------------------------- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 42 │ │ │ │ │ + write the solution matrix to a file │ │ │ │ │ + ----------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + rc = DenseMtx_writeToFile(mtxX, solFileName) ; │ │ │ │ │ + if ( rc != 1 ) { │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + "\n fatal error writing mtxX to file %s, rc = %d", │ │ │ │ │ + solFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ + } │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------- │ │ │ │ │ - free the working data │ │ │ │ │ - --------------------- │ │ │ │ │ + --------------------- │ │ │ │ │ + free the working data │ │ │ │ │ + --------------------- │ │ │ │ │ */ │ │ │ │ │ InpMtx_free(mtxA) ; │ │ │ │ │ DenseMtx_free(mtxX) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ Bridge_free(bridge) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ @@ -1595,200 +1595,200 @@ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 11 ) { │ │ │ │ │ 43 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 44 │ │ │ │ │ - fprintf(stdout, │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 44 │ │ │ │ │ + fprintf(stdout, │ │ │ │ │ "\n\n usage : %s msglvl msgFile neqns type symmetryflag " │ │ │ │ │ - "\n mtxFile rhsFile solFile seed nthread\n" │ │ │ │ │ - "\n msglvl -- message level" │ │ │ │ │ - "\n 0 -- no output" │ │ │ │ │ - "\n 1 -- timings and statistics" │ │ │ │ │ - "\n 2 and greater -- lots of output" │ │ │ │ │ - "\n msgFile -- message file" │ │ │ │ │ - "\n neqns -- # of equations" │ │ │ │ │ - "\n type -- type of entries" │ │ │ │ │ - "\n 1 -- real" │ │ │ │ │ - "\n 2 -- complex" │ │ │ │ │ - "\n symmetryflag -- symmetry flag" │ │ │ │ │ - "\n 0 -- symmetric" │ │ │ │ │ - "\n 1 -- hermitian" │ │ │ │ │ - "\n 2 -- nonsymmetric" │ │ │ │ │ - "\n neqns -- # of equations" │ │ │ │ │ - "\n mtxFile -- input file for A matrix InpMtx object" │ │ │ │ │ - "\n must be *.inpmtxf or *.inpmtxb" │ │ │ │ │ - "\n rhsFile -- input file for Y DenseMtx object" │ │ │ │ │ - "\n must be *.densemtxf or *.densemtxb" │ │ │ │ │ - "\n solFile -- output file for X DenseMtx object" │ │ │ │ │ - "\n must be none, *.densemtxf or *.densemtxb" │ │ │ │ │ - "\n seed -- random number seed" │ │ │ │ │ - "\n nthread -- number of threads" │ │ │ │ │ + "\n mtxFile rhsFile solFile seed nthread\n" │ │ │ │ │ + "\n msglvl -- message level" │ │ │ │ │ + "\n 0 -- no output" │ │ │ │ │ + "\n 1 -- timings and statistics" │ │ │ │ │ + "\n 2 and greater -- lots of output" │ │ │ │ │ + "\n msgFile -- message file" │ │ │ │ │ + "\n neqns -- # of equations" │ │ │ │ │ + "\n type -- type of entries" │ │ │ │ │ + "\n 1 -- real" │ │ │ │ │ + "\n 2 -- complex" │ │ │ │ │ + "\n symmetryflag -- symmetry flag" │ │ │ │ │ + "\n 0 -- symmetric" │ │ │ │ │ + "\n 1 -- hermitian" │ │ │ │ │ + "\n 2 -- nonsymmetric" │ │ │ │ │ + "\n neqns -- # of equations" │ │ │ │ │ + "\n mtxFile -- input file for A matrix InpMtx object" │ │ │ │ │ + "\n must be *.inpmtxf or *.inpmtxb" │ │ │ │ │ + "\n rhsFile -- input file for Y DenseMtx object" │ │ │ │ │ + "\n must be *.densemtxf or *.densemtxb" │ │ │ │ │ + "\n solFile -- output file for X DenseMtx object" │ │ │ │ │ + "\n must be none, *.densemtxf or *.densemtxb" │ │ │ │ │ + "\n seed -- random number seed" │ │ │ │ │ + "\n nthread -- number of threads" │ │ │ │ │ "\n", │ │ │ │ │ argv[0]) ; │ │ │ │ │ - return(0) ; │ │ │ │ │ + return(0) ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ - msgFile = stdout ; │ │ │ │ │ + msgFile = stdout ; │ │ │ │ │ } else if ( (msgFile = fopen(argv[2], "w")) == NULL ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ - "\n unable to open file %s\n", │ │ │ │ │ - argv[0], argv[2]) ; │ │ │ │ │ - return(-1) ; │ │ │ │ │ + fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ + "\n unable to open file %s\n", │ │ │ │ │ + argv[0], argv[2]) ; │ │ │ │ │ + return(-1) ; │ │ │ │ │ } │ │ │ │ │ - neqns = atoi(argv[3]) ; │ │ │ │ │ - type = atoi(argv[4]) ; │ │ │ │ │ + neqns = atoi(argv[3]) ; │ │ │ │ │ + type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ solFileName = argv[8] ; │ │ │ │ │ - seed = atoi(argv[9]) ; │ │ │ │ │ - nthread = atoi(argv[10]) ; │ │ │ │ │ + seed = atoi(argv[9]) ; │ │ │ │ │ + nthread = atoi(argv[10]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n %s input :" │ │ │ │ │ - "\n msglvl = %d" │ │ │ │ │ - "\n msgFile = %s" │ │ │ │ │ - "\n neqns = %d" │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 45 │ │ │ │ │ - "\n type = %d" │ │ │ │ │ + "\n msglvl = %d" │ │ │ │ │ + "\n msgFile = %s" │ │ │ │ │ + "\n neqns = %d" │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 45 │ │ │ │ │ + "\n type = %d" │ │ │ │ │ "\n symmetryflag = %d" │ │ │ │ │ - "\n mtxFile = %s" │ │ │ │ │ - "\n rhsFile = %s" │ │ │ │ │ - "\n solFile = %s" │ │ │ │ │ - "\n nthread = %d" │ │ │ │ │ + "\n mtxFile = %s" │ │ │ │ │ + "\n rhsFile = %s" │ │ │ │ │ + "\n solFile = %s" │ │ │ │ │ + "\n nthread = %d" │ │ │ │ │ "\n", │ │ │ │ │ argv[0], msglvl, argv[2], neqns, type, symmetryflag, │ │ │ │ │ mtxFileName, rhsFileName, solFileName, nthread) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ------------------ │ │ │ │ │ - read in the matrix │ │ │ │ │ - ------------------ │ │ │ │ │ + ------------------ │ │ │ │ │ + read in the matrix │ │ │ │ │ + ------------------ │ │ │ │ │ */ │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n fatal error reading mtxA from file %s, rc = %d", │ │ │ │ │ - mtxFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n fatal error reading mtxA from file %s, rc = %d", │ │ │ │ │ + mtxFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n InpMtx object ") ; │ │ │ │ │ - InpMtx_writeForHumanEye(mtxA, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n InpMtx object ") ; │ │ │ │ │ + InpMtx_writeForHumanEye(mtxA, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - read in the right hand side matrix │ │ │ │ │ - ---------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + read in the right hand side matrix │ │ │ │ │ + ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, rhsFileName) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n fatal error reading mtxY from file %s, rc = %d", │ │ │ │ │ - rhsFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n fatal error reading mtxY from file %s, rc = %d", │ │ │ │ │ + rhsFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n DenseMtx object for right hand side") ; │ │ │ │ │ - DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n DenseMtx object for right hand side") ; │ │ │ │ │ + DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 46 │ │ │ │ │ - create and setup a BridgeMT object │ │ │ │ │ - ---------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 46 │ │ │ │ │ + create and setup a BridgeMT object │ │ │ │ │ + ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ bridge = BridgeMT_new() ; │ │ │ │ │ BridgeMT_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMT_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = BridgeMT_setup(bridge, mtxA) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, "\n error return %d from BridgeMT_setup()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, "\n error return %d from BridgeMT_setup()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to construct Graph" │ │ │ │ │ - "\n CPU %8.3f : time to compress Graph" │ │ │ │ │ - "\n CPU %8.3f : time to order Graph" │ │ │ │ │ - "\n CPU %8.3f : time for symbolic factorization" │ │ │ │ │ + "\n CPU %8.3f : time to construct Graph" │ │ │ │ │ + "\n CPU %8.3f : time to compress Graph" │ │ │ │ │ + "\n CPU %8.3f : time to order Graph" │ │ │ │ │ + "\n CPU %8.3f : time for symbolic factorization" │ │ │ │ │ "\n CPU %8.3f : total setup time\n", │ │ │ │ │ bridge->cpus[0], │ │ │ │ │ bridge->cpus[1], │ │ │ │ │ bridge->cpus[2], │ │ │ │ │ bridge->cpus[3], │ │ │ │ │ bridge->cpus[4]) ; │ │ │ │ │ rc = BridgeMT_factorStats(bridge, type, symmetryflag, &nfront, │ │ │ │ │ - &nfind, &nfent, &nsolveops, &nfactorops) ; │ │ │ │ │ + &nfind, &nfent, &nsolveops, &nfactorops) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, │ │ │ │ │ - "\n error return %d from BridgeMT_factorStats()", rc) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, │ │ │ │ │ + "\n error return %d from BridgeMT_factorStats()", rc) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n factor matrix statistics" │ │ │ │ │ "\n %d fronts, %d indices, %d entries" │ │ │ │ │ "\n %d solve operations, %12.4e factor operations", │ │ │ │ │ nfront, nfind, nfent, nsolveops, nfactorops) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - -------------------------------- │ │ │ │ │ - setup the parallel factorization │ │ │ │ │ - -------------------------------- │ │ │ │ │ + -------------------------------- │ │ │ │ │ + setup the parallel factorization │ │ │ │ │ + -------------------------------- │ │ │ │ │ */ │ │ │ │ │ rc = BridgeMT_factorSetup(bridge, nthread, 0, 0.0) ; │ │ │ │ │ fprintf(msgFile, "\n\n ----- PARALLEL FACTOR SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to setup parallel factorization", │ │ │ │ │ + "\n CPU %8.3f : time to setup parallel factorization", │ │ │ │ │ bridge->cpus[5]) ; │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n total factor operations = %.0f", │ │ │ │ │ - DV_sum(bridge->cumopsDV)) ; │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 47 │ │ │ │ │ - "\n upper bound on speedup due to load balance = %.2f", │ │ │ │ │ - DV_sum(bridge->cumopsDV)/DV_max(bridge->cumopsDV)) ; │ │ │ │ │ - fprintf(msgFile, "\n operations distributions over threads") ; │ │ │ │ │ - DV_writeForHumanEye(bridge->cumopsDV, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n total factor operations = %.0f", │ │ │ │ │ + DV_sum(bridge->cumopsDV)) ; │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 47 │ │ │ │ │ + "\n upper bound on speedup due to load balance = %.2f", │ │ │ │ │ + DV_sum(bridge->cumopsDV)/DV_max(bridge->cumopsDV)) ; │ │ │ │ │ + fprintf(msgFile, "\n operations distributions over threads") ; │ │ │ │ │ + DV_writeForHumanEye(bridge->cumopsDV, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------- │ │ │ │ │ - factor the matrix │ │ │ │ │ - ----------------- │ │ │ │ │ + ----------------- │ │ │ │ │ + factor the matrix │ │ │ │ │ + ----------------- │ │ │ │ │ */ │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = BridgeMT_factor(bridge, mtxA, permuteflag, &error) ; │ │ │ │ │ if ( rc == 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n factorization completed successfully\n") ; │ │ │ │ │ + fprintf(msgFile, "\n\n factorization completed successfully\n") ; │ │ │ │ │ } else { │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - "\n return code from factorization = %d\n" │ │ │ │ │ - "\n error code = %d\n", │ │ │ │ │ - rc, error) ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + "\n return code from factorization = %d\n" │ │ │ │ │ + "\n error code = %d\n", │ │ │ │ │ + rc, error) ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- FACTORIZATION -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ - "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ - "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ - "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ + "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ + "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ + "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ + "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ "\n CPU %8.3f : total factorization time\n", │ │ │ │ │ bridge->cpus[6], │ │ │ │ │ bridge->cpus[7], │ │ │ │ │ bridge->cpus[8], │ │ │ │ │ bridge->cpus[9], │ │ │ │ │ bridge->cpus[10]) ; │ │ │ │ │ fprintf(msgFile, "\n\n factorization statistics" │ │ │ │ │ @@ -1799,79 +1799,79 @@ │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n factorization: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[8], │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[10]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ------------------------ │ │ │ │ │ - setup the parallel solve │ │ │ │ │ - ------------------------ │ │ │ │ │ + ------------------------ │ │ │ │ │ + setup the parallel solve │ │ │ │ │ + ------------------------ │ │ │ │ │ */ │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 48 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 48 │ │ │ │ │ rc = BridgeMT_solveSetup(bridge) ; │ │ │ │ │ fprintf(msgFile, "\n\n ----- PARALLEL SOLVE SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to setup parallel solve", │ │ │ │ │ + "\n CPU %8.3f : time to setup parallel solve", │ │ │ │ │ bridge->cpus[11]) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ---------------- │ │ │ │ │ - solve the system │ │ │ │ │ - ---------------- │ │ │ │ │ + ---------------- │ │ │ │ │ + solve the system │ │ │ │ │ + ---------------- │ │ │ │ │ */ │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ rc = BridgeMT_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ if (rc == 1) { │ │ │ │ │ - fprintf(msgFile, "\n\n solve complete successfully\n") ; │ │ │ │ │ + fprintf(msgFile, "\n\n solve complete successfully\n") ; │ │ │ │ │ } else { │ │ │ │ │ - fprintf(msgFile, "\n" " return code from solve = %d\n", rc) ; │ │ │ │ │ + fprintf(msgFile, "\n" " return code from solve = %d\n", rc) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- SOLVE -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to permute rhs into new ordering" │ │ │ │ │ - "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ - "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ + "\n CPU %8.3f : time to permute rhs into new ordering" │ │ │ │ │ + "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ + "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ "\n CPU %8.3f : total solve time\n", │ │ │ │ │ bridge->cpus[12], bridge->cpus[13], │ │ │ │ │ bridge->cpus[14], bridge->cpus[15]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n solve: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[13], │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[15]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ - DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ + DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( strcmp(solFileName, "none") != 0 ) { │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------- │ │ │ │ │ - write the solution matrix to a file │ │ │ │ │ - ----------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - rc = DenseMtx_writeToFile(mtxX, solFileName) ; │ │ │ │ │ - if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - "\n fatal error writing mtxX to file %s, rc = %d", │ │ │ │ │ - solFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 49 │ │ │ │ │ - exit(-1) ; │ │ │ │ │ - } │ │ │ │ │ + ----------------------------------- │ │ │ │ │ + write the solution matrix to a file │ │ │ │ │ + ----------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + rc = DenseMtx_writeToFile(mtxX, solFileName) ; │ │ │ │ │ + if ( rc != 1 ) { │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + "\n fatal error writing mtxX to file %s, rc = %d", │ │ │ │ │ + solFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 49 │ │ │ │ │ + exit(-1) ; │ │ │ │ │ + } │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------- │ │ │ │ │ - free the working data │ │ │ │ │ - --------------------- │ │ │ │ │ + --------------------- │ │ │ │ │ + free the working data │ │ │ │ │ + --------------------- │ │ │ │ │ */ │ │ │ │ │ InpMtx_free(mtxA) ; │ │ │ │ │ DenseMtx_free(mtxX) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ BridgeMT_free(bridge) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ @@ -1906,350 +1906,350 @@ │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ find out the identity of this process and the number of process │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ 50 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 51 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 51 │ │ │ │ │ MPI_Init(&argc, &argv) ; │ │ │ │ │ MPI_Comm_rank(MPI_COMM_WORLD, &myid) ; │ │ │ │ │ MPI_Comm_size(MPI_COMM_WORLD, &nproc) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - -------------------- │ │ │ │ │ - get input parameters │ │ │ │ │ - -------------------- │ │ │ │ │ + -------------------- │ │ │ │ │ + get input parameters │ │ │ │ │ + -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 10 ) { │ │ │ │ │ - fprintf(stdout, │ │ │ │ │ - "\n\n usage : %s msglvl msgFile neqns type symmetryflag" │ │ │ │ │ - "\n mtxFile rhsFile solFile seed" │ │ │ │ │ - "\n msglvl -- message level" │ │ │ │ │ - "\n 0 -- no output" │ │ │ │ │ - "\n 1 -- timings and statistics" │ │ │ │ │ - "\n 2 and greater -- lots of output" │ │ │ │ │ - "\n msgFile -- message file" │ │ │ │ │ - "\n neqns -- # of equations" │ │ │ │ │ - "\n type -- type of entries" │ │ │ │ │ - "\n 1 -- real" │ │ │ │ │ - "\n 2 -- complex" │ │ │ │ │ - "\n symmetryflag -- symmetry flag" │ │ │ │ │ - "\n 0 -- symmetric" │ │ │ │ │ - "\n 1 -- hermitian" │ │ │ │ │ - "\n 2 -- nonsymmetric" │ │ │ │ │ - "\n mtxFile -- input file for A matrix InpMtx object" │ │ │ │ │ - "\n must be *.inpmtxf or *.inpmtxb" │ │ │ │ │ - "\n rhsFile -- input file for Y DenseMtx object" │ │ │ │ │ - "\n must be *.densemtxf or *.densemtxb" │ │ │ │ │ - "\n solFile -- output file for X DenseMtx object" │ │ │ │ │ - "\n must be none, *.densemtxf or *.densemtxb" │ │ │ │ │ - "\n seed -- random number seed" │ │ │ │ │ - "\n", │ │ │ │ │ + fprintf(stdout, │ │ │ │ │ + "\n\n usage : %s msglvl msgFile neqns type symmetryflag" │ │ │ │ │ + "\n mtxFile rhsFile solFile seed" │ │ │ │ │ + "\n msglvl -- message level" │ │ │ │ │ + "\n 0 -- no output" │ │ │ │ │ + "\n 1 -- timings and statistics" │ │ │ │ │ + "\n 2 and greater -- lots of output" │ │ │ │ │ + "\n msgFile -- message file" │ │ │ │ │ + "\n neqns -- # of equations" │ │ │ │ │ + "\n type -- type of entries" │ │ │ │ │ + "\n 1 -- real" │ │ │ │ │ + "\n 2 -- complex" │ │ │ │ │ + "\n symmetryflag -- symmetry flag" │ │ │ │ │ + "\n 0 -- symmetric" │ │ │ │ │ + "\n 1 -- hermitian" │ │ │ │ │ + "\n 2 -- nonsymmetric" │ │ │ │ │ + "\n mtxFile -- input file for A matrix InpMtx object" │ │ │ │ │ + "\n must be *.inpmtxf or *.inpmtxb" │ │ │ │ │ + "\n rhsFile -- input file for Y DenseMtx object" │ │ │ │ │ + "\n must be *.densemtxf or *.densemtxb" │ │ │ │ │ + "\n solFile -- output file for X DenseMtx object" │ │ │ │ │ + "\n must be none, *.densemtxf or *.densemtxb" │ │ │ │ │ + "\n seed -- random number seed" │ │ │ │ │ + "\n", │ │ │ │ │ argv[0]) ; │ │ │ │ │ - return(0) ; │ │ │ │ │ + return(0) ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ - msgFile = stdout ; │ │ │ │ │ + msgFile = stdout ; │ │ │ │ │ } else { │ │ │ │ │ - int length = strlen(argv[2]) + 1 + 4 ; │ │ │ │ │ - char *buffer = CVinit(length, ’\0’) ; │ │ │ │ │ - sprintf(buffer, "%s.%d", argv[2], myid) ; │ │ │ │ │ - if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ - fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ - "\n unable to open file %s\n", │ │ │ │ │ - argv[0], argv[2]) ; │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - return(0) ; │ │ │ │ │ - } │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 52 │ │ │ │ │ - CVfree(buffer) ; │ │ │ │ │ + int length = strlen(argv[2]) + 1 + 4 ; │ │ │ │ │ + char *buffer = CVinit(length, ’\0’) ; │ │ │ │ │ + sprintf(buffer, "%s.%d", argv[2], myid) ; │ │ │ │ │ + if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ + fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ + "\n unable to open file %s\n", │ │ │ │ │ + argv[0], argv[2]) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + return(0) ; │ │ │ │ │ + } │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 52 │ │ │ │ │ + CVfree(buffer) ; │ │ │ │ │ } │ │ │ │ │ - neqns = atoi(argv[3]) ; │ │ │ │ │ - type = atoi(argv[4]) ; │ │ │ │ │ + neqns = atoi(argv[3]) ; │ │ │ │ │ + type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ solFileName = argv[8] ; │ │ │ │ │ - seed = atoi(argv[9]) ; │ │ │ │ │ + seed = atoi(argv[9]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n %s input :" │ │ │ │ │ - "\n msglvl = %d" │ │ │ │ │ - "\n msgFile = %s" │ │ │ │ │ - "\n neqns = %d" │ │ │ │ │ - "\n type = %d" │ │ │ │ │ + "\n msglvl = %d" │ │ │ │ │ + "\n msgFile = %s" │ │ │ │ │ + "\n neqns = %d" │ │ │ │ │ + "\n type = %d" │ │ │ │ │ "\n symmetryflag = %d" │ │ │ │ │ - "\n mtxFile = %s" │ │ │ │ │ - "\n rhsFile = %s" │ │ │ │ │ - "\n solFile = %s" │ │ │ │ │ + "\n mtxFile = %s" │ │ │ │ │ + "\n rhsFile = %s" │ │ │ │ │ + "\n solFile = %s" │ │ │ │ │ "\n", │ │ │ │ │ argv[0], msglvl, argv[2], neqns, type, symmetryflag, │ │ │ │ │ mtxFileName, rhsFileName, solFileName) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------- │ │ │ │ │ - processor zero reads in the matrix. │ │ │ │ │ - if an error is found, │ │ │ │ │ - all processors exit cleanly │ │ │ │ │ - ----------------------------------- │ │ │ │ │ + ----------------------------------- │ │ │ │ │ + processor zero reads in the matrix. │ │ │ │ │ + if an error is found, │ │ │ │ │ + all processors exit cleanly │ │ │ │ │ + ----------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( myid != 0 ) { │ │ │ │ │ - mtxA = NULL ; │ │ │ │ │ + mtxA = NULL ; │ │ │ │ │ } else { │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------------------------- │ │ │ │ │ - open the file, read in the matrix and close the file │ │ │ │ │ - ---------------------------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - mtxA = InpMtx_new() ; │ │ │ │ │ - rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ - if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - "\n fatal error reading mtxA from file %s, rc = %d", │ │ │ │ │ - mtxFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - } │ │ │ │ │ - } │ │ │ │ │ - /* │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - processor 0 broadcasts the error return to the other processors │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 53 │ │ │ │ │ + ---------------------------------------------------- │ │ │ │ │ + open the file, read in the matrix and close the file │ │ │ │ │ + ---------------------------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + mtxA = InpMtx_new() ; │ │ │ │ │ + rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ + if ( rc != 1 ) { │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + "\n fatal error reading mtxA from file %s, rc = %d", │ │ │ │ │ + mtxFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + } │ │ │ │ │ + } │ │ │ │ │ + /* │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + processor 0 broadcasts the error return to the other processors │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 53 │ │ │ │ │ */ │ │ │ │ │ MPI_Bcast((void *) &rc, 1, MPI_INT, 0, MPI_COMM_WORLD) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - return(-1) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + return(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------------- │ │ │ │ │ - processor zero reads in the right hand side matrix. │ │ │ │ │ - if an error is found, all processors exit cleanly │ │ │ │ │ - --------------------------------------------------- │ │ │ │ │ + --------------------------------------------------- │ │ │ │ │ + processor zero reads in the right hand side matrix. │ │ │ │ │ + if an error is found, all processors exit cleanly │ │ │ │ │ + --------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( myid != 0 ) { │ │ │ │ │ - mtxY = NULL ; │ │ │ │ │ + mtxY = NULL ; │ │ │ │ │ } else { │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - read in the right hand side matrix │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - */ │ │ │ │ │ - mtxY = DenseMtx_new() ; │ │ │ │ │ - rc = DenseMtx_readFromFile(mtxY, rhsFileName) ; │ │ │ │ │ - if ( rc != 1 ) { │ │ │ │ │ - fprintf(msgFile, │ │ │ │ │ - "\n fatal error reading mtxY from file %s, rc = %d", │ │ │ │ │ - rhsFileName, rc) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - } else { │ │ │ │ │ - DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ - } │ │ │ │ │ - } │ │ │ │ │ - /* │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - processor 0 broadcasts the error return to the other processors │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + read in the right hand side matrix │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + */ │ │ │ │ │ + mtxY = DenseMtx_new() ; │ │ │ │ │ + rc = DenseMtx_readFromFile(mtxY, rhsFileName) ; │ │ │ │ │ + if ( rc != 1 ) { │ │ │ │ │ + fprintf(msgFile, │ │ │ │ │ + "\n fatal error reading mtxY from file %s, rc = %d", │ │ │ │ │ + rhsFileName, rc) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + } else { │ │ │ │ │ + DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ + } │ │ │ │ │ + } │ │ │ │ │ + /* │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + processor 0 broadcasts the error return to the other processors │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MPI_Bcast((void *) &rc, 1, MPI_INT, 0, MPI_COMM_WORLD) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - return(-1) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + return(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ------------------------------------------ │ │ │ │ │ - create and setup a BridgeMPI object │ │ │ │ │ - set the MPI, matrix and message parameters │ │ │ │ │ - ------------------------------------------ │ │ │ │ │ + ------------------------------------------ │ │ │ │ │ + create and setup a BridgeMPI object │ │ │ │ │ + set the MPI, matrix and message parameters │ │ │ │ │ + ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ bridge = BridgeMPI_new() ; │ │ │ │ │ BridgeMPI_setMPIparams(bridge, nproc, myid, MPI_COMM_WORLD) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 54 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 54 │ │ │ │ │ BridgeMPI_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMPI_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ /* │ │ │ │ │ - ----------------- │ │ │ │ │ - setup the problem │ │ │ │ │ - ----------------- │ │ │ │ │ + ----------------- │ │ │ │ │ + setup the problem │ │ │ │ │ + ----------------- │ │ │ │ │ */ │ │ │ │ │ rc = BridgeMPI_setup(bridge, mtxA) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n ----- SETUP -----\n" │ │ │ │ │ - "\n CPU %8.3f : time to construct Graph" │ │ │ │ │ - "\n CPU %8.3f : time to compress Graph" │ │ │ │ │ - "\n CPU %8.3f : time to order Graph" │ │ │ │ │ - "\n CPU %8.3f : time for symbolic factorization" │ │ │ │ │ - "\n CPU %8.3f : time to broadcast front tree" │ │ │ │ │ - "\n CPU %8.3f : time to broadcast symbolic factorization" │ │ │ │ │ + "\n CPU %8.3f : time to construct Graph" │ │ │ │ │ + "\n CPU %8.3f : time to compress Graph" │ │ │ │ │ + "\n CPU %8.3f : time to order Graph" │ │ │ │ │ + "\n CPU %8.3f : time for symbolic factorization" │ │ │ │ │ + "\n CPU %8.3f : time to broadcast front tree" │ │ │ │ │ + "\n CPU %8.3f : time to broadcast symbolic factorization" │ │ │ │ │ "\n CPU %8.3f : total setup time\n", │ │ │ │ │ bridge->cpus[0], bridge->cpus[1], bridge->cpus[2], │ │ │ │ │ bridge->cpus[3], bridge->cpus[4], bridge->cpus[5], │ │ │ │ │ bridge->cpus[6]) ; │ │ │ │ │ rc = BridgeMPI_factorStats(bridge, type, symmetryflag, &nfront, │ │ │ │ │ - &nfind, &nfent, &nsolveops, &nfactorops) ; │ │ │ │ │ + &nfind, &nfent, &nsolveops, &nfactorops) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, │ │ │ │ │ - "\n error return %d from BridgeMPI_factorStats()", rc) ; │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, │ │ │ │ │ + "\n error return %d from BridgeMPI_factorStats()", rc) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n factor matrix statistics" │ │ │ │ │ "\n %d fronts, %d indices, %d entries" │ │ │ │ │ "\n %d solve operations, %12.4e factor operations", │ │ │ │ │ nfront, nfind, nfent, nsolveops, nfactorops) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - -------------------------------- │ │ │ │ │ - setup the parallel factorization │ │ │ │ │ - -------------------------------- │ │ │ │ │ + -------------------------------- │ │ │ │ │ + setup the parallel factorization │ │ │ │ │ + -------------------------------- │ │ │ │ │ */ │ │ │ │ │ rc = BridgeMPI_factorSetup(bridge, 0, 0.0) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, │ │ │ │ │ - "\n error return %d from BridgeMPI_factorSetup()", rc) ; │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, │ │ │ │ │ + "\n error return %d from BridgeMPI_factorSetup()", rc) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- PARALLEL FACTOR SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to setup parallel factorization", │ │ │ │ │ + "\n CPU %8.3f : time to setup parallel factorization", │ │ │ │ │ bridge->cpus[7]) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 55 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 55 │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n total factor operations = %.0f" │ │ │ │ │ - "\n upper bound on speedup due to load balance = %.2f", │ │ │ │ │ - DV_sum(bridge->cumopsDV), │ │ │ │ │ - DV_sum(bridge->cumopsDV)/DV_max(bridge->cumopsDV)) ; │ │ │ │ │ - fprintf(msgFile, "\n operations distributions over processors") ; │ │ │ │ │ - DV_writeForHumanEye(bridge->cumopsDV, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ + fprintf(msgFile, "\n total factor operations = %.0f" │ │ │ │ │ + "\n upper bound on speedup due to load balance = %.2f", │ │ │ │ │ + DV_sum(bridge->cumopsDV), │ │ │ │ │ + DV_sum(bridge->cumopsDV)/DV_max(bridge->cumopsDV)) ; │ │ │ │ │ + fprintf(msgFile, "\n operations distributions over processors") ; │ │ │ │ │ + DV_writeForHumanEye(bridge->cumopsDV, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ------------------------------------------------------ │ │ │ │ │ - set the factorization parameters and factor the matrix │ │ │ │ │ - ------------------------------------------------------ │ │ │ │ │ + ------------------------------------------------------ │ │ │ │ │ + set the factorization parameters and factor the matrix │ │ │ │ │ + ------------------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = BridgeMPI_factor(bridge, mtxA, permuteflag, &error) ; │ │ │ │ │ fprintf(msgFile, "\n\n ----- FACTORIZATION -----\n") ; │ │ │ │ │ if ( rc == 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n factorization completed successfully\n") ; │ │ │ │ │ + fprintf(msgFile, "\n\n factorization completed successfully\n") ; │ │ │ │ │ } else { │ │ │ │ │ - fprintf(msgFile, "\n" │ │ │ │ │ - "\n return code from factorization = %d\n" │ │ │ │ │ - "\n error code = %d\n", │ │ │ │ │ - rc, error) ; │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(msgFile, "\n" │ │ │ │ │ + "\n return code from factorization = %d\n" │ │ │ │ │ + "\n error code = %d\n", │ │ │ │ │ + rc, error) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ - "\n CPU %8.3f : time to distribute original matrix" │ │ │ │ │ - "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ - "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ - "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ + "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ + "\n CPU %8.3f : time to distribute original matrix" │ │ │ │ │ + "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ + "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ + "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ "\n CPU %8.3f : total factorization time\n", │ │ │ │ │ bridge->cpus[8], bridge->cpus[9], bridge->cpus[10], │ │ │ │ │ bridge->cpus[11], bridge->cpus[12], bridge->cpus[13]) ; │ │ │ │ │ IVzero(6, tstats) ; │ │ │ │ │ MPI_Reduce((void *) bridge->stats, (void *) tstats, 6, MPI_INT, │ │ │ │ │ - MPI_SUM, 0, bridge->comm) ; │ │ │ │ │ + MPI_SUM, 0, bridge->comm) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n\n factorization statistics" │ │ │ │ │ - "\n %d pivots, %d pivot tests, %d delayed vertices" │ │ │ │ │ - "\n %d entries in D, %d entries in L, %d entries in U", │ │ │ │ │ + "\n\n factorization statistics" │ │ │ │ │ + "\n %d pivots, %d pivot tests, %d delayed vertices" │ │ │ │ │ + "\n %d entries in D, %d entries in L, %d entries in U", │ │ │ │ │ tstats[0], tstats[1], tstats[2], │ │ │ │ │ tstats[3], tstats[4], tstats[5]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - "\n\n factorization: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ + "\n\n factorization: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[11], │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[13]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 56 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 56 │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ------------------------ │ │ │ │ │ - setup the parallel solve │ │ │ │ │ - ------------------------ │ │ │ │ │ + ------------------------ │ │ │ │ │ + setup the parallel solve │ │ │ │ │ + ------------------------ │ │ │ │ │ */ │ │ │ │ │ rc = BridgeMPI_solveSetup(bridge) ; │ │ │ │ │ fprintf(msgFile, "\n\n ----- PARALLEL SOLVE SETUP -----\n" │ │ │ │ │ - "\n CPU %8.3f : time to setup parallel solve", │ │ │ │ │ + "\n CPU %8.3f : time to setup parallel solve", │ │ │ │ │ bridge->cpus[14]) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ - fprintf(stderr, │ │ │ │ │ - "\n error return %d from BridgeMPI_solveSetup()", rc) ; │ │ │ │ │ - MPI_Finalize() ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + fprintf(stderr, │ │ │ │ │ + "\n error return %d from BridgeMPI_solveSetup()", rc) ; │ │ │ │ │ + MPI_Finalize() ; │ │ │ │ │ + exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------------- │ │ │ │ │ - processor 0 initializes a DenseMtx object │ │ │ │ │ - to hold the global solution matrix │ │ │ │ │ - ----------------------------------------- │ │ │ │ │ + ----------------------------------------- │ │ │ │ │ + processor 0 initializes a DenseMtx object │ │ │ │ │ + to hold the global solution matrix │ │ │ │ │ + ----------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( myid == 0 ) { │ │ │ │ │ - mtxX = DenseMtx_new() ; │ │ │ │ │ - DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ - DenseMtx_zero(mtxX) ; │ │ │ │ │ + mtxX = DenseMtx_new() ; │ │ │ │ │ + DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ + DenseMtx_zero(mtxX) ; │ │ │ │ │ } else { │ │ │ │ │ - mtxX = NULL ; │ │ │ │ │ + mtxX = NULL ; │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ - the processors solve the system cooperatively │ │ │ │ │ - --------------------------------------------- │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ + the processors solve the system cooperatively │ │ │ │ │ + --------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ permuteflag = 1 ; │ │ │ │ │ rc = BridgeMPI_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ if ( rc == 1 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n solve complete successfully\n") ; │ │ │ │ │ + fprintf(msgFile, "\n\n solve complete successfully\n") ; │ │ │ │ │ } else { │ │ │ │ │ - fprintf(msgFile, "\n" " return code from solve = %d\n", rc) ; │ │ │ │ │ + fprintf(msgFile, "\n" " return code from solve = %d\n", rc) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- SOLVE -----\n" │ │ │ │ │ - "\n CPU %8.3f : time to permute rhs into new ordering" │ │ │ │ │ - "\n CPU %8.3f : time to distribute rhs " │ │ │ │ │ - "\n CPU %8.3f : time to initialize solution matrix " │ │ │ │ │ - "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ - "\n CPU %8.3f : time to gather solution " │ │ │ │ │ - "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ + "\n CPU %8.3f : time to permute rhs into new ordering" │ │ │ │ │ + "\n CPU %8.3f : time to distribute rhs " │ │ │ │ │ + "\n CPU %8.3f : time to initialize solution matrix " │ │ │ │ │ + "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ + "\n CPU %8.3f : time to gather solution " │ │ │ │ │ + "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ "\n CPU %8.3f : total solve time" │ │ │ │ │ "\n\n solve: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : December 20, 2018 57 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : October 11, 2021 57 │ │ │ │ │ bridge->cpus[15], bridge->cpus[16], bridge->cpus[17], │ │ │ │ │ bridge->cpus[18], bridge->cpus[19], bridge->cpus[20], │ │ │ │ │ bridge->cpus[21], │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[18], │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[21]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( myid == 0 ) { │ │ │ │ │ - if ( msglvl > 0 ) { │ │ │ │ │ - fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ - DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ - fflush(msgFile) ; │ │ │ │ │ - } │ │ │ │ │ + if ( msglvl > 0 ) { │ │ │ │ │ + fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ + DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ + fflush(msgFile) ; │ │ │ │ │ + } │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - --------------------- │ │ │ │ │ - free the working data │ │ │ │ │ - --------------------- │ │ │ │ │ + --------------------- │ │ │ │ │ + free the working data │ │ │ │ │ + --------------------- │ │ │ │ │ */ │ │ │ │ │ if ( myid == 0 ) { │ │ │ │ │ - InpMtx_free(mtxA) ; │ │ │ │ │ - DenseMtx_free(mtxX) ; │ │ │ │ │ - DenseMtx_free(mtxY) ; │ │ │ │ │ + InpMtx_free(mtxA) ; │ │ │ │ │ + DenseMtx_free(mtxX) ; │ │ │ │ │ + DenseMtx_free(mtxY) ; │ │ │ │ │ } │ │ │ │ │ BridgeMPI_free(bridge) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ Index │ │ ├── ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ ├── Lock.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Lock.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1055,22 +1055,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1244,88 +1244,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2776,16 +2765,16 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 2[51 62 50 1[54 11[86 11[42 6[80 14[56 56 56 2[31 46[{}22 │ │ │ │ 99.6264 /CMBX12 rf /Fb 144[62 3[62 7[62 22[62 76[{}4 │ │ │ │ 119.552 /CMTT12 rf /Fc 141[38 2[46 51 2[42 1[28 46 42 │ │ │ │ 1[42 1[42 14[65 1[66 11[59 62 69 2[68 6[28 58[{}16 90.9091 │ │ │ │ -/CMTI10 rf /Fd 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 │ │ │ │ -5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 240[45 │ │ │ │ +/CMTI10 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 240[45 │ │ │ │ 15[{}1 90.9091 /CMSY10 rf /Ff 134[71 3[75 52 53 55 1[75 │ │ │ │ 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf /Fg 134[48 48 │ │ │ │ 48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 48 48 48 48 │ │ │ │ 48 48 48 48 1[48 5[48 3[48 48 48 48 1[48 48 48 48 48 │ │ │ │ 3[48 1[48 48 48 48 1[48 2[48 48 1[48 8[48 48 48 48 48 │ │ │ │ 48 48 1[48 48 48 4[48 1[48 33[{}55 90.9091 /CMTT10 rf │ │ │ │ @@ -2859,17 +2848,17 @@ │ │ │ │ Fg(mutex)p 1598 5055 V 33 w(t)47 b(*mutex)p Fh(.)227 │ │ │ │ 5231 y(F)-8 b(or)31 b(POSIX)f(threads)g(w)m(e)h(ha)m(v)m(e)g │ │ │ │ Fg(pthread)p 1714 5231 V 33 w(mutex)p 1987 5231 V 33 │ │ │ │ w(t)47 b(*mutex)p Fh(.)227 5407 y(F)-8 b(or)31 b(no)g(threads)f(w)m(e)g │ │ │ │ (ha)m(v)m(e)i Fg(void)47 b(*mutex)p Fh(.)1927 5656 y(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1094 4 v │ │ │ │ -1275 w Fg(Lock)30 b Fd(:)40 b Fc(DRAFT)30 b Fd(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1130 4 v │ │ │ │ +1311 w Fg(Lock)30 b Fd(:)40 b Fc(DRAFT)30 b Fd(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fb(Lock)e Ff(metho)t(ds)0 │ │ │ │ 628 y Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 823 y Fh(As)d(usual,)h │ │ │ │ (there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 │ │ │ │ b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ 936 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ b(ject.)111 1164 y(1.)46 b Fg(Lock)h(*)g(Lock_new)f(\()h(void)g(\))g(;) │ │ │ │ 227 1313 y Fh(This)32 b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g │ │ │ │ @@ -2927,17 +2916,17 @@ │ │ │ │ b(metho)s(ds)111 5109 y Fh(1.)46 b Fg(void)h(Lock_lock)e(\()j(Lock)e │ │ │ │ (*lock)h(\))g(;)227 5258 y Fh(This)30 b(metho)s(d)g(lo)s(c)m(ks)h(the)f │ │ │ │ (lo)s(c)m(k.)227 5407 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p Fh(,)f(an)i(error)f(message)h │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1094 4 v 1275 100 a Fg(Lock)29 │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1311 100 a Fg(Lock)29 │ │ │ │ +b Fd(:)41 b Fc(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ (Lock)g(*lock)f(\))i(;)227 549 y Fh(This)30 b(metho)s(d)g(unlo)s(c)m │ │ │ │ (ks)g(the)g(lo)s(c)m(k.)227 699 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p │ │ │ │ Fh(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 866 a Fi(Index)0 1289 y Fg(Lock)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -19,15 +19,15 @@ │ │ │ │ │ • int nlocks : number of locks made. │ │ │ │ │ • int nunlocks : number of unlocks made. │ │ │ │ │ • the mutual exclusion lock │ │ │ │ │ For Solaris threads we have mutex t *mutex. │ │ │ │ │ For POSIX threads we have pthread mutex t *mutex. │ │ │ │ │ For no threads we have void *mutex. │ │ │ │ │ 1 │ │ │ │ │ - 2 Lock : DRAFT December 20, 2018 │ │ │ │ │ + 2 Lock : DRAFT October 11, 2021 │ │ │ │ │ 1.2 Prototypes and descriptions of Lock methods │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Lock * Lock_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Lock structure and then sets the default fields │ │ │ │ │ by a call to Lock setDefaultFields(). │ │ │ │ │ @@ -53,15 +53,15 @@ │ │ │ │ │ thread package, lockflag != 0 means the lock will be initialized to synchronize only threads │ │ │ │ │ in this process. │ │ │ │ │ Error checking: If lock is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. void Lock_lock ( Lock *lock ) ; │ │ │ │ │ This method locks the lock. │ │ │ │ │ Error checking: If lock is NULL, an error message is printed and the program exits. │ │ │ │ │ - Lock : DRAFT December 20, 2018 3 │ │ │ │ │ + Lock : DRAFT October 11, 2021 3 │ │ │ │ │ 2. void Lock_unlock ( Lock *lock ) ; │ │ │ │ │ This method unlocks the lock. │ │ │ │ │ Error checking: If lock is NULL, an error message is printed and the program exits. │ │ │ │ │ Index │ │ │ │ │ Lock clearData(), 2 │ │ │ │ │ Lock free(), 2 │ │ │ │ │ Lock init(), 2 │ │ ├── ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ ├── MPI.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTI10 CMTT10 CMMI10 CMMI7 CMSY10 │ │ │ │ %%+ CMBX10 CMSL10 CMEX10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o MPI.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0527 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -481,22 +481,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -670,88 +670,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4438,16 +4427,16 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 175[88 80[{}1 83.022 /CMEX10 rf /Fb 175[62 │ │ │ │ -2[62 3[62 73[{}3 119.552 /CMTT12 rf /Fc 141[33 4[69 7[37 │ │ │ │ -1[37 46 29[63 9[23 1[42 5[42 42 42 3[23 44[{}12 83.022 │ │ │ │ +2[62 3[62 73[{}3 119.552 /CMTT12 rf /Fc 139[32 1[33 2[42 │ │ │ │ +9[37 1[37 46 18[65 20[23 7[42 42 42 3[23 44[{}12 83.022 │ │ │ │ /CMSL10 rf /Fd 132[48 59[45 63[{}2 83.022 /CMBX10 rf │ │ │ │ /Fe 152[42 42 69[83 16[42 11[42 65 2[{}6 83.022 /CMSY10 │ │ │ │ rf /Ff 138[39 1[31 31 30 34 4[35 27 21[39 11[54 12[20 │ │ │ │ 59[{}10 58.1154 /CMMI7 rf /Fg 141[37 37 5[43 34 29 14[57 │ │ │ │ 48 69 2[57 8[57 2[36 4[69 1[63 62 53[53 11[{}15 83.022 │ │ │ │ /CMMI10 rf /Fh 138[51 51 4[51 51 1[51 5[51 4[51 19[51 │ │ │ │ 3[51 73[{}9 99.6264 /CMTT12 rf /Fi 133[50 59 59 1[59 │ │ │ │ @@ -4563,17 +4552,17 @@ │ │ │ │ y Fe(\017)41 b Fk(symflag)24 b Fm(|)k(symmetry)f(\015ag)g(for)g │ │ │ │ Fg(A)301 5278 y Fd({)41 b Fm(0)27 b(\()p Fk(SPOOLES)p │ │ │ │ 804 5278 V 29 w(SYMMETRIC)p Fm(\))d({)k(symmetric)f(matrix)301 │ │ │ │ 5407 y Fd({)41 b Fm(1)27 b(\()p Fk(SPOOLES)p 804 5407 │ │ │ │ V 29 w(HERMITIAN)p Fm(\))d({)k(hermitian)f(matrix)1929 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(MPI)27 b Fc(:)h Fl(DRAFT)f Fc(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 301 390 a Fd({)41 b Fm(2)27 b(\()p Fk(SPOOLES)p │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 301 390 a Fd({)41 b Fm(2)27 b(\()p Fk(SPOOLES)p │ │ │ │ 804 390 27 4 v 29 w(NONSYMMETRIC)p Fm(\))c({)k(nonsymmetric)g(matrix) │ │ │ │ 125 559 y Fe(\017)41 b Fk(opflag)25 b Fm(|)i(op)r(eration)g(\015ag)g │ │ │ │ (for)g(the)h(m)n(ultiply)301 728 y Fd({)41 b Fm(0)27 │ │ │ │ b(\()p Fk(MMM)p 628 728 V 31 w(WITH)p 835 728 V 30 w(A)p │ │ │ │ Fm(\))g(|)h(p)r(erform)f Fg(Y)42 b Fm(:=)22 b Fg(Y)37 │ │ │ │ b Fm(+)18 b Fg(\013AX)301 862 y Fd({)41 b Fm(1)27 b(\()p │ │ │ │ Fk(MMM)p 628 862 V 31 w(WITH)p 835 862 V 30 w(AT)p Fm(\))g(|)g(p)r │ │ │ │ @@ -4653,17 +4642,17 @@ │ │ │ │ b(based)h(on)f(the)h Fk(mapIV)d Fm(ob)5 b(ject)23 b(that)g(maps)f(ro)n │ │ │ │ (ws)f(to)208 5308 y(pro)r(cesses.)35 b(The)27 b(messages)f(that)h(will) │ │ │ │ h(b)r(e)f(sen)n(t)h(require)e Fk(nproc)f Fm(consecutiv)n(e)h(tags)h(|)g │ │ │ │ (the)h(\014rst)f(is)g(the)h(parameter)208 5407 y Fk(firsttag)p │ │ │ │ Fm(.)33 b(On)28 b(return,)f(the)h Fk(stats[])d Fm(v)n(ector)h(con)n │ │ │ │ (tains)g(the)i(follo)n(wing)f(information.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1194 4 v 1360 100 a Fk(MPI)26 │ │ │ │ -b Fc(:)i Fl(DRAFT)110 b Fc(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fm(3)556 377 y Fk(stats[0])97 b Fm(|)i(#)28 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1227 4 v 1393 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fm(3)556 377 y Fk(stats[0])97 b Fm(|)i(#)28 │ │ │ │ b(of)g(messages)e(sen)n(t)344 b Fk(stats[1])96 b Fm(|)k(#)28 │ │ │ │ b(of)f(b)n(ytes)g(sen)n(t)556 477 y Fk(stats[2])97 b │ │ │ │ Fm(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 b Fk(stats[3])96 │ │ │ │ b Fm(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 711 y(Note,)g(the)h(v) │ │ │ │ -5 b(alues)27 b(in)h Fk(stats[])c Fm(are)j Fl(incr)l(emente)l(d)p │ │ │ │ Fm(,)g(i.e.,)h(the)g Fk(stats[])c Fm(v)n(ector)i(is)h(not)h(zero)r(ed)e │ │ │ │ (at)i(the)g(start)e(of)i(the)208 810 y(metho)r(d,)g(and)f(so)g(can)g(b) │ │ │ │ @@ -4761,17 +4750,17 @@ │ │ │ │ Fm(v)n(ector)j(con)n(tains)f(the)i(follo)n(wing)f(information.)556 │ │ │ │ 5319 y Fk(stats[0])97 b Fm(|)i(#)28 b(of)g(messages)e(sen)n(t)344 │ │ │ │ b Fk(stats[1])96 b Fm(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t)556 │ │ │ │ 5419 y Fk(stats[2])97 b Fm(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 │ │ │ │ b Fk(stats[3])96 b Fm(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(MPI)27 b Fc(:)h Fl(DRAFT)f Fc(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 208 390 a Fm(Note,)g(the)h(v)-5 b(alues)27 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 208 390 a Fm(Note,)g(the)h(v)-5 b(alues)27 │ │ │ │ b(in)h Fk(stats[])c Fm(are)j Fl(incr)l(emente)l(d)p Fm(,)g(i.e.,)h(the) │ │ │ │ g Fk(stats[])c Fm(v)n(ector)i(is)h(not)h(zero)r(ed)e(at)i(the)g(start)e │ │ │ │ (of)i(the)208 490 y(metho)r(d,)g(and)f(so)g(can)g(b)r(e)h(used)g(to)f │ │ │ │ (accum)n(ulated)g(information)g(with)h(m)n(ultiple)h(calls.)208 │ │ │ │ 632 y Fl(Err)l(or)38 b(che)l(cking:)55 b Fm(If)37 b Fk(firsttag)j(<)j │ │ │ │ (0)36 b Fm(or)f Fk(firsttag)40 b(+)j(nproc)35 b Fm(is)g(larger)g(than)h │ │ │ │ (the)g(largest)f(a)n(v)-5 b(ailable)35 b(tag,)i(an)208 │ │ │ │ @@ -4859,17 +4848,17 @@ │ │ │ │ Fm(or)f Fk(rowmapIV)e Fm(is)j Fk(NULL)p Fm(,)f(or)h(if)h │ │ │ │ Fk(msglvl)41 b(>)i(0)28 b Fm(and)g Fk(msgFile)e Fm(is)i │ │ │ │ Fk(NULL)p Fm(,)f(or)g(if)i Fk(firsttag)40 b(<)208 5407 │ │ │ │ y(0)27 b Fm(is)g(larger)f(than)i(the)g(largest)e(a)n(v)-5 │ │ │ │ b(ailable)26 b(tag,)h(an)h(error)d(message)h(is)i(prin)n(ted)f(and)h │ │ │ │ (the)g(program)d(exits.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1194 4 v 1360 100 a Fk(MPI)26 │ │ │ │ -b Fc(:)i Fl(DRAFT)110 b Fc(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fm(5)0 390 y Fi(1.2.2)112 b(Gather)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1227 4 v 1393 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fm(5)0 390 y Fi(1.2.2)112 b(Gather)38 │ │ │ │ b(and)h(scatter)e(metho)s(ds)0 568 y Fm(These)24 b(metho)r(d)g(gather)f │ │ │ │ (and)h(scatter/add)e(ro)n(ws)h(of)h Fk(DenseMtx)c Fm(ob)5 │ │ │ │ b(jects.)35 b(These)24 b(op)r(erations)f(are)g(p)r(erformed)g(during)h │ │ │ │ (the)0 668 y(distributed)19 b(matrix-matrix)e(m)n(ultiply)-7 │ │ │ │ b(.)34 b(The)18 b(gather)g(op)r(eration)f Fg(X)2150 638 │ │ │ │ y Ff(q)2143 688 y(supp)2309 668 y Fe( )23 b Fg(X)i Fm(is)18 │ │ │ │ b(p)r(erformed)g(b)n(y)g Fk(DenseMtx)p 3434 668 27 4 │ │ │ │ @@ -4951,17 +4940,17 @@ │ │ │ │ 5108 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;) │ │ │ │ 208 5208 y(IVL)f(*)h(SymbFac_MPI_init)o(Fro)o(mP)o(enc)o(il)37 │ │ │ │ b(\()43 b(ETree)f(*etree,)e(IV)j(*frontOwnersIV,)1733 │ │ │ │ 5308 y(Pencil)e(*pencil,)f(int)j(stats[],)d(int)i(msglvl,)1733 │ │ │ │ 5407 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(MPI)27 b Fc(:)h Fl(DRAFT)f Fc(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 208 390 a Fm(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 208 390 a Fm(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ (place)f(of)h(the)g Fk(Symbfac)p 1907 390 27 4 v 28 w(initFrom)p │ │ │ │ Fe(f)p Fk(InpMtx,P)o(en)o(cil)o Fe(g)p Fk(\()o(\))14 │ │ │ │ b Fm(metho)r(ds)19 b(to)h(compute)g(the)208 490 y(sym)n(b)r(olic)27 │ │ │ │ b(factorization.)37 b(The)28 b Fk(ETree)e Fm(ob)5 b(ject)28 │ │ │ │ b(is)g(assumed)f(to)h(b)r(e)h(replicated)e(o)n(v)n(er)f(the)j(pro)r │ │ │ │ (cesses.)36 b(The)28 b Fk(InpMtx)208 589 y Fm(and)i Fk(Pencil)e │ │ │ │ Fm(ob)5 b(jects)30 b(are)f(partitioned)h(among)f(the)i(pro)r(cesses.)44 │ │ │ │ @@ -5049,17 +5038,17 @@ │ │ │ │ 2075 5070 y Fk(cpus[9])118 b Fm({)99 b(p)r(ost)28 b(initial)g(receiv)n │ │ │ │ (es)2053 5170 y Fk(cpus[10])96 b Fm({)j(c)n(hec)n(k)27 │ │ │ │ b(for)g(receiv)n(ed)f(messages)2053 5269 y Fk(cpus[11])96 │ │ │ │ b Fm({)j(p)r(ost)28 b(initial)g(sends)2053 5369 y Fk(cpus[12])96 │ │ │ │ b Fm({)j(c)n(hec)n(k)27 b(for)g(sen)n(t)g(messages)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1194 4 v 1360 100 a Fk(MPI)26 │ │ │ │ -b Fc(:)i Fl(DRAFT)110 b Fc(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fm(7)208 390 y(On)g(return,)g(the)h │ │ │ │ +TeXDict begin 7 6 bop 83 100 1227 4 v 1393 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fm(7)208 390 y(On)g(return,)g(the)h │ │ │ │ Fk(stats[])d Fm(v)n(ector)h(has)h(the)h(follo)n(wing)f(information.)963 │ │ │ │ 563 y Fk(stats[0])118 b Fm(|)100 b(#)28 b(of)f(piv)n(ots)963 │ │ │ │ 663 y Fk(stats[1])118 b Fm(|)100 b(#)28 b(of)f(piv)n(ot)h(tests)963 │ │ │ │ 762 y Fk(stats[2])118 b Fm(|)100 b(#)28 b(of)f(dela)n(y)n(ed)g(ro)n(ws) │ │ │ │ f(and)i(columns)963 862 y Fk(stats[3])118 b Fm(|)100 │ │ │ │ b(#)28 b(of)f(en)n(tries)g(in)h(D)963 962 y Fk(stats[4])118 │ │ │ │ b Fm(|)100 b(#)28 b(of)f(en)n(tries)g(in)h(L)963 1061 │ │ │ │ @@ -5141,17 +5130,17 @@ │ │ │ │ 5308 y Fm(After)19 b(a)g(factorization)f(with)i(piv)n(oting,)g(the)f │ │ │ │ Fk(frontsizesIV)c Fm(ob)5 b(ject)19 b(needs)g(to)g(b)r(e)h(made)f │ │ │ │ (global)f(on)h(eac)n(h)f(pro)r(cessor.)208 5407 y(This)26 │ │ │ │ b(metho)r(ds)h(tak)n(es)e(the)i(individual)f(en)n(tries)g(of)g(an)g │ │ │ │ Fk(IV)g Fm(ob)5 b(ject)26 b(whose)g(o)n(wners)f(are)g(sp)r(eci\014ed)h │ │ │ │ (b)n(y)h(the)f Fk(ownersIV)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1194 4 v │ │ │ │ -1359 w Fk(MPI)27 b Fc(:)h Fl(DRAFT)f Fc(Decem)n(b)r(er)g(20,)g(2018)p │ │ │ │ -2706 100 V 208 390 a Fm(ob)5 b(ject,)33 b(and)g(comm)n(unicates)f(the)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1227 4 v │ │ │ │ +1392 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Octob)r(er)e(11,)h(2021)p │ │ │ │ +2673 100 V 208 390 a Fm(ob)5 b(ject,)33 b(and)g(comm)n(unicates)f(the)h │ │ │ │ (en)n(tries)f(around)g(the)h(pro)r(cessors)e(un)n(til)i(the)g(global)f │ │ │ │ Fk(IV)g Fm(ob)5 b(ject)33 b(is)f(presen)n(t)g(on)208 │ │ │ │ 490 y(eac)n(h.)h(The)20 b(messages)e(that)i(will)g(b)r(e)g(sen)n(t)f │ │ │ │ (require)g(at)g(most)h Fk(nproc)d Fm(consecutiv)n(e)i(tags)g(|)h(the)g │ │ │ │ (\014rst)f(is)h(the)g(parameter)208 589 y Fk(firsttag)p │ │ │ │ Fm(.)208 740 y Fl(Err)l(or)28 b(che)l(cking:)38 b Fm(If)26 │ │ │ │ b Fk(iv)p Fm(,)g Fk(ownersIV)d Fm(or)i Fk(stats)f Fm(is)h │ │ │ │ @@ -5227,17 +5216,17 @@ │ │ │ │ Fk(firsttag)208 5308 y(<)43 b(0)30 b Fm(or)f Fk(firsttag)40 │ │ │ │ b(+)j(2*nfront)27 b Fm(is)j(larger)f(than)h(the)h(largest)d(a)n(v)-5 │ │ │ │ b(ailable)29 b(tag,)i(or)e(if)i Fk(msglvl)41 b(>)i(0)30 │ │ │ │ b Fm(and)g Fk(msgFile)208 5407 y Fm(is)d Fk(NULL)p Fm(,)f(an)h(error)f │ │ │ │ (message)g(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 83 100 1194 4 v 1360 100 a Fk(MPI)26 │ │ │ │ -b Fc(:)i Fl(DRAFT)110 b Fc(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2667 100 V 1194 w Fm(9)0 390 y Fi(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ +TeXDict begin 9 8 bop 83 100 1227 4 v 1393 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2634 100 V 1227 w Fm(9)0 390 y Fi(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ b(m)m(ultiply)f(metho)s(ds)0 573 y Fm(The)28 b(usual)f(sequence)g(of)h │ │ │ │ (ev)n(en)n(ts)e(is)i(as)f(follo)n(ws.)125 771 y Fe(\017)41 │ │ │ │ b Fm(Set)28 b(up)f(the)h(data)g(structure)f(via)g(a)g(call)g(to)h │ │ │ │ Fk(MatMul)p 1887 771 27 4 v 28 w(MPI)p 2047 771 V 31 │ │ │ │ w(setup\(\))p Fm(.)125 946 y Fe(\017)41 b Fm(Con)n(v)n(ert)26 │ │ │ │ b(the)i(lo)r(cal)f Fg(A)925 916 y Ff(q)989 946 y Fm(matrix)g(to)h(lo)r │ │ │ │ (cal)f(indices)g(via)h(a)f(call)g(to)g Fk(MatMul)p 2557 │ │ │ │ @@ -5312,17 +5301,17 @@ │ │ │ │ (in)g(the)h Fk(info)e Fm(ob)5 b(ject.)50 b(These)32 b(are)f(serial)208 │ │ │ │ 5270 y(metho)r(ds,)c(p)r(erformed)h(indep)r(enden)n(tly)g(on)f(eac)n(h) │ │ │ │ g(pro)r(cessor.)208 5407 y Fl(Err)l(or)j(che)l(cking:)38 │ │ │ │ b Fm(If)28 b Fk(info)e Fm(or)h Fk(A)g Fm(is)h Fk(NULL)p │ │ │ │ Fm(,)e(an)h(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1174 4 │ │ │ │ -v 1338 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Decem)n(b)r(er)f(20,)g(2018)p │ │ │ │ -2727 100 V 101 390 a Fm(3.)42 b Fk(void)f(MatMul_MPI_mmm)d(\()43 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1206 4 │ │ │ │ +v 1371 w Fk(MPI)26 b Fc(:)i Fl(DRAFT)f Fc(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2694 100 V 101 390 a Fm(3.)42 b Fk(void)f(MatMul_MPI_mmm)d(\()43 │ │ │ │ b(MatMulInfo)d(*info,)h(DenseMtx)f(*Yloc,)h(double)g(alpha[],)g(InpMtx) │ │ │ │ g(*A,)600 490 y(DenseMtx)f(*Xloc,)h(int)i(stats[],)d(int)i(msglvl,)f │ │ │ │ (FILE)h(*msgFile,)e(MPI_Comm)g(comm\))h(;)208 623 y Fm(This)35 │ │ │ │ b(metho)r(d)g(computes)g(a)g(distributed)h(matrix-matrix)e(m)n(ultiply) │ │ │ │ h Fg(Y)55 b Fm(:=)35 b Fg(Y)42 b Fm(+)23 b Fg(\013AX)7 │ │ │ │ b Fm(,)37 b Fg(Y)55 b Fm(:=)35 b Fg(Y)42 b Fm(+)23 b │ │ │ │ Fg(\013A)3662 593 y Ff(T)3715 623 y Fg(X)42 b Fm(or)208 │ │ │ │ @@ -5402,17 +5391,17 @@ │ │ │ │ (p)r(oin)n(ter)f(to)h(its)g Fk(IV)f Fm(ob)5 b(ject.)37 │ │ │ │ b(A)28 b(no)r(de)g(other)f(than)h Fk(root)p Fm(,)f(clears)f(the)j(data) │ │ │ │ e(in)h(its)208 5274 y(IV)f(ob)5 b(ject,)28 b(receiv)n(es)e(the)i(IV)g │ │ │ │ (ob)5 b(ject)27 b(from)h(the)g(ro)r(ot)e(and)i(returns)f(a)g(p)r(oin)n │ │ │ │ (ter)g(to)h(it.)208 5407 y Fl(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fm(None)28 b(presen)n(tly)-7 b(.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 83 100 1174 4 v 1339 100 a Fk(MPI)27 │ │ │ │ -b Fc(:)g Fl(DRAFT)111 b Fc(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2646 100 V 1174 w Fm(11)0 390 y Fi(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1206 4 v 1372 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2613 100 V 1206 w Fm(11)0 390 y Fi(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)101 565 y Fm(1.)k Fk(IVL)g(*)h(InpMtx_MPI_fullA)o(dja)o │ │ │ │ (ce)o(ncy)37 b(\()43 b(InpMtx)e(*inpmtx,)f(int)j(stats[],)1646 │ │ │ │ 664 y(int)f(msglvl,)f(FILE)h(*msgFile,)e(MPI_Comm)g(comm)i(\))h(;)208 │ │ │ │ 764 y(IVL)f(*)h(Pencil_MPI_fullA)o(dja)o(ce)o(ncy)37 │ │ │ │ b(\()43 b(Pencil)e(*pencil,)f(int)j(stats[],)1646 863 │ │ │ │ y(int)f(msglvl,)f(FILE)h(*msgFile,)e(MPI_Comm)g(comm)i(\))h(;)208 │ │ │ │ 993 y Fm(These)37 b(metho)r(ds)h(are)f(used)h(to)g(return)g(an)f │ │ │ │ @@ -5496,25 +5485,24 @@ │ │ │ │ y Fm(con)n(tains)c(the)i(lists)g(of)f(v)n(ertices)g(this)h(pro)r │ │ │ │ (cessor)d(m)n(ust)j(send)f(to)h(all)f(others.)208 5308 │ │ │ │ y(This)g(metho)r(d)i(uses)e(tags)g(in)i(the)f(range)e │ │ │ │ Fk([tag,tag+nproc-1\))o Fm(.)32 b(On)c(return,)f(the)i(follo)n(wing)e │ │ │ │ (statistics)g(will)h(ha)n(v)n(e)208 5407 y(b)r(een)g(added.)p │ │ │ │ eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 166 100 1174 │ │ │ │ -4 v 1338 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2727 100 V 556 377 a Fk(stats[0])97 b Fm(|)i(#)28 │ │ │ │ -b(of)g(messages)e(sen)n(t)344 b Fk(stats[1])96 b Fm(|)k(#)28 │ │ │ │ -b(of)f(b)n(ytes)g(sen)n(t)556 477 y Fk(stats[2])97 b │ │ │ │ -Fm(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 b Fk(stats[3])96 │ │ │ │ -b Fm(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 688 y(This)g(metho)r(d) │ │ │ │ -h(is)g Fl(safe)g Fm(in)g(the)g(sense)f(that)h(it)g(uses)f(only)h │ │ │ │ -Fk(MPI)p 2162 688 27 4 v 30 w(Sendrecv\(\))p Fm(.)208 │ │ │ │ -829 y Fl(Err)l(or)35 b(che)l(cking:)50 b Fm(If)34 b Fk(sendIVL)c │ │ │ │ -Fm(or)i Fk(stats)f Fm(is)j Fk(NULL)p Fm(,)d(or)i(if)g │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 166 100 1206 │ │ │ │ +4 v 1371 w Fk(MPI)26 b Fc(:)i Fl(DRAFT)f Fc(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2694 100 V 556 377 a Fk(stats[0])97 b Fm(|)i(#)28 b(of)g(messages)e │ │ │ │ +(sen)n(t)344 b Fk(stats[1])96 b Fm(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t) │ │ │ │ +556 477 y Fk(stats[2])97 b Fm(|)i(#)28 b(of)g(messages)e(receiv)n(ed) │ │ │ │ +198 b Fk(stats[3])96 b Fm(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 │ │ │ │ +688 y(This)g(metho)r(d)h(is)g Fl(safe)g Fm(in)g(the)g(sense)f(that)h │ │ │ │ +(it)g(uses)f(only)h Fk(MPI)p 2162 688 27 4 v 30 w(Sendrecv\(\))p │ │ │ │ +Fm(.)208 829 y Fl(Err)l(or)35 b(che)l(cking:)50 b Fm(If)34 │ │ │ │ +b Fk(sendIVL)c Fm(or)i Fk(stats)f Fm(is)j Fk(NULL)p Fm(,)d(or)i(if)g │ │ │ │ Fk(msglvl)41 b(>)j(0)33 b Fm(and)g Fk(msgFile)d Fm(is)j │ │ │ │ Fk(NULL)p Fm(,)f(or)g(if)i Fk(tag)42 b(<)h(0)208 928 │ │ │ │ y Fm(or)28 b Fk(tag)43 b(+)g(nproc)27 b Fm(is)j(larger)e(than)h(the)h │ │ │ │ (largest)f(a)n(v)-5 b(ailable)28 b(tag,)h(an)h(error)d(message)i(is)g │ │ │ │ (prin)n(ted)h(and)f(the)h(program)208 1028 y(exits.)101 │ │ │ │ 1210 y(5.)42 b Fk(void)f(*)j(makeSendRecvIVL)o(s)38 b(\()43 │ │ │ │ b(IV)g(*supportedIV,)38 b(IV)43 b(*globalmapIV,)38 b(IVL)k(*sendIVL,)e │ │ │ │ @@ -5576,17 +5564,17 @@ │ │ │ │ 208 4893 y(en)n(tries)j(from)g(\014le)i Fk(matrix.)m │ │ │ │ Fg(q)s Fk(.input)c Fm(and)j(righ)n(t)f(hand)h(side)g(en)n(tries)f(from) │ │ │ │ h(\014le)g Fk(rhs.)o Fg(q)s Fk(.input)m Fm(.)47 b(The)31 │ │ │ │ b(format)g(for)208 4993 y(the)d(matrix)f(\014les)g(is)h(as)f(follo)n │ │ │ │ (ws:)208 5208 y Fk(neqns)41 b(neqns)h(nent)208 5308 y(irow)f(jcol)h │ │ │ │ (entry)208 5407 y(...)85 b(...)h(...)p eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 83 100 1174 4 v 1339 100 a Fk(MPI)27 │ │ │ │ -b Fc(:)g Fl(DRAFT)111 b Fc(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2646 100 V 1174 w Fm(13)208 390 y(where)j Fk(neqns)g │ │ │ │ +TeXDict begin 13 12 bop 83 100 1206 4 v 1372 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2613 100 V 1206 w Fm(13)208 390 y(where)j Fk(neqns)g │ │ │ │ Fm(is)h(the)h(global)e(n)n(um)n(b)r(er)i(of)f(equations)g(and)g │ │ │ │ Fk(nent)f Fm(is)h(the)h(n)n(um)n(b)r(er)f(of)h(en)n(tries)e(in)i(this)g │ │ │ │ (\014le.)49 b(There)208 490 y(follo)n(ws)22 b Fk(nent)h │ │ │ │ Fm(lines,)h(eac)n(h)f(con)n(taining)g(a)g(ro)n(w)g(index,)i(a)e(column) │ │ │ │ h(index)g(and)f(one)h(or)f(t)n(w)n(o)g(\015oating)g(p)r(oin)n(t)h(n)n │ │ │ │ (um)n(b)r(ers,)208 589 y(one)j(if)h(real,)f(t)n(w)n(o)f(if)j(complex.) │ │ │ │ 36 b(The)28 b(format)f(for)g(the)h(righ)n(t)f(hand)g(side)h(\014le)f │ │ │ │ @@ -5661,27 +5649,27 @@ │ │ │ │ y Fk(nrow)i Fm(lines,)i(eac)n(h)f(con)n(taining)g(a)h(ro)n(w)f(index)h │ │ │ │ (and)g(either)g Fk(nrhs)e Fm(or)i Fk(2*nrhs)d Fm(\015oating)i(p)r(oin)n │ │ │ │ (t)i(n)n(um)n(b)r(ers,)e(the)i(\014rst)f(if)208 5407 │ │ │ │ y(real,)e(the)i(second)f(if)h(complex.)37 b(Use)27 b(the)h(script)g │ │ │ │ (\014le)f Fk(do)p 1997 5407 27 4 v 31 w(patchAndGo)d │ │ │ │ Fm(for)j(testing.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fm(14)p 166 100 1174 │ │ │ │ -4 v 1338 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2727 100 V 307 390 a Fe(\017)41 b Fm(The)23 b │ │ │ │ -Fk(msglvl)e Fm(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output.) │ │ │ │ -36 b(Use)23 b Fk(msglvl)41 b(=)i(1)23 b Fm(for)g(just)g(timing)g │ │ │ │ -(output.)307 528 y Fe(\017)41 b Fm(The)32 b Fk(msgFile)c │ │ │ │ -Fm(parameter)i(determines)h(the)h(message)e(\014le)i(|)f(if)h │ │ │ │ -Fk(msgFile)d Fm(is)i Fk(stdout)p Fm(,)f(then)i(the)g(message)390 │ │ │ │ -628 y(\014le)c(is)f Fl(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ -(op)r(ened)f(with)i Fl(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ -(y)g(output)h(data.)307 766 y Fe(\017)41 b Fm(The)28 │ │ │ │ -b Fk(type)e Fm(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ -(linear)g(system.)456 904 y Fd({)41 b Fk(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fm(14)p 166 100 1206 │ │ │ │ +4 v 1371 w Fk(MPI)26 b Fc(:)i Fl(DRAFT)f Fc(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2694 100 V 307 390 a Fe(\017)41 b Fm(The)23 b Fk(msglvl)e │ │ │ │ +Fm(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output.)36 │ │ │ │ +b(Use)23 b Fk(msglvl)41 b(=)i(1)23 b Fm(for)g(just)g(timing)g(output.) │ │ │ │ +307 528 y Fe(\017)41 b Fm(The)32 b Fk(msgFile)c Fm(parameter)i │ │ │ │ +(determines)h(the)h(message)e(\014le)i(|)f(if)h Fk(msgFile)d │ │ │ │ +Fm(is)i Fk(stdout)p Fm(,)f(then)i(the)g(message)390 628 │ │ │ │ +y(\014le)c(is)f Fl(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h(op)r │ │ │ │ +(ened)f(with)i Fl(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n(y)g │ │ │ │ +(output)h(data.)307 766 y Fe(\017)41 b Fm(The)28 b Fk(type)e │ │ │ │ +Fm(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g(linear)g │ │ │ │ +(system.)456 904 y Fd({)41 b Fk(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ 1295 904 27 4 v 28 w(REAL\))25 b Fm(for)i(real,)456 1023 │ │ │ │ y Fd({)41 b Fk(type)h(=)i(2)f(\(SPOOLES)p 1295 1023 V │ │ │ │ 28 w(COMPLEX\))24 b Fm(for)j(complex.)307 1161 y Fe(\017)41 │ │ │ │ b Fm(The)28 b Fk(symmetryflag)23 b Fm(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ h(symmetry)f(of)h(the)g(matrix.)456 1299 y Fd({)41 b │ │ │ │ Fk(type)h(=)i(0)f(\(SPOOLES)p 1295 1299 V 28 w(SYMMETRIC\))23 │ │ │ │ b Fm(for)k Fg(A)h Fm(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ @@ -5753,17 +5741,17 @@ │ │ │ │ Fk(X)p Fm(.)307 5131 y Fe(\017)41 b Fk(inc1)26 b Fm(is)i(the)g(ro)n(w)e │ │ │ │ (incremen)n(t)h(for)g Fk(X)p Fm(.)307 5269 y Fe(\017)41 │ │ │ │ b Fk(inc2)26 b Fm(is)i(the)g(column)f(incremen)n(t)h(for)f │ │ │ │ Fk(X)p Fm(.)307 5407 y Fe(\017)41 b Fm(The)28 b Fk(seed)e │ │ │ │ Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.)p │ │ │ │ eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 83 100 1174 4 v 1339 100 a Fk(MPI)27 │ │ │ │ -b Fc(:)g Fl(DRAFT)111 b Fc(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2646 100 V 1174 w Fm(15)101 390 y(4.)42 b Fk(testGraph_Bcast)37 │ │ │ │ +TeXDict begin 15 14 bop 83 100 1206 4 v 1372 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2613 100 V 1206 w Fm(15)101 390 y(4.)42 b Fk(testGraph_Bcast)37 │ │ │ │ b(msglvl)k(msgFile)g(type)h(nvtx)g(nitem)f(root)h(seed)208 │ │ │ │ 528 y Fm(This)35 b(driv)n(er)g(program)f(tests)h(the)h(distributed)h │ │ │ │ Fk(Graph)p 2007 528 27 4 v 29 w(MPI)p 2168 528 V 30 w(Bcast\(\))c │ │ │ │ Fm(metho)r(d.)62 b(Pro)r(cessor)33 b Fk(root)h Fm(generates)g(a)208 │ │ │ │ 628 y(random)g(graph)f(of)i(t)n(yp)r(e)g Fk(type)f Fm(\(see)g(the)i(do) │ │ │ │ r(cumen)n(tation)e(for)h(the)g Fk(Graph)e Fm(ob)5 b(ject)35 │ │ │ │ b(in)g(c)n(hapter)f Fd(??)p Fm(\))h(with)h Fk(nvtx)208 │ │ │ │ @@ -5855,35 +5843,34 @@ │ │ │ │ b Fm(The)29 b Fk(type)e Fm(parameter)g(sp)r(eci\014es)i(whether)g(the)g │ │ │ │ (linear)f(system)g(is)h(real)f(or)g(complex.)40 b(Use)28 │ │ │ │ b Fk(1)h Fm(for)f(real)g(and)g Fk(2)390 5270 y Fm(for)f(complex.)307 │ │ │ │ 5407 y Fe(\017)41 b Fm(The)28 b Fk(symmetryflag)23 b │ │ │ │ Fm(parameter)j(denotes)h(the)h(presence)f(or)f(absence)h(of)h(symmetry) │ │ │ │ -7 b(.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fm(16)p 166 100 1174 │ │ │ │ -4 v 1338 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2727 100 V 456 390 a Fd({)41 b Fm(Use)f Fk(0)g │ │ │ │ -Fm(for)f(a)g(real)g(or)g(complex)g(symmetric)g(matrix)g │ │ │ │ -Fg(A)p Fm(.)74 b(A)40 b(\()p Fg(U)2703 360 y Ff(T)2782 │ │ │ │ -390 y Fm(+)26 b Fg(I)7 b Fm(\))p Fg(D)r Fm(\()p Fg(I)34 │ │ │ │ -b Fm(+)26 b Fg(U)9 b Fm(\))40 b(factorization)e(is)545 │ │ │ │ -490 y(computed.)456 601 y Fd({)j Fm(Use)28 b Fk(1)f Fm(for)g(a)h │ │ │ │ -(complex)f(Hermitian)g(matrix)g Fg(A)p Fm(.)38 b(A)28 │ │ │ │ -b(\()p Fg(U)2273 571 y Ff(H)2354 601 y Fm(+)18 b Fg(I)7 │ │ │ │ -b Fm(\))p Fg(D)r Fm(\()p Fg(I)26 b Fm(+)18 b Fg(U)9 b │ │ │ │ -Fm(\))28 b(factorization)e(is)i(computed.)456 713 y Fd({)41 │ │ │ │ -b Fm(Use)36 b Fk(2)f Fm(for)g(a)h(real)e(or)h(complex)g(nonsymmetric)g │ │ │ │ -(matrix)g Fg(A)p Fm(.)62 b(A)36 b(\()p Fg(L)23 b Fm(+)g │ │ │ │ -Fg(I)7 b Fm(\))p Fg(D)r Fm(\()p Fg(I)32 b Fm(+)23 b Fg(U)9 │ │ │ │ -b Fm(\))36 b(factorization)e(is)545 812 y(computed.)307 │ │ │ │ -936 y Fe(\017)41 b Fm(The)31 b Fk(sparsityflag)26 b Fm(parameter)j │ │ │ │ -(denotes)i(a)f(direct)g(or)g(appro)n(ximate)f(factorization.)45 │ │ │ │ -b(V)-7 b(alid)31 b(v)-5 b(alues)31 b(are)e Fk(0)390 1035 │ │ │ │ -y Fm(for)e(a)g(direct)h(factorization)e(and)i Fk(1)f │ │ │ │ -Fm(is)g(for)g(an)h(appro)n(ximate)e(factorization.)307 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fm(16)p 166 100 1206 │ │ │ │ +4 v 1371 w Fk(MPI)26 b Fc(:)i Fl(DRAFT)f Fc(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2694 100 V 456 390 a Fd({)41 b Fm(Use)f Fk(0)g Fm(for)f(a)g(real)g(or)g │ │ │ │ +(complex)g(symmetric)g(matrix)g Fg(A)p Fm(.)74 b(A)40 │ │ │ │ +b(\()p Fg(U)2703 360 y Ff(T)2782 390 y Fm(+)26 b Fg(I)7 │ │ │ │ +b Fm(\))p Fg(D)r Fm(\()p Fg(I)34 b Fm(+)26 b Fg(U)9 b │ │ │ │ +Fm(\))40 b(factorization)e(is)545 490 y(computed.)456 │ │ │ │ +601 y Fd({)j Fm(Use)28 b Fk(1)f Fm(for)g(a)h(complex)f(Hermitian)g │ │ │ │ +(matrix)g Fg(A)p Fm(.)38 b(A)28 b(\()p Fg(U)2273 571 │ │ │ │ +y Ff(H)2354 601 y Fm(+)18 b Fg(I)7 b Fm(\))p Fg(D)r Fm(\()p │ │ │ │ +Fg(I)26 b Fm(+)18 b Fg(U)9 b Fm(\))28 b(factorization)e(is)i(computed.) │ │ │ │ +456 713 y Fd({)41 b Fm(Use)36 b Fk(2)f Fm(for)g(a)h(real)e(or)h │ │ │ │ +(complex)g(nonsymmetric)g(matrix)g Fg(A)p Fm(.)62 b(A)36 │ │ │ │ +b(\()p Fg(L)23 b Fm(+)g Fg(I)7 b Fm(\))p Fg(D)r Fm(\()p │ │ │ │ +Fg(I)32 b Fm(+)23 b Fg(U)9 b Fm(\))36 b(factorization)e(is)545 │ │ │ │ +812 y(computed.)307 936 y Fe(\017)41 b Fm(The)31 b Fk(sparsityflag)26 │ │ │ │ +b Fm(parameter)j(denotes)i(a)f(direct)g(or)g(appro)n(ximate)f │ │ │ │ +(factorization.)45 b(V)-7 b(alid)31 b(v)-5 b(alues)31 │ │ │ │ +b(are)e Fk(0)390 1035 y Fm(for)e(a)g(direct)h(factorization)e(and)i │ │ │ │ +Fk(1)f Fm(is)g(for)g(an)h(appro)n(ximate)e(factorization.)307 │ │ │ │ 1158 y Fe(\017)41 b Fm(The)29 b Fk(pivotingflag)24 b │ │ │ │ Fm(parameter)j(denotes)i(whether)g(piv)n(oting)f(is)h(to)f(b)r(e)h │ │ │ │ (used)g(in)g(the)h(factorization.)39 b(V)-7 b(alid)390 │ │ │ │ 1258 y(v)i(alues)27 b(are)g Fk(0)g Fm(for)g(no)h(piv)n(oting)f(and)g │ │ │ │ Fk(1)g Fm(to)h(enable)f(piv)n(oting.)307 1381 y Fe(\017)41 │ │ │ │ b Fm(The)30 b Fk(tau)f Fm(parameter)g(is)g(used)h(when)h(piv)n(oting)e │ │ │ │ (is)h(enabled,)g(in)g(whic)n(h)g(case)f(it)i(is)f(an)f(upp)r(er)i(b)r │ │ │ │ @@ -5964,17 +5951,17 @@ │ │ │ │ (stored)f(con)n(tiguously)f(or)h(at)g(least)h(in)f(one)208 │ │ │ │ 5279 y(blo)r(c)n(k)h(of)g(storage,)f(w)n(e)h(could)h(ha)n(v)n(e)e(used) │ │ │ │ i(the)f Fk(MPI)p 1835 5279 V 31 w(Alltoallv\(\))c Fm(metho)r(d.)208 │ │ │ │ 5407 y(Use)k(the)h(script)f(\014le)h Fk(do)p 968 5407 │ │ │ │ V 31 w(IVL)p 1131 5407 V 30 w(alltoall)c Fm(for)j(testing.)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 83 100 1174 4 v 1339 100 a Fk(MPI)27 │ │ │ │ -b Fc(:)g Fl(DRAFT)111 b Fc(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2646 100 V 1174 w Fm(17)307 390 y Fe(\017)41 b Fm(The)23 │ │ │ │ +TeXDict begin 17 16 bop 83 100 1206 4 v 1372 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2613 100 V 1206 w Fm(17)307 390 y Fe(\017)41 b Fm(The)23 │ │ │ │ b Fk(msglvl)e Fm(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ (output.)36 b(Use)23 b Fk(msglvl)41 b(=)i(1)23 b Fm(for)g(just)g │ │ │ │ (timing)g(output.)307 524 y Fe(\017)41 b Fm(The)32 b │ │ │ │ Fk(msgFile)c Fm(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fk(msgFile)d Fm(is)i Fk(stdout)p Fm(,)f(then)i(the)g(message)390 │ │ │ │ 624 y(\014le)c(is)f Fl(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fl(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ @@ -6073,45 +6060,44 @@ │ │ │ │ y Fe(\017)41 b Fm(The)32 b Fk(msgFile)c Fm(parameter)i(determines)h │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fk(msgFile)d Fm(is)i │ │ │ │ Fk(stdout)p Fm(,)f(then)i(the)g(message)390 5407 y(\014le)c(is)f │ │ │ │ Fl(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ Fl(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.)p │ │ │ │ eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fm(18)p 166 100 1174 │ │ │ │ -4 v 1338 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2727 100 V 307 390 a Fe(\017)41 b Fm(The)28 b │ │ │ │ -Fk(nrowA)d Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(ro)n(ws)e │ │ │ │ -(in)i Fg(A)p Fm(.)307 524 y Fe(\017)41 b Fm(The)28 b │ │ │ │ -Fk(ncolA)d Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f │ │ │ │ -(in)h Fg(A)p Fm(.)307 658 y Fe(\017)41 b Fm(The)28 b │ │ │ │ -Fk(nentA)d Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(en)n(tries) │ │ │ │ -f(to)g(b)r(e)h(put)h(in)n(to)e Fg(A)p Fm(.)307 792 y │ │ │ │ -Fe(\017)41 b Fm(The)28 b Fk(nrowX)d Fm(parameter)i(is)g(the)h(n)n(um)n │ │ │ │ -(b)r(er)f(of)h(ro)n(ws)e(in)i Fg(X)7 b Fm(.)307 926 y │ │ │ │ -Fe(\017)41 b Fm(The)24 b Fk(coordType)c Fm(parameter)i(de\014nes)i(the) │ │ │ │ -g(co)r(ordinate)e(t)n(yp)r(e)i(that)g(will)g(b)r(e)g(used)f(during)g │ │ │ │ -(the)h(redistribution.)390 1026 y(V)-7 b(alid)28 b(v)-5 │ │ │ │ -b(alues)27 b(are)g Fk(1)g Fm(for)g(ro)n(ws,)f Fk(2)i │ │ │ │ -Fm(for)f(columns)g(and)g Fk(3)h Fm(for)f(c)n(hevrons.)307 │ │ │ │ -1160 y Fe(\017)41 b Fm(The)26 b Fk(inputMode)d Fm(parameter)h │ │ │ │ -(de\014nes)i(the)h(mo)r(de)f(of)g(input.)37 b(V)-7 b(alid)26 │ │ │ │ -b(v)-5 b(alues)26 b(are)f Fk(1)g Fm(for)h(real)f(en)n(tries)g(and)h │ │ │ │ -Fk(2)g Fm(for)390 1260 y(complex)h(en)n(tries.)307 1394 │ │ │ │ -y Fe(\017)41 b Fm(The)d Fk(symflag)c Fm(parameter)i(sp)r(eci\014es)h │ │ │ │ -(whether)h(the)f(matrix)g(is)g(symmetric)g(\()p Fk(symflag)e │ │ │ │ -Fm(=)i(0\),)j(Hermitian)390 1493 y(\()p Fk(symflag)25 │ │ │ │ -b Fm(=)j(1\))f(or)g(nonsymmetric)g(\()p Fk(symflag)e │ │ │ │ -Fm(=)i(2\))307 1627 y Fe(\017)41 b Fm(The)25 b Fk(opflag)d │ │ │ │ -Fm(parameter)h(sp)r(eci\014es)i(the)g(t)n(yp)r(e)g(of)g(m)n(ultiply)-7 │ │ │ │ -b(,)26 b Fk(0)e Fm(for)g Fg(Y)42 b Fm(:=)22 b Fg(Y)32 │ │ │ │ -b Fm(+)13 b Fg(\013AX)7 b Fm(,)24 b Fk(1)h Fm(for)f Fg(Y)42 │ │ │ │ -b Fm(:=)22 b Fg(Y)32 b Fm(+)13 b Fg(\013A)3773 1597 y │ │ │ │ -Ff(T)3825 1627 y Fg(X)390 1727 y Fm(or)27 b Fk(2)g Fm(for)g │ │ │ │ -Fg(Y)42 b Fm(:=)23 b Fg(Y)37 b Fm(+)18 b Fg(\013A)1174 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 166 100 1206 │ │ │ │ +4 v 1371 w Fk(MPI)26 b Fc(:)i Fl(DRAFT)f Fc(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2694 100 V 307 390 a Fe(\017)41 b Fm(The)28 b Fk(nrowA)d │ │ │ │ +Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(ro)n(ws)e(in)i │ │ │ │ +Fg(A)p Fm(.)307 524 y Fe(\017)41 b Fm(The)28 b Fk(ncolA)d │ │ │ │ +Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f(in)h │ │ │ │ +Fg(A)p Fm(.)307 658 y Fe(\017)41 b Fm(The)28 b Fk(nentA)d │ │ │ │ +Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(en)n(tries)f(to)g(b)r │ │ │ │ +(e)h(put)h(in)n(to)e Fg(A)p Fm(.)307 792 y Fe(\017)41 │ │ │ │ +b Fm(The)28 b Fk(nrowX)d Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f │ │ │ │ +(of)h(ro)n(ws)e(in)i Fg(X)7 b Fm(.)307 926 y Fe(\017)41 │ │ │ │ +b Fm(The)24 b Fk(coordType)c Fm(parameter)i(de\014nes)i(the)g(co)r │ │ │ │ +(ordinate)e(t)n(yp)r(e)i(that)g(will)g(b)r(e)g(used)f(during)g(the)h │ │ │ │ +(redistribution.)390 1026 y(V)-7 b(alid)28 b(v)-5 b(alues)27 │ │ │ │ +b(are)g Fk(1)g Fm(for)g(ro)n(ws,)f Fk(2)i Fm(for)f(columns)g(and)g │ │ │ │ +Fk(3)h Fm(for)f(c)n(hevrons.)307 1160 y Fe(\017)41 b │ │ │ │ +Fm(The)26 b Fk(inputMode)d Fm(parameter)h(de\014nes)i(the)h(mo)r(de)f │ │ │ │ +(of)g(input.)37 b(V)-7 b(alid)26 b(v)-5 b(alues)26 b(are)f │ │ │ │ +Fk(1)g Fm(for)h(real)f(en)n(tries)g(and)h Fk(2)g Fm(for)390 │ │ │ │ +1260 y(complex)h(en)n(tries.)307 1394 y Fe(\017)41 b │ │ │ │ +Fm(The)d Fk(symflag)c Fm(parameter)i(sp)r(eci\014es)h(whether)h(the)f │ │ │ │ +(matrix)g(is)g(symmetric)g(\()p Fk(symflag)e Fm(=)i(0\),)j(Hermitian) │ │ │ │ +390 1493 y(\()p Fk(symflag)25 b Fm(=)j(1\))f(or)g(nonsymmetric)g(\()p │ │ │ │ +Fk(symflag)e Fm(=)i(2\))307 1627 y Fe(\017)41 b Fm(The)25 │ │ │ │ +b Fk(opflag)d Fm(parameter)h(sp)r(eci\014es)i(the)g(t)n(yp)r(e)g(of)g │ │ │ │ +(m)n(ultiply)-7 b(,)26 b Fk(0)e Fm(for)g Fg(Y)42 b Fm(:=)22 │ │ │ │ +b Fg(Y)32 b Fm(+)13 b Fg(\013AX)7 b Fm(,)24 b Fk(1)h │ │ │ │ +Fm(for)f Fg(Y)42 b Fm(:=)22 b Fg(Y)32 b Fm(+)13 b Fg(\013A)3773 │ │ │ │ +1597 y Ff(T)3825 1627 y Fg(X)390 1727 y Fm(or)27 b Fk(2)g │ │ │ │ +Fm(for)g Fg(Y)42 b Fm(:=)23 b Fg(Y)37 b Fm(+)18 b Fg(\013A)1174 │ │ │ │ 1697 y Ff(H)1237 1727 y Fg(X)7 b Fm(.)307 1861 y Fe(\017)41 │ │ │ │ b Fm(The)28 b Fk(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ (er)i(seed.)307 1995 y Fe(\017)41 b Fm(The)28 b Fk(real)e │ │ │ │ Fm(parameter)g(is)h(the)h(real)f(part)g(of)h(the)g(scalar)e │ │ │ │ Fg(\013)p Fm(.)307 2129 y Fe(\017)41 b Fm(The)28 b Fk(imag)e │ │ │ │ Fm(parameter)g(is)h(the)h(imaginary)e(part)i(of)f(the)h(scalar)e │ │ │ │ Fg(\013)p Fm(,)i(ignored)f(for)g(real)f(en)n(tries.)60 │ │ │ │ @@ -6174,17 +6160,17 @@ │ │ │ │ (timing)g(output.)307 5308 y Fe(\017)41 b Fm(The)32 b │ │ │ │ Fk(msgFile)c Fm(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fk(msgFile)d Fm(is)i Fk(stdout)p Fm(,)f(then)i(the)g(message)390 │ │ │ │ 5407 y(\014le)c(is)f Fl(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fl(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ (y)g(output)h(data.)p eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 83 100 1174 4 v 1339 100 a Fk(MPI)27 │ │ │ │ -b Fc(:)g Fl(DRAFT)111 b Fc(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2646 100 V 1174 w Fm(19)307 390 y Fe(\017)41 b Fm(The)28 │ │ │ │ +TeXDict begin 19 18 bop 83 100 1206 4 v 1372 100 a Fk(MPI)26 │ │ │ │ +b Fc(:)i Fl(DRAFT)110 b Fc(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2613 100 V 1206 w Fm(19)307 390 y Fe(\017)41 b Fm(The)28 │ │ │ │ b Fk(neqns)d Fm(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h │ │ │ │ (equations)f(for)g(the)h(matrix.)307 518 y Fe(\017)41 │ │ │ │ b Fm(The)28 b Fk(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ (er)i(seed.)307 647 y Fe(\017)41 b Fm(The)24 b Fk(coordType)c │ │ │ │ Fm(parameter)i(de\014nes)i(the)g(co)r(ordinate)e(t)n(yp)r(e)i(that)g │ │ │ │ (will)g(b)r(e)g(used)f(during)g(the)h(redistribution.)390 │ │ │ │ 746 y(V)-7 b(alid)28 b(v)-5 b(alues)27 b(are)g Fk(1)g │ │ │ │ @@ -6277,19 +6263,19 @@ │ │ │ │ g Fk(IVL)208 5308 y Fm(ob)5 b(ject)39 b(that)h(con)n(tains)f(the)h │ │ │ │ (necessary)e(parts)h(of)g(a)h(sym)n(b)r(olic)f(factorization)f(for)h │ │ │ │ (eac)n(h)g(pro)r(cessor.)71 b(The)40 b(pro-)208 5407 │ │ │ │ y(gram)34 b(reads)g(in)i(the)g(global)f Fk(Graph)e Fm(and)j │ │ │ │ Fk(ETree)d Fm(ob)5 b(jects.)60 b(Eac)n(h)35 b(pro)r(cessor)e(creates)i │ │ │ │ (a)g(global)f Fk(InpMtx)f Fm(ob)5 b(ject)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fm(20)p 166 100 1174 │ │ │ │ -4 v 1338 w Fk(MPI)27 b Fc(:)g Fl(DRAFT)h Fc(Decem)n(b)r(er)f(20,)g │ │ │ │ -(2018)p 2727 100 V 208 390 a Fm(from)j(the)i(structure)e(of)h(the)h │ │ │ │ -(graph)e(and)h(computes)f(a)h(global)f(sym)n(b)r(olic)h(factorization)e │ │ │ │ -(ob)5 b(ject)31 b(using)g(the)g(serial)208 490 y Fk(SymbFac)p │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 166 100 1206 │ │ │ │ +4 v 1371 w Fk(MPI)26 b Fc(:)i Fl(DRAFT)f Fc(Octob)r(er)g(11,)g(2021)p │ │ │ │ +2694 100 V 208 390 a Fm(from)j(the)i(structure)e(of)h(the)h(graph)e │ │ │ │ +(and)h(computes)f(a)h(global)f(sym)n(b)r(olic)h(factorization)e(ob)5 │ │ │ │ +b(ject)31 b(using)g(the)g(serial)208 490 y Fk(SymbFac)p │ │ │ │ 521 490 27 4 v 28 w(initFromInpMtx\(\))23 b Fm(metho)r(d.)43 │ │ │ │ b(The)30 b(pro)r(cessors)d(then)j(compute)f(a)h(map)f(from)g(fron)n(ts) │ │ │ │ g(to)g(pro)r(cessors,)208 589 y(and)g(eac)n(h)f(pro)r(cessor)f(thro)n │ │ │ │ (ws)h(a)n(w)n(a)n(y)f(the)i(uno)n(wned)g(matrix)g(en)n(tries)f(from)h │ │ │ │ (the)g Fk(InpMtx)e Fm(ob)5 b(ject.)41 b(The)29 b(pro)r(cessors)208 │ │ │ │ 689 y(then)i(compute)h(their)f(necessary)f(sym)n(b)r(olic)g │ │ │ │ (factorizations)g(in)i(parallel.)47 b(F)-7 b(or)30 b(a)h(c)n(hec)n(k,)h │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ scatter/added into Y. │ │ │ │ │ TheMatMulInfoobjectstoresallthenecessaryinformationtomakethishappen. ThereisoneMatMulInfo │ │ │ │ │ object per processor. It has the following fields. │ │ │ │ │ • symflag — symmetry flag for A │ │ │ │ │ – 0 (SPOOLES SYMMETRIC) – symmetric matrix │ │ │ │ │ – 1 (SPOOLES HERMITIAN) – hermitian matrix │ │ │ │ │ 1 │ │ │ │ │ - 2 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 2 MPI : DRAFT October 11, 2021 │ │ │ │ │ – 2 (SPOOLES NONSYMMETRIC) – nonsymmetric matrix │ │ │ │ │ • opflag — operation flag for the multiply │ │ │ │ │ – 0 (MMM WITH A) — perform Y := Y +αAX │ │ │ │ │ – 1 (MMM WITH AT) — perform Y := Y +αATX │ │ │ │ │ – 2 (MMM WITH AH) — perform Y := Y +αAHX │ │ │ │ │ • IV *XownedIV — list of rows of X that are owned by this processor, these form the rows of Xq. │ │ │ │ │ • IV *XsupIV — list of rows of X that are accessed by this processor, these form the rows of Xq │ │ │ │ │ @@ -73,15 +73,15 @@ │ │ │ │ │ In a distributed environment, data must be distributed, and sometimes during a computation, data must be │ │ │ │ │ re-distributed. These methods split and redistribute four data objects. │ │ │ │ │ 1. void DenseMtx_MPI_splitByRows ( DenseMtx *mtx, IV *mapIV, int stats[], int msglvl, │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ This method splits and redistributes the DenseMtx object based on the mapIV object that maps rows to │ │ │ │ │ processes. The messages that will be sent require nproc consecutive tags — the first is the parameter │ │ │ │ │ firsttag. On return, the stats[] vector contains the following information. │ │ │ │ │ - MPI : DRAFT December 20, 2018 3 │ │ │ │ │ + MPI : DRAFT October 11, 2021 3 │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ Note, the values in stats[] are incremented, i.e., the stats[] vector is not zeroed at the start of the │ │ │ │ │ method, and so can be used to accumulated information with multiple calls. │ │ │ │ │ Error checking: If mtx or rowmapIV is NULL, or if msglvl > 0 and msgFile is NULL, or if firsttag < │ │ │ │ │ 0 or firsttag + nproc is larger than the largest available tag, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ @@ -117,15 +117,15 @@ │ │ │ │ │ use the chevron coordinate type to store the matrix entries. This method will redistribute a matrix │ │ │ │ │ by rows if the coordinate type is 1 (for rows) and mapIV is a row map. Similarly, this method will │ │ │ │ │ redistribute a matrix by columns if the coordinate type is 2 (for columns) and mapIV is a column map. │ │ │ │ │ See the InpMtx object for details. The messages that will be sent require nproc consecutive tags — the │ │ │ │ │ first is the parameter firsttag. On return, the stats[] vector contains the following information. │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ - 4 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 4 MPI : DRAFT October 11, 2021 │ │ │ │ │ Note, the values in stats[] are incremented, i.e., the stats[] vector is not zeroed at the start of the │ │ │ │ │ method, and so can be used to accumulated information with multiple calls. │ │ │ │ │ Error checking: If firsttag < 0 or firsttag + nproc is larger than the largest available tag, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 5. InpMtx * InpMtx_MPI_splitFromGlobal ( InpMtx *Aglobal, InpMtx *Alocal, │ │ │ │ │ IV *mapIV, int root, int stats[], int msglvl, │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ @@ -158,15 +158,15 @@ │ │ │ │ │ knownpriortoenteringthis method. Onreturn, the stats[]vectorcontainsthe followinginformation. │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ Note, the values in stats[] are incremented, i.e., the stats[] vector is not zeroed at the start of the │ │ │ │ │ method, and so can be used to accumulated information with multiple calls. │ │ │ │ │ Error checking: If mtx or rowmapIV is NULL, or if msglvl > 0 and msgFile is NULL, or if firsttag < │ │ │ │ │ 0 is larger than the largest available tag, an error message is printed and the program exits. │ │ │ │ │ - MPI : DRAFT December 20, 2018 5 │ │ │ │ │ + MPI : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.2 Gather and scatter methods │ │ │ │ │ These method gather and scatter/add rows of DenseMtx objects. These operations are performed during the │ │ │ │ │ distributed matrix-matrixmultiply. ThegatheroperationXq ←XisperformedbyDenseMtx MPI gatherRows(), │ │ │ │ │ P supp │ │ │ │ │ while the scatter/add operation Y q := Y q + Yr is performed by DenseMtx MPI scatterAddRows(). │ │ │ │ │ r supp │ │ │ │ │ 1. void DenseMtx_MPI_gatherRows ( DenseMtx *Y, DenseMtx *X, IVL *sendIVL, │ │ │ │ │ @@ -202,15 +202,15 @@ │ │ │ │ │ 1.2.3 Symbolic Factorization methods │ │ │ │ │ 1. IVL * SymbFac_MPI_initFromInpMtx ( ETree *etree, IV *frontOwnersIV, │ │ │ │ │ InpMtx *inpmtx, int stats[], int msglvl, │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ IVL * SymbFac_MPI_initFromPencil ( ETree *etree, IV *frontOwnersIV, │ │ │ │ │ Pencil *pencil, int stats[], int msglvl, │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ - 6 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 6 MPI : DRAFT October 11, 2021 │ │ │ │ │ ThesemethodsareusedinplaceoftheSymbfac initFrom{InpMtx,Pencil}()methodstocomputethe │ │ │ │ │ symbolic factorization. The ETree object is assumed to be replicated over the processes. The InpMtx │ │ │ │ │ and Pencil objects are partitioned among the processes. Therefore, to compute the IVL object that │ │ │ │ │ contains the symbolic factorization is a distributed, cooperative process. At the end of the symbolic │ │ │ │ │ factorization, each process will own a portion of the IVL object. The IVL object is neither replicated │ │ │ │ │ nor partitioned (except in trivial cases), but the IVL object on each process contains just a portion, │ │ │ │ │ usually not much more than what it needs to know for its part of the factorization and solves. │ │ │ │ │ @@ -247,15 +247,15 @@ │ │ │ │ │ cpus[0] – initialize fronts cpus[7] – extract postponed data │ │ │ │ │ cpus[1] – load original entries cpus[8] – store factor entries │ │ │ │ │ cpus[2] – update fronts cpus[9] – post initial receives │ │ │ │ │ cpus[3] – insert aggregate data cpus[10] – check for received messages │ │ │ │ │ cpus[4] – assemble aggregate data cpus[11] – post initial sends │ │ │ │ │ cpus[5] – assemble postponed data cpus[12] – check for sent messages │ │ │ │ │ cpus[6] – factor fronts │ │ │ │ │ - MPI : DRAFT December 20, 2018 7 │ │ │ │ │ + MPI : DRAFT October 11, 2021 7 │ │ │ │ │ Onreturn, the stats[] vector has the following information. │ │ │ │ │ stats[0] — #ofpivots │ │ │ │ │ stats[1] — #ofpivot tests │ │ │ │ │ stats[2] — #ofdelayed rows and columns │ │ │ │ │ stats[3] — #ofentries in D │ │ │ │ │ stats[4] — #ofentries in L │ │ │ │ │ stats[5] — #ofentries in U │ │ │ │ │ @@ -293,15 +293,15 @@ │ │ │ │ │ Error checking: If frontmtx, frontOwnersIV or stats is NULL, or if firsttag < 0 or firsttag + │ │ │ │ │ nproc, is larger than the largest available tag, or if msglvl > 0 and msgFile is NULL, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 3. void IV_MPI_allgather ( IV *iv, IV *ownersIV, int stats[], int msglvl, │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ After a factorization with pivoting, the frontsizesIVobject needs to be made globalon eachprocessor. │ │ │ │ │ This methods takes the individual entries of an IV object whose owners are specified by the ownersIV │ │ │ │ │ - 8 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 8 MPI : DRAFT October 11, 2021 │ │ │ │ │ object, and communicates the entries around the processors until the global IV object is present on │ │ │ │ │ each. The messagesthat will be sent require at most nprocconsecutive tags — the first is the parameter │ │ │ │ │ firsttag. │ │ │ │ │ Error checking: If iv, ownersIV or stats is NULL, or if firsttag < 0 or firsttag + nproc, is larger │ │ │ │ │ than the largest available tag, or if msglvl > 0 and msgFile is NULL, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 4. void IVL_MPI_allgather ( IVL *ivl, IV *ownersIV, int stats[], int msglvl, │ │ │ │ │ @@ -334,15 +334,15 @@ │ │ │ │ │ stats[4] — #ofsolution messages received │ │ │ │ │ stats[5] — #ofaggregatemessages received │ │ │ │ │ stats[6] — #ofsolution bytes received │ │ │ │ │ stats[7] — #ofaggregatebytes received │ │ │ │ │ Error checking: If frontmtx, mtxX,mtxB, mtxmanager,solvemap,cpusorstatsisNULL,oriffirsttag │ │ │ │ │ < 0 or firsttag + 2*nfront is larger than the largest available tag, or if msglvl > 0 and msgFile │ │ │ │ │ is NULL, an error message is printed and the program exits. │ │ │ │ │ - MPI : DRAFT December 20, 2018 9 │ │ │ │ │ + MPI : DRAFT October 11, 2021 9 │ │ │ │ │ 1.2.7 Matrix-matrix multiply methods │ │ │ │ │ The usual sequence of events is as follows. │ │ │ │ │ • Set up the data structure via a call to MatMul MPI setup(). │ │ │ │ │ • Convert the local Aq matrix to local indices via a call to MatMul setLocalIndices(). │ │ │ │ │ • Compute the matrix-matrix multiply with a call to MatMul MPI mmm(). Inside this method, the MPI │ │ │ │ │ methods DenseMtx MPI gatherRows()and DenseMtx MPI scatterAddRows()are called, along with a │ │ │ │ │ serial InpMtx matrix-matrix multiply method. │ │ │ │ │ @@ -371,15 +371,15 @@ │ │ │ │ │ 2. void MatMul_setLocalIndices ( MatMulInfo *info, InpMtx *A ) ; │ │ │ │ │ void MatMul_setGlobalIndices ( MatMulInfo *info, InpMtx *A ) ; │ │ │ │ │ The first method maps the indices of A (which are assumed to be global) into local indices. The second │ │ │ │ │ method maps the indices of A (which are assumed to be local) back into global indices. It uses the │ │ │ │ │ XmapIV, XsupIV YmapIV and YsupIV objects that are contained in the info object. These are serial │ │ │ │ │ methods, performed independently on each processor. │ │ │ │ │ Error checking: If info or A is NULL, an error message is printed and the program exits. │ │ │ │ │ - 10 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 10 MPI : DRAFT October 11, 2021 │ │ │ │ │ 3. void MatMul_MPI_mmm ( MatMulInfo *info, DenseMtx *Yloc, double alpha[], InpMtx *A, │ │ │ │ │ DenseMtx *Xloc, int stats[], int msglvl, FILE *msgFile, MPI_Comm comm) ; │ │ │ │ │ This method computes a distributed matrix-matrix multiply Y := Y + αAX, Y := Y + αATX or │ │ │ │ │ H │ │ │ │ │ Y := Y +αA X, depending on how the info object was set up. NOTE: A must have local indices, │ │ │ │ │ use MatMul setLocalIndices() to convert from global to local indices. Xloc and Yloc contain the │ │ │ │ │ owned rows of X and Y, respectively. │ │ │ │ │ @@ -413,15 +413,15 @@ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 4. IV * IV_MPI_Bcast ( IV *obj, int root, │ │ │ │ │ int msglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ This method is a broadcast method for an IV object. The root processor broadcasts its IV object to │ │ │ │ │ the other nodes and returns a pointer to its IV object. A node other than root, clears the data in its │ │ │ │ │ IV object, receives the IV object from the root and returns a pointer to it. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ - MPI : DRAFT December 20, 2018 11 │ │ │ │ │ + MPI : DRAFT October 11, 2021 11 │ │ │ │ │ 1.2.9 Utility methods │ │ │ │ │ 1. IVL * InpMtx_MPI_fullAdjacency ( InpMtx *inpmtx, int stats[], │ │ │ │ │ int msglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ IVL * Pencil_MPI_fullAdjacency ( Pencil *pencil, int stats[], │ │ │ │ │ int msglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ These methods are used to return an IVL object that contains the full adjacency structure of the │ │ │ │ │ graph of the matrix or matrix pencil. The matrix or matrix pencil is distributed among the processes, │ │ │ │ │ @@ -458,15 +458,15 @@ │ │ │ │ │ IVL_MPI_alltoall ( IVL *sendIVL, IVL *recvIVL, int stats[], int msglvl, │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ This method is used during the setup for matrix-vector multiplies. Each processor has computed │ │ │ │ │ the vertices it needs from other processors, these lists are contained in sendIVL. On return, recvIVL │ │ │ │ │ contains the lists of vertices this processor must send to all others. │ │ │ │ │ This method uses tags in the range [tag,tag+nproc-1). On return, the following statistics will have │ │ │ │ │ been added. │ │ │ │ │ - 12 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 12 MPI : DRAFT October 11, 2021 │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ This method is safe in the sense that it uses only MPI Sendrecv(). │ │ │ │ │ Error checking: If sendIVL or stats is NULL, or if msglvl > 0 and msgFile is NULL, or if tag < 0 │ │ │ │ │ or tag + nproc is larger than the largest available tag, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 5. void * makeSendRecvIVLs ( IV *supportedIV, IV *globalmapIV, IVL *sendIVL, IVL *recvIVL, │ │ │ │ │ @@ -497,15 +497,15 @@ │ │ │ │ │ the matrix, factoring the matrix, and solving the system. Use the script file do AllInOne for testing. │ │ │ │ │ The files names for the matrix and right hand side entries are hardcoded. Processor q reads in matrix │ │ │ │ │ entries from file matrix.q.input and right hand side entries from file rhs.q.input. The format for │ │ │ │ │ the matrix files is as follows: │ │ │ │ │ neqns neqns nent │ │ │ │ │ irow jcol entry │ │ │ │ │ ... ... ... │ │ │ │ │ - MPI : DRAFT December 20, 2018 13 │ │ │ │ │ + MPI : DRAFT October 11, 2021 13 │ │ │ │ │ where neqns is the global number of equations and nent is the number of entries in this file. There │ │ │ │ │ follows nent lines, each containing a row index, a column index and one or two floating point numbers, │ │ │ │ │ one if real, two if complex. The format for the right hand side file is similar: │ │ │ │ │ nrow nrhs │ │ │ │ │ irow entry ... entry │ │ │ │ │ ... ... ... ... │ │ │ │ │ where nrow is the number of rows in this file and nrhs is the number of rigght and sides. There follows │ │ │ │ │ @@ -540,15 +540,15 @@ │ │ │ │ │ one if real, two if complex. The format for the right hand side file is similar: │ │ │ │ │ nrow nrhs │ │ │ │ │ irow entry ... entry │ │ │ │ │ ... ... ... ... │ │ │ │ │ where nrow is the number of rows in this file and nrhs is the number of rigght and sides. There follows │ │ │ │ │ nrow lines, each containing a row index and either nrhs or 2*nrhs floating point numbers, the first if │ │ │ │ │ real, the second if complex. Use the script file do patchAndGo for testing. │ │ │ │ │ - 14 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 14 MPI : DRAFT October 11, 2021 │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ │ • The type parameter specifies whether the linear system is real (type = 1) or complex (type = │ │ │ │ │ 2). │ │ │ │ │ • nrow is the number of rows in X. │ │ │ │ │ • ncol is the number of columns in X. │ │ │ │ │ • inc1 is the row increment for X. │ │ │ │ │ • inc2 is the column increment for X. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ - MPI : DRAFT December 20, 2018 15 │ │ │ │ │ + MPI : DRAFT October 11, 2021 15 │ │ │ │ │ 4. testGraph_Bcast msglvl msgFile type nvtx nitem root seed │ │ │ │ │ This driver program tests the distributed Graph MPI Bcast() method. Processor root generates a │ │ │ │ │ random graph of type type (see the documentation for the Graph object in chapter ??) with nvtx │ │ │ │ │ vertices. The random graph is constructed via an InpMtx object using nitem edges. Processor root │ │ │ │ │ then sends its Graph object to the other processors. Each processor computes a checksum for its object, │ │ │ │ │ and the error are collected on processor 0. Use the script file do Graph Bcast for testing. │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ @@ -625,15 +625,15 @@ │ │ │ │ │ • The n3 parameter is the number of grid points in the third direction. │ │ │ │ │ • The maxzeros parameter is the maximum number of zero entries allowed in a front. │ │ │ │ │ • The maxsize parameter is the maximum number of internal rows and columns allowed in a front. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The type parameter specifies whether the linear system is real or complex. Use 1 for real and 2 │ │ │ │ │ for complex. │ │ │ │ │ • The symmetryflag parameter denotes the presence or absence of symmetry. │ │ │ │ │ - 16 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 16 MPI : DRAFT October 11, 2021 │ │ │ │ │ – Use 0 for a real or complex symmetric matrix A. A (UT + I)D(I + U) factorization is │ │ │ │ │ computed. │ │ │ │ │ – Use 1 for a complex Hermitian matrix A. A (UH +I)D(I +U) factorization is computed. │ │ │ │ │ – Use 2 for a real or complex nonsymmetric matrix A. A (L + I)D(I + U) factorization is │ │ │ │ │ computed. │ │ │ │ │ • The sparsityflag parameter denotes a direct or approximate factorization. Valid values are 0 │ │ │ │ │ for a direct factorization and 1 is for an approximate factorization. │ │ │ │ │ @@ -671,15 +671,15 @@ │ │ │ │ │ IVL object with nproc lists. List iproc contains a set of ids of items that this processor will receive │ │ │ │ │ from processor iproc. The processors then call IVL MPI allgather to create their “send” IVL object, │ │ │ │ │ where list iproc contains a set of ids of items that this processor will send to processor iproc. The set │ │ │ │ │ of lists in all the “receive” IVL objects is exactly the same as the set of lists in all the “send” objects. │ │ │ │ │ This is an “all-to-all” scatter/gather operation. Had the lists be stored contiguously or at least in one │ │ │ │ │ block of storage, we could have used the MPI Alltoallv() method. │ │ │ │ │ Use the script file do IVL alltoall for testing. │ │ │ │ │ - MPI : DRAFT December 20, 2018 17 │ │ │ │ │ + MPI : DRAFT October 11, 2021 17 │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The n parameter is an upper bound on list size and element value. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 8. testIVL_allgather msglvl msgFile nlist seed │ │ │ │ │ This driver program tests the distributed IVL MPI allgather() method. Each processor generates │ │ │ │ │ @@ -716,15 +716,15 @@ │ │ │ │ │ local coordinates. The matrix-matrix multiply is computed, and then all the Yq local matrices are │ │ │ │ │ gathered onto processor zero into Y , which is then compared with Z that was computed using a serial │ │ │ │ │ matrix-matrix multiply. The error is written to the message file by processor zero. Use the script file │ │ │ │ │ do MMM for testing. │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ - 18 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 18 MPI : DRAFT October 11, 2021 │ │ │ │ │ • The nrowA parameter is the number of rows in A. │ │ │ │ │ • The ncolA parameter is the number of columns in A. │ │ │ │ │ • The nentA parameter is the number of entries to be put into A. │ │ │ │ │ • The nrowX parameter is the number of rows in X. │ │ │ │ │ • The coordTypeparameter defines the coordinate type that will be used during the redistribution. │ │ │ │ │ Valid values are 1 for rows, 2 for columns and 3 for chevrons. │ │ │ │ │ • The inputMode parameter defines the mode of input. Valid values are 1 for real entries and 2 for │ │ │ │ │ @@ -759,15 +759,15 @@ │ │ │ │ │ This driver program tests the distributed InpMtx MPI splitFromGlobal() method to split a InpMtx │ │ │ │ │ sparse matrix object. Process root reads in the InpMtx object. A random map is generated (the same │ │ │ │ │ maponall processes) and the object is scattered from processor root to the other processors. Use the │ │ │ │ │ script file do ScatterInpMtx for testing. │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ - MPI : DRAFT December 20, 2018 19 │ │ │ │ │ + MPI : DRAFT October 11, 2021 19 │ │ │ │ │ • The neqns parameter is the number of equations for the matrix. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The coordTypeparameter defines the coordinate type that will be used during the redistribution. │ │ │ │ │ Valid values are 1 for rows, 2 for columns and 3 for chevrons. │ │ │ │ │ • The inputMode parameter defines the mode of input. Valid values are 0 for indices only, 1 for │ │ │ │ │ real entries and 2 for complex entries. │ │ │ │ │ • The inInpMtxFile parameter is the name of the file that contain the InpMtx object. │ │ │ │ │ @@ -802,15 +802,15 @@ │ │ │ │ │ • The inputMode parameter defines the mode of input. Valid values are 0 for indices only, 1 for │ │ │ │ │ real entries and 2 for complex entries. │ │ │ │ │ • The inInpMtxFile parameter is the name of the file that contain the InpMtx object. │ │ │ │ │ 15. testSymbFac msglvl msgFile inGraphFile inETreeFile seed │ │ │ │ │ This driver program tests the distributed SymbFac MPI initFromInpMtx() method that forms a IVL │ │ │ │ │ object that contains the necessary parts of a symbolic factorization for each processor. The pro- │ │ │ │ │ gram reads in the global Graph and ETree objects. Each processor creates a global InpMtx object │ │ │ │ │ - 20 MPI : DRAFT December 20, 2018 │ │ │ │ │ + 20 MPI : DRAFT October 11, 2021 │ │ │ │ │ from the structure of the graph and computes a global symbolic factorization object using the serial │ │ │ │ │ SymbFac initFromInpMtx() method. The processors then compute a map from fronts to processors, │ │ │ │ │ and each processor throws away the unowned matrix entries from the InpMtx object. The processors │ │ │ │ │ then compute their necessary symbolic factorizations in parallel. For a check, they compare the two │ │ │ │ │ symbolic factorizations for error. Use the script file do symbfac for testing. │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ ├── ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ ├── MSMD.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMR8 CMTI10 CMMI10 │ │ │ │ %%+ CMBX10 CMR6 CMR9 CMTT9 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o MSMD.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -769,22 +769,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -958,88 +958,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4973,16 +4962,16 @@ │ │ │ │ 51 3[51 51 4[51 1[51 51 51 3[51 13[51 5[51 3[51 4[51 │ │ │ │ 68[{}15 99.6264 /CMTT12 rf /Fc 131[112 1[50 59 59 1[59 │ │ │ │ 62 44 44 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 50 │ │ │ │ 62 54 11[86 5[84 5[42 3[74 2[80 7[31 4[56 56 56 56 56 │ │ │ │ 2[31 33[62 12[{}37 99.6264 /CMBX12 rf /Fd 134[71 2[71 │ │ │ │ 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 60 │ │ │ │ 75 65 13[75 2[92 11[103 14[67 67 67 67 67 2[37 46[{}29 │ │ │ │ -119.552 /CMBX12 rf /Fe 141[36 4[76 7[40 1[40 51 29[69 │ │ │ │ -9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ +119.552 /CMBX12 rf /Fe 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Ff 141[39 12[39 16[39 14[39 69[{}4 74.7198 /CMTT9 rf │ │ │ │ /Fg 133[34 41 41 55 41 1[30 30 30 1[43 38 43 64 21 41 │ │ │ │ 23 21 43 1[23 34 43 34 43 38 12[55 37[21 1[21 31[43 12[{}27 │ │ │ │ 74.7198 /CMR9 rf /Fh 206[30 49[{}1 49.8132 /CMR6 rf /Fi │ │ │ │ 132[52 6[41 4[52 58 46[49 63[{}5 90.9091 /CMBX10 rf /Fj │ │ │ │ 148[47 6[47 100[{}2 90.9091 /CMMI10 rf /Fk 134[44 2[42 │ │ │ │ 49 30 37 38 1[46 46 51 1[23 42 28 28 46 42 1[42 46 42 │ │ │ │ @@ -5061,17 +5050,17 @@ │ │ │ │ 0 5230 1560 4 v 104 5284 a Fh(1)138 5316 y Fg(The)24 │ │ │ │ b Ff(ETree)g Fg(ob)t(ject)g(has)f(the)g Ff(Tree)h Fg(ob)t(ject)g(that)f │ │ │ │ (de\014nes)f(the)h(connectivit)n(y)g(of)h(the)e(fron)n(ts,)j(kno)n(ws)e │ │ │ │ (the)g(in)n(ternal)g(and)g(external)0 5407 y(size)k(of)f(eac)n(h)g │ │ │ │ (fron)n(t,)g(and)f(has)h(a)g(map)g(from)g(the)g(v)n(ertices)g(to)g(the) │ │ │ │ f(fron)n(ts.)1927 5656 y Fo(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1099 4 v │ │ │ │ -1280 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2802 100 V 0 399 a Fo(W)-8 b(e)32 b(in)m(tend)e(to)h(add)f(more)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1135 4 v │ │ │ │ +1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2766 100 V 0 399 a Fo(W)-8 b(e)32 b(in)m(tend)e(to)h(add)f(more)g │ │ │ │ (priorities,)h(e.g.,)h(appro)m(ximate)g(de\014ciency)e(from)g([)p │ │ │ │ Fi(?)q Fo(],)h([)p Fi(?)p Fo(])g(and)f([)p Fi(?)p Fo(].)141 │ │ │ │ 534 y(Cho)s(ose)37 b(a)h(priorit)m(y)-8 b(,)40 b(then)d(sp)s(ecify)g │ │ │ │ (the)h(de\014nition)f(of)h(a)f Fk(step)p Fo(,)j(ho)m(w)e(to)g(c)m(ho)s │ │ │ │ (ose)g(an)g(indep)s(enden)m(t)e(set)i(of)0 647 y(v)m(ertices)32 │ │ │ │ b(to)g(eliminate)g(at)f(a)g(time.)42 b(Then)29 b(pro)m(vide)i(a)g(map)f │ │ │ │ (from)g(eac)m(h)i(v)m(ertex)g(to)f(the)g Fk(stage)g Fo(at)g(whic)m(h)f │ │ │ │ @@ -5132,17 +5121,17 @@ │ │ │ │ (ob)5 b(ject.)136 5294 y Fm(\017)46 b Fn(MSMDinfo)25 │ │ │ │ b Fo(:)39 b(an)27 b(ob)5 b(ject)28 b(that)f(comm)m(unicate)i(parameter) │ │ │ │ f(c)m(hoices)g(from)f(the)g(caller)h(to)g(the)f Fn(MSMD)f │ │ │ │ Fo(ob)5 b(ject)227 5407 y(and)30 b(information)h(and)e(statistics)k │ │ │ │ (from)d(the)g Fn(MSMD)f Fo(ob)5 b(ject)32 b(to)f(the)f(caller.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1099 4 v 1280 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2755 100 V 1099 w Fo(3)136 399 y Fm(\017)46 b Fn(MSMDstageInfo)25 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2719 100 V 1135 w Fo(3)136 399 y Fm(\017)46 b Fn(MSMDstageInfo)25 │ │ │ │ b Fo(:)40 b(an)28 b(ob)5 b(ject)29 b(that)g(con)m(tains)h(statistics)g │ │ │ │ (for)e(a)h(stage)h(of)e(elimination,)i(e.g.,)h(n)m(um)m(b)s(er)c(of)227 │ │ │ │ 511 y(steps,)k(n)m(um)m(b)s(er)e(of)h(v)m(ertices)i(eliminated,)g(w)m │ │ │ │ (eigh)m(t)g(of)f(v)m(ertices)h(eliminated,)f(etc.)136 │ │ │ │ 702 y Fm(\017)46 b Fn(MSMDvtx)29 b Fo(:)40 b(an)31 b(ob)5 │ │ │ │ b(ject)31 b(that)g(mo)s(dels)f(a)h(v)m(ertex.)0 917 y(A)f(user)g(needs) │ │ │ │ g(to)h(understand)e(the)h Fn(MSMDinfo)e Fo(ob)5 b(ject,)32 │ │ │ │ @@ -5202,17 +5191,17 @@ │ │ │ │ (ultiple)f(minim)m(um)e(degree.)330 5294 y Fi({)45 b │ │ │ │ Fn(stepType)h(>)h(1)22 b Fo(|)g(an)g(indep)s(enden)m(t)f(set)i(of)f(v)m │ │ │ │ (ertices)i(is)e(eliminated)i(whose)e(priorities)g(lie)h(b)s(et)m(w)m │ │ │ │ (een)427 5407 y(the)31 b(minim)m(um)e(priorit)m(y)i(and)f(the)h(minim)m │ │ │ │ (um)e(priorit)m(y)i(m)m(ultiplied)g(b)m(y)f Fn(stepType)p │ │ │ │ Fo(.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1099 4 v │ │ │ │ -1280 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2802 100 V 227 399 a Fo(The)f(default)h(v)-5 b(alue)31 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1135 4 v │ │ │ │ +1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2766 100 V 227 399 a Fo(The)f(default)h(v)-5 b(alue)31 │ │ │ │ b(is)f Fn(1)p Fo(,)g(m)m(ultiple)h(elimination)h(of)f(v)m(ertices)h │ │ │ │ (with)e(minim)m(um)f(priorit)m(y)-8 b(.)136 625 y Fm(\017)46 │ │ │ │ b Fn(int)h(seed)26 b Fo(|)g(a)h(seed)g(used)f(for)h(a)g(random)f(n)m │ │ │ │ (um)m(b)s(er)f(generator,)k(this)e(in)m(tro)s(duces)f(a)i(necessary)f │ │ │ │ (random)227 738 y(elemen)m(t)32 b(to)f(the)g(ordering.)136 │ │ │ │ 964 y Fm(\017)46 b Fn(int)h(msglvl)33 b Fo({)i(message)g(lev)m(el)h │ │ │ │ (for)e(statistics,)k(diagnostics)e(and)d(monitoring.)54 │ │ │ │ @@ -5257,17 +5246,17 @@ │ │ │ │ Fo(ob)5 b(jects)31 b(that)g(represen)m(t)g(the)f(v)m(ertices.)136 │ │ │ │ 5181 y Fm(\017)46 b Fn(IV)h(ivtmpIV)29 b Fo({)i Fn(IV)e │ │ │ │ Fo(ob)5 b(ject)32 b(that)f(holds)e(an)i(in)m(teger)g(temp)s(orary)f(v)m │ │ │ │ (ector.)136 5407 y Fm(\017)46 b Fn(IV)h(reachIV)29 b │ │ │ │ Fo({)i Fn(IV)e Fo(ob)5 b(ject)32 b(that)f(holds)e(the)i(reac)m(h)g(v)m │ │ │ │ (ector.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1099 4 v 1280 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2755 100 V 1099 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2719 100 V 1135 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ b Fc(:)50 b(statistics)38 b(ob)6 b(ject)37 b(for)h(a)f(stage)h(of)g │ │ │ │ (the)f(elimination)0 596 y Fo(This)30 b(ob)5 b(ject)31 │ │ │ │ b(stores)g(information)f(ab)s(out)g(the)h(elimination)h(pro)s(cess)e │ │ │ │ (at)h(a)g(stage)g(of)g(the)f(elimination.)136 838 y Fm(\017)46 │ │ │ │ b Fn(int)h(nstep)29 b Fo(|)h(n)m(um)m(b)s(er)f(of)i(elimination)h │ │ │ │ (steps)e(in)g(this)g(stage)136 1028 y Fm(\017)46 b Fn(int)h(nfront)29 │ │ │ │ b Fo(|)h(n)m(um)m(b)s(er)f(of)i(fron)m(ts)f(created)h(at)h(this)e │ │ │ │ @@ -5309,17 +5298,17 @@ │ │ │ │ h(\(priorit)m(y\))h(heap)330 5112 y Fi({)45 b Fn('R')30 │ │ │ │ b Fo({)h(v)m(ertex)g(on)f(reac)m(h)h(set)330 5260 y Fi({)45 │ │ │ │ b Fn('I')30 b Fo({)h(v)m(ertex)g(found)e(to)i(b)s(e)f │ │ │ │ (indistinguishable)g(to)h(another)330 5407 y Fi({)45 │ │ │ │ b Fn('B')30 b Fo({)h(b)s(oundary)d(v)m(ertex,)k(to)f(b)s(e)e │ │ │ │ (eliminated)j(in)e(another)h(stage)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1099 4 v │ │ │ │ -1280 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2802 100 V 136 399 a Fm(\017)46 b Fn(int)h(stage)29 b │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1135 4 v │ │ │ │ +1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2766 100 V 136 399 a Fm(\017)46 b Fn(int)h(stage)29 b │ │ │ │ Fo(|)h(stage)i(of)f(the)f(v)m(ertex.)42 b(Stage)32 b(0)e(no)s(des)g │ │ │ │ (are)h(eliminated)g(b)s(efore)f(stage)i(1)f(no)s(des,)e(etc.)136 │ │ │ │ 581 y Fm(\017)46 b Fn(int)h(wght)29 b Fo(|)i(w)m(eigh)m(t)g(of)g(the)g │ │ │ │ (v)m(ertex)136 763 y Fm(\017)46 b Fn(int)h(nadj)29 b │ │ │ │ Fo(|)i(size)g(of)f(the)h Fn(adj)e Fo(v)m(ector)136 945 │ │ │ │ y Fm(\017)46 b Fn(int)h(*adj)27 b Fo(|)i(for)f(an)g(uneliminated)g(v)m │ │ │ │ (ertex,)j Fn(adj)c Fo(p)s(oin)m(ts)h(to)h(a)g(list)g(of)g(unco)m(v)m │ │ │ │ @@ -5376,17 +5365,17 @@ │ │ │ │ (a)h(call)g(to)g Fn(MSMDinfo)p 2440 5147 V 32 w(clearData\(\))d │ │ │ │ Fo(then)i(free's)g(the)g(storage)227 5260 y(for)h(the)h(structure)f │ │ │ │ (with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 5407 y │ │ │ │ Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(info)g │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1099 4 v 1280 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2755 100 V 1099 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2719 100 V 1135 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)0 596 y Fo(There)30 b(are)h(t)m(w)m(o)g(utilit)m(y)h │ │ │ │ (metho)s(ds,)e(one)h(to)g(prin)m(t)f(the)g(ob)5 b(ject,)32 │ │ │ │ b(one)f(to)g(c)m(hec)m(k)h(to)f(see)g(if)f(it)h(is)f(v)-5 │ │ │ │ b(alid.)111 835 y(1.)46 b Fn(void)h(MSMDinfo_print)d(\()j(MSMDinfo)f │ │ │ │ (*info,)g(FILE)h(*fp)f(\))i(;)227 986 y Fo(This)30 b(metho)s(d)g(prin)m │ │ │ │ (ts)g(out)g(the)h(information)f(to)h(a)g(\014le.)227 │ │ │ │ 1137 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ @@ -5439,17 +5428,17 @@ │ │ │ │ (a)g(call)i(to)e Fn(MSMD)p 2282 5143 V 34 w(clearData\(\))c │ │ │ │ Fo(then)k(free's)g(the)h(storage)g(for)227 5256 y(the)d(structure)f │ │ │ │ (with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 5407 y │ │ │ │ Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(msmd)g │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1099 4 v │ │ │ │ -1280 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2802 100 V 0 399 a Fc(1.3.2)112 b(Initialization)39 b(metho)s(ds)f(|)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1135 4 v │ │ │ │ +1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2766 100 V 0 399 a Fc(1.3.2)112 b(Initialization)39 b(metho)s(ds)f(|)g │ │ │ │ (public)0 595 y Fo(There)30 b(is)g(one)h(initialization)i(metho)s(d.) │ │ │ │ 111 834 y(1.)46 b Fn(void)h(MSMD_init)e(\()j(MSMD)e(*msmd,)g(Graph)h │ │ │ │ (*graph,)f(int)g(stages[],)g(MSMD)g(*info)h(\))g(;)227 │ │ │ │ 985 y Fo(This)35 b(metho)s(d)h(initializes)i(the)e Fn(MSMD)f │ │ │ │ Fo(ob)5 b(ject)37 b(prior)e(to)i(an)e(ordering.)58 b(It)36 │ │ │ │ b(is)g(called)h(b)m(y)f Fn(MSMD)p 3539 985 29 4 v 33 │ │ │ │ w(order\(\))227 1098 y Fo(metho)s(d,)25 b(and)f(so)h(it)f(is)h(curren)m │ │ │ │ @@ -5516,17 +5505,17 @@ │ │ │ │ Fo(,)e(this)h(metho)s(d)g(\014lls)g(the)g Fn(IV)f Fo(ob)5 │ │ │ │ b(ject)34 b(with)f(the)h(new-to-old)g(p)s(erm)m(utation)227 │ │ │ │ 5407 y(of)i(the)f(v)m(ertices,)j(resizing)e(the)f Fn(IV)g │ │ │ │ Fo(ob)5 b(ject)36 b(if)f(necessary)-8 b(.)56 b(If)34 │ │ │ │ b Fn(oldToNewIV)f Fo(is)i(not)g Fn(NULL)p Fo(,)f(this)h(metho)s(d)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1099 4 v 1280 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2755 100 V 1099 w Fo(9)227 399 y(\014lls)i(the)h Fn(IV)f │ │ │ │ +TeXDict begin 9 8 bop 91 100 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2719 100 V 1135 w Fo(9)227 399 y(\014lls)i(the)h Fn(IV)f │ │ │ │ Fo(ob)5 b(ject)35 b(with)f(the)g(old-to-new)i(p)s(erm)m(utation)e(of)h │ │ │ │ (the)f(v)m(ertices,)k(resizing)d(the)f Fn(IV)g Fo(ob)5 │ │ │ │ b(ject)35 b(if)227 511 y(necessary)-8 b(.)227 661 y Fk(Err)j(or)33 │ │ │ │ b(che)-5 b(cking:)40 b Fo(If)28 b Fn(msmd)g Fo(is)h Fn(NULL)p │ │ │ │ Fo(,)f(or)h(if)g Fn(newToOldIV)d Fo(and)j Fn(oldToNewIV)d │ │ │ │ Fo(is)j Fn(NULL)p Fo(,)f(an)h(error)g(message)227 774 │ │ │ │ y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ @@ -5584,17 +5573,17 @@ │ │ │ │ 29 4 v 33 w(cleanSubtreeList\(\))37 b Fo(and)227 5258 │ │ │ │ y Fn(MSMD)p 425 5258 V 34 w(clearEdgeList\(\))p Fo(.)227 │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ b Fn(msmd)g Fo(or)g Fn(info)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1076 4 │ │ │ │ -v 1258 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Decem)m(b)s(er)h(20,)h(2018) │ │ │ │ -p 2825 100 V 111 399 a Fo(6.)46 b Fn(void)h(MSMD_cleanSubtreeList)42 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1112 4 │ │ │ │ +v 1294 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(11,)i(2021)p │ │ │ │ +2789 100 V 111 399 a Fo(6.)46 b Fn(void)h(MSMD_cleanSubtreeList)42 │ │ │ │ b(\()47 b(MSMD)g(*msmd,)f(MSMDvtx)g(*v,)h(MSMD)f(*info)h(\))g(;)227 │ │ │ │ 547 y Fo(This)34 b(metho)s(d)h(cleans)h(the)f(list)h(of)f(subtrees)f │ │ │ │ (for)h(v)m(ertex)h Fn(v)p Fo(,)g(remo)m(ving)g(an)m(y)f(no)s(de)g(whic) │ │ │ │ m(h)f(is)h(no)g(longer)227 660 y(the)c(ro)s(ot)g(of)f(a)h(subtree)f(of) │ │ │ │ g(eliminated)i(no)s(des.)227 809 y Fk(Err)-5 b(or)30 │ │ │ │ b(che)-5 b(cking:)38 b Fo(If)25 b Fn(msmd)p Fo(,)h Fn(v)f │ │ │ │ Fo(or)h Fn(info)e Fo(is)i Fn(NULL)p Fo(,)f(an)g(error)h(message)h(is)e │ │ │ │ @@ -5659,17 +5648,17 @@ │ │ │ │ b(metho)s(d)g(prin)m(ts)g(a)g(h)m(uman-readable)h(represen)m(tation)g │ │ │ │ (of)g(a)f(v)m(ertex,)i(used)e(for)g(debugging.)227 5407 │ │ │ │ y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b │ │ │ │ Fn(v)g Fo(or)h Fn(fp)f Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h │ │ │ │ (is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1076 4 v 1257 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2732 100 V 1076 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1112 4 v 1293 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2696 100 V 1112 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ b(programs)g(for)f(the)g Fa(MSMD)e Fd(ob)7 b(ject)0 631 │ │ │ │ y Fo(This)30 b(section)h(con)m(tains)h(brief)e(descriptions)g(of)g │ │ │ │ (four)g(driv)m(er)g(programs.)111 881 y(1.)46 b Fn(orderViaMMD)f │ │ │ │ (msglvl)h(msgFile)g(inGraphFile)f(seed)h(compressFlag)f(prioType)370 │ │ │ │ 994 y(stepType)h(outOldToNewIVfile)d(outNewToOldIVfile)g(outETreeFile) │ │ │ │ 227 1149 y Fo(This)28 b(driv)m(er)g(program)g(orders)f(a)i(graph)f │ │ │ │ (using)f(the)i(m)m(ultiple)g(minim)m(um)e(degree)i(algorithm)g(|)f │ │ │ │ @@ -5731,20 +5720,20 @@ │ │ │ │ Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 5294 │ │ │ │ y(the)34 b(old-to-new)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ b(If)34 b Fn(outOldToNewIVfile)29 b Fo(is)34 b Fn("none")p │ │ │ │ Fo(,)f(then)g(there)h(is)g(no)427 5407 y(output,)d(otherwise)f │ │ │ │ Fn(outOldToNewIVfile)c Fo(m)m(ust)k(b)s(e)g(of)g(the)h(form)f │ │ │ │ Fn(*.ivf)f Fo(or)h Fn(*.ivb)p Fo(.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1076 │ │ │ │ -4 v 1258 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2825 100 V 336 399 a Fm(\017)46 b Fo(The)38 b │ │ │ │ -Fn(outNewToOldIVfile)c Fo(parameter)39 b(is)f(the)h(output)f(\014le)h │ │ │ │ -(for)f(the)h Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 │ │ │ │ -511 y(the)34 b(new-to-old)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1112 │ │ │ │ +4 v 1294 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(11,)i(2021)p │ │ │ │ +2789 100 V 336 399 a Fm(\017)46 b Fo(The)38 b Fn(outNewToOldIVfile)c │ │ │ │ +Fo(parameter)39 b(is)f(the)h(output)f(\014le)h(for)f(the)h │ │ │ │ +Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 511 │ │ │ │ +y(the)34 b(new-to-old)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ b(If)34 b Fn(outNewToOldIVfile)29 b Fo(is)34 b Fn("none")p │ │ │ │ Fo(,)f(then)g(there)h(is)g(no)427 624 y(output,)d(otherwise)f │ │ │ │ Fn(outNewToOldIVfile)c Fo(m)m(ust)k(b)s(e)g(of)g(the)h(form)f │ │ │ │ Fn(*.ivf)f Fo(or)h Fn(*.ivb)p Fo(.)336 770 y Fm(\017)46 │ │ │ │ b Fo(The)33 b Fn(outETreeFile)d Fo(parameter)j(is)g(the)h(output)f │ │ │ │ (\014le)g(for)g(the)g Fn(ETree)f Fo(ob)5 b(ject)34 b(that)f(con)m │ │ │ │ (tains)i(the)427 883 y(fron)m(t)23 b(tree)g(for)f(the)g(ordering.)38 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ • approximate external degree, (d from [?]) and [?], or │ │ │ │ │ ˜ │ │ │ │ │ • half external and half approximate, (d from [?]), or │ │ │ │ │ • a constant priority (to induce maximal independent set elimination). │ │ │ │ │ 1The ETree object has the Tree object that defines the connectivity of the fronts, knows the internal and external │ │ │ │ │ size of each front, and has a map from the vertices to the fronts. │ │ │ │ │ 1 │ │ │ │ │ - 2 MSMD : DRAFT December 20, 2018 │ │ │ │ │ + 2 MSMD : DRAFT October 11, 2021 │ │ │ │ │ We intend to add more priorities, e.g., approximate deficiency from [?], [?] and [?]. │ │ │ │ │ Choose a priority, then specify the definition of a step, how to choose an independent set of │ │ │ │ │ vertices to eliminate at a time. Then provide a map from each vertex to the stage at which it will │ │ │ │ │ be eliminated. │ │ │ │ │ Presently there is one ordering method, MSMD order(). It orders the vertices by stages, i.e. │ │ │ │ │ vertices in stage k will be ordered before vertices in stage k + 1. Inside each stage the vertices are │ │ │ │ │ ordered by steps. At each step an independent set of vertices is eliminated, and the choice is based │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ The tools are largely written so any of these three algorithms can be prototyped in a small amount │ │ │ │ │ of time and effort. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ There are four typed objects. │ │ │ │ │ • MSMD : the main object. │ │ │ │ │ • MSMDinfo : an object that communicate parameter choices from the caller to the MSMD object │ │ │ │ │ and information and statistics from the MSMD object to the caller. │ │ │ │ │ - MSMD : DRAFT December 20, 2018 3 │ │ │ │ │ + MSMD : DRAFT October 11, 2021 3 │ │ │ │ │ • MSMDstageInfo : an object that contains statistics for a stage of elimination, e.g., number of │ │ │ │ │ steps, number of vertices eliminated, weight of vertices eliminated, etc. │ │ │ │ │ • MSMDvtx : an object that models a vertex. │ │ │ │ │ Auser needs to understand the MSMDinfo object, so this is where we will start our description. │ │ │ │ │ 1.1.1 MSMDinfo : define your algorithm │ │ │ │ │ • int compressFlag – define initial and subsequent compressions of the graph. │ │ │ │ │ Wecompress a graph using a checksum technique. At some point in the elimination, vertices │ │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ │ • double stepType — define the elimination steps. │ │ │ │ │ – stepType == 0 — only one vertex of minimum priority is eliminated at each step, e.g., │ │ │ │ │ as used in SPARSPAK’s GENQMD, YSMP’s ordering, and AMD [?]. │ │ │ │ │ – stepType == 1 — an independent set of vertices of minimum priority is eliminated at │ │ │ │ │ each step, e.g., as used in GENMMD, multiple minimum degree. │ │ │ │ │ – stepType > 1—anindependentsetofvertices iseliminated whoseprioritieslie between │ │ │ │ │ the minimum priority and the minimum priority multiplied by stepType. │ │ │ │ │ - 4 MSMD : DRAFT December 20, 2018 │ │ │ │ │ + 4 MSMD : DRAFT October 11, 2021 │ │ │ │ │ The default value is 1, multiple elimination of vertices with minimum priority. │ │ │ │ │ • int seed — a seed used for a random number generator, this introduces a necessary random │ │ │ │ │ element to the ordering. │ │ │ │ │ • int msglvl – message level for statistics, diagnostics and monitoring. The default value is │ │ │ │ │ zero, no statistics. Set msglvl to one and get elimination monitoring. Increase msglvl slowly │ │ │ │ │ to get more mostly debug information. │ │ │ │ │ • FILE *msgFile – message file, default is stdout. │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ • IIheap *heap – pointer to a IIheap object that maintains the priority queue. │ │ │ │ │ • IP *baseIP – pointer to the base IP objects, used to hold subtree lists │ │ │ │ │ • IP *freeIP – pointer to the list of free IP objects │ │ │ │ │ • int incrIP – integer that holds the increment factor for the IP objects. │ │ │ │ │ • MSMDvtx *vertices – pointer to vector of MSMDvtx objects that represent the vertices. │ │ │ │ │ • IV ivtmpIV – IV object that holds an integer temporary vector. │ │ │ │ │ • IV reachIV – IV object that holds the reach vector. │ │ │ │ │ - MSMD : DRAFT December 20, 2018 5 │ │ │ │ │ + MSMD : DRAFT October 11, 2021 5 │ │ │ │ │ 1.1.3 MSMDstageInfo : statistics object for a stage of the elimination │ │ │ │ │ This object stores information about the elimination process at a stage of the elimination. │ │ │ │ │ • int nstep — number of elimination steps in this stage │ │ │ │ │ • int nfront — number of fronts created at this stage │ │ │ │ │ • int welim — weight of the vertices eliminated at this stage │ │ │ │ │ • int nfind — number of front indices │ │ │ │ │ • int nzf — number of factor entries (for a Cholesky factorization) │ │ │ │ │ @@ -148,15 +148,15 @@ │ │ │ │ │ – ’L’ – eliminated leaf vertex │ │ │ │ │ – ’E’ – eliminated interior vertex │ │ │ │ │ – ’O’ – outmatched vertex │ │ │ │ │ – ’D’ – vertex on degree (priority) heap │ │ │ │ │ – ’R’ – vertex on reach set │ │ │ │ │ – ’I’ – vertex found to be indistinguishable to another │ │ │ │ │ – ’B’ – boundary vertex, to be eliminated in another stage │ │ │ │ │ - 6 MSMD : DRAFT December 20, 2018 │ │ │ │ │ + 6 MSMD : DRAFT October 11, 2021 │ │ │ │ │ • int stage — stage of the vertex. Stage 0 nodes are eliminated before stage 1 nodes, etc. │ │ │ │ │ • int wght — weight of the vertex │ │ │ │ │ • int nadj — size of the adj vector │ │ │ │ │ • int *adj — for an uneliminated vertex, adj points to a list of uncovered adjacent edges; for │ │ │ │ │ an eliminated vertex, adj points points to a list of its boundary vertices (only valid when the │ │ │ │ │ vertex is a leaf of the elimination tree or a root of a subtree of uneliminated vertices). │ │ │ │ │ • int bndwght — for an eliminated vertex, the weight of the vertices on its boundary. │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ This method clears any data owned by the object and then sets the structure’s default fields │ │ │ │ │ with a call to MSMDinfo setDefaultFields(). │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void MSMDinfo_free ( MSMDinfo *info ) ; │ │ │ │ │ This method releases any storage by a call to MSMDinfo clearData() then free’s the storage │ │ │ │ │ for the structure with a call to free(). │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ - MSMD : DRAFT December 20, 2018 7 │ │ │ │ │ + MSMD : DRAFT October 11, 2021 7 │ │ │ │ │ 1.2.2 Utility methods │ │ │ │ │ There are two utility methods, one to print the object, one to check to see if it is valid. │ │ │ │ │ 1. void MSMDinfo_print ( MSMDinfo *info, FILE *fp ) ; │ │ │ │ │ This method prints out the information to a file. │ │ │ │ │ Error checking: If info or fp is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int MSMDinfo_isValid ( MSMDinfo *info ) ; │ │ │ │ │ This method checks that the object is valid. The return value is 1 for a valid object, 0 for an │ │ │ │ │ @@ -213,15 +213,15 @@ │ │ │ │ │ This method clears any data owned by the object, then sets the structure’s default fields with │ │ │ │ │ a call to MSMD setDefaultFields(). │ │ │ │ │ Error checking: If msmd is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void MSMD_free ( MSMD *msmd ) ; │ │ │ │ │ This method releases any storage by a call to MSMD clearData() then free’s the storage for │ │ │ │ │ the structure with a call to free(). │ │ │ │ │ Error checking: If msmd is NULL, an error message is printed and the program exits. │ │ │ │ │ - 8 MSMD : DRAFT December 20, 2018 │ │ │ │ │ + 8 MSMD : DRAFT October 11, 2021 │ │ │ │ │ 1.3.2 Initialization methods — public │ │ │ │ │ There is one initialization method. │ │ │ │ │ 1. void MSMD_init ( MSMD *msmd, Graph *graph, int stages[], MSMD *info ) ; │ │ │ │ │ This method initializes the MSMD object prior to an ordering. It is called by MSMD order() │ │ │ │ │ method, and so it is currently a private method for the object. However, when designing more │ │ │ │ │ complicated ordering methods, this object is necessary to set up the data structures. There │ │ │ │ │ are two input arguments: graph is a pointer to a Graph object that holds the adjacency lists │ │ │ │ │ @@ -249,15 +249,15 @@ │ │ │ │ │ 1.3.4 Extraction methods — public │ │ │ │ │ There are two methods to extract the ordering. The first fills one or two IV objects with the │ │ │ │ │ permutation vector(s). The second returns an ETree object that holds the front tree for the │ │ │ │ │ ordering. │ │ │ │ │ 1. void MSMD_fillPerms ( MSMD *msmd, IV *newToOldIV, IV *oldToNewIV ) ; │ │ │ │ │ If newToOldIV is not NULL, this method fills the IV object with the new-to-old permutation │ │ │ │ │ of the vertices, resizing the IV object if necessary. If oldToNewIV is not NULL, this method │ │ │ │ │ - MSMD : DRAFT December 20, 2018 9 │ │ │ │ │ + MSMD : DRAFT October 11, 2021 9 │ │ │ │ │ fills the IV object with the old-to-new permutation of the vertices, resizing the IV object if │ │ │ │ │ necessary. │ │ │ │ │ Error checking: If msmd is NULL, or if newToOldIV and oldToNewIV is NULL, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 2. ETree * MSMD_frontETree ( MSMD *msmd ) ; │ │ │ │ │ This method constructs and returns a ETree object that contains the front tree for the │ │ │ │ │ ordering. │ │ │ │ │ @@ -283,15 +283,15 @@ │ │ │ │ │ The order of the nodes in the reach set may be permuted, but any indistinguishable nodes in │ │ │ │ │ the reach set are not purged from the reach set. │ │ │ │ │ Error checking: If msmd or info is NULL, an error message is printed and the program exits. │ │ │ │ │ 5. void MSMD_cleanReachSet ( MSMD *msmd, MSMD *info ) ; │ │ │ │ │ This method cleans the nodes in the reach set by calling MSMD cleanSubtreeList() and │ │ │ │ │ MSMD clearEdgeList(). │ │ │ │ │ Error checking: If msmd or info is NULL, an error message is printed and the program exits. │ │ │ │ │ - 10 MSMD : DRAFT December 20, 2018 │ │ │ │ │ + 10 MSMD : DRAFT October 11, 2021 │ │ │ │ │ 6. void MSMD_cleanSubtreeList ( MSMD *msmd, MSMDvtx *v, MSMD *info ) ; │ │ │ │ │ This method cleans the list of subtrees for vertex v, removing any node which is no longer │ │ │ │ │ the root of a subtree of eliminated nodes. │ │ │ │ │ Error checking: If msmd, v or info is NULL, an error message is printed and the program exits. │ │ │ │ │ 7. void MSMD_cleanEdgeList ( MSMD *msmd, MSMDvtx *v, MSMD *info ) ; │ │ │ │ │ This method cleans the list of uncovered edges for vertex v, removing any edge (v,w) where │ │ │ │ │ v and w share a common adjacent subtree. │ │ │ │ │ @@ -317,15 +317,15 @@ │ │ │ │ │ the program exits. │ │ │ │ │ 1.4 Prototypes and descriptions of MSMDvtx methods │ │ │ │ │ TheMSMDvtxobject is private so would not normally be accessed by the user. There is one method │ │ │ │ │ to print out the object. │ │ │ │ │ 1. void MSMDvtx_print ( MSMDvtx *v, FILE *fp ) ; │ │ │ │ │ This method prints a human-readable representation of a vertex, used for debugging. │ │ │ │ │ Error checking: If v or fp is NULL, an error message is printed and the program exits. │ │ │ │ │ - MSMD : DRAFT December 20, 2018 11 │ │ │ │ │ + MSMD : DRAFT October 11, 2021 11 │ │ │ │ │ 1.5 Driver programs for the MSMD object │ │ │ │ │ This section contains brief descriptions of four driver programs. │ │ │ │ │ 1. orderViaMMD msglvl msgFile inGraphFile seed compressFlag prioType │ │ │ │ │ stepType outOldToNewIVfile outNewToOldIVfile outETreeFile │ │ │ │ │ This driver program orders a graph using the multiple minimum degree algorithm — exactly │ │ │ │ │ which algorithm is controlled by the input parameters. │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ @@ -355,15 +355,15 @@ │ │ │ │ │ SPARSPAK. │ │ │ │ │ – stepType == 1 — regular multiple elimination, e.g., GENMMD. │ │ │ │ │ – stepType > 1 — vertices whose priority lies between the minimum priority and │ │ │ │ │ stepType times the minimum priority are eligible for elimination at a step. │ │ │ │ │ • The outOldToNewIVfile parameter is the output file for the IV object that contains │ │ │ │ │ the old-to-new permutation vector. If outOldToNewIVfile is "none", then there is no │ │ │ │ │ output, otherwise outOldToNewIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ - 12 MSMD : DRAFT December 20, 2018 │ │ │ │ │ + 12 MSMD : DRAFT October 11, 2021 │ │ │ │ │ • The outNewToOldIVfile parameter is the output file for the IV object that contains │ │ │ │ │ the new-to-old permutation vector. If outNewToOldIVfile is "none", then there is no │ │ │ │ │ output, otherwise outNewToOldIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ • The outETreeFile parameter is the output file for the ETree object that contains the │ │ │ │ │ front tree for the ordering. If outETreeFileis "none", then there is no output, otherwise │ │ │ │ │ outETreeFile must be of the form *.etreef or *.etreeb. │ │ │ │ │ 2. orderViaND msglvl msgFile inGraphFile inDSTreeFile seed compressFlag │ │ ├── ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ ├── MT.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMMI10 CMMI7 CMEX10 CMSY10 CMTT10 │ │ │ │ %%+ CMTI10 CMSL10 CMMI12 CMBX10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o MT.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0527 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1141,22 +1141,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1330,88 +1330,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4517,16 +4506,16 @@ │ │ │ │ @start /Fa 132[48 123[{}1 83.022 /CMBX10 rf /Fb 173[74 │ │ │ │ 77 81[{}2 99.6264 /CMMI12 rf /Fc 133[50 59 59 1[59 62 │ │ │ │ 44 44 46 1[62 56 62 93 31 2[31 62 2[51 62 50 1[54 13[62 │ │ │ │ 5[106 6[70 16[56 56 56 56 56 2[31 37 45[{}29 99.6264 │ │ │ │ /CMBX12 rf /Fd 171[62 6[62 77[{}2 119.552 /CMTT12 rf │ │ │ │ /Fe 134[71 2[71 75 52 53 55 1[75 67 75 112 37 2[37 75 │ │ │ │ 67 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ -46[{}26 119.552 /CMBX12 rf /Ff 141[33 4[69 7[37 1[37 │ │ │ │ -46 29[63 9[23 1[42 5[42 42 42 3[23 44[{}12 83.022 /CMSL10 │ │ │ │ +46[{}26 119.552 /CMBX12 rf /Ff 139[32 1[33 2[42 9[37 │ │ │ │ +1[37 46 18[65 20[23 7[42 42 42 3[23 44[{}12 83.022 /CMSL10 │ │ │ │ rf /Fg 136[55 1[45 28 34 35 1[42 42 47 1[21 38 1[25 42 │ │ │ │ 38 1[38 42 38 1[42 9[83 2[59 1[61 11[54 56 63 2[62 6[25 │ │ │ │ 58[{}25 83.022 /CMTI10 rf /Fh 133[44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 1[44 1[44 1[44 1[44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 1[44 44 44 44 44 44 44 44 44 44 2[44 44 1[44 │ │ │ │ 1[44 44 44 44 44 44 44 44 44 44 44 44 1[44 1[44 44 44 │ │ │ │ @@ -4651,17 +4640,17 @@ │ │ │ │ (ultithreaded)g(solv)n(e)f(metho)r(ds.)36 b(The)26 b(calling)f │ │ │ │ (sequences)g(b)r(et)n(w)n(een)0 5308 y(the)j(serial)f(and)g(m)n │ │ │ │ (ultithreaded)h(solv)n(es)e(di\013ers)i(b)n(y)f(one)h(parameter,)e(a)h │ │ │ │ Fh(SolveMap)e Fm(ob)5 b(ject)27 b(that)h(maps)g(the)g(submatrices)0 │ │ │ │ 5407 y(of)g(the)g(factor)e(matrix)h(to)h(the)g(threads)f(that)h(will)f │ │ │ │ (compute)h(with)g(them.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 972 4 v │ │ │ │ -1137 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ -Ff(Decem)n(b)r(er)h(20,)f(2018)p 2929 100 V 0 390 a Fe(1.1)135 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1005 4 v │ │ │ │ +1170 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ +Ff(Octob)r(er)g(11,)g(2021)p 2896 100 V 0 390 a Fe(1.1)135 │ │ │ │ b(Data)46 b(Structure)0 597 y Fm(There)23 b(are)g(no)g(m)n │ │ │ │ (ultithreaded)h(sp)r(eci\014c)f(data)h(structures.)34 │ │ │ │ b(See)24 b(the)g Fh(Lock)e Fm(ob)5 b(ject)23 b(whic)n(h)h(is)f(used)h │ │ │ │ (to)f(hide)h(the)g(particular)0 697 y(m)n(utual)k(exclusion)f(device)g │ │ │ │ (used)h(b)n(y)f(a)g(thread)g(library)-7 b(.)0 998 y Fe(1.2)135 │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fd(MT)f │ │ │ │ Fe(metho)t(ds)0 1205 y Fm(This)25 b(section)f(con)n(tains)g(brief)g │ │ │ │ @@ -4769,19 +4758,19 @@ │ │ │ │ Fh(InpMtx)p 1939 5308 V 29 w(MT)p 2056 5308 V 31 w(nonsym)p │ │ │ │ 2351 5308 V 28 w(mmm\(A,)42 b(Y,)g(3.22,)g(X,)h(nthread,)d(msglvl,)208 │ │ │ │ 5407 y(msgFile\))p Fm(,)31 b(for)i(this)h(ma)n(y)f(result)g(in)h(a)f │ │ │ │ (segmen)n(tation)g(violation.)53 b(The)34 b(v)-5 b(alues)33 │ │ │ │ b(of)h Fl(\013)g Fm(m)n(ust)f(b)r(e)h(loaded)f(in)n(to)g(an)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 972 4 v 1137 100 a Fh(Multithreaded)23 │ │ │ │ -b Ff(:)37 b Fg(DRAFT)110 b Ff(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2889 100 V 972 w Fm(3)208 390 y(arra)n(y)d(of)i(length)h(1)f(or)f(2.)36 │ │ │ │ -b(The)27 b(n)n(um)n(b)r(er)f(of)g(threads)g(is)g(sp)r(eci\014ed)h(b)n │ │ │ │ -(y)f(the)h Fh(nthread)d Fm(parameter;)h(if,)i Fh(nthread)d │ │ │ │ +TeXDict begin 3 2 bop 83 100 1005 4 v 1170 100 a Fh(Multithreaded)23 │ │ │ │ +b Ff(:)36 b Fg(DRAFT)111 b Ff(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2856 100 V 1005 w Fm(3)208 390 y(arra)n(y)e(of)i(length)h(1)f(or)f(2.) │ │ │ │ +36 b(The)27 b(n)n(um)n(b)r(er)f(of)g(threads)g(is)g(sp)r(eci\014ed)h(b) │ │ │ │ +n(y)f(the)h Fh(nthread)d Fm(parameter;)h(if,)i Fh(nthread)d │ │ │ │ Fm(is)i Fh(1)p Fm(,)208 490 y(the)k(serial)e(metho)r(d)i(is)g(called.) │ │ │ │ 43 b(The)30 b Fh(msglvl)d Fm(and)j Fh(msgFile)c Fm(parameters)i(are)h │ │ │ │ (used)h(for)f(diagnostics)f(during)i(the)208 589 y(creation)c(of)i(the) │ │ │ │ g(threads')f(individual)g(data)g(structures.)208 722 │ │ │ │ y Fg(Err)l(or)k(che)l(cking:)43 b Fm(If)30 b Fh(A)p Fm(,)f │ │ │ │ Fh(Y)g Fm(or)f Fh(X)h Fm(are)g Fh(NULL)p Fm(,)f(or)g(if)i │ │ │ │ Fh(coordType)c Fm(is)j(not)h Fh(INPMTX)p 2711 722 27 │ │ │ │ @@ -4879,19 +4868,19 @@ │ │ │ │ (assem)n(bling)f(aggregate)f(fron)n(ts.)307 5142 y Fi(\017)41 │ │ │ │ b Fh(cpus[5])25 b Fm(|)j(time)g(sp)r(en)n(t)g(assem)n(bling)e(p)r(ostp) │ │ │ │ r(oned)i(data.)307 5274 y Fi(\017)41 b Fh(cpus[6])25 │ │ │ │ b Fm(|)j(time)g(sp)r(en)n(t)g(to)f(factor)g(the)h(fron)n(ts.)307 │ │ │ │ 5407 y Fi(\017)41 b Fh(cpus[7])25 b Fm(|)j(time)g(sp)r(en)n(t)g(to)f │ │ │ │ (extract)g(p)r(ostp)r(oned)h(data.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 972 4 v │ │ │ │ -1137 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ -Ff(Decem)n(b)r(er)h(20,)f(2018)p 2929 100 V 307 390 a │ │ │ │ -Fi(\017)41 b Fh(cpus[8])25 b Fm(|)j(time)g(sp)r(en)n(t)g(to)f(store)g │ │ │ │ -(the)h(factor)e(en)n(tries.)307 524 y Fi(\017)41 b Fh(cpus[9])25 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1005 4 v │ │ │ │ +1170 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ +Ff(Octob)r(er)g(11,)g(2021)p 2896 100 V 307 390 a Fi(\017)41 │ │ │ │ +b Fh(cpus[8])25 b Fm(|)j(time)g(sp)r(en)n(t)g(to)f(store)g(the)h │ │ │ │ +(factor)e(en)n(tries.)307 524 y Fi(\017)41 b Fh(cpus[9])25 │ │ │ │ b Fm(|)j(miscellaneous)e(time.)208 691 y(On)h(return,)g(the)h │ │ │ │ Fh(stats[])d Fm(v)n(ector)h(is)i(\014lled)g(with)g(the)g(follo)n(wing)e │ │ │ │ (information.)307 859 y Fi(\017)41 b Fh(stats[0])25 b │ │ │ │ Fm(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ots.)307 993 y Fi(\017)41 │ │ │ │ b Fh(stats[1])25 b Fm(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ot)g(tests.)307 │ │ │ │ 1126 y Fi(\017)41 b Fh(stats[2])25 b Fm(|)i(n)n(um)n(b)r(er)h(of)f │ │ │ │ (dela)n(y)n(ed)g(ro)n(ws)f(and)h(columns.)307 1260 y │ │ │ │ @@ -4960,27 +4949,27 @@ │ │ │ │ b Fl(I)7 b Fm(\))p Fl(D)r Fm(\()p Fl(I)24 b Fm(+)15 b │ │ │ │ Fl(U)9 b Fm(\))p Fl(X)30 b Fm(=)22 b Fl(B)31 b Fm(or)26 │ │ │ │ b(\()p Fl(L)15 b Fm(+)h Fl(I)7 b Fm(\))p Fl(D)r Fm(\()p │ │ │ │ Fl(I)24 b Fm(+)15 b Fl(U)9 b Fm(\))p Fl(X)30 b Fm(=)22 │ │ │ │ b Fl(B)t Fm(.)37 b(En)n(tries)25 b(of)h Fl(B)31 b Fm(are)25 │ │ │ │ b Fg(r)l(e)l(ad)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 972 4 v 1137 100 a Fh(Multithreaded)23 │ │ │ │ -b Ff(:)37 b Fg(DRAFT)110 b Ff(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2889 100 V 972 w Fm(5)208 390 y(from)k Fh(mtxB)g Fm(and)h(en)n(tries)g │ │ │ │ -(of)g Fl(X)39 b Fm(are)31 b(written)i(to)f Fh(mtxX)p │ │ │ │ -Fm(.)e(Therefore,)j Fh(mtxX)d Fm(and)j Fh(mtxB)d Fm(can)i(b)r(e)h(the)g │ │ │ │ -(same)e(ob)5 b(ject.)208 490 y(\(Note,)25 b(this)h(do)r(es)e(not)h │ │ │ │ -(hold)g(true)g(for)f(an)h(MPI)f(factorization)g(with)h(piv)n(oting.\)) │ │ │ │ -36 b(The)25 b(submatrix)f(manager)f(ob)5 b(ject)208 589 │ │ │ │ -y(manages)31 b(the)j(w)n(orking)d(storage.)51 b(The)33 │ │ │ │ -b Fh(solvemap)d Fm(ob)5 b(ject)33 b(con)n(tains)f(the)h(map)g(from)g │ │ │ │ -(submatrices)f(to)h(threads.)208 689 y(The)j(map)h(from)f(fron)n(ts)g │ │ │ │ -(to)h(pro)r(cesses)e(that)i(o)n(wn)f(them)h(is)f(giv)n(en)g(in)h(the)g │ │ │ │ -Fh(ownersIV)c Fm(ob)5 b(ject.)64 b(On)37 b(return)f(the)208 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1005 4 v 1170 100 a Fh(Multithreaded)23 │ │ │ │ +b Ff(:)36 b Fg(DRAFT)111 b Ff(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2856 100 V 1005 w Fm(5)208 390 y(from)31 b Fh(mtxB)g │ │ │ │ +Fm(and)h(en)n(tries)g(of)g Fl(X)39 b Fm(are)31 b(written)i(to)f │ │ │ │ +Fh(mtxX)p Fm(.)e(Therefore,)j Fh(mtxX)d Fm(and)j Fh(mtxB)d │ │ │ │ +Fm(can)i(b)r(e)h(the)g(same)e(ob)5 b(ject.)208 490 y(\(Note,)25 │ │ │ │ +b(this)h(do)r(es)e(not)h(hold)g(true)g(for)f(an)h(MPI)f(factorization)g │ │ │ │ +(with)h(piv)n(oting.\))36 b(The)25 b(submatrix)f(manager)f(ob)5 │ │ │ │ +b(ject)208 589 y(manages)31 b(the)j(w)n(orking)d(storage.)51 │ │ │ │ +b(The)33 b Fh(solvemap)d Fm(ob)5 b(ject)33 b(con)n(tains)f(the)h(map)g │ │ │ │ +(from)g(submatrices)f(to)h(threads.)208 689 y(The)j(map)h(from)f(fron)n │ │ │ │ +(ts)g(to)h(pro)r(cesses)e(that)i(o)n(wn)f(them)h(is)f(giv)n(en)g(in)h │ │ │ │ +(the)g Fh(ownersIV)c Fm(ob)5 b(ject.)64 b(On)37 b(return)f(the)208 │ │ │ │ 789 y Fh(cpus[])25 b Fm(v)n(ector)h(is)i(\014lled)f(with)i(the)f(follo) │ │ │ │ n(wing.)35 b(The)28 b Fh(stats[])d Fm(v)n(ector)h(is)i(not)f(curren)n │ │ │ │ (tly)g(used.)307 951 y Fi(\017)41 b Fh(cpus[0])25 b Fm(|)j(set)f(up)h │ │ │ │ (the)g(solv)n(es)307 1080 y Fi(\017)41 b Fh(cpus[1])25 │ │ │ │ b Fm(|)j(fetc)n(h)g(righ)n(t)e(hand)i(side)g(and)f(store)g(solution)307 │ │ │ │ 1209 y Fi(\017)41 b Fh(cpus[2])25 b Fm(|)j(forw)n(ard)e(solv)n(e)307 │ │ │ │ 1338 y Fi(\017)41 b Fh(cpus[3])25 b Fm(|)j(diagonal)e(solv)n(e)307 │ │ │ │ @@ -5050,100 +5039,100 @@ │ │ │ │ b(matrix,)h(factors)e Fl(A)h Fm(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ (system)h Fl(AX)40 b Fm(=)33 b Fl(B)38 b Fm(for)c Fl(X)40 │ │ │ │ b Fm(using)34 b(m)n(ultithreaded)f(factors)g(and)208 │ │ │ │ 5407 y(solv)n(es.)i(Use)28 b(the)g(script)f(\014le)h │ │ │ │ Fh(do)p 1237 5407 27 4 v 30 w(gridMT)d Fm(for)i(testing.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 972 4 v │ │ │ │ -1137 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ -Ff(Decem)n(b)r(er)h(20,)f(2018)p 2929 100 V 307 390 a │ │ │ │ -Fi(\017)41 b Fm(The)23 b Fh(msglvl)e Fm(parameter)g(determines)i(the)h │ │ │ │ -(amoun)n(t)e(of)h(output.)36 b(Use)23 b Fh(msglvl)41 │ │ │ │ -b(=)i(1)23 b Fm(for)g(just)g(timing)g(output.)307 524 │ │ │ │ -y Fi(\017)41 b Fm(The)32 b Fh(msgFile)c Fm(parameter)i(determines)h │ │ │ │ -(the)h(message)e(\014le)i(|)f(if)h Fh(msgFile)d Fm(is)i │ │ │ │ -Fh(stdout)p Fm(,)f(then)i(the)g(message)390 624 y(\014le)c(is)f │ │ │ │ -Fg(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ -Fg(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ -307 758 y Fi(\017)41 b Fm(The)28 b Fh(type)e Fm(parameter)g(sp)r │ │ │ │ -(eci\014es)h(a)h(real)e(or)h(complex)g(linear)g(system.)456 │ │ │ │ -892 y Fa({)41 b Fh(type)h(=)i(1)f(\(SPOOLES)p 1295 892 │ │ │ │ -27 4 v 28 w(REAL\))25 b Fm(for)i(real,)456 1009 y Fa({)41 │ │ │ │ -b Fh(type)h(=)i(2)f(\(SPOOLES)p 1295 1009 V 28 w(COMPLEX\))24 │ │ │ │ -b Fm(for)j(complex.)307 1143 y Fi(\017)41 b Fm(The)28 │ │ │ │ -b Fh(symmetryflag)23 b Fm(parameter)j(sp)r(eci\014es)h(the)h(symmetry)f │ │ │ │ -(of)h(the)g(matrix.)456 1278 y Fa({)41 b Fh(type)h(=)i(0)f(\(SPOOLES)p │ │ │ │ -1295 1278 V 28 w(SYMMETRIC\))23 b Fm(for)k Fl(A)h Fm(real)f(or)g │ │ │ │ -(complex)g(symmetric,)456 1394 y Fa({)41 b Fh(type)h(=)i(1)f(\(SPOOLES) │ │ │ │ -p 1295 1394 V 28 w(HERMITIAN\))23 b Fm(for)k Fl(A)h Fm(complex)g │ │ │ │ -(Hermitian,)456 1511 y Fa({)41 b Fh(type)h(=)i(2)f(\(SPOOLES)p │ │ │ │ -1295 1511 V 28 w(NONSYMMETRIC\))390 1645 y Fm(for)27 │ │ │ │ -b Fl(A)h Fm(real)f(or)g(complex)g(nonsymmetric.)307 1780 │ │ │ │ -y Fi(\017)41 b Fm(The)28 b Fh(pivotingflag)23 b Fm(parameter)j(signals) │ │ │ │ -g(whether)i(piv)n(oting)e(for)i(stabilit)n(y)f(will)h(b)r(e)g(enabled)f │ │ │ │ -(or)g(not.)456 1914 y Fa({)41 b Fm(If)28 b Fh(pivotingflag)39 │ │ │ │ -b(=)k(0)g(\(SPOOLES)p 1726 1914 V 29 w(NO)p 1843 1914 │ │ │ │ -V 30 w(PIVOTING\))p Fm(,)24 b(no)j(piv)n(oting)g(will)h(b)r(e)g(done.) │ │ │ │ -456 2031 y Fa({)41 b Fm(If)31 b Fh(pivotingflag)38 b(=)44 │ │ │ │ -b(1)f(\(SPOOLES)p 1729 2031 V 28 w(PIVOTING\))p Fm(,)26 │ │ │ │ -b(piv)n(oting)j(will)h(b)r(e)h(done)e(to)h(ensure)f(that)h(all)g(en)n │ │ │ │ -(tries)545 2130 y(in)e Fl(U)37 b Fm(and)27 b Fl(L)g Fm(ha)n(v)n(e)g │ │ │ │ -(magnitude)g(less)g(than)h Fh(tau)p Fm(.)307 2264 y Fi(\017)41 │ │ │ │ -b Fm(The)29 b Fh(matrixFileName)23 b Fm(parameter)28 │ │ │ │ -b(is)g(the)h(name)g(of)g(the)g(\014les)g(where)f(the)h(matrix)f(en)n │ │ │ │ -(tries)h(are)e(read)h(from.)390 2364 y(The)g(\014le)g(has)f(the)h │ │ │ │ -(follo)n(wing)e(structure.)390 2515 y Fh(neqns)42 b(neqns)f(nent)390 │ │ │ │ -2615 y(irow)h(jcol)g(entry)390 2715 y(...)86 b(...)g(...)390 │ │ │ │ -2866 y Fm(where)36 b Fh(neqns)e Fm(is)i(the)g(global)f(n)n(um)n(b)r(er) │ │ │ │ -h(of)g(equations)f(and)h Fh(nent)f Fm(is)h(the)g(n)n(um)n(b)r(er)g(of)g │ │ │ │ -(en)n(tries)f(in)h(this)h(\014le.)390 2966 y(There)c(follo)n(ws)f │ │ │ │ -Fh(nent)f Fm(lines,)j(eac)n(h)f(con)n(taining)f(a)g(ro)n(w)g(index,)i │ │ │ │ -(a)f(column)g(index)g(and)g(one)g(or)f(t)n(w)n(o)g(\015oating)390 │ │ │ │ -3065 y(p)r(oin)n(t)c(n)n(um)n(b)r(ers,)f(one)g(if)h(real,)f(t)n(w)n(o)g │ │ │ │ -(if)h(complex.)307 3200 y Fi(\017)41 b Fm(The)32 b Fh(rhsFileName)27 │ │ │ │ -b Fm(parameter)j(is)h(the)h(name)g(of)f(the)h(\014les)g(where)f(the)h │ │ │ │ -(righ)n(t)f(hand)g(side)h(en)n(tries)e(are)h(read)390 │ │ │ │ -3299 y(from.)37 b(The)27 b(\014le)h(has)f(the)h(follo)n(wing)f │ │ │ │ -(structure.)390 3451 y Fh(nrow)42 b(nrhs)390 3550 y(irow)g(entry)g(...) │ │ │ │ -g(entry)390 3650 y(...)86 b(...)130 b(...)42 b(...)390 │ │ │ │ -3801 y Fm(where)28 b Fh(nrow)g Fm(is)g(the)i(n)n(um)n(b)r(er)e(of)h(ro) │ │ │ │ -n(ws)e(in)i(this)g(\014le)g(and)g Fh(nrhs)e Fm(is)i(the)g(n)n(um)n(b)r │ │ │ │ -(er)g(of)f(riggh)n(t)g(and)g(sides.)41 b(There)390 3901 │ │ │ │ -y(follo)n(ws)23 b Fh(nrow)f Fm(lines,)j(eac)n(h)e(con)n(taining)f(a)i │ │ │ │ -(ro)n(w)e(index)i(and)g(either)f Fh(nrhs)f Fm(or)h Fh(2*nrhs)f │ │ │ │ -Fm(\015oating)h(p)r(oin)n(t)h(n)n(um)n(b)r(ers,)390 4001 │ │ │ │ -y(the)k(\014rst)g(if)g(real,)e(the)i(second)f(if)h(complex.)307 │ │ │ │ -4135 y Fi(\017)41 b Fm(The)28 b Fh(seed)e Fm(parameter)g(is)h(a)h │ │ │ │ -(random)e(n)n(um)n(b)r(er)i(seed.)307 4269 y Fi(\017)41 │ │ │ │ -b Fm(The)28 b Fh(nthread)d Fm(parameter)h(is)h(the)h(n)n(um)n(b)r(er)g │ │ │ │ -(of)f(threads.)101 4455 y(2.)42 b Fh(patchAndGoMT)c(msglvl)j(msgFile)g │ │ │ │ -(type)h(symmetryflag)d(patchAndGoFlag)e(fudge)42 b(toosmall)774 │ │ │ │ -4554 y(storeids)e(storevalues)f(matrixFileName)f(rhsFileName)h(seed)j │ │ │ │ -(nthread)208 4689 y Fm(This)18 b(driv)n(er)g(program)e(is)j(used)f(to)h │ │ │ │ -(test)g(the)g(\\patc)n(h-and-go")c(functionalit)n(y)k(for)f(a)g │ │ │ │ -(factorization)g(without)h(piv)n(oting.)208 4788 y(When)j(small)f │ │ │ │ -(diagonal)f(piv)n(ot)h(elemen)n(ts)h(are)f(found,)i(one)e(of)h(three)f │ │ │ │ -(actions)g(are)g(tak)n(en.)34 b(See)22 b(the)g Fh(PatchAndGoInfo)208 │ │ │ │ -4888 y Fm(ob)5 b(ject)27 b(for)g(more)g(information.)208 │ │ │ │ -5022 y(The)33 b(program)e(reads)g(in)j(a)e(matrix)h Fl(A)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1005 4 v │ │ │ │ +1170 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ +Ff(Octob)r(er)g(11,)g(2021)p 2896 100 V 307 390 a Fi(\017)41 │ │ │ │ +b Fm(The)23 b Fh(msglvl)e Fm(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ +(of)h(output.)36 b(Use)23 b Fh(msglvl)41 b(=)i(1)23 b │ │ │ │ +Fm(for)g(just)g(timing)g(output.)307 524 y Fi(\017)41 │ │ │ │ +b Fm(The)32 b Fh(msgFile)c Fm(parameter)i(determines)h(the)h(message)e │ │ │ │ +(\014le)i(|)f(if)h Fh(msgFile)d Fm(is)i Fh(stdout)p Fm(,)f(then)i(the)g │ │ │ │ +(message)390 624 y(\014le)c(is)f Fg(stdout)p Fm(,)h(otherwise)e(a)i │ │ │ │ +(\014le)f(is)h(op)r(ened)f(with)i Fg(app)l(end)g Fm(status)e(to)g │ │ │ │ +(receiv)n(e)g(an)n(y)g(output)h(data.)307 758 y Fi(\017)41 │ │ │ │ +b Fm(The)28 b Fh(type)e Fm(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h │ │ │ │ +(complex)g(linear)g(system.)456 892 y Fa({)41 b Fh(type)h(=)i(1)f │ │ │ │ +(\(SPOOLES)p 1295 892 27 4 v 28 w(REAL\))25 b Fm(for)i(real,)456 │ │ │ │ +1009 y Fa({)41 b Fh(type)h(=)i(2)f(\(SPOOLES)p 1295 1009 │ │ │ │ +V 28 w(COMPLEX\))24 b Fm(for)j(complex.)307 1143 y Fi(\017)41 │ │ │ │ +b Fm(The)28 b Fh(symmetryflag)23 b Fm(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ +h(symmetry)f(of)h(the)g(matrix.)456 1278 y Fa({)41 b │ │ │ │ +Fh(type)h(=)i(0)f(\(SPOOLES)p 1295 1278 V 28 w(SYMMETRIC\))23 │ │ │ │ +b Fm(for)k Fl(A)h Fm(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ +1394 y Fa({)41 b Fh(type)h(=)i(1)f(\(SPOOLES)p 1295 1394 │ │ │ │ +V 28 w(HERMITIAN\))23 b Fm(for)k Fl(A)h Fm(complex)g(Hermitian,)456 │ │ │ │ +1511 y Fa({)41 b Fh(type)h(=)i(2)f(\(SPOOLES)p 1295 1511 │ │ │ │ +V 28 w(NONSYMMETRIC\))390 1645 y Fm(for)27 b Fl(A)h Fm(real)f(or)g │ │ │ │ +(complex)g(nonsymmetric.)307 1780 y Fi(\017)41 b Fm(The)28 │ │ │ │ +b Fh(pivotingflag)23 b Fm(parameter)j(signals)g(whether)i(piv)n(oting)e │ │ │ │ +(for)i(stabilit)n(y)f(will)h(b)r(e)g(enabled)f(or)g(not.)456 │ │ │ │ +1914 y Fa({)41 b Fm(If)28 b Fh(pivotingflag)39 b(=)k(0)g(\(SPOOLES)p │ │ │ │ +1726 1914 V 29 w(NO)p 1843 1914 V 30 w(PIVOTING\))p Fm(,)24 │ │ │ │ +b(no)j(piv)n(oting)g(will)h(b)r(e)g(done.)456 2031 y │ │ │ │ +Fa({)41 b Fm(If)31 b Fh(pivotingflag)38 b(=)44 b(1)f(\(SPOOLES)p │ │ │ │ +1729 2031 V 28 w(PIVOTING\))p Fm(,)26 b(piv)n(oting)j(will)h(b)r(e)h │ │ │ │ +(done)e(to)h(ensure)f(that)h(all)g(en)n(tries)545 2130 │ │ │ │ +y(in)e Fl(U)37 b Fm(and)27 b Fl(L)g Fm(ha)n(v)n(e)g(magnitude)g(less)g │ │ │ │ +(than)h Fh(tau)p Fm(.)307 2264 y Fi(\017)41 b Fm(The)29 │ │ │ │ +b Fh(matrixFileName)23 b Fm(parameter)28 b(is)g(the)h(name)g(of)g(the)g │ │ │ │ +(\014les)g(where)f(the)h(matrix)f(en)n(tries)h(are)e(read)h(from.)390 │ │ │ │ +2364 y(The)g(\014le)g(has)f(the)h(follo)n(wing)e(structure.)390 │ │ │ │ +2515 y Fh(neqns)42 b(neqns)f(nent)390 2615 y(irow)h(jcol)g(entry)390 │ │ │ │ +2715 y(...)86 b(...)g(...)390 2866 y Fm(where)36 b Fh(neqns)e │ │ │ │ +Fm(is)i(the)g(global)f(n)n(um)n(b)r(er)h(of)g(equations)f(and)h │ │ │ │ +Fh(nent)f Fm(is)h(the)g(n)n(um)n(b)r(er)g(of)g(en)n(tries)f(in)h(this)h │ │ │ │ +(\014le.)390 2966 y(There)c(follo)n(ws)f Fh(nent)f Fm(lines,)j(eac)n(h) │ │ │ │ +f(con)n(taining)f(a)g(ro)n(w)g(index,)i(a)f(column)g(index)g(and)g(one) │ │ │ │ +g(or)f(t)n(w)n(o)g(\015oating)390 3065 y(p)r(oin)n(t)c(n)n(um)n(b)r │ │ │ │ +(ers,)f(one)g(if)h(real,)f(t)n(w)n(o)g(if)h(complex.)307 │ │ │ │ +3200 y Fi(\017)41 b Fm(The)32 b Fh(rhsFileName)27 b Fm(parameter)j(is)h │ │ │ │ +(the)h(name)g(of)f(the)h(\014les)g(where)f(the)h(righ)n(t)f(hand)g │ │ │ │ +(side)h(en)n(tries)e(are)h(read)390 3299 y(from.)37 b(The)27 │ │ │ │ +b(\014le)h(has)f(the)h(follo)n(wing)f(structure.)390 │ │ │ │ +3451 y Fh(nrow)42 b(nrhs)390 3550 y(irow)g(entry)g(...)g(entry)390 │ │ │ │ +3650 y(...)86 b(...)130 b(...)42 b(...)390 3801 y Fm(where)28 │ │ │ │ +b Fh(nrow)g Fm(is)g(the)i(n)n(um)n(b)r(er)e(of)h(ro)n(ws)e(in)i(this)g │ │ │ │ +(\014le)g(and)g Fh(nrhs)e Fm(is)i(the)g(n)n(um)n(b)r(er)g(of)f(riggh)n │ │ │ │ +(t)g(and)g(sides.)41 b(There)390 3901 y(follo)n(ws)23 │ │ │ │ +b Fh(nrow)f Fm(lines,)j(eac)n(h)e(con)n(taining)f(a)i(ro)n(w)e(index)i │ │ │ │ +(and)g(either)f Fh(nrhs)f Fm(or)h Fh(2*nrhs)f Fm(\015oating)h(p)r(oin)n │ │ │ │ +(t)h(n)n(um)n(b)r(ers,)390 4001 y(the)k(\014rst)g(if)g(real,)e(the)i │ │ │ │ +(second)f(if)h(complex.)307 4135 y Fi(\017)41 b Fm(The)28 │ │ │ │ +b Fh(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.) │ │ │ │ +307 4269 y Fi(\017)41 b Fm(The)28 b Fh(nthread)d Fm(parameter)h(is)h │ │ │ │ +(the)h(n)n(um)n(b)r(er)g(of)f(threads.)101 4455 y(2.)42 │ │ │ │ +b Fh(patchAndGoMT)c(msglvl)j(msgFile)g(type)h(symmetryflag)d │ │ │ │ +(patchAndGoFlag)e(fudge)42 b(toosmall)774 4554 y(storeids)e │ │ │ │ +(storevalues)f(matrixFileName)f(rhsFileName)h(seed)j(nthread)208 │ │ │ │ +4689 y Fm(This)18 b(driv)n(er)g(program)e(is)j(used)f(to)h(test)g(the)g │ │ │ │ +(\\patc)n(h-and-go")c(functionalit)n(y)k(for)f(a)g(factorization)g │ │ │ │ +(without)h(piv)n(oting.)208 4788 y(When)j(small)f(diagonal)f(piv)n(ot)h │ │ │ │ +(elemen)n(ts)h(are)f(found,)i(one)e(of)h(three)f(actions)g(are)g(tak)n │ │ │ │ +(en.)34 b(See)22 b(the)g Fh(PatchAndGoInfo)208 4888 y │ │ │ │ +Fm(ob)5 b(ject)27 b(for)g(more)g(information.)208 5022 │ │ │ │ +y(The)33 b(program)e(reads)g(in)j(a)e(matrix)h Fl(A)g │ │ │ │ Fm(and)g(righ)n(t)f(hand)h(side)g Fl(B)t Fm(,)i(generates)c(the)j │ │ │ │ (graph)e(for)g Fl(A)h Fm(and)g(orders)f(the)208 5122 │ │ │ │ y(matrix,)27 b(factors)f Fl(A)i Fm(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ (system)g Fl(AX)j Fm(=)23 b Fl(B)31 b Fm(for)d Fl(X)34 │ │ │ │ b Fm(using)27 b(m)n(ultithreaded)g(factors)g(and)g(solv)n(es.)208 │ │ │ │ 5221 y(Use)g(the)h(script)f(\014le)h Fh(do)p 968 5221 │ │ │ │ V 31 w(patchAndGo)23 b Fm(for)k(testing.)307 5407 y Fi(\017)41 │ │ │ │ b Fm(The)23 b Fh(msglvl)e Fm(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ (of)h(output.)36 b(Use)23 b Fh(msglvl)41 b(=)i(1)23 b │ │ │ │ Fm(for)g(just)g(timing)g(output.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 972 4 v 1137 100 a Fh(Multithreaded)23 │ │ │ │ -b Ff(:)37 b Fg(DRAFT)110 b Ff(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2889 100 V 972 w Fm(7)307 390 y Fi(\017)41 b Fm(The)32 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1005 4 v 1170 100 a Fh(Multithreaded)23 │ │ │ │ +b Ff(:)36 b Fg(DRAFT)111 b Ff(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2856 100 V 1005 w Fm(7)307 390 y Fi(\017)41 b Fm(The)32 │ │ │ │ b Fh(msgFile)c Fm(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fh(msgFile)d Fm(is)i Fh(stdout)p Fm(,)f(then)i(the)g(message)390 │ │ │ │ 490 y(\014le)c(is)f Fg(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fg(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ (y)g(output)h(data.)307 620 y Fi(\017)41 b Fm(The)28 │ │ │ │ b Fh(type)e Fm(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ (linear)g(system.)456 750 y Fa({)41 b Fh(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ @@ -5220,22 +5209,22 @@ │ │ │ │ 5277 y Fk(T)3144 5308 y Fi(\003)g Fl(X)27 b Fm(or)19 │ │ │ │ b Fl(Y)24 b Fm(+)5 b Fl(\013)g Fi(\003)g Fl(A)3690 5277 │ │ │ │ y Fk(H)3756 5308 y Fi(\003)g Fl(X)i Fm(.)208 5407 y(The)27 │ │ │ │ b(program's)f(output)i(is)f(a)g(\014le)h(whic)n(h)g(when)f(sen)n(t)h │ │ │ │ (in)n(to)f(Matlab,)h(outputs)f(the)h(error)e(in)i(the)g(computation.)p │ │ │ │ eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 972 4 v │ │ │ │ -1137 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ -Ff(Decem)n(b)r(er)h(20,)f(2018)p 2929 100 V 307 390 a │ │ │ │ -Fi(\017)41 b Fm(The)19 b Fh(msglvl)e Fm(parameter)g(determines)i(the)h │ │ │ │ -(amoun)n(t)e(of)h(output)h(|)f(taking)f Fh(msglvl)41 │ │ │ │ -b(>=)i(3)19 b Fm(means)f(the)h Fh(InpMtx)390 490 y Fm(ob)5 │ │ │ │ -b(ject)28 b(is)f(written)h(to)f(the)h(message)e(\014le.)307 │ │ │ │ -624 y Fi(\017)41 b Fm(The)32 b Fh(msgFile)c Fm(parameter)i(determines)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1005 4 v │ │ │ │ +1170 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 b │ │ │ │ +Ff(Octob)r(er)g(11,)g(2021)p 2896 100 V 307 390 a Fi(\017)41 │ │ │ │ +b Fm(The)19 b Fh(msglvl)e Fm(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ +(of)h(output)h(|)f(taking)f Fh(msglvl)41 b(>=)i(3)19 │ │ │ │ +b Fm(means)f(the)h Fh(InpMtx)390 490 y Fm(ob)5 b(ject)28 │ │ │ │ +b(is)f(written)h(to)f(the)h(message)e(\014le.)307 624 │ │ │ │ +y Fi(\017)41 b Fm(The)32 b Fh(msgFile)c Fm(parameter)i(determines)h │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fh(msgFile)d Fm(is)i │ │ │ │ Fh(stdout)p Fm(,)f(then)i(the)g(message)390 724 y(\014le)c(is)f │ │ │ │ Fg(stdout)p Fm(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ Fg(app)l(end)g Fm(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ 307 858 y Fi(\017)41 b Fh(dataType)25 b Fm(is)i(the)h(t)n(yp)r(e)g(of)f │ │ │ │ (en)n(tries,)g Fh(0)h Fm(for)f(real,)f Fh(1)i Fm(for)f(complex.)307 │ │ │ │ 993 y Fi(\017)41 b Fh(symflag)25 b Fm(is)i(the)h(symmetry)g(\015ag,)e │ │ │ │ @@ -5314,17 +5303,17 @@ │ │ │ │ V 28 w(HERMITIAN\))23 b Fm(for)k Fl(A)h Fm(complex)g(Hermitian,)456 │ │ │ │ 5138 y Fa({)41 b Fh(type)h(=)i(2)f(\(SPOOLES)p 1295 5138 │ │ │ │ V 28 w(NONSYMMETRIC\))390 5273 y Fm(for)27 b Fl(A)h Fm(real)f(or)g │ │ │ │ (complex)g(nonsymmetric.)307 5407 y Fi(\017)41 b Fm(The)28 │ │ │ │ b Fh(sparsityflag)23 b Fm(parameter)j(signals)g(a)h(direct)h(or)e │ │ │ │ (appro)n(ximate)g(factorization.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 83 100 972 4 v 1137 100 a Fh(Multithreaded)23 │ │ │ │ -b Ff(:)37 b Fg(DRAFT)110 b Ff(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2889 100 V 972 w Fm(9)456 390 y Fa({)41 b Fh(sparsityflag)e(=)k(0)g │ │ │ │ +TeXDict begin 9 8 bop 83 100 1005 4 v 1170 100 a Fh(Multithreaded)23 │ │ │ │ +b Ff(:)36 b Fg(DRAFT)111 b Ff(Octob)r(er)27 b(11,)f(2021)p │ │ │ │ +2856 100 V 1005 w Fm(9)456 390 y Fa({)41 b Fh(sparsityflag)e(=)k(0)g │ │ │ │ (\(FRONTMTX)p 1687 390 27 4 v 28 w(DENSE)p 1935 390 V │ │ │ │ 29 w(FRONTS\))26 b Fm(implies)j(a)f(direct)h(factorization,)f(the)h │ │ │ │ (fron)n(ts)f(will)545 490 y(b)r(e)g(stored)f(as)g(dense)h(submatrices.) │ │ │ │ 456 607 y Fa({)41 b Fh(sparsityflag)e(=)k(1)g(\(FRONTMTX)p │ │ │ │ 1687 607 V 28 w(SPARSE)p 1979 607 V 29 w(FRONTS\))29 │ │ │ │ b Fm(implies)j(an)g(appro)n(ximate)e(factorization.)48 │ │ │ │ b(The)545 706 y(fron)n(ts)26 b(will)g(b)r(e)g(stored)g(as)f(sparse)g │ │ │ │ @@ -5409,21 +5398,21 @@ │ │ │ │ b Fh(n1)27 b Fm(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ (the)g(\014rst)f(grid)g(direction.)307 5273 y Fi(\017)41 │ │ │ │ b Fh(n2)27 b Fm(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ (the)g(second)f(grid)g(direction.)307 5407 y Fi(\017)41 │ │ │ │ b Fh(n3)27 b Fm(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ (the)g(third)g(grid)e(direction.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 951 4 │ │ │ │ -v 1116 w Fh(Multithreaded)22 b Ff(:)37 b Fg(DRAFT)27 │ │ │ │ -b Ff(Decem)n(b)r(er)h(20,)e(2018)p 2949 100 V 307 390 │ │ │ │ -a Fi(\017)41 b Fm(The)28 b Fh(seed)e Fm(parameter)g(is)h(a)h(random)e │ │ │ │ -(n)n(um)n(b)r(er)i(seed.)307 523 y Fi(\017)41 b Fm(The)28 │ │ │ │ -b Fh(nrhs)e Fm(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of)f(righ)n(t)g │ │ │ │ -(hand)h(sides)f(to)h(solv)n(e)e(as)h(one)g(blo)r(c)n(k.)307 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 984 4 │ │ │ │ +v 1148 w Fh(Multithreaded)23 b Ff(:)37 b Fg(DRAFT)27 │ │ │ │ +b Ff(Octob)r(er)g(11,)g(2021)p 2917 100 V 307 390 a Fi(\017)41 │ │ │ │ +b Fm(The)28 b Fh(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ +(er)i(seed.)307 523 y Fi(\017)41 b Fm(The)28 b Fh(nrhs)e │ │ │ │ +Fm(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of)f(righ)n(t)g(hand)h │ │ │ │ +(sides)f(to)h(solv)n(e)e(as)h(one)g(blo)r(c)n(k.)307 │ │ │ │ 656 y Fi(\017)41 b Fm(The)28 b Fh(type)e Fm(parameter)g(sp)r(eci\014es) │ │ │ │ h(a)h(real)e(or)h(complex)g(linear)g(system.)456 789 │ │ │ │ y Fa({)41 b Fh(type)h(=)i(1)f(\(SPOOLES)p 1295 789 27 │ │ │ │ 4 v 28 w(REAL\))25 b Fm(for)i(real,)456 905 y Fa({)41 │ │ │ │ b Fh(type)h(=)i(2)f(\(SPOOLES)p 1295 905 V 28 w(COMPLEX\))24 │ │ │ │ b Fm(for)j(complex.)307 1038 y Fi(\017)41 b Fm(The)28 │ │ │ │ b Fh(nthread)d Fm(parameter)h(is)h(the)h(n)n(um)n(b)r(er)g(of)f │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -35,15 +35,15 @@ │ │ │ │ │ by independent topological traversals of the front tree. It is the list and working storage data structures (the │ │ │ │ │ ChvList, ChvManager and SubMtxManager objects) that have locks. What is done is common code between │ │ │ │ │ the serial and multithreaded environments, it is the choreography, i.e., who does what, that differs. │ │ │ │ │ Most of these same comments apply to the multithreaded solve methods. The calling sequences between │ │ │ │ │ the serial and multithreaded solves differs by one parameter, a SolveMap object that maps the submatrices │ │ │ │ │ of the factor matrix to the threads that will compute with them. │ │ │ │ │ 1 │ │ │ │ │ - 2 Multithreaded : DRAFT December 20, 2018 │ │ │ │ │ + 2 Multithreaded : DRAFT October 11, 2021 │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ There are no multithreaded specific data structures. See the Lock object which is used to hide the particular │ │ │ │ │ mutual exclusion device used by a thread library. │ │ │ │ │ 1.2 Prototypes and descriptions of MT methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods found in the MT source directory. │ │ │ │ │ 1.2.1 Matrix-matrix multiply methods │ │ │ │ │ Therearefivemethodstomultiplyavectortimesadensematrix. Thefirstthreemethods,calledInpMtx MT nonsym mmm*(), │ │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │ │ This method computes the matrix-vector product y := y+αA x, where y is found in the Y DenseMtx │ │ │ │ │ object, α is real or complex in alpha[], A is found in the A Inpmtx object, and x is found in the X │ │ │ │ │ DenseMtx object. If any of the input objects are NULL, an error message is printed and the program │ │ │ │ │ exits. A, X and Y must all be real or all be complex. When A is real, then α = alpha[0]. When A │ │ │ │ │ is complex, then α = alpha[0] + i* alpha[1]. This means that one cannot call the methods with │ │ │ │ │ a constant as the third parameter, e.g., InpMtx MT nonsym mmm(A, Y, 3.22, X, nthread, msglvl, │ │ │ │ │ msgFile), for this may result in a segmentation violation. The values of α must be loaded into an │ │ │ │ │ - Multithreaded : DRAFT December 20, 2018 3 │ │ │ │ │ + Multithreaded : DRAFT October 11, 2021 3 │ │ │ │ │ array of length 1 or 2. The number of threads is specified by the nthread parameter; if, nthread is 1, │ │ │ │ │ the serial method is called. The msglvl and msgFile parameters are used for diagnostics during the │ │ │ │ │ creation of the threads’ individual data structures. │ │ │ │ │ Error checking: If A, Y or X are NULL, or if coordType is not INPMTX BY ROWS, INPMTX BY COLUMNS or │ │ │ │ │ INPMTX BY CHEVRONS,orifstorageModeisnotoneofINPMTX RAW DATA,INPMTX SORTEDorINPMTX BY VECTORS, │ │ │ │ │ or if inputModeis not SPOOLES REAL or SPOOLES COMPLEX,an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ @@ -124,15 +124,15 @@ │ │ │ │ │ • cpus[1] — time spent initializing the fronts and loading the original entries. │ │ │ │ │ • cpus[2] — time spent accumulating updates from descendents. │ │ │ │ │ • cpus[3] — time spent inserting aggregate fronts. │ │ │ │ │ • cpus[4] — time spent removing and assembling aggregate fronts. │ │ │ │ │ • cpus[5] — time spent assembling postponed data. │ │ │ │ │ • cpus[6] — time spent to factor the fronts. │ │ │ │ │ • cpus[7] — time spent to extract postponed data. │ │ │ │ │ - 4 Multithreaded : DRAFT December 20, 2018 │ │ │ │ │ + 4 Multithreaded : DRAFT October 11, 2021 │ │ │ │ │ • cpus[8] — time spent to store the factor entries. │ │ │ │ │ • cpus[9] — miscellaneous time. │ │ │ │ │ Onreturn, the stats[] vector is filled with the following information. │ │ │ │ │ • stats[0] — number of pivots. │ │ │ │ │ • stats[1] — number of pivot tests. │ │ │ │ │ • stats[2] — number of delayed rows and columns. │ │ │ │ │ • stats[3] — number of entries in D. │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 1.2.4 Multithreaded Solve method │ │ │ │ │ 1. void FrontMtx_MT_solve ( FrontMtx *frontmtx, DenseMtx *mtxX, DenseMtx *mtxB, │ │ │ │ │ SubMtxManager *mtxmanager, SolveMap *solvemap, │ │ │ │ │ double cpus[], int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method is used to solve one of three linear systems of equations using a multithreaded solve — │ │ │ │ │ (UT +I)D(I +U)X =B, (UH +I)D(I +U)X =B or (L+I)D(I+U)X =B. Entries of B are read │ │ │ │ │ - Multithreaded : DRAFT December 20, 2018 5 │ │ │ │ │ + Multithreaded : DRAFT October 11, 2021 5 │ │ │ │ │ from mtxB and entries of X are written to mtxX. Therefore, mtxX and mtxB can be the same object. │ │ │ │ │ (Note, this does not hold true for an MPI factorization with pivoting.) The submatrix manager object │ │ │ │ │ manages the working storage. The solvemap object contains the map from submatrices to threads. │ │ │ │ │ The map from fronts to processes that own them is given in the ownersIV object. On return the │ │ │ │ │ cpus[] vector is filled with the following. The stats[] vector is not currently used. │ │ │ │ │ • cpus[0] — set up the solves │ │ │ │ │ • cpus[1] — fetch right hand side and store solution │ │ │ │ │ @@ -206,15 +206,15 @@ │ │ │ │ │ ¿ 0 and msgFile is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.3 Driver programs for the multithreaded functions │ │ │ │ │ 1. allInOneMT msglvl msgFile type symmetryflag pivotingflag │ │ │ │ │ matrixFileName rhsFileName seed nthread │ │ │ │ │ This driver program reads in a matrix A and right hand side B, generates the graph for A and orders │ │ │ │ │ the matrix, factors A and solves the linear system AX = B for X using multithreaded factors and │ │ │ │ │ solves. Use the script file do gridMT for testing. │ │ │ │ │ - 6 Multithreaded : DRAFT December 20, 2018 │ │ │ │ │ + 6 Multithreaded : DRAFT October 11, 2021 │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ @@ -249,15 +249,15 @@ │ │ │ │ │ Thisdriverprogramisusedtotestthe“patch-and-go”functionalityforafactorizationwithoutpivoting. │ │ │ │ │ Whensmalldiagonalpivotelements are found, one of three actions are taken. See the PatchAndGoInfo │ │ │ │ │ object for more information. │ │ │ │ │ The program reads in a matrix A and right hand side B, generates the graph for A and orders the │ │ │ │ │ matrix, factors A and solves the linear system AX = B for X using multithreaded factors and solves. │ │ │ │ │ Use the script file do patchAndGo for testing. │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ - Multithreaded : DRAFT December 20, 2018 7 │ │ │ │ │ + Multithreaded : DRAFT October 11, 2021 7 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ @@ -294,15 +294,15 @@ │ │ │ │ │ • The nthread parameter is the number of threads. │ │ │ │ │ 3. testMMM msglvl msgFile dataType symflag storageMode transpose │ │ │ │ │ nrow ncol nitem nrhs seed alphaReal alphaImag nthread │ │ │ │ │ ThisdriverprogramgeneratesA, anrow×ncolmatrixusingniteminputentries,X andY,nrow×nrhs │ │ │ │ │ T H │ │ │ │ │ matrices, is filled with random numbers. It then computes Y +α∗A∗X,Y +α∗A ∗X orY +α∗A ∗X. │ │ │ │ │ The program’s output is a file which when sent into Matlab, outputs the error in the computation. │ │ │ │ │ - 8 Multithreaded : DRAFT December 20, 2018 │ │ │ │ │ + 8 Multithreaded : DRAFT October 11, 2021 │ │ │ │ │ • Themsglvlparameterdeterminestheamountofoutput—takingmsglvl >= 3meanstheInpMtx │ │ │ │ │ object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • dataType is the type of entries, 0 for real, 1 for complex. │ │ │ │ │ • symflag is the symmetry flag, 0 for symmetric, 1 for Hermitian, 2 for nonsymmetric. │ │ │ │ │ • storageModeisthestoragemodefortheentries,1forbyrows,2forbycolumns, 3forbychevrons. │ │ │ │ │ @@ -336,15 +336,15 @@ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ – type = 1 (SPOOLES HERMITIAN) for A complex Hermitian, │ │ │ │ │ – type = 2 (SPOOLES NONSYMMETRIC) │ │ │ │ │ for A real or complex nonsymmetric. │ │ │ │ │ • The sparsityflag parameter signals a direct or approximate factorization. │ │ │ │ │ - Multithreaded : DRAFT December 20, 2018 9 │ │ │ │ │ + Multithreaded : DRAFT October 11, 2021 9 │ │ │ │ │ – sparsityflag = 0 (FRONTMTX DENSE FRONTS) implies a direct factorization, the fronts will │ │ │ │ │ be stored as dense submatrices. │ │ │ │ │ – sparsityflag = 1 (FRONTMTX SPARSE FRONTS) implies an approximate factorization. The │ │ │ │ │ fronts will be stored as sparse submatrices, where the entries in the triangular factors will be │ │ │ │ │ subjected to a drop tolerance test — if the magnitude of an entry is droptol or larger, it will │ │ │ │ │ be stored, otherwise it will be dropped. │ │ │ │ │ • The pivotingflag parameter signals whether pivoting for stability will be enabled or not. │ │ │ │ │ @@ -382,15 +382,15 @@ │ │ │ │ │ X F │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ • n1 is the number of points in the first grid direction. │ │ │ │ │ • n2 is the number of points in the second grid direction. │ │ │ │ │ • n3 is the number of points in the third grid direction. │ │ │ │ │ - 10 Multithreaded : DRAFT December 20, 2018 │ │ │ │ │ + 10 Multithreaded : DRAFT October 11, 2021 │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The nrhs parameter is the number of right hand sides to solve as one block. │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The nthread parameter is the number of threads. │ │ │ │ │ • The maptype parameter determines the type of map from fronts to processes to be used during │ │ ├── ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ ├── Network.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMSY10 CMBX10 CMMI8 │ │ │ │ %%+ CMSY8 CMR8 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Network.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1083,22 +1083,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1272,88 +1272,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4218,15 +4207,15 @@ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 │ │ │ │ 46[{}24 99.6264 /CMBX12 rf /Fb 136[62 2[62 1[62 2[62 │ │ │ │ 3[62 5[62 22[62 78[{}7 119.552 /CMTT12 rf /Fc 134[71 │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ rf /Fd 141[38 2[46 51 2[42 1[28 46 42 1[42 1[42 14[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf │ │ │ │ -/Fe 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 │ │ │ │ +/Fe 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 │ │ │ │ 45 3[25 44[{}12 90.9091 /CMSL10 rf /Ff 212[55 43[{}1 │ │ │ │ 66.4176 /CMR8 rf /Fg 255[55{}1 66.4176 /CMSY8 rf /Fh │ │ │ │ 168[67 13[31 6[53 6[20 59[{}4 66.4176 /CMMI8 rf /Fi 132[52 │ │ │ │ 123[{}1 90.9091 /CMBX10 rf /Fj 196[45 8[61 23[71 5[71 │ │ │ │ 4[45 14[71{}6 90.9091 /CMSY10 rf /Fk 133[42 45 52 65 │ │ │ │ 2[33 43 9[31 52 43 1[42 11[53 1[86 53 2[56 16[69 5[71 │ │ │ │ 25 59[{}17 90.9091 /CMMI10 rf /Fl 133[48 48 48 48 48 │ │ │ │ @@ -4324,17 +4313,17 @@ │ │ │ │ y Fm(and)j Fk(y)g Fj(2)d Fk(Y)1814 5308 y Fh(I)1886 5294 │ │ │ │ y Fm(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p Fk(x;)15 │ │ │ │ b(y)2871 5261 y Fg(\000)2930 5294 y Fm(\))33 b(and)g(\()p │ │ │ │ Fk(y)3261 5261 y Ff(+)3320 5294 y Fk(;)15 b(x)p Fm(\),)34 │ │ │ │ b(b)s(oth)e(with)227 5407 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ b(.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1022 4 v │ │ │ │ -1204 w Fl(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 136 399 a Fj(\017)46 b Fm(An)33 b(edge)g(\()p │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1058 4 v │ │ │ │ +1240 w Fl(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 136 399 a Fj(\017)46 b Fm(An)33 b(edge)g(\()p │ │ │ │ Fk(y)s(;)15 b(z)t Fm(\))35 b(where)d Fk(y)g Fj(2)e Fk(Y)1313 │ │ │ │ 413 y Fh(I)1385 399 y Fm(and)i Fk(z)i Fj(2)29 b Fk(Y)1783 │ │ │ │ 413 y Fh(W)1897 399 y Fm(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p │ │ │ │ Fk(y)2790 366 y Ff(+)2849 399 y Fk(;)15 b(z)t Fm(\))34 │ │ │ │ b(and)e(\()p Fk(z)t(;)15 b(y)3352 366 y Fg(\000)3412 │ │ │ │ 399 y Fm(\),)34 b(b)s(oth)e(with)227 511 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ b(.)136 695 y Fj(\017)46 b Fm(An)27 b(edge)h(\()p Fk(x;)15 │ │ │ │ @@ -4409,17 +4398,17 @@ │ │ │ │ Fl(nnode)g Fm(arc)227 4891 y(structures.)141 5093 y(The)30 │ │ │ │ b Fl(Network)e Fm(ob)5 b(ject)32 b(has)e(six)g(\014elds.)136 │ │ │ │ 5294 y Fj(\017)46 b Fl(int)h(nnode)24 b Fm(|)i(the)f(n)m(um)m(b)s(er)f │ │ │ │ (of)i(no)s(des)f(in)g(the)h(net)m(w)m(ork,)h(including)e(the)h(source)f │ │ │ │ (\(no)s(de)h(0\))g(and)f(the)g(sink)227 5407 y(\(no)s(de)30 │ │ │ │ b Fl(nnode-1)p Fm(\).)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1022 4 v 1203 100 a Fl(Network)29 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)122 b Fe(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2831 100 V 1022 w Fm(3)136 399 y Fj(\017)46 b Fl(int)h(narc)29 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1058 4 v 1239 100 a Fl(Network)29 │ │ │ │ +b Fe(:)40 b Fd(DRAFT)121 b Fe(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2795 100 V 1058 w Fm(3)136 399 y Fj(\017)46 b Fl(int)h(narc)29 │ │ │ │ b Fm(|)i(the)f(n)m(um)m(b)s(er)f(of)i(arcs)f(in)g(the)h(net)m(w)m(ork) │ │ │ │ 136 601 y Fj(\017)46 b Fl(int)h(ntrav)29 b Fm(|)h(the)h(n)m(um)m(b)s │ │ │ │ (er)e(of)h(arc)h(tra)m(v)m(ersals)h(that)f(w)m(e)g(made)g(to)g(\014nd)e │ │ │ │ (a)h(max)h(\015o)m(w.)136 803 y Fj(\017)46 b Fl(Arc)h(**inheads)29 │ │ │ │ b Fm(|)h(p)s(oin)m(ter)h(to)h(a)f(v)m(ector)h(of)f(p)s(oin)m(ters)g(to) │ │ │ │ h Fl(Arc)p Fm(,)e Fl(inheads[v])e Fm(p)s(oin)m(ts)j(to)g(the)g(\014rst) │ │ │ │ g(arc)227 915 y(in)f(the)h(in-list)g(for)f(no)s(de)g │ │ │ │ @@ -4464,17 +4453,17 @@ │ │ │ │ (h)m(unks.)0 5059 y Fc(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fb(Network)d Fc(metho)t(ds)0 │ │ │ │ 5294 y Fm(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ (elong)f(to)h(the)0 5407 y Fl(Network)28 b Fm(ob)5 b(ject.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1022 4 v │ │ │ │ -1204 w Fl(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1058 4 v │ │ │ │ +1240 w Fl(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 589 y Fm(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 702 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 894 y(1.)46 b Fl(Network)g(*)i │ │ │ │ (Network_new)c(\()k(void)e(\))i(;)227 1038 y Fm(This)39 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fl(Network)f Fm(structure)g(and)h(then)g(sets)g(the)h(default)227 │ │ │ │ @@ -4537,17 +4526,17 @@ │ │ │ │ Fj(\024)h Fm(0,)k(or)d(if)f Fl(nnode)g Fj(\024)227 5294 │ │ │ │ y Fl(firstNode)n Fm(,)d(or)g(if)f Fl(secondNode)29 b │ │ │ │ Fj(\024)j Fm(0,)k(or)e(if)h Fl(nnode)30 b Fj(\024)i Fl(secondNode)m │ │ │ │ Fm(,)k(or)e(if)h Fl(capacity)29 b Fj(\024)j Fm(0,)k(an)e(error)227 │ │ │ │ 5407 y(message)e(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1022 4 v 1203 100 a Fl(Network)29 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)122 b Fe(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2831 100 V 1022 w Fm(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1058 4 v 1239 100 a Fl(Network)29 │ │ │ │ +b Fe(:)40 b Fd(DRAFT)121 b Fe(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2795 100 V 1058 w Fm(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 610 y Fm(1.)46 b Fl(void)h(Network_findMaxFlow)42 │ │ │ │ b(\()48 b(Network)e(*network)f(\))j(;)227 777 y Fm(This)37 │ │ │ │ b(metho)s(d)g(\014nds)f(a)i(maxim)m(um)g(\015o)m(w)g(o)m(v)m(er)h(the)f │ │ │ │ (net)m(w)m(ork)g(b)m(y)g(rep)s(eatedly)g(calling)h(the)f(metho)s(d)f │ │ │ │ (to)227 889 y(\014nd)30 b(an)h(augmen)m(ting)i(path)e(and)g(then)g(the) │ │ │ │ h(metho)s(d)e(to)j(augmen)m(t)f(the)f(path.)44 b(It)32 │ │ │ │ b(uses)f(an)g Fl(Ideq)f Fm(ob)5 b(ject)227 1002 y(to)31 │ │ │ │ @@ -4621,17 +4610,17 @@ │ │ │ │ Fm(is)g(in)g(the)h(comp)s(onen)m(t)g(that)g(con)m(tains)g(the)g(sink,)f │ │ │ │ (then)g Fl(mark[v])46 b(=)h(2)p Fm(.)227 5294 y Fd(Err)-5 │ │ │ │ b(or)32 b(che)-5 b(cking:)39 b Fm(If)28 b Fl(network)p │ │ │ │ Fm(,)f Fl(deq)g Fm(or)i Fl(mark)e Fm(is)h Fl(NULL)p Fm(,)f(or)i(if)f │ │ │ │ Fl(nnode)c Fj(\024)h Fm(0,)k(an)f(error)g(message)h(is)f(prin)m(ted)227 │ │ │ │ 5407 y(and)i(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1022 4 v │ │ │ │ -1204 w Fl(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1058 4 v │ │ │ │ +1240 w Fl(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ 595 y Fm(There)30 b(are)h(t)m(w)m(o)g(IO)f(routines)g(for)h(debugging)f │ │ │ │ (purp)s(oses.)111 832 y(1.)46 b Fl(void)h(Network_writeForHumanEye)41 │ │ │ │ b(\()48 b(Network)d(*network,)h(FILE)g(*fp)h(\))h(;)227 │ │ │ │ 983 y Fm(This)20 b(metho)s(d)f(writes)i(the)f(net)m(w)m(ork)h(to)g(a)g │ │ │ │ (\014le)f(in)g(a)h(h)m(uman)e(readable)i(format.)38 b(The)20 │ │ │ │ b(metho)s(d)f Fl(Network)p 3762 983 29 4 v 33 w(writeStats\(\))227 │ │ │ │ 1096 y Fm(is)29 b(called)h(to)f(write)g(out)g(the)f(header)h(and)f │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ B B │ │ │ │ │ Similarly, an edge (x,y) where x ∈ Y and y ∈ Y is not found in the network. │ │ │ │ │ W W │ │ │ │ │ • An edge (x,y) where x ∈ Y and y ∈ Y becomes two edges, (x,y−) and (y+,x), both with │ │ │ │ │ B I │ │ │ │ │ infinite capacity. │ │ │ │ │ 1 │ │ │ │ │ - 2 Network : DRAFT December 20, 2018 │ │ │ │ │ + 2 Network : DRAFT October 11, 2021 │ │ │ │ │ • An edge (y,z) where y ∈ Y and z ∈ Y becomes two edges, (y+,z) and (z,y−), both with │ │ │ │ │ I W │ │ │ │ │ infinite capacity. │ │ │ │ │ + − + − │ │ │ │ │ • An edge (x,y) where x ∈ Y and y ∈ Y becomes two edges, (x ,y ) and (y ,x ), both with │ │ │ │ │ I I │ │ │ │ │ infinite capacity. │ │ │ │ │ @@ -71,15 +71,15 @@ │ │ │ │ │ • ArcChunk – a structure that holds the storage for a number of arcs. Since we do not require │ │ │ │ │ the number of arcs to be known in advance when initializing the Network object, we allo- │ │ │ │ │ cate chunks of space to hold the arcs as necessary. Each chunks holds space for nnode arc │ │ │ │ │ structures. │ │ │ │ │ The Network object has six fields. │ │ │ │ │ • int nnode — the number of nodes in the network, including the source (node 0) and the sink │ │ │ │ │ (node nnode-1). │ │ │ │ │ - Network : DRAFT December 20, 2018 3 │ │ │ │ │ + Network : DRAFT October 11, 2021 3 │ │ │ │ │ • int narc — the number of arcs in the network │ │ │ │ │ • int ntrav — the number of arc traversals that we made to find a max flow. │ │ │ │ │ • Arc **inheads — pointer to a vector of pointers to Arc, inheads[v] points to the first arc │ │ │ │ │ in the in-list for node v. │ │ │ │ │ • Arc **outheads — pointer to a vector of pointers to Arc, outheads[v] points to the first │ │ │ │ │ arc in the out-list for node v. │ │ │ │ │ • ArcChunk *chunk — pointer to the first ArcChunk structure. │ │ │ │ │ @@ -99,15 +99,15 @@ │ │ │ │ │ • int size — the total number of Arc structures in this chunk. │ │ │ │ │ • int inuse — the number of active Arc structures in this chunk. │ │ │ │ │ • Arc *base — pointer to the first Arc structure in this chunk. │ │ │ │ │ • ArcChunk *next — pointer to the next ArcChunk structure in the list of chunks. │ │ │ │ │ 1.2 Prototypes and descriptions of Network methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ Network object. │ │ │ │ │ - 4 Network : DRAFT December 20, 2018 │ │ │ │ │ + 4 Network : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Network * Network_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Network structure and then sets the default │ │ │ │ │ fields by a call to Network setDefaultFields(). │ │ │ │ │ 2. void Network_setDefaultFields ( Network *network ) ; │ │ │ │ │ @@ -135,15 +135,15 @@ │ │ │ │ │ 3. void Network_addArc ( Network *network, int firstNode, secondNode, │ │ │ │ │ int capacity, int flow ) ; │ │ │ │ │ This method adds an arc from firstNode to secondNode with flow flow and capacity │ │ │ │ │ capacity. The arc is inserted in the out-list for firstNode and the in-list for secondNode. │ │ │ │ │ Error checking: If network is NULL, or if nnode ≤ 0, or if firstNode ≤ 0, or if nnode ≤ │ │ │ │ │ firstNode, or if secondNode ≤ 0, or if nnode ≤ secondNode, or if capacity ≤ 0, an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ - Network : DRAFT December 20, 2018 5 │ │ │ │ │ + Network : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. void Network_findMaxFlow ( Network *network ) ; │ │ │ │ │ This method finds a maximum flow over the network by repeatedly calling the method to │ │ │ │ │ find an augmenting path and then the method to augment the path. It uses an Ideq object │ │ │ │ │ to maintain a priority dequeue. │ │ │ │ │ Error checking: If network is NULL, or if nnode ≤ 0, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ @@ -172,15 +172,15 @@ │ │ │ │ │ and the program exits. │ │ │ │ │ 5. void Network_findMincutFromSink ( Network *network, Ideq deq, int mark[]) ; │ │ │ │ │ This method finds the min-cut closest to the sink by traversing a tree of flow-alternating │ │ │ │ │ paths into the sink. On return, mark[v] = 1 if the node v is in the component that contains │ │ │ │ │ the source. If the node v is in the component that contains the sink, then mark[v] = 2. │ │ │ │ │ Error checking: If network, deq or mark is NULL, or if nnode ≤ 0, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ - 6 Network : DRAFT December 20, 2018 │ │ │ │ │ + 6 Network : DRAFT October 11, 2021 │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ There are two IO routines for debugging purposes. │ │ │ │ │ 1. void Network_writeForHumanEye ( Network *network, FILE *fp ) ; │ │ │ │ │ Thismethodwritesthenetworktoafileinahumanreadableformat. ThemethodNetwork writeStats() │ │ │ │ │ is called to write out the header and statistics. Then the in-list and out-lists for the nodes in │ │ │ │ │ the network are printed. │ │ │ │ │ Error checking: If network or fp is NULL, an error message is printed and the program exits. │ │ ├── ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ ├── PatchAndGoInfo.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMMI10 CMR8 CMMI8 │ │ │ │ %%+ CMEX10 CMSY8 CMSL10 CMTI10 CMBX10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o PatchAndGoInfo.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1319,22 +1319,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1508,88 +1508,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4309,16 +4298,16 @@ │ │ │ │ 62 50 1[54 23[42 6[80 15[56 56 2[31 46[{}19 99.6264 /CMBX12 │ │ │ │ rf /Fb 139[62 4[62 62 5[62 1[62 1[62 62 1[62 16[62 6[62 │ │ │ │ 1[62 5[62 65[{}12 119.552 /CMTT12 rf /Fc 132[52 123[{}1 │ │ │ │ 90.9091 /CMBX10 rf /Fd 134[71 3[75 52 53 55 1[75 67 75 │ │ │ │ 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 17[67 │ │ │ │ 67 2[37 46[{}22 119.552 /CMBX12 rf /Fe 141[38 2[46 51 │ │ │ │ 2[42 1[28 46 42 1[42 1[42 14[65 1[66 11[59 62 69 2[68 │ │ │ │ -6[28 58[{}16 90.9091 /CMTI10 rf /Ff 141[36 4[76 7[40 │ │ │ │ -1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Ff 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ /CMSL10 rf /Fg 255[55{}1 66.4176 /CMSY8 rf /Fh 220[48 │ │ │ │ 48 34[{}2 83.022 /CMEX10 rf /Fi 149[29 24 20[41 21[55 │ │ │ │ 2[20 59[{}5 66.4176 /CMMI8 rf /Fj 205[35 35 49[{}2 66.4176 │ │ │ │ /CMR8 rf /Fk 149[37 31 16[75 11[62 7[75 1[69 68 2[71 │ │ │ │ 2[25 59[{}9 90.9091 /CMMI10 rf /Fl 149[25 2[45 45 81[71 │ │ │ │ 4[45 13[25 1[{}6 90.9091 /CMSY10 rf /Fm 134[48 1[48 48 │ │ │ │ 48 48 48 48 2[48 48 48 48 2[48 48 48 48 48 48 48 48 48 │ │ │ │ @@ -4413,24 +4402,24 @@ │ │ │ │ (is)f(to)h(not)f(use)g(piv)m(oting,)i(but)227 5294 y(to)38 │ │ │ │ b(c)m(hec)m(k)h(the)e(magnitude)g(of)g(the)g(diagonal)h(en)m(try)g(as)f │ │ │ │ (a)g(ro)m(w)g(and)g(column)g(is)g(to)g(b)s(e)g(eliminated.)61 │ │ │ │ b(If)227 5407 y(the)35 b(magnitude)g(is)g(smaller)g(than)f(a)i │ │ │ │ (user-supplied)d(parameter,)j(the)f(diagonal)h(en)m(try)f(is)g(set)g │ │ │ │ (to)h(some)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 855 4 v │ │ │ │ -1037 w Fm(PatchAndGoInfo)26 b Ff(:)41 b Fe(DRAFT)30 b │ │ │ │ -Ff(Decem)m(b)s(er)h(20,)h(2018)p 3046 100 V 227 399 a │ │ │ │ -Fn(m)m(ultiple)27 b(of)f(the)h(largest)g(o\013diagonal)h(en)m(try)f(in) │ │ │ │ -f(that)g(ro)m(w)h(and)e(column)h(of)h(the)f(fron)m(t,)h(the)g(lo)s │ │ │ │ -(cation)h(and)227 511 y(p)s(erturbation)i(is)g(noted,)h(and)f(the)g │ │ │ │ -(factorization)j(pro)s(ceeds.)141 728 y(Other)27 b(strategies)h(can)f │ │ │ │ -(b)s(e)g(added)f(to)i(the)f Fm(PatchAndGoInfo)c Fn(ob)5 │ │ │ │ -b(ject.)40 b(F)-8 b(or)28 b(example,)g(if)f(a)g(matrix)g(is)g(b)s(eing) │ │ │ │ -0 841 y(factored)34 b(that)g(is)g(b)s(eliev)m(ed)g(to)g(b)s(e)f(p)s │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 891 4 v │ │ │ │ +1073 w Fm(PatchAndGoInfo)26 b Ff(:)41 b Fe(DRAFT)30 b │ │ │ │ +Ff(Octob)s(er)g(11,)i(2021)p 3010 100 V 227 399 a Fn(m)m(ultiple)27 │ │ │ │ +b(of)f(the)h(largest)g(o\013diagonal)h(en)m(try)f(in)f(that)g(ro)m(w)h │ │ │ │ +(and)e(column)h(of)h(the)f(fron)m(t,)h(the)g(lo)s(cation)h(and)227 │ │ │ │ +511 y(p)s(erturbation)i(is)g(noted,)h(and)f(the)g(factorization)j(pro)s │ │ │ │ +(ceeds.)141 728 y(Other)27 b(strategies)h(can)f(b)s(e)g(added)f(to)i │ │ │ │ +(the)f Fm(PatchAndGoInfo)c Fn(ob)5 b(ject.)40 b(F)-8 │ │ │ │ +b(or)28 b(example,)g(if)f(a)g(matrix)g(is)g(b)s(eing)0 │ │ │ │ +841 y(factored)34 b(that)g(is)g(b)s(eliev)m(ed)g(to)g(b)s(e)f(p)s │ │ │ │ (ositiv)m(e)h(de\014nite,)g(and)f(a)h(negativ)m(e)i(v)-5 │ │ │ │ b(alue)33 b(is)h(found)e(in)h(a)h(piv)m(ot)g(elemen)m(t,)0 │ │ │ │ 954 y(one)d(could)f(ab)s(ort)g(the)h(factorization,)i(or)e(p)s(erturb)d │ │ │ │ (the)i(elemen)m(t)i(so)f(that)g(it)g(is)f(p)s(ositiv)m(e.)0 │ │ │ │ 1270 y Fd(1.1)135 b(Data)46 b(Structure)0 1500 y Fn(The)30 │ │ │ │ b Fm(PatchAndGoInfo)c Fn(structure)k(has)g(\014v)m(e)h(\014elds.)136 │ │ │ │ 1716 y Fl(\017)46 b Fm(int)h(strategy)28 b Fn(:)41 b(t)m(yp)s(e)30 │ │ │ │ @@ -4477,17 +4466,17 @@ │ │ │ │ (default)h(v)-5 b(alues:)41 b Fm(strategy)28 b Fn(=)i(-1,)h │ │ │ │ Fm(toosmall)d Fn(=)h Fm(fudge)227 5255 y Fn(=)h(0.0,)i(and)e │ │ │ │ Fm(fudgeIV)e Fn(=)i Fm(fudgeDV)f Fn(=)h Fm(NULL)f Fn(.)227 │ │ │ │ 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(info)g Fn(is)g Fm(NULL)p Fn(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 855 4 v 1036 100 a Fm(PatchAndGoInfo)27 │ │ │ │ -b Ff(:)40 b Fe(DRAFT)122 b Ff(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2998 100 V 855 w Fn(3)111 399 y(3.)46 b Fm(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 891 4 v 1072 100 a Fm(PatchAndGoInfo)27 │ │ │ │ +b Ff(:)40 b Fe(DRAFT)122 b Ff(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2962 100 V 891 w Fn(3)111 399 y(3.)46 b Fm(void)h │ │ │ │ (PatchAndGoInfo_clearData)41 b(\()48 b(PatchAndGoInfo)43 │ │ │ │ b(*info)k(\))g(;)227 549 y Fn(This)35 b(metho)s(d)f(clears)i(an)m(y)g │ │ │ │ (data)f(o)m(wned)g(b)m(y)g(the)h(ob)5 b(ject.)56 b(If)34 │ │ │ │ b Fm(fudgeIV)f Fn(is)i(not)h Fm(NULL)e Fn(it)h(is)h(free'd)f(b)m(y)g(a) │ │ │ │ 227 662 y(call)c(to)f Fm(IV)p 605 662 29 4 v 34 w(free\(\))p │ │ │ │ Fn(.)38 b(If)29 b Fm(fudgeDV)e Fn(is)i(not)h Fm(NULL)e │ │ │ │ Fn(it)i(is)f(free'd)g(b)m(y)g(a)h(call)g(to)g Fm(DV)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -26,15 +26,15 @@ │ │ │ │ │ If A is singular, the solution X = 0 and X = A−1B is perfectly acceptable. In other │ │ │ │ │ 1,1 1 2 2,2 2 │ │ │ │ │ cases, the location of the singularity can be communicated back to the user to supply useful │ │ │ │ │ information about the finite element model. One common practice is to not use pivoting, but │ │ │ │ │ to check the magnitude of the diagonal entry as a row and column is to be eliminated. If │ │ │ │ │ the magnitude is smaller than a user-supplied parameter, the diagonal entry is set to some │ │ │ │ │ 1 │ │ │ │ │ - 2 PatchAndGoInfo : DRAFT December 20, 2018 │ │ │ │ │ + 2 PatchAndGoInfo : DRAFT October 11, 2021 │ │ │ │ │ multiple of the largest offdiagonal entry in that row and column of the front, the location and │ │ │ │ │ perturbation is noted, and the factorization proceeds. │ │ │ │ │ Other strategies can be added to the PatchAndGoInfo object. For example, if a matrix is being │ │ │ │ │ factored that is believed to be positive definite, and a negative value is found in a pivot element, │ │ │ │ │ one could abort the factorization, or perturb the element so that it is positive. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The PatchAndGoInfo structure has five fields. │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ 1. PatchAndGoInfo * PatchAndGoInfo_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the PatchAndGoInfo structure and then sets the │ │ │ │ │ default fields by a call to PatchAndGoInfo setDefaultFields(). │ │ │ │ │ 2. void PatchAndGoInfo_setDefaultFields ( PatchAndGoInfo *info ) ; │ │ │ │ │ This method sets the structure’s fields to default values: strategy = -1, toosmall = fudge │ │ │ │ │ =0.0, and fudgeIV = fudgeDV = NULL . │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ - PatchAndGoInfo : DRAFT December 20, 2018 3 │ │ │ │ │ + PatchAndGoInfo : DRAFT October 11, 2021 3 │ │ │ │ │ 3. void PatchAndGoInfo_clearData ( PatchAndGoInfo *info ) ; │ │ │ │ │ This method clears any data owned by the object. If fudgeIV is not NULL it is free’d by a │ │ │ │ │ call to IV free(). If fudgeDV is not NULL it is free’d by a call to DV free(). The structure’s │ │ │ │ │ default fields are then set with a call to PatchAndGoInfo setDefaultFields(). │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void PatchAndGoInfo_free ( PatchAndGoInfo *info ) ; │ │ │ │ │ This method releases any storage by a call to PatchAndGoInfo clearData() then free’s the │ │ ├── ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ ├── Pencil.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMMI10 CMTT10 CMSY10 CMBX10 CMSL10 │ │ │ │ %%+ CMTI10 CMMI8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Pencil.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1176,22 +1176,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1365,88 +1365,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3649,15 +3638,15 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 171[41 84[{}1 66.4176 /CMMI8 rf /Fb 133[50 │ │ │ │ 59 4[44 44 3[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 99.6264 /CMBX12 │ │ │ │ rf /Fc 141[38 2[46 51 2[42 1[28 46 42 1[42 1[42 14[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf │ │ │ │ -/Fd 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 │ │ │ │ +/Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 │ │ │ │ 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 145[62 1[62 2[62 │ │ │ │ 3[62 1[62 18[62 80[{}6 119.552 /CMTT12 rf /Ff 132[52 │ │ │ │ 6[41 4[52 9[48 22[82 19[29 58[{}6 90.9091 /CMBX10 rf │ │ │ │ /Fg 152[45 45 86[45 15[{}3 90.9091 /CMSY10 rf /Fh 134[71 │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ rf /Fi 134[48 48 48 48 48 48 48 48 1[48 48 48 48 48 1[48 │ │ │ │ @@ -3722,17 +3711,17 @@ │ │ │ │ (shift)f(v)-5 b(alue.)0 5061 y Fh(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fe(Pencil)d Fh(metho)t(ds)0 │ │ │ │ 5294 y Fk(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ (elong)f(to)h(the)0 5407 y Fi(Pencil)29 b Fk(ob)5 b(ject.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1117 4 v │ │ │ │ -1299 w Fi(Chv)30 b Fd(:)40 b Fc(DRAFT)31 b Fd(Decem)m(b)s(er)g(20,)g │ │ │ │ -(2018)p 2783 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1153 4 v │ │ │ │ +1335 w Fi(Chv)30 b Fd(:)40 b Fc(DRAFT)31 b Fd(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2747 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 600 y Fk(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 712 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 962 y(1.)46 b Fi(Pencil)g(*)i │ │ │ │ (Pencil_new)d(\()i(void)g(\))g(;)227 1117 y Fk(This)25 │ │ │ │ b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ Fi(Pencil)d Fk(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ @@ -3788,17 +3777,17 @@ │ │ │ │ (the)e Fi(InpMtx)p 1709 5139 V 33 w(changeStorageMode\(\))25 │ │ │ │ b Fk(metho)s(d)k(for)h(eac)m(h)i(of)e(its)h(t)m(w)m(o)g(ma-)227 │ │ │ │ 5252 y(trices.)227 5407 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fk(If)30 b Fi(pencil)f Fk(is)h Fi(NULL)p │ │ │ │ Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f │ │ │ │ (returned.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1117 4 v 1299 100 a Fi(Chv)29 │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2736 100 V 1117 w Fk(3)111 399 y(3.)46 b Fi(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1153 4 v 1335 100 a Fi(Chv)29 │ │ │ │ +b Fd(:)41 b Fc(DRAFT)121 b Fd(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2700 100 V 1153 w Fk(3)111 399 y(3.)46 b Fi(void)h │ │ │ │ (Pencil_sortAndCompress)42 b(\()47 b(Pencil)f(*pencil)g(\))h(;)227 │ │ │ │ 554 y Fk(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ Fi(InpMtx)p 1662 554 29 4 v 33 w(sortAndCompress\(\))16 │ │ │ │ b Fk(metho)s(d)k(for)h(eac)m(h)h(of)f(its)g(t)m(w)m(o)i(matrices.)227 │ │ │ │ 709 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fi(pencil)f Fk(is)h Fi(NULL)p Fk(,)g(an)g(error)g(message)i(is)e │ │ │ │ (prin)m(ted)g(and)g(zero)h(is)f(returned.)111 906 y(4.)46 │ │ │ │ @@ -3859,19 +3848,19 @@ │ │ │ │ 5294 y Fi(SPOOLES)p 569 5294 V 33 w(HERMITIAN)p Fk(,)38 │ │ │ │ b(en)m(tries)j(in)f(the)h(lo)m(w)m(er)g(triangle)h(are)f(dropp)s(ed.)68 │ │ │ │ b(If)40 b Fi(randomflag)e Fk(is)i(one,)k(the)227 5407 │ │ │ │ y(en)m(tries)31 b(are)g(\014lled)f(with)g(random)g(n)m(um)m(b)s(ers)f │ │ │ │ (using)h(the)g Fi(Drand)f Fk(random)h(n)m(um)m(b)s(er)f(generator)j │ │ │ │ Fi(drand)p Fk(.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1117 4 v │ │ │ │ -1299 w Fi(Chv)30 b Fd(:)40 b Fc(DRAFT)31 b Fd(Decem)m(b)s(er)g(20,)g │ │ │ │ -(2018)p 2783 100 V 227 399 a Ff(Note:)52 b Fk(this)36 │ │ │ │ -b(metho)s(d)g(w)m(as)g(created)i(for)e(an)g(MPI)g(application.)59 │ │ │ │ -b(If)36 b Fi(myid)f Fk(is)h(zero,)j(then)d(the)g(\014les)h(are)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1153 4 v │ │ │ │ +1335 w Fi(Chv)30 b Fd(:)40 b Fc(DRAFT)31 b Fd(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2747 100 V 227 399 a Ff(Note:)52 b Fk(this)36 b(metho)s(d)g(w)m(as)g │ │ │ │ +(created)i(for)e(an)g(MPI)g(application.)59 b(If)36 b │ │ │ │ +Fi(myid)f Fk(is)h(zero,)j(then)d(the)g(\014les)h(are)227 │ │ │ │ 511 y(read)30 b(in,)g(otherwise)h(just)e(stubs)g(are)h(created)h(for)f │ │ │ │ (the)g(in)m(ternal)h(matrix)f(ob)5 b(jects.)41 b(In)30 │ │ │ │ b(our)f(MPI)h(driv)m(ers,)227 624 y(pro)s(cess)d(zero)i(reads)e(in)g │ │ │ │ (the)h(matrices)g(and)f(then)g(starts)h(the)g(pro)s(cess)f(to)h │ │ │ │ (distribute)f(them)h(to)g(the)g(other)227 737 y(pro)s(cesses.)227 │ │ │ │ 888 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fi(pencil)f Fk(or)h Fi(fp)g Fk(are)h Fi(NULL)p Fk(,)e(an)i(error)f │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ • InpMtx *inpmtxB : pointer to the matrix object for B. If inpmtxB is NULL, then B is the │ │ │ │ │ identity matrix. │ │ │ │ │ • double sigma[2] : real or complex scalar shift value. │ │ │ │ │ 1.2 Prototypes and descriptions of Pencil methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ Pencil object. │ │ │ │ │ 1 │ │ │ │ │ - 2 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 2 Chv : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Pencil * Pencil_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Pencil structure and then sets the default fields │ │ │ │ │ by a call to Pencil setDefaultFields(). │ │ │ │ │ 2. void Pencil_setDefaultFields ( Pencil *pencil ) ; │ │ │ │ │ @@ -48,15 +48,15 @@ │ │ │ │ │ 1. void Pencil_changeCoordType ( Pencil *pencil, int newType ) ; │ │ │ │ │ ThismethodsimplycallstheInpMtx changeCoordType()methodforeachofitstwomatrices. │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ 2. void Pencil_changeStorageMode ( Pencil *pencil, int newMode ) ; │ │ │ │ │ This method simply calls the InpMtx changeStorageMode() method for each of its two ma- │ │ │ │ │ trices. │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ - Chv : DRAFT December 20, 2018 3 │ │ │ │ │ + Chv : DRAFT October 11, 2021 3 │ │ │ │ │ 3. void Pencil_sortAndCompress ( Pencil *pencil ) ; │ │ │ │ │ ThismethodsimplycallstheInpMtx sortAndCompress()methodforeachofitstwomatrices. │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ 4. void Pencil_convertToVectors ( Pencil *pencil ) ; │ │ │ │ │ ThismethodsimplycallstheInpMtx sortAndCompress()methodforeachofitstwomatrices. │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ 5. void Pencil_mapToLowerTriangle ( Pencil *pencil ) ; │ │ │ │ │ @@ -83,15 +83,15 @@ │ │ │ │ │ 1. Pencil * Pencil_setup ( int myid, int symflag, char *inpmtxAfile, │ │ │ │ │ double sigma[], char *inpmtxBfile, int randomflag, Drand *drand, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method is used to read in the matrices from two files and initialize the objects. If │ │ │ │ │ the file name is “none”, then no matrix is read. If symflag is SPOOLES SYMMETRIC or │ │ │ │ │ SPOOLES HERMITIAN, entries in the lower triangle are dropped. If randomflag is one, the │ │ │ │ │ entries are filled with random numbers using the Drand random number generator drand. │ │ │ │ │ - 4 Chv : DRAFT December 20, 2018 │ │ │ │ │ + 4 Chv : DRAFT October 11, 2021 │ │ │ │ │ Note: this method was created for an MPI application. If myid is zero, then the files are │ │ │ │ │ read in, otherwise just stubs are created for the internal matrix objects. In our MPI drivers, │ │ │ │ │ process zero reads in the matrices and then starts the process to distribute them to the other │ │ │ │ │ processes. │ │ │ │ │ Error checking: If pencil or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 2. int Pencil_readFromFiles ( Pencil *pencil, char *fnA, char *fnB ) ; │ │ │ │ │ This method reads the two InpMtx objects from two files. If fnA is “none”, then A is not │ │ ├── ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ ├── Perm.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMSY10 CMBX10 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Perm.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -556,22 +556,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -745,88 +745,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3058,16 +3047,16 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 │ │ │ │ -46[{}24 99.6264 /CMBX12 rf /Fb 141[36 4[76 7[40 1[40 │ │ │ │ -51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ +46[{}24 99.6264 /CMBX12 rf /Fb 139[35 1[36 2[45 9[40 │ │ │ │ +1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ rf /Fc 141[62 4[62 7[62 20[62 80[{}4 119.552 /CMTT12 │ │ │ │ rf /Fd 132[52 123[{}1 90.9091 /CMBX10 rf /Fe 222[91 17[45 │ │ │ │ 14[71{}3 90.9091 /CMSY10 rf /Ff 136[60 2[30 1[38 2[46 │ │ │ │ 51 1[23 42 1[28 46 42 1[42 46 42 14[65 1[66 11[59 62 │ │ │ │ 69 2[68 6[28 12[33 45[{}21 90.9091 /CMTI10 rf /Fg 134[71 │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ @@ -3126,17 +3115,17 @@ │ │ │ │ b(to)h(the)g(old-to-new)g(v)m(ector)0 5045 y Fg(1.2)135 │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(Perm)e │ │ │ │ Fg(metho)t(ds)0 5294 y Fi(This)25 b(section)h(con)m(tains)h(brief)e │ │ │ │ (descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d │ │ │ │ (that)j(b)s(elong)e(to)h(the)g Fh(Perm)0 5407 y Fi(ob)5 │ │ │ │ b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1099 4 v │ │ │ │ -1280 w Fh(PERM)30 b Fb(:)g Ff(DRAFT)g Fb(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2802 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1135 4 v │ │ │ │ +1316 w Fh(PERM)30 b Fb(:)g Ff(DRAFT)g Fb(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2766 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 601 y Fi(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 714 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 965 y(1.)46 b Fh(Perm)h(*)g │ │ │ │ (Perm_new)f(\()h(void)g(\))g(;)227 1121 y Fi(This)32 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fh(Perm)f Fi(structure)h(and)f(then)h(sets)h(the)f(default)g(\014elds) │ │ │ │ @@ -3191,17 +3180,17 @@ │ │ │ │ (*perm)f(\))i(;)227 5251 y Fi(This)30 b(metho)s(d)g(returns)f(the)h(n)m │ │ │ │ (um)m(b)s(er)f(of)i(b)m(ytes)g(tak)m(en)g(b)m(y)g(this)f(ob)5 │ │ │ │ b(ject.)227 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fi(If)30 b Fh(perm)g Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)f(message)h │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1099 4 v 1280 100 a Fh(PERM)29 │ │ │ │ -b Fb(:)i Ff(DRAFT)121 b Fb(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2755 100 V 1099 w Fi(3)111 399 y(2.)46 b Fh(int)h(Perm_checkPerm)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1135 4 v 1316 100 a Fh(PERM)29 │ │ │ │ +b Fb(:)i Ff(DRAFT)121 b Fb(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2719 100 V 1135 w Fi(3)111 399 y(2.)46 b Fh(int)h(Perm_checkPerm)d(\()k │ │ │ │ (Perm)e(*perm)h(\))g(;)227 557 y Fi(This)39 b(metho)s(d)g(c)m(hec)m(ks) │ │ │ │ i(the)f(v)-5 b(alidit)m(y)41 b(of)e(the)h Fh(Perm)e Fi(ob)5 │ │ │ │ b(ject.)69 b(If)39 b Fh(oldToNew)f Fi(is)h(presen)m(t,)j(it)e(is)g(c)m │ │ │ │ (hec)m(k)m(ed)227 670 y(to)c(see)f(that)g(it)h(is)f(a)g(true)f(p)s(erm) │ │ │ │ m(utation)h(v)m(ector,)j(i.e.,)f(a)e(one-one)h(and)e(on)m(to)i(map)e │ │ │ │ (from)h Fh([0,size\))d Fi(to)227 783 y Fh([0,size\))p │ │ │ │ Fi(,)d(and)h(similarly)h(for)g Fh(newToOld)d Fi(if)j(it)g(is)f(presen)m │ │ │ │ @@ -3261,17 +3250,17 @@ │ │ │ │ b(metho)s(ds)0 4952 y Fi(There)30 b(are)h(the)f(usual)g(eigh)m(t)i(IO)e │ │ │ │ (routines.)40 b(The)30 b(\014le)h(structure)f(of)g(a)h │ │ │ │ Fh(Perm)e Fi(ob)5 b(ject)31 b(is)g(simple:)0 5181 y Fh(isPresent)d │ │ │ │ (size)0 5294 y(oldToNew[size])e Fi(\(if)31 b(presen)m(t\))0 │ │ │ │ 5407 y Fh(newToOld[size])26 b Fi(\(if)31 b(presen)m(t\))p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1099 4 v │ │ │ │ -1280 w Fh(PERM)30 b Fb(:)g Ff(DRAFT)g Fb(Decem)m(b)s(er)i(20,)f(2018)p │ │ │ │ -2802 100 V 111 399 a Fi(1.)46 b Fh(int)h(Perm_readFromFile)c(\()48 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1135 4 v │ │ │ │ +1316 w Fh(PERM)30 b Fb(:)g Ff(DRAFT)g Fb(Octob)s(er)h(11,)g(2021)p │ │ │ │ +2766 100 V 111 399 a Fi(1.)46 b Fh(int)h(Perm_readFromFile)c(\()48 │ │ │ │ b(Perm)e(*perm,)g(char)h(*fn)g(\))g(;)227 552 y Fi(This)29 │ │ │ │ b(metho)s(d)f(reads)h(a)g Fh(Perm)f Fi(ob)5 b(ject)30 │ │ │ │ b(from)f(a)g(\014le.)41 b(It)29 b(tries)g(to)h(op)s(en)e(the)i(\014le)f │ │ │ │ (and)f(if)h(it)h(is)f(successful,)g(it)227 665 y(then)35 │ │ │ │ b(calls)i Fh(Perm)p 845 665 29 4 v 33 w(readFromFormattedFile\(\))29 │ │ │ │ b Fi(or)36 b Fh(Perm)p 2320 665 V 33 w(readFromBinaryFile\(\))p │ │ │ │ Fi(,)c(closes)k(the)g(\014le)227 778 y(and)30 b(returns)f(the)i(v)-5 │ │ │ │ @@ -3351,17 +3340,17 @@ │ │ │ │ 34 w(writeStats\(\))26 b Fi(is)k(called)h(to)f(write)g(out)h(the)f │ │ │ │ (header)f(and)g(statistics.)43 b(The)29 b(v)-5 b(alue)31 │ │ │ │ b Fh(1)e Fi(is)h(returned.)227 5407 y Ff(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fi(If)30 b Fh(perm)g Fi(or)g Fh(fp)g │ │ │ │ Fi(are)g Fh(NULL)p Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and) │ │ │ │ g(zero)h(is)f(returned.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1099 4 v 1280 100 a Fh(PERM)29 │ │ │ │ -b Fb(:)i Ff(DRAFT)121 b Fb(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2755 100 V 1099 w Fi(5)111 399 y(8.)46 b Fh(int)h(Perm_writeStats)d(\() │ │ │ │ +TeXDict begin 5 4 bop 91 100 1135 4 v 1316 100 a Fh(PERM)29 │ │ │ │ +b Fb(:)i Ff(DRAFT)121 b Fb(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2719 100 V 1135 w Fi(5)111 399 y(8.)46 b Fh(int)h(Perm_writeStats)d(\() │ │ │ │ j(Perm)g(*perm,)f(FILE)h(*fp)g(\))g(;)227 549 y Fi(This)30 │ │ │ │ b(metho)s(d)g(writes)g(out)h(a)f(header)h(and)e(statistics)k(to)e(a)g │ │ │ │ (\014le.)40 b(The)30 b(v)-5 b(alue)31 b Fh(1)f Fi(is)h(returned.)227 │ │ │ │ 699 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 │ │ │ │ b Fh(perm)g Fi(or)g Fh(fp)g Fi(are)g Fh(NULL)p Fi(,)g(an)g(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)p │ │ │ │ eop end │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -14,15 +14,15 @@ │ │ │ │ │ • int size : dimension of the vectors │ │ │ │ │ • int *newToOld : pointer to the new-to-old vector │ │ │ │ │ • int *oldToNew : pointer to the old-to-new vector │ │ │ │ │ 1.2 Prototypes and descriptions of Perm methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Perm │ │ │ │ │ object. │ │ │ │ │ 1 │ │ │ │ │ - 2 PERM : DRAFT December 20, 2018 │ │ │ │ │ + 2 PERM : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Perm * Perm_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Perm structure and then sets the default fields │ │ │ │ │ by a call to Perm setDefaultFields(). │ │ │ │ │ 2. void Perm_setDefaultFields ( Perm *perm ) ; │ │ │ │ │ @@ -46,15 +46,15 @@ │ │ │ │ │ isPresent == 3 then newToOld and newToOld are set with calls to IVinit(). │ │ │ │ │ Error checking: If perm is NULL, or if isPresent is invalid, or if size <= 0, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ 1. int Perm_sizeOf ( Perm *perm ) ; │ │ │ │ │ This method returns the number of bytes taken by this object. │ │ │ │ │ Error checking: If perm is NULL, an error message is printed and the program exits. │ │ │ │ │ - PERM : DRAFT December 20, 2018 3 │ │ │ │ │ + PERM : DRAFT October 11, 2021 3 │ │ │ │ │ 2. int Perm_checkPerm ( Perm *perm ) ; │ │ │ │ │ This method checks the validity of the Perm object. If oldToNew is present, it is checked │ │ │ │ │ to see that it is a true permutation vector, i.e., a one-one and onto map from [0,size) to │ │ │ │ │ [0,size), and similarly for newToOld if it is present. If the permutation vector(s) are valid, │ │ │ │ │ 1 is returned, otherwise 0 is returned. │ │ │ │ │ Error checking: If perm is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. void Perm_fillOldToNew ( Perm *perm ) ; │ │ │ │ │ @@ -80,15 +80,15 @@ │ │ │ │ │ compressed graph. │ │ │ │ │ Error checking: If perm or eqmapIV are NULL, an error message is printed and zero is returned. │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ There are the usual eight IO routines. The file structure of a Perm object is simple: │ │ │ │ │ isPresent size │ │ │ │ │ oldToNew[size] (if present) │ │ │ │ │ newToOld[size] (if present) │ │ │ │ │ - 4 PERM : DRAFT December 20, 2018 │ │ │ │ │ + 4 PERM : DRAFT October 11, 2021 │ │ │ │ │ 1. int Perm_readFromFile ( Perm *perm, char *fn ) ; │ │ │ │ │ This method reads a Perm object from a file. It tries to open the file and if it is successful, it │ │ │ │ │ then calls Perm readFromFormattedFile() or Perm readFromBinaryFile(), closes the file │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ Error checking: If perm or fn are NULL, or if fn is not of the form *.permf (for a formatted │ │ │ │ │ file) or *.permb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 2. int Perm_readFromFormattedFile ( Perm *perm, FILE *fp ) ; │ │ │ │ │ @@ -117,15 +117,15 @@ │ │ │ │ │ This method writes out a Perm object to a binary file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 7. int Perm_writeForHumanEye ( Perm *perm, FILE *fp ) ; │ │ │ │ │ This method writes out a Perm object to a file in a human readable format. The method │ │ │ │ │ Perm writeStats() is called to write out the header and statistics. The value 1 is returned. │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - PERM : DRAFT December 20, 2018 5 │ │ │ │ │ + PERM : DRAFT October 11, 2021 5 │ │ │ │ │ 8. int Perm_writeStats ( Perm *perm, FILE *fp ) ; │ │ │ │ │ This method writes out a header and statistics to a file. The value 1 is returned. │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ Index │ │ │ │ │ Perm checkPerm(), 4 │ │ │ │ │ Perm clearData(), 3 │ │ │ │ │ Perm compress(), 4 │ │ ├── ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ ├── ReferenceManual.ps │ │ │ │ @@ -9,15 +9,15 @@ │ │ │ │ %%+ CMR7 CMBX8 CMTT10 CMMI10 CMSL10 CMCSC10 CMEX10 CMSY10 CMSY7 CMMI7 │ │ │ │ %%+ CMTI10 CMTT12 CMMI12 CMTT8 CMEX7 Helvetica │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ReferenceManual.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -4400,22 +4400,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -4589,88 +4589,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -10197,32 +10186,31 @@ │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 46 /period put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 67 /C put │ │ │ │ dup 68 /D put │ │ │ │ dup 74 /J put │ │ │ │ dup 75 /K put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 87 /W put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ dup 102 /f put │ │ │ │ dup 104 /h put │ │ │ │ dup 105 /i put │ │ │ │ dup 108 /l put │ │ │ │ -dup 109 /m put │ │ │ │ dup 110 /n put │ │ │ │ dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ dup 117 /u put │ │ │ │ dup 118 /v put │ │ │ │ @@ -10404,181 +10392,170 @@ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753 │ │ │ │ A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ -DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ -073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ -EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ -8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010C81653 │ │ │ │ -19A494E9F860632F8CF5B097D6F0DA0CF175BBC872BFF3D3B1CDD560A14E9301 │ │ │ │ -F027CB0E089F935C70F9E792F112032582E7F3BFE28ADE72E1F70D6D09021AED │ │ │ │ -2A703E0A93C7BC4DEE245C1D5BB30481C4C69D5A4E7B27983B969B9AD6A7BD39 │ │ │ │ -6A4BC688D85E1D93DA559088886D36F26570743E54EC6E94FF66F61EE8299209 │ │ │ │ -075CB9127C1D59FE85EE7378CE553BD80F7A03B15FB710E091902C8368DFCF73 │ │ │ │ -7C682089968062C005EA19B482F1982A2AD23FA4A86963A7085E40F9942C261D │ │ │ │ -738A72D952319A2E36DF32527E5332FE0E385152E93FDD702972A27BFBB0FDA2 │ │ │ │ -331A1FEA6E3DFE3E22ABD325801EF12305C84EAD056C982C9CCC7070DFE65215 │ │ │ │ -ECC2F84735580E99B3583D4FC68EC52E79B7F8DBA2DD43705D2E274D06BE990E │ │ │ │ -C58F63543A9ECF987D0C770084FF2472215A2C3D14154BCFCCB17C80CFA71B09 │ │ │ │ -74A07FB9EFBEE5D4F89BFA97A5B98CB409EE48D23D69463718D06FFA1B3D11B5 │ │ │ │ -11B84A04B118AF107761FD995481A29F8E40044BC68A8A5864F382B9E334DF11 │ │ │ │ -2BABC1E496611192EDF9197CCC741F9091185D71B05DFB0D0B19D6E0D3CF3DE0 │ │ │ │ -6C43C239248F38ABA81BB9F77E4F58727DFAD86E223E8C384ED8386E49D5A391 │ │ │ │ -8A5BCF8D13A05B943C9BEE89598616A65D419732C0E1357C26660FCD6B9ACDEE │ │ │ │ -52BC7BE7CF749C83BEDAB386C9B188BAD5480A3D86DE7ABF644AF1CBA19ECE8F │ │ │ │ -06B6E761556C0B3F9E9C8CD496887364B12AD1EEC7A3725174D468C4A8B0D9F9 │ │ │ │ -8D7159898CC89B54260226CBD4C851A9A094AD277E607060115D3BB164338C9C │ │ │ │ -9FB453BB8115DC1D682835367C71ECFFA116B3A4ED388CB925ED66FE2FBA7F4C │ │ │ │ -8285A5D5F18E0A9FA9D1B238320D5788242B0FB73FC237564860972D2BB253BC │ │ │ │ -DA0B89BAAB301AC2B8A063C5407D5F67BE81D43B75DC78342A5AA5EBA091B86D │ │ │ │ -1C680BEBBA820B78FDF1992327C4403258D562C2065CB67B6EA86A554D81FEA2 │ │ │ │ -9FFA7C43043424F38FDF43F17011F0BBB0448DFA6F338719553F28FB919BB6CB │ │ │ │ -8922F677F748F615F64B540FA37A4DCF9255DFFCA46EDC99611C452EBF88C094 │ │ │ │ -D071E10313B28CF1EDF9152A33F513FB92C8ECA125AABB3F91F4B1D76EB088B8 │ │ │ │ -E6123958F3869CC7D1EE442696ADEDF00E62D4AF1B361DFA731C7C05335711DE │ │ │ │ -E1344229A6FC218570E233FA9178AED70B83FBBF024E198DC492701DA70D9E8C │ │ │ │ -AF9EF576AB5C5C23FC4BC5E659DCE195BF678E3E5F40125130DAB26F5C15B2CE │ │ │ │ -C53679BFD4F631E491B4BA8C5440E7AD3EF7A5AB08F0EEEC2CEDFB25B29ADA75 │ │ │ │ -112844FB36BDD994A0B3939756EC0772162D584201621528621C4AAD5AB378EC │ │ │ │ -7E1D0451F95ECEF5F2936265B512EC396FF714F3F8DC7F105356559AF3B23B88 │ │ │ │ -A3B5A0804523F4B1DB1A6152EF0377FD7D83F1AF6A850441CFC69B62A9EA6BFA │ │ │ │ -488EF4003A14A5D861A0EA43816FA480EE38DC8DD29274A800414E6A19A34998 │ │ │ │ -791EF7E64345A5B2E59CEF505FF5007ECD32BCA8B6B4A59B872DABFB9561DDA2 │ │ │ │ -79AD47E11BB1DB5ED5E89CD27A60210FE0DE66D407A3F9261B08A596E7B098A7 │ │ │ │ -108CD08DD5FCD95202722A0A217FD6242D78A39BC901A662866FA4D1C9094024 │ │ │ │ -31B2FFEE3FE17858AA398E37BF984F2D0ACB51C7B988672DC4698013AF7792FF │ │ │ │ -76185F1BBAE1565426CBB7A052B2E7220B3F073B512A68EA888788CEF6BC4271 │ │ │ │ -AACBCA0480BBE86EFC18582470F73D3587799AB146F67FBE333BF669D2DAC973 │ │ │ │ -0200323D9C3D57495D311540D504017FF1AD09284C7CE318CCFBC592BDFCC2FB │ │ │ │ -43B15BE91656086DDB4E7636427AC8F7B54DAB218C8D9D5771D7E8B7860D8F8B │ │ │ │ -69A2EF0517681E1CFA64861516BB5F6AEE9366A20D8610E4B49B834B0D0D33F3 │ │ │ │ -6F541D42007D8BDDF20E44CDE7301F7FF013CD277D2EF58C1CA3A92AB5E4ECD9 │ │ │ │ -74B28DA70EE2C76848BA1E8E6291086D4A12430F75782584624C18016A115496 │ │ │ │ -709CFFA0DE36CDA059276CBF96DEBBBF226C56F66B30C93614DC8BF18F1C2F14 │ │ │ │ -959CA22BB6EF308C222F3C7BB59E8D25DE2B5F8B45C90931B77B21A302B32964 │ │ │ │ -F95AA1BE89D3D24093364234CF8FB7520AA6F7D48048FAF1BD833C92691F2F18 │ │ │ │ -CC727E6EA08857A7A21EA10C9274A3DA7A0DEDDCE4238B78F0636AE75231127C │ │ │ │ -BB7DC94DB8C792CCA1F610369E937CDBCF32C84E428653CCB23C4600A5538BBD │ │ │ │ -33BA85D17BC4C14B764B7040A7894DF08744321C1DFAD2AA1CFF98AD8C88128E │ │ │ │ -CEFE3F89B1F2C09BB84980619C272C2CF1CD1815AE9153A851A9F2BBB2C8951C │ │ │ │ -61F4F04996314DDA0630278589DAD101F90B6277C0B13ABF1DFB0D546AD7A840 │ │ │ │ -C56066D8414D2F5E7DFB7176EC19CA87870D9F21EB350F2CF456C75121744BB5 │ │ │ │ -A32511A356667E3D6B3672D2B7D217C318BC6C63E4C01AA264A083FAEDCBD1A1 │ │ │ │ -29441DCD46E1D7DB49AF7029A8905F5ED48A9D75EA6038853CFFEBF5C0A478C6 │ │ │ │ -27314DA82A05F08CADDAF925DB74636E26F2455E3ED942A37820ED589C4E5427 │ │ │ │ -E93C07DBA4ADA5C606173A86DFDD265FE66D87BB11E45BCE5176CF947757D734 │ │ │ │ -ABC0673E21A7708F743A65129D8BC0FE5EF6B66CB4D4DE2D95AABE7C1486B8AC │ │ │ │ -62F89651A44926440DE90708429D617F40DDBD2EA7987393EAFAD550206BE39C │ │ │ │ -CE634EA2F9C29FB3D15D215D8FB880818B51C72DACE1CA838DDA1404DBB0AF09 │ │ │ │ -3FB742F22094BE2B92CEBF77C426E7AB00ABFC80FD5D7AB3ABDBD904B66EECF7 │ │ │ │ -1AAB75B9BACB3BC31E409E2482EA4CB488CC9D758EE4DCF1419DC6EC3CCA0DBD │ │ │ │ -C3257A552E9A65CCADEE81300E856A879B1B6DCAED9D56BF1EA2F4BC393B413F │ │ │ │ -4C36A36CE52D42A340561350C2426963BA3E9F58584DC65188D3E9AE064720CA │ │ │ │ -D0CAE1F99B61E0FDAACE0D55E076EF941306DB572F3C8EA4285D18EE6CF5A17A │ │ │ │ -C4B80B855F4B8268F98CCBBE7BB9FFA5052E351373F48F250EECCBE4FB378990 │ │ │ │ -23CECA4F441D95AE4B1B4E5480B5BA50577B21104BDDBBEAC274EBE87EE4841C │ │ │ │ -8183780C5E357513CDD0E77A32B7EB8D39BA7A7B4BDA22C972C3C5BA6F4A6872 │ │ │ │ -925E3DA103B061D3DF0923B31E337FCA3D85C10DE277CAAB2F8026CDABFE98DB │ │ │ │ -A67267A86CF65B6B08425ECF30DD548118732FB9CCC6BC4B734B61B86FBB781C │ │ │ │ -014B770AF5496CB3A719CBF2D0969CD4C741B3B2065A1560B17E9E20F1CD1050 │ │ │ │ -3C4427A0E58A409F4EB84FEFDF3E59DAEDE1DA4E4F86469A8CB8F8C0CB6530F6 │ │ │ │ -CF5F5767164E800A5F364CE9D943940433749B07EBA5DEA5C7EA221B77204DBC │ │ │ │ -42ECCBC845147EE1DC4667E13FE9D79EBAA952C42A77DCBE565A4CCC477CDE47 │ │ │ │ -B6C61E9E888F074AEDB152204D52B2B2BF1CA358FFB1A412EDF3D8C36B751B46 │ │ │ │ -76339DC44FDA252E6ED4514B19680835735DECAA8328A128FC782D6150219488 │ │ │ │ -B553B8D19BF698EC2BE9C3279B036607EE9E35F04941627DDD6222962B0F8C7A │ │ │ │ -95926D903A4D7570CD6A6670CD64FC18F60A22CB13CA8A342D1CB83AD3662573 │ │ │ │ -4C975C452512DB3370FFDFD2B8CB2AB1231367530EF8DFD03C1A18AACBBA52FB │ │ │ │ -05A71F73F5308132F2F80AC0FDC7C395E9E0A36588AACBF02FE463A5C664F35D │ │ │ │ -DCE6EF7F488E228DFFA6C7DC78A95D05434D46B9C5702369DFC8CD2778997C8D │ │ │ │ -8336317054F3B0EC396EF86A492C4B61FFC8982BF667326FE580499AC7CC69AA │ │ │ │ -F56F878129D324B852BF53A08C4B2AB2F4CC3D1CABD073B872DB7647F45CA52C │ │ │ │ -A971AEFA91AFBD45B1EBEDD54A5EF99C483F70E6AA069A9989B509116CCC4009 │ │ │ │ -0B3F36E5279BE519EE76A8CC1FB1E3CDE936850591B0C92761BC207CFE24A11A │ │ │ │ -FCE664E18E45D7229F90B4EF208E4BEEDC4C2BC5A8BF53AC4C4DCA77BB2FEA44 │ │ │ │ -A7CF35FAC26FF548EC420998E59469349C9878072578D4B2676FDF685ACBD370 │ │ │ │ -F6BD78D4C3105956D2D6D0BCE4B729E297B9EB9AFB79537822DD1659BE50C699 │ │ │ │ -9343925CFB06AEAEB13F467317B8AEAAA8BC9AF120C65110CE4E4E5EDB1BC9B3 │ │ │ │ -DFBF80F2EE87CD730BF5B72C48C5D4AD8C286AE8F24BEEDC06F54870D23D1358 │ │ │ │ -C5A384EE88FCA6F5D618410CE4A2BCB6382D3E92B210DADE434F55550793A915 │ │ │ │ -82258155F52B2E3A99AB9DD7D0BF5C3F99F22539A65FB38EC3F6E261208B129C │ │ │ │ -F98038BA4A884966317A6663269919AD47E57A7D7478A45F61979180A142AB32 │ │ │ │ -BCEA045A337E07BD0CB516F881BFD29B6D9288B153CF8976F70B5E38DF3EA87F │ │ │ │ -C0C766D91C28543EA9F821C60DE26F6BE4CFD6143D52A04A14EB0D3CDD70170A │ │ │ │ -52FF7E0D356555527B22DDFF84736D2A7BFEC5F3DBA58DC740D9C5FEF2159426 │ │ │ │ -8F60A8B81E57EF72804407DE9517BB8D48C3D9D5CB735482B3293B9AF357B9A2 │ │ │ │ -B6B83752B54E7CC79876949BA61520010E72479C4B643BD591192C886C977EC7 │ │ │ │ -D973AE170FE973D8FD86B29B1BBEDB72148A8B37DE127244ECE3A3762D5FF05B │ │ │ │ -502A15013B69D2A500052B6C7E8B4C565106982E20F9610493DDC805B406DB49 │ │ │ │ -52CB0737BC4862B687BA13758FB4D196F5D45FFBFD1ACAB93DCF71E92381862E │ │ │ │ -A7F168110F05C001298935B43EA94F04C309E86AB3A5E989A5C00DB9156CBC3F │ │ │ │ -D66F966B27EF9CEAAD5F48B63FE61D209EBBFEDBE0541852847DB211D4E65536 │ │ │ │ -03D270E62BD46662BE6C2E2A2C2752BEB590078B99D1138470BAE92739AF6A30 │ │ │ │ -96BCEE9E3E6DC433D1F0B4EC3AC3736F49A18D6C93092EAF08CE79436D2FFD8C │ │ │ │ -1881F031B2157E79C7922421800DE01F5BA91E6EF714874953C28349C2E26A34 │ │ │ │ -4E55C9D309A6AA2982426179D6C11CD6E2A73B54B757F318E54BBE2564FD295E │ │ │ │ -1F4947746968D9B709BB659A07336FE8BBE8DF4164AF3F8AC1BAE5C7E1AF39F4 │ │ │ │ -F51546C72D72D591BB117F4E79940944416F6F4334C1F65944144C66D712B74B │ │ │ │ -3826621DCE3BC00048BB141E456D52DFB8EF36656BC059B12E77A058EE16B10B │ │ │ │ -7FB0291BCF358E47AB2ED254F1026750EE7F7AE86B561F8F02C2261400362EED │ │ │ │ -645CA53E6414D04147FF0F68A4E05A3F6B19A4661C777AEF00E9B58664B7504B │ │ │ │ -AD71F4B1ABA462EE1234B0034642F18C7256A1C6E6EB63B9AB689B511F75F658 │ │ │ │ -96238E50CDE0288E235A555B6473652776F625ED21FA21DB7F27395560E1832A │ │ │ │ -2393DF5AC65E4BD809B1D39CC769C6B6F3B7D719F6E25B296CCD0E2EC114F895 │ │ │ │ -2767DB92AE5E644137F5B71E81616AED3800623ABE634527624337EA5A68BBB5 │ │ │ │ -A54256F6C14E693157730BDA88B40329F7000B9F6D2009FF4AA692CE1DA7DDB9 │ │ │ │ -6A9341FE8A7C12A3F5A91C50D75F2F0E61F01FC80B308AB111768007B55C58F2 │ │ │ │ -3A4B764FAA9F8CFB1AD28341E1FF1B81A64B196179D1395567BD0771760F3EAA │ │ │ │ -E1A595A856A8C93D47B313B006860D52A7171A2F20EE8D4C28B8433D965EF535 │ │ │ │ -95439F16339D661A8C914C3928C4EAD2C09CC352688AB64234579FF09C0AB4CD │ │ │ │ -D733F3228604DAC82ACBA415FCDB7EE19D7D2A918BE23506A4FBEB6FDE6EC600 │ │ │ │ -565C65390C6AF5F51A5ACFC03D141DAFF40259FB047DFE669745A9C3B81959EB │ │ │ │ -D5A4C5C2C934AA5017C36211174B3E44D09A6D9A775233CDABDA4795576C45CE │ │ │ │ -311491D677A489E2FBADF0F33A65CB3233EA6B010C7D6506EA4FF20433DD6610 │ │ │ │ -C9B47E4BE028BE87499AFEB7671311E90D09E03F2D4962709548EA5D7E209216 │ │ │ │ -9E88A16A805A17762DC050A913530E5363EC8132A1DFBB75BF9EBAAC268C29DC │ │ │ │ -87FC2341C53DE2EF6C14193B09FB47BF68469AAA757E6EB5A3CEF8377A6823E2 │ │ │ │ -B21822FCAC52476FC7988F29C2805C65691E6ACA262F30F7FC04D304BA5ABEA1 │ │ │ │ -F886251CFE9702364F631C883DC5373E6CB9E075786157123FEBE6D71CC727C4 │ │ │ │ -F9BF9CA1AC3DC8DD853E624B8320D7BBD3B32E99D2DF746E5243345E66A737CD │ │ │ │ -11CCF76D20D5718E1DC0874268CB2AB59C7E283088D0A6024ED6E5EEDAB79E4B │ │ │ │ -27EDD47A79CA6C630B8DFCFE2653F848B9927D87A9422F6717B6D09696A22288 │ │ │ │ -66EEC50162F6ED2F64ECB2A0A69ADECBF8F2196BBE354EC9E46DF6E6BED4A165 │ │ │ │ -5EDC9D2962665EC70557716C110FEF5AF355D861F4A0F4A4112A577ACD7130F8 │ │ │ │ -B648655573F89D58CB247ACD88B98FD52BBB1F3930E04571A797847D282742A9 │ │ │ │ -9349A9D926D079A40EBC4815D225629BEE3F1ABF5BBD14581322E06491A5F8A9 │ │ │ │ -E87CF9B603B646B87EBBDBED0C86A48300FA21882AD2B491D2724993F39F6AD1 │ │ │ │ -9412E6607D801FE0F58FF790E53001802F537C0C9A7DCDCCAB77F817C3A8E8AE │ │ │ │ -21C2C10E9B8D2554998A9EDB76C6685022270FD3ECAE31F05EC9ADAD4C139C7E │ │ │ │ -B6F778FFF168E2AD90DC44F7CD4CCA883185C6ED5C0041C91E0F2D54395A0B4A │ │ │ │ -C33007CA50C71DA0E3999FA3D2975808064C1AAF61D8AE8958B184097D190BFE │ │ │ │ -735C9E209AECC2E3BC7414480B43645F0EA5229BA92AB81AE177808E6FD4F095 │ │ │ │ -0F0C2180FA6711A93118ED135CB155D88D900B0E4C9940D552B892C182787FD1 │ │ │ │ -A6C5439F816335A9B4EE16C2B6DD963383DB2D5A524A7FF029D639603D3EEF1A │ │ │ │ -CECA1BC5591213D42CE935184E620C8C9F283450BE00FC45933280F6E60EC91C │ │ │ │ -6693D9E257E90739E01852D510F42E46E7C2F31661F95BA6F666AE99CC1CFD36 │ │ │ │ -3E6E7667B3548A5C6220FC1D046B8DE3C4E7F7AC2E9221E0B16D79C270051203 │ │ │ │ -F400BB9B457A2AF9078D0E56DA647556498A071D4F1397B40B43B6A7FE604433 │ │ │ │ -2F952EDD03C5CF83657CF173BDC18FACE3D980D626FBFFD2DEB43CDB3F54919D │ │ │ │ -08EBC61645047F337C30B7633CD29B77D7C8430D9364F0DEECE0E278ADFE121B │ │ │ │ -E1EB24BF13B64B4DB8D6BBF36731DC132F9BB501C7BDE0DFCBD148662F627961 │ │ │ │ -009A08154A39BBC61F806EEFE0F8CC792879EBA4EDE3C41C63CCA8B9ACB945F8 │ │ │ │ -C2D912909047802EA157C394FF6724DB398F4EF6112CA4D68D6634D6B7A5AE38 │ │ │ │ -A8D5E58AB73AFCF6967987DD99E0E3ABE5A25749488EE548426CEDC3F7A84484 │ │ │ │ -4F4067802EC3B456F71E3E2CC59EE64F9E26E9B15ADCE8C85BF71E6C32E15624 │ │ │ │ -AE1051037A35DA5483CC4F288E34D1D3AEF3DD32F105F8840288ED6BD3B8B5B9 │ │ │ │ -4233B9A479A7750670B91C0F1AE712679C535E097C15EAD86B3FB3CDD7441C89 │ │ │ │ -CA8A9C7CD4F046C264D6D8F74E239BB63817A6AE6DDB5A03B15B29A16F9B7BF7 │ │ │ │ -682583CA2C9E71AB5FDF4F3414C9C739696D91B686A381589BB7C6E240505DBB │ │ │ │ -0215C6B8DE30EC25AEA17D7BA23066D12005D6629F6601D3FD596F10F5885922 │ │ │ │ -617D7C4984CD45044C64 │ │ │ │ +DAAAB2896FCFB745795C4D2C87CC14FE0D165EF1C2A06A9B89855A1E543F3691 │ │ │ │ +B90E4EE9F324FFCE2D59A8810987DCF0CC270D5E734D22592A1B77DB98075341 │ │ │ │ +C48676342C1C74660E7D79B7329A7F6AB723AEED60BF2E1158F0591CC962E5A6 │ │ │ │ +ACDD131797F623F38B06F9E9EBCBCB1FE26371AC95C993BF2A625BDF1D49FAB3 │ │ │ │ +AFF04E871B6F2BF4F0127C5A92A54E9D2307AFBAEF86AA35B1AAD6E5330470DA │ │ │ │ +6A84A8C260EF31ECBCD67CAB9BA3B37D12C31E41D1E495C18DD72C72032FFAB1 │ │ │ │ +0E6CBFDEF8A8D37A30267A0C383EE0BC8EF7F9B8A1592D1D8EB167E150D098A3 │ │ │ │ +C9054E372D22A382FCAF3792EE393212B61A2EE351B2EE9D2144A9749127C0F7 │ │ │ │ +C3509AFCD78C1395991AFD8B5A5CE4041333EC9C91AC06802A7FF923F6544A10 │ │ │ │ +CECBC853C097B4C0004DD51330F99D6A113E3C08284F03CAD612946A46F2CB2A │ │ │ │ +BB51264E809C4C6F303B32B9A41F21D2805F78D83B837592E2C9E8431688EF3E │ │ │ │ +31E699E28F84E7BD8066D56C6E7D2A4DCE45A8743DC8DAD3681F577515E45E32 │ │ │ │ +978882E3088B66C88A612239420FE6265021D3F9E52EBC994DBB27A8777F36A6 │ │ │ │ +1FE79E5FA5929F7803B5FDE6085C2CD7C50286C639EB740EF958B7D013C0EDFD │ │ │ │ +F1C017203E2E8891A04B112E1E77C61CAA0C7A17CB0294992FBED55BA251D557 │ │ │ │ +D6B3F84752528C17CA12EB71C787AF8EA5E5A22F743DD0D43AD5A1DD4423CC74 │ │ │ │ +630D2F2F7DADA4B2CAFB8CC422B3B56F3CF91B21F22B5A062300135AB3D65FBB │ │ │ │ +AC053B64883A1FF815398CF620966AE7D0CC826B9A658D424E0057E24FD04232 │ │ │ │ +18D99A7B90B4D249BEDC49C2D17882BA9320822A1D7A506EA3A50EADC724B218 │ │ │ │ +2D6EEAA4FFF6112358BFEB42AA82A62C7F4B0DFF047EE7862FA0699E97FE293C │ │ │ │ +A62A53EE1A250ABABCC39926EBC3E74699C164DF94687B33428533F2D3576B5B │ │ │ │ +933FA67A1563329E2A25335EFCE2A9A26CB9826CCEC084575A7F82A9904307FE │ │ │ │ +182576CC24415538B9E7AD8880E058B61B4DA8BEAB6124E130B0217A84AADBA7 │ │ │ │ +D598D81092D3CD31BC8778E8A3AEA8240AEF4638ADB1CB241A116714C12D73CA │ │ │ │ +9FF6DA76EC093EBDB8C7227731460E2103E1D6C5717DDD22756FCC8D8B4B9427 │ │ │ │ +843E210517A54B431EB97842346763A778FA769A5FF4AF172C1D49190621FB80 │ │ │ │ +D7F5A8C08673921A1F95E74795D7ACF255A5D128918DC0FD2EE15076F0DA9BF5 │ │ │ │ +F3C683113D8D7F977A0FBCFCE2542458DE1919D4923D7F43421066AB6DBB1C3F │ │ │ │ +90CC2418055BEC203CF1BDB76065A13B73B8B9698EED8B36F340A49251AF8367 │ │ │ │ +6CD031642817F46B672F04649B6E4972F04EE78314AA08F3CC2FFB86D0ADA811 │ │ │ │ +7651697C844543A69C7441545787C6B621EE926BCFD2027FBD3FD45DEC5F007F │ │ │ │ +5D9A5B1E57BBE7D510149ED4231422501A8A150A8AC02858DF2D9E11ED334944 │ │ │ │ +F4A04218D021C09F2DB0A3D39E3EA590984984FA522571D18E6F18916A6CF891 │ │ │ │ +C0279C09E45BB32905123971B7755C85E9ACC89DBDB49FFAA2407457E5BF13D4 │ │ │ │ +02BC20850B8875F85583F7ED580ECFF0EF46C2B77159D06FAD709BC350947213 │ │ │ │ +05BC62975199893738E76847FBDB077964AF564CF2D1E7D314FCF4A7BC7D8CC9 │ │ │ │ +DE27E796DEC2052D1BE325171CFE4BCB267B09A8545CE161D6FE4799E94C9634 │ │ │ │ +5620E935DAB38F36F2FD6F1A8348CFC3FE6974A47E1948A1C978EDE864CEFB3D │ │ │ │ +8CE43E152931DF8883E80082D0A9A332975FF3BA270520A23BE0AF086F7CD0BD │ │ │ │ +625C9D031CBB71C1365352E35737E73AAAE4BF4DD720D0C80D17E0DFE470A6FD │ │ │ │ +A1D7F7452DABBA6831B516499DD6911194FB4DAA9DE742BCA6A6551E0562D079 │ │ │ │ +B23CE556B19E76A3261936C7D634E795EF9019F887F2E3A667DA5ECD244CA8ED │ │ │ │ +1182C0A02C6691EFF534B69DF05DF78849E3D91118F9129DF2A767327B915F1E │ │ │ │ +6E786EE52AC3F6C416A7ACC695D9F71524A694287D7B786F942CA35B69852205 │ │ │ │ +CE0F3D462E1A15EE562C64542C2358DCD059AC8ED12ACB56F2C59D595EC45DBD │ │ │ │ +CF108F51240F6F04E8879CB9265FBB2E20595CF0C2704C95F3D0194206D04169 │ │ │ │ +5CBF046F205415C83F3223A866E05B287BAD52B7D7E288C856DCF1B67849BC4A │ │ │ │ +08CA45A84428BE33762C6800F053C8C0DA85354AA9DBB6CA3B1EBA326128005E │ │ │ │ +26BA72E48D067A674DA2D22E9260EB228976A60528B9306420C6D7264F62554B │ │ │ │ +F69B813A6A8215C7674CB530EC6A7294A5C7E22D856D0A241404B2198B1890DD │ │ │ │ +2AD7ABCF67BC6236AF0CD88CDC16F9FB456DA56B40F71039EA9367DF38D0EA33 │ │ │ │ +0989E8CBF1B14DAAABC3E1DCA49DC01714F33BCFE296A2C92B1909046FE23320 │ │ │ │ +D1BEB58587CD27CB8FE0374A3B7ACD975F181E873410CDBC79E3029E20984F6F │ │ │ │ +B9C46054DD9E7D6021F71E42921CD5278F4753AA7060DF9F0C8189F08F3893C9 │ │ │ │ +5117358212AF70EF8B09E7BC3C0D6A6AE5A33B468CD1CE271A87A6E1B15C69F7 │ │ │ │ +F218BDF1EF29DC635F1B98F2EF0ED2D53C12176A9CD3C445A3358C018995B15F │ │ │ │ +1DE67CE5734FB18BC2624624BA3D09A05FCC5A87AD7742C9BCE9639289B92A55 │ │ │ │ +F35E193122B7B225C41AB34990511BD3CCB97E63DBACA3183C2C8FA6AF25BAAF │ │ │ │ +5EBFC5B1F2BBA9DBEF3A9E92294D90B08051462D18B4DE7D83E6AE9555D1622C │ │ │ │ +478F8FDA3498B73A13FD7FE15054EF043C7D6C2B65C0E7CED89B853C947AD536 │ │ │ │ +53FDFA0E8E51829C016AE901244B0E8E5742B65B3F045056ACD2C8FE175DE2DA │ │ │ │ +CC023740A08F76F6E47C51747BA54FE4D8815BBA55545CDBEDA57301A3D70FA8 │ │ │ │ +5B552D11067628E1D351E1E28A29CB70F55370B7C11F9499F8B7FB130785F616 │ │ │ │ +727A90ACA49E89B1495044A6310E15FD82F4940707439E700E8F6FE961C353DC │ │ │ │ +2E14EED0F0DEC6BA6CE88B5BC2A6ACFD5F8A2E324AB87A6343F3CD5BE6CAC159 │ │ │ │ +013B373B290665755795838406E7F6A8F646E897DEAB7800C2054A7FB58A653E │ │ │ │ +29452F0B97513522A58B844D7D465BD06FCA4543B7D4B34DBF944B447A020633 │ │ │ │ +63FD1ECF0059C39F9D293C26DF18B4F6D3E1C1FF9DCA35E8CB6D79B453F294E8 │ │ │ │ +23F0FB00E96E7B4531D0F57CD77550F74AB8972AD0DBF3F2078EE47C5AA5BD0A │ │ │ │ +02D9AB88A6D8B6FB62B5FC7BE94E655B2F0BE7D3992A9A6091DC214C8D2BAA5C │ │ │ │ +1B24B108CCCE6D26BDF77956DEFC31E133676FF137292A30378232C8A0A8DB38 │ │ │ │ +9C93289B9EEE2AAB669E3C77281CFD21BB38A989FBAE23EE8A239ACD990E7FFB │ │ │ │ +F6FC5B39645FFCA0C120CC3E4D4B147F04D42F3AD7087FF9C459FF2935AE52B0 │ │ │ │ +6AA5ACEBD991958058099ED8E76B818F2A97FECF97761C99BFCE21201EFBE987 │ │ │ │ +D4C188A2043024253A334E78848A9D585C9C2051AA70422A030BC3B1E1B85C5D │ │ │ │ +1D8F53886DEFA1A3E3D00B0EC41ED04B20D60CFE10E8261835BB7A43DE54C009 │ │ │ │ +CE38D5469804C623BE23BCF2520A5CFDC0966BAF25C3FAC75314F735407EDB83 │ │ │ │ +BC8BF1C205505A9CF6464CD35A784C1608F4FF8E1E6638F220B962A1E4357BDE │ │ │ │ +8A872B4F755F7FC70935BC052E82D034247992CFE5A6599DA14C4382DAC067C8 │ │ │ │ +169738895494A3AE0A12E92F71B22F3951CA19DCE0F335BA60B6632D648C8339 │ │ │ │ +A5DB0F97A8356C3D79EC7504F00DA660658E230CA39479A7516021FA1A3296DF │ │ │ │ +D59D0C763325EEF8D57E78E2D5026091974F021E24E67F97850768192EE2FEB3 │ │ │ │ +90A27C0F72232D5EA0BF29AF128D4591AB481F09205423D7F9793DD95225EA6F │ │ │ │ +E291C46B445278B936DDB8F85F1BB74F89B01C7CC2AC3EF7567909826F6BE17D │ │ │ │ +F7F3A79E5B344FDF33B43765B732948848F7F1F8C266ED80503E16656C818CED │ │ │ │ +3BBBD7CBB9EAA90A589BDCA847921E7903860F760C5D4149CE64BA4406CAB61D │ │ │ │ +CBCD3BCF6255C0367A5FE165DB4DCC1CF1C9C2BD3772EB1D30E3641EAA611A8F │ │ │ │ +DEB1D96F9D6E43B510FB58E67E14EA75BBA1A3BD17F04EF4B05064544DC946AE │ │ │ │ +4911B45200693D9EFD2EA4A9745EFAEC5888D95C4D4C1CCA927DD40157B29F7C │ │ │ │ +C49AC99B4A4F354AEF5535F677C52E28500F30D55D51F39128406302A70CFCA6 │ │ │ │ +13B160CCFF5A2317B13D99EF0C2CFB8537ADD54DE35AC092324D72FF8C56A4AB │ │ │ │ +F669A73FA68F93C852FA640A94A44EAE97267D6D1B383D9E98EF532B85378954 │ │ │ │ +539CE4370B272EA332F96B1A3B6E7B3C99800AE08E702E70252DFBFF2D8282CE │ │ │ │ +634513CBB2BABAD5A02CB58A8C47127E906DC40BB93DE8AE8598643C20EF55A1 │ │ │ │ +D439E431A072286D6BAF28E7D53A6A32D59A4BC037F9B2963A92F825DCDE2E56 │ │ │ │ +5E45F7F6394F8A60119374C404029818812A14FE01220DD1E399C907D2431E81 │ │ │ │ +EB04470FFB7B0B9F4A3B70FFA9E593C370228B405EE22486C3A9F103B5061001 │ │ │ │ +C95B73EBAA4CC79D28D7EA275689B54B8D8E13522A7F7A0DFEF59E5A4B86AF86 │ │ │ │ +28EE9AB795E7BB424E5F9DCD431D27387B21FABE6C1EF98358B7AC2AA0B622F5 │ │ │ │ +8DC8683AA034167EC2E638E65FDDAA0B094189BA586918CD94D3A582E6216D81 │ │ │ │ +7C8B6825976C4B2A79EABF92007A5E8898CE6BBF21553A0171D4FD4D8794111E │ │ │ │ +E60F56F2321673A4F70E6802C0DC29CBBA24DFCFF0F089520C0562EF8A6E804A │ │ │ │ +A394C55AB17BF3510521588C2BB2FC77CA7CFBABB7FE5CF7A1CD018A5BA30DAE │ │ │ │ +8C5072106CA4F46EB686AF2AD7B33BDB74C7ED14EA156C4690BD738C71DFC732 │ │ │ │ +C7315E7CD57813E76FD3E03EE5E64812394D268D43EB7F485CF3AED466FD092A │ │ │ │ +948F8BD25EE83DC19E0DAD3E54F8AB5850F8AC67FCBA3D701D53755F06093EBE │ │ │ │ +5D20D570E211A2A46FC058E135626C9F5BE106D88ECEE433DB47A35A7727EF96 │ │ │ │ +0CE79D52260F728567580B98C2D12FCE0EDB02C1809A63DBDAFCD20594242E62 │ │ │ │ +1BA4263BC909123C1E74D39E72FCCC3B84457BCBC34439A27A8215B403E1C9A7 │ │ │ │ +58A488D16644FD19ECD5EE24981C1DA03D87F361F230C552C07322E7612F13E4 │ │ │ │ +C3B3B9BBEDE2E423C84FF114A04EE12BC1A4390BE6BB1B2766F0C22D83B5D5E6 │ │ │ │ +BD3060CBB513225A82046844B6787F74CF480BE5CA7E767EADA5F18E19199FF3 │ │ │ │ +AF47232642263F6B5315848AFB4860184C82E7C4BA13833D645A8C9FF2FA10A1 │ │ │ │ +6DFB22CF94AF1830E92A37D40D1E2F1976A39CEAA3952667EE74148DCC547841 │ │ │ │ +23165C9A4611CF68C9C4FF78B41B49AFFA5B67C2E2289A36A656DDC17B25A2B5 │ │ │ │ +F33071AD87DA0B36EAD6D8141143FECEFCD62A1F516E042C014A3782BE34FE8C │ │ │ │ +30B1D6A8256C131E48D115A63CAD077B8110D06AC450AF209ACA69DC5C39CA96 │ │ │ │ +4681A5D3067651E535434D57DDE34D5254DA00134CA58A01B67FBB98C8631A37 │ │ │ │ +ED0C5F7F51529EB182452C11F66AA3883AA0E9330A7021D0E2A07E2B775465FF │ │ │ │ +2691DAA02CEC3A77E034541A00CC098902BDD8A03F917F770B16B9E9C6B2F2E4 │ │ │ │ +21E2D1C396C7530B7A6B6283806E49CF6FB8A9E756833C898CF0DF8BDBF008AB │ │ │ │ +0DE603194F9825C12CF7311A570208F163529496E33D4239DCA20297E7545E6C │ │ │ │ +298B8BAC296C384461A3B89AF1955A3D2018B706BDF864B1A4CD413194DBA759 │ │ │ │ +F486CC0AD38E368CDA6C089C79C03DC2034BA97D0CB89E736F0D199B121791D1 │ │ │ │ +846352268E5713B98A02032134C012A09B8EA0E5ECAEB6D2BBCE643EF4A018AE │ │ │ │ +2F13EF3E09FA79347C6743D0026375B5142BFA256FADA3719B84252595477D07 │ │ │ │ +71586A276DAA286E9241E968F4B6E5F35F03C94EA08CA66E62E6606631F91389 │ │ │ │ +ACFA6DFD17A63590B5BF9350C78DBBBE327A7D2A03D15B7177BD8E9D24F7D2FF │ │ │ │ +68D8016A283BD684834EFFD8EBFB30C77B0C4CA33C8C67B0CF45869979E950D2 │ │ │ │ +145D5932971C89BF5D1E5380977004D61AD0CE4DE8A1DDD22982A22FACBAD9F2 │ │ │ │ +C5CE9B5306C39476C96C3F96BC60DCCC9CD6A45696C1B828750A50CD70D4D5E8 │ │ │ │ +703E541D6E7AE50CEABECF34AE8BD61CEE18E797DB195CA8988BCC088FA05655 │ │ │ │ +D8B7633E4A38FA4D052F1F33F19F48C1283971EBEB3ABFFCC014569978F12A7A │ │ │ │ +340EA4EAEAD7FAE43F57D76B226AD9185469E5F7A6C9A59047EF7ADFDB48110A │ │ │ │ +F9438E0F0BB2B51A301F48600C016E69DB08413B15F5329CAD0B1084CDFEDA82 │ │ │ │ +E9B9D2C891185866402C232C920E58474FB092BB99A569896B2872518AB025E8 │ │ │ │ +A88230187F5E44D012C8A7837DD5F98966277AB49D8AD489EE958CFF990039B3 │ │ │ │ +3FC9E31D3997D6B2F7B6E0231C88103316DCF712E2D4EEA21639EDC733FD6D23 │ │ │ │ +70DFD336F8E074C9FA38DFF1F4CA1CCB9E28207C1CA74A894067A153D3E2A759 │ │ │ │ +BA5483835E27336C334A0F24E51598164FAE2D5EABB348AFD2C5A97D2F4768FF │ │ │ │ +0F4A89F11A109DCBE942CE32F1248DC911334BDFDE9C158973F18EFFAA558171 │ │ │ │ +A650B4829A9138D165846753A0E1F1E03814F155AC6B4D5FBDA6C33E2F69EB94 │ │ │ │ +ED04C771CB79A2FEF9259011B549B1E8C80D2631F945E78E1F7E106C891ECE19 │ │ │ │ +5AED60A1B941AE6BB06243F2B17FB622C223297C7C1C8909381C418A850A98BB │ │ │ │ +72EDD71D5DE4256F60C659099EB71B3010FEBE6FF2E7FC181822A26FE1A04560 │ │ │ │ +FAE1DD89CDCA03C87EC92792DB479528769FB579F2B5636E9629B67F799B0814 │ │ │ │ +B6037CD84F03A81356388F586D7C4B4CD7EEE903357BE7117C9101DB1B6DE174 │ │ │ │ +C05E221DBD9B90F70A4321381D40BAE1E7959DC9E47E47B1456E41D952586E31 │ │ │ │ +84D3B16C78DE7FB25ECB2253DC708691C0066D6E2801A4509E2FDFC5399952C2 │ │ │ │ +AB0BCE11BE44948133FB7EB77D14E3571FA9053646D16DE29916A9968026EF2B │ │ │ │ +F44597F3006825CA27F44B188CC50C975020AB51D067DD5B72B8C4B6FEBAB560 │ │ │ │ +136DAB1C0622B80B370BC324B8C3E77CD9E1A85229355F658B933B8C94786B89 │ │ │ │ +65B8AC1B1CE7C2FEE1FEF56EE15F822CCD09969BFEF98AD6677202DF95E5FB0F │ │ │ │ +6ECF91D9539F68F2A2177A0BC93CF99F18D941445589B6E7D13985960DEE59AB │ │ │ │ +CB0B04172A27B4B2ADBCDA42F6BA245D4F6CB6CBCFA5D5CC3F2D44B219B58B10 │ │ │ │ +FAAE39D55AFB │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -11075,32 +11052,32 @@ │ │ │ │ 1[42 2[42 23 32 32 42 42 37 37 7[55 55 31[42 3[0 0 3[55 │ │ │ │ 8[83 7[83 83 5[65 4[65 65 1[65 2[42 11[42 65 23 65{}28 │ │ │ │ 83.022 /CMSY10 rf /Fo 143[83 12[83 46 9[120 7[88 17[74 │ │ │ │ 1[74 1[74 1[74 20[48 48 12[44 44 61 61 14[35 35 2[{}17 │ │ │ │ 83.022 /CMEX10 rf /Fp 135[51 2[51 49 38 50 1[46 53 51 │ │ │ │ 62 43 53 1[25 51 1[44 46 52 49 48 51 14[66 10[71 2[69 │ │ │ │ 9[27 2[46 3[46 46 46 46 48[{}28 83.022 /CMCSC10 rf /Fq │ │ │ │ -141[33 4[69 7[37 1[37 46 29[63 9[23 1[42 5[42 42 42 3[23 │ │ │ │ -44[{}12 83.022 /CMSL10 rf /Fr 128[23 4[39 41 47 59 40 │ │ │ │ -48 30 39 37 37 1[40 50 73 25 43 34 29 48 40 41 39 43 │ │ │ │ -36 36 44 6[57 48 69 78 48 57 49 51 63 66 53 63 2[57 71 │ │ │ │ -46 36 69 65 53 61 69 59 63 62 44 1[65 42 65 23 23 27[49 │ │ │ │ -2[47 14[47 53 11[{}60 83.022 /CMMI10 rf /Fs 130[44 44 │ │ │ │ -44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ -44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 44 44 44 │ │ │ │ -44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ -44 44 44 44 44 2[44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ +139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 7[42 42 42 │ │ │ │ +3[23 44[{}12 83.022 /CMSL10 rf /Fr 128[23 4[39 41 47 │ │ │ │ +59 40 48 30 39 37 37 1[40 50 73 25 43 34 29 48 40 41 │ │ │ │ +39 43 36 36 44 6[57 48 69 78 48 57 49 51 63 66 53 63 │ │ │ │ +2[57 71 46 36 69 65 53 61 69 59 63 62 44 1[65 42 65 23 │ │ │ │ +23 27[49 2[47 14[47 53 11[{}60 83.022 /CMMI10 rf /Fs │ │ │ │ +130[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 │ │ │ │ -33[{}89 83.022 /CMTT10 rf /Ft 131[112 1[50 59 59 81 59 │ │ │ │ -62 44 44 46 1[62 56 62 93 31 59 34 31 62 56 34 51 62 │ │ │ │ -50 62 54 9[116 85 86 78 62 84 84 77 84 88 106 67 1[58 │ │ │ │ -42 1[88 70 74 86 81 80 85 6[31 56 56 56 56 56 56 56 56 │ │ │ │ -56 56 1[31 37 31 31[62 12[{}62 99.6264 /CMBX12 rf /Fu │ │ │ │ -133[103 123 123 168 123 129 90 92 95 123 129 116 129 │ │ │ │ -194 65 123 71 65 129 116 71 106 129 103 129 113 10[175 │ │ │ │ +44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ +44 44 44 44 44 44 44 44 2[44 44 44 44 44 44 44 44 44 │ │ │ │ +44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 │ │ │ │ +44 44 33[{}89 83.022 /CMTT10 rf /Ft 131[112 1[50 59 59 │ │ │ │ +81 59 62 44 44 46 1[62 56 62 93 31 59 34 31 62 56 34 │ │ │ │ +51 62 50 62 54 9[116 85 86 78 62 84 84 77 84 88 106 67 │ │ │ │ +1[58 42 1[88 70 74 86 81 80 85 6[31 56 56 56 56 56 56 │ │ │ │ +56 56 56 56 1[31 37 31 31[62 12[{}62 99.6264 /CMBX12 │ │ │ │ +rf /Fu 133[103 123 123 168 123 129 90 92 95 123 129 116 │ │ │ │ +129 194 65 123 71 65 129 116 71 106 129 103 129 113 10[175 │ │ │ │ 179 162 129 173 1[159 175 182 220 140 182 1[87 182 183 │ │ │ │ 146 153 178 168 165 175 6[65 7[116 2[116 1[77 65 2[90 │ │ │ │ 90 26[129 129 12[{}55 206.559 /CMBX12 rf /Fv 172[45 2[55 │ │ │ │ 61 2[49 6[53 69[{}5 66.4176 /CMBX8 rf /Fw 190[49 3[51 │ │ │ │ 4[33 33 33 2[33 33 33 33 4[51 43[{}10 58.1154 /CMR7 rf │ │ │ │ /Fx 129[42 1[83 42 37 44 44 60 44 46 32 33 33 44 46 42 │ │ │ │ 46 69 23 44 25 23 46 42 25 37 46 37 46 42 2[42 23 42 │ │ │ │ @@ -11119,21 +11096,21 @@ │ │ │ │ 34 43 34 43 38 9[79 2[55 43 57 1[52 60 1[70 48 2[28 58 │ │ │ │ 60 2[59 55 54 58 7[38 38 38 38 38 38 38 38 38 38 1[21 │ │ │ │ 26 21 44[{}51 74.7198 /CMR9 rf /FB 203[30 30 30 30 49[{}4 │ │ │ │ 49.8132 /CMR6 rf /FC 133[31 37 37 51 37 39 27 28 28 37 │ │ │ │ 39 35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 12[51 │ │ │ │ 39 52 1[48 2[65 3[25 53 3[54 51 50 53 7[35 2[35 35 35 │ │ │ │ 35 35 35 35 1[20 24 20 31[39 12[{}49 66.4176 /CMR8 rf │ │ │ │ -/FD 137[51 54 38 38 38 2[49 54 81 27 2[27 54 1[30 43 │ │ │ │ -54 43 54 49 9[100 6[66 4[76 50 5[75 70 1[73 8[49 5[49 │ │ │ │ -49 49 1[27 1[27 44[{}30 99.6264 /CMR12 rf /FE 172[90 │ │ │ │ -2[110 121 2[97 6[106 69[{}5 143.462 /CMBX12 rf /FF 134[70 │ │ │ │ -1[96 70 73 51 52 51 70 73 66 73 111 36 1[40 36 73 66 │ │ │ │ -40 58 73 58 73 66 12[96 73 98 2[103 1[122 83 6[90 3[99 │ │ │ │ -6[36 7[66 3[36 1[36 44[{}35 143.462 /CMR17 rf end │ │ │ │ +/FD 137[51 54 38 38 38 2[49 54 1[27 2[27 54 1[30 43 54 │ │ │ │ +43 54 49 9[100 6[66 76 3[76 50 5[75 70 1[73 14[49 49 │ │ │ │ +49 1[27 1[27 44[{}29 99.6264 /CMR12 rf /FE 172[90 2[110 │ │ │ │ +121 2[97 6[106 69[{}5 143.462 /CMBX12 rf /FF 134[70 1[96 │ │ │ │ +70 73 51 52 51 70 73 66 73 111 36 1[40 36 73 66 40 58 │ │ │ │ +73 58 73 66 12[96 73 98 2[103 1[122 83 6[90 3[99 6[36 │ │ │ │ +7[66 3[36 1[36 44[{}35 143.462 /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -11146,18 +11123,18 @@ │ │ │ │ TeXDict begin 1 0 bop 407 1704 a FF(The)44 b(Reference)g(Man)l(ual)f │ │ │ │ (for)g FE(SPOOLES)p FF(,)g(Release)g(2.2:)518 1886 y(An)h(Ob)7 │ │ │ │ b(ject)44 b(Orien)l(ted)h(Soft)l(w)l(are)e(Library)f(for)g(Solving)920 │ │ │ │ 2069 y(Sparse)h(Linear)g(Systems)f(of)h(Equations)375 │ │ │ │ 2459 y FD(Clev)m(e)35 b(Ashcraft)1004 2423 y FC(1)1297 │ │ │ │ 2459 y FD(Daniel)d(Pierce)1864 2423 y FC(2)2158 2459 │ │ │ │ y FD(Da)m(vid)g(K.)h(W)-8 b(ah)2774 2423 y FC(3)3066 │ │ │ │ -2459 y FD(Jason)33 b(W)-8 b(u)3485 2423 y FC(4)1547 2725 │ │ │ │ -y FD(Decem)m(b)s(er)34 b(20,)e(2018)104 4280 y FB(1)138 │ │ │ │ -4312 y FA(Bo)r(eing)70 b(Shared)d(Services)i(Group,)79 │ │ │ │ -b(P)-6 b(.)68 b(O.)g(Bo)n(x)g(24346,)81 b(Mail)70 b(Stop)d(7L-22,)80 │ │ │ │ +2459 y FD(Jason)33 b(W)-8 b(u)3485 2423 y FC(4)1586 2725 │ │ │ │ +y FD(Octob)s(er)32 b(11,)g(2021)104 4280 y FB(1)138 4312 │ │ │ │ +y FA(Bo)r(eing)70 b(Shared)d(Services)i(Group,)79 b(P)-6 │ │ │ │ +b(.)68 b(O.)g(Bo)n(x)g(24346,)81 b(Mail)70 b(Stop)d(7L-22,)80 │ │ │ │ b(Seattle,)f(W)-6 b(ashington)69 b(98124,)0 4403 y Fz │ │ │ │ (cleve.ashcraft@boeing.com)p FA(.)64 b(This)34 b(researc)n(h)g(w)n(as)h │ │ │ │ (supp)r(orted)d(in)i(part)f(b)n(y)g(the)g(D)n(ARP)-6 │ │ │ │ b(A)31 b(Con)n(tract)k(D)n(ABT63-95-C-0122)0 4494 y(and)25 │ │ │ │ b(the)h(DoD)f(High)g(P)n(erformance)j(Computing)e(Mo)r(dernization)h │ │ │ │ (Program)g(Common)f(HPC)g(Soft)n(w)n(are)h(Supp)r(ort)e(Initiativ)n(e.) │ │ │ │ 104 4554 y FB(2)138 4585 y FA(Bo)r(eing)70 b(Shared)d(Services)i │ │ │ │ @@ -11325,38 +11302,37 @@ │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(36)125 5407 y(3.3)83 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Fs(Coords)e Fx(ob)5 b(ject)42 b(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)93 b(37)1929 5656 y(2)p eop end │ │ │ │ %%Page: 3 4 │ │ │ │ -TeXDict begin 3 3 bop 83 100 1124 4 v 1289 100 a Fy(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fq(:)120 b(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2737 100 V 1124 w Fx(3)0 390 y Fy(4)77 b Fs(DV)p Fy(:)30 │ │ │ │ -b(Double)h(V)-8 b(ector)33 b(Ob)5 b(ject)2617 b(39)125 │ │ │ │ -511 y Fx(4.1)83 b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)93 b(39)125 632 y(4.2)83 b(Protot)n(yp)r(es)26 │ │ │ │ -b(and)i(descriptions)f(of)g Fs(DV)g Fx(metho)r(ds)83 │ │ │ │ -b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(40)315 │ │ │ │ -752 y(4.2.1)h(Basic)27 b(metho)r(ds)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ -b(40)315 873 y(4.2.2)h(Instance)27 b(metho)r(ds)j(.)41 │ │ │ │ -b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ -f(.)h(.)f(.)93 b(40)315 994 y(4.2.3)h(Initializer)27 │ │ │ │ -b(metho)r(ds)48 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(41)315 1114 y(4.2.4)h(Utilit)n(y)28 │ │ │ │ -b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +TeXDict begin 3 3 bop 83 100 1157 4 v 1322 100 a Fy(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fq(:)120 b(Octob)r(er)26 b(11,)h(2021)p 2704 │ │ │ │ +100 V 1157 w Fx(3)0 390 y Fy(4)77 b Fs(DV)p Fy(:)30 b(Double)h(V)-8 │ │ │ │ +b(ector)33 b(Ob)5 b(ject)2617 b(39)125 511 y Fx(4.1)83 │ │ │ │ +b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(42)315 1235 │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ +b(39)125 632 y(4.2)83 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ +Fs(DV)g Fx(metho)r(ds)83 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ +93 b(40)315 752 y(4.2.1)h(Basic)27 b(metho)r(ds)74 b(.)42 │ │ │ │ +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ +g(.)f(.)h(.)f(.)93 b(40)315 873 y(4.2.2)h(Instance)27 │ │ │ │ +b(metho)r(ds)j(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(40)315 994 y(4.2.3)h(Initializer) │ │ │ │ +27 b(metho)r(ds)48 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(41)315 1114 y(4.2.4)h(Utilit)n(y) │ │ │ │ +28 b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(42)315 1235 │ │ │ │ y(4.2.5)h(IO)27 b(metho)r(ds)44 b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(43)125 1356 y(4.3)83 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Fs(DV)43 b(object)32 b Fx(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)93 b(45)0 1559 y Fy(5)77 b Fs(Drand)p │ │ │ │ @@ -11449,17 +11425,17 @@ │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(61)125 5407 y(8.3)83 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Fs(IV)43 b(object)32 b Fx(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)93 b(63)p eop end │ │ │ │ %%Page: 4 5 │ │ │ │ -TeXDict begin 4 4 bop 0 100 a Fx(4)p 125 100 1124 4 v │ │ │ │ -1289 w Fy(SPOOLES)32 b(2.2)26 b Fq(:)37 b(Decem)n(b)r(er)28 │ │ │ │ -b(20,)f(2018)p 2777 100 V 0 390 a Fy(9)77 b Fs(IVL)p │ │ │ │ +TeXDict begin 4 4 bop 0 100 a Fx(4)p 125 100 1157 4 v │ │ │ │ +1322 w Fy(SPOOLES)32 b(2.2)26 b Fq(:)37 b(Octob)r(er)27 │ │ │ │ +b(11,)g(2021)p 2744 100 V 0 390 a Fy(9)77 b Fs(IVL)p │ │ │ │ Fy(:)30 b(In)m(teger)i(V)-8 b(ector)32 b(List)g(Ob)5 │ │ │ │ b(ject)2382 b(64)125 513 y Fx(9.1)83 b(Data)28 b(Structure)61 │ │ │ │ b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(64)125 637 │ │ │ │ y(9.2)83 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ Fs(IVL)g Fx(metho)r(ds)39 b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ @@ -11575,20 +11551,20 @@ │ │ │ │ b(.)c(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ 93 b(94)315 5407 y(13.2.5)52 b Fs(FV)27 b Fx(:)h Fs(float)d │ │ │ │ Fx(v)n(ector)i(metho)r(ds)21 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(96)p eop end │ │ │ │ %%Page: 5 6 │ │ │ │ -TeXDict begin 5 5 bop 83 100 1124 4 v 1289 100 a Fy(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fq(:)120 b(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2737 100 V 1124 w Fx(5)315 390 y(13.2.6)52 b Fs(PCV)27 │ │ │ │ -b Fx(:)g Fs(char)42 b(*)28 b Fx(v)n(ector)e(metho)r(ds)64 │ │ │ │ -b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ +TeXDict begin 5 5 bop 83 100 1157 4 v 1322 100 a Fy(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fq(:)120 b(Octob)r(er)26 b(11,)h(2021)p 2704 │ │ │ │ +100 V 1157 w Fx(5)315 390 y(13.2.6)52 b Fs(PCV)27 b Fx(:)g │ │ │ │ +Fs(char)42 b(*)28 b Fx(v)n(ector)e(metho)r(ds)64 b(.)41 │ │ │ │ +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(99)315 521 y(13.2.7)52 b Fs(PDV)27 b Fx(:)g Fs(double)41 │ │ │ │ b(*)28 b Fx(v)n(ector)e(metho)r(ds)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) │ │ │ │ h(.)g(.)f(.)h(.)f(.)93 b(99)315 651 y(13.2.8)52 b Fs(PFV)27 │ │ │ │ b Fx(:)g Fs(float)42 b(*)27 b Fx(v)n(ector)f(metho)r(ds)85 │ │ │ │ b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ @@ -11690,17 +11666,17 @@ │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(123)125 │ │ │ │ 5407 y(16.3)41 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Fs(BPG)f Fx(ob)5 b(ject)44 b(.)e(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)51 b(124)p eop end │ │ │ │ %%Page: 6 7 │ │ │ │ -TeXDict begin 6 6 bop 0 100 a Fx(6)p 125 100 1124 4 v │ │ │ │ -1289 w Fy(SPOOLES)32 b(2.2)26 b Fq(:)37 b(Decem)n(b)r(er)28 │ │ │ │ -b(20,)f(2018)p 2777 100 V 0 390 a Fy(17)i Fs(DSTree)p │ │ │ │ +TeXDict begin 6 6 bop 0 100 a Fx(6)p 125 100 1157 4 v │ │ │ │ +1322 w Fy(SPOOLES)32 b(2.2)26 b Fq(:)37 b(Octob)r(er)27 │ │ │ │ +b(11,)g(2021)p 2744 100 V 0 390 a Fy(17)i Fs(DSTree)p │ │ │ │ Fy(:)125 490 y(A)j(Domain/Separator)g(T)-8 b(ree)32 b(Ob)5 │ │ │ │ b(ject)2217 b(126)125 616 y Fx(17.1)41 b(Data)28 b(Structure)61 │ │ │ │ b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(126)125 742 │ │ │ │ y(17.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ Fs(DSTree)e Fx(metho)r(ds)38 b(.)k(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ @@ -11812,57 +11788,57 @@ │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)51 b(163)125 5407 y(20.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ b(and)i(descriptions)f(of)g Fs(GPart)f Fx(metho)r(ds)81 │ │ │ │ b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(164)p eop end │ │ │ │ %%Page: 7 8 │ │ │ │ -TeXDict begin 7 7 bop 83 100 1124 4 v 1289 100 a Fy(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fq(:)120 b(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2737 100 V 1124 w Fx(7)315 390 y(20.2.1)52 b(Basic)27 │ │ │ │ -b(metho)r(ds)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +TeXDict begin 7 7 bop 83 100 1157 4 v 1322 100 a Fy(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fq(:)120 b(Octob)r(er)26 b(11,)h(2021)p 2704 │ │ │ │ +100 V 1157 w Fx(7)315 390 y(20.2.1)52 b(Basic)27 b(metho)r(ds)74 │ │ │ │ +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)51 b(164)315 526 y(20.2.2)h(Initializer)27 │ │ │ │ +b(metho)r(ds)48 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(165)315 661 y(20.2.3)h(Utilit)n(y) │ │ │ │ +28 b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(164)315 526 │ │ │ │ -y(20.2.2)h(Initializer)27 b(metho)r(ds)48 b(.)42 b(.)f(.)h(.)f(.)h(.)g │ │ │ │ -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ -b(165)315 661 y(20.2.3)h(Utilit)n(y)28 b(metho)r(ds)i(.)42 │ │ │ │ +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(165)315 796 │ │ │ │ +y(20.2.4)h(Domain)28 b(decomp)r(osition)f(metho)r(ds)81 │ │ │ │ +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(166)315 932 y(20.2.5)h(Metho)r(ds)28 b(to)f(generate)g(a)g(2-set)g │ │ │ │ +(partition)78 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(167)315 1067 y(20.2.6)h(Metho)r(ds)28 b(to)f(impro)n(v)n(e)g(a)g │ │ │ │ +(2-set)g(partition)j(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(167)315 1202 y(20.2.7)h(Recursiv)n(e)27 b(Bisection)g(metho)r(d)45 │ │ │ │ +b(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(169)315 1338 y(20.2.8)h Fs(DDsepInfo)24 b Fx(metho)r(ds)69 │ │ │ │ +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)51 b(169)125 1473 y(20.3)41 b(Driv)n(er)27 │ │ │ │ +b(programs)e(for)i(the)h Fs(GPart)e Fx(ob)5 b(ject)22 │ │ │ │ +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(170)0 1698 y Fy(21)29 b Fs(Graph)p Fy(:)39 b(A)32 b(Graph)h(ob)5 │ │ │ │ +b(ject)2685 b(174)125 1834 y Fx(21.1)41 b(Data)28 b(Structure)61 │ │ │ │ +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(175)125 1969 │ │ │ │ +y(21.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ +Fs(Graph)f Fx(metho)r(ds)81 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(175)315 2105 y(21.2.1)h(Basic)27 b(metho)r(ds)74 b(.)42 │ │ │ │ b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)51 b(165)315 796 y(20.2.4)h(Domain)28 │ │ │ │ -b(decomp)r(osition)f(metho)r(ds)81 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)51 b(166)315 932 y(20.2.5)h(Metho)r(ds)28 │ │ │ │ -b(to)f(generate)g(a)g(2-set)g(partition)78 b(.)42 b(.)g(.)f(.)h(.)f(.)h │ │ │ │ -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ -f(.)h(.)f(.)51 b(167)315 1067 y(20.2.6)h(Metho)r(ds)28 │ │ │ │ -b(to)f(impro)n(v)n(e)g(a)g(2-set)g(partition)j(.)41 b(.)h(.)g(.)f(.)h │ │ │ │ -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) │ │ │ │ -h(.)g(.)f(.)h(.)f(.)51 b(167)315 1202 y(20.2.7)h(Recursiv)n(e)27 │ │ │ │ -b(Bisection)g(metho)r(d)45 b(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ -(.)g(.)f(.)h(.)f(.)51 b(169)315 1338 y(20.2.8)h Fs(DDsepInfo)24 │ │ │ │ -b Fx(metho)r(ds)69 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ -h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(169)125 1473 y(20.3)41 │ │ │ │ -b(Driv)n(er)27 b(programs)e(for)i(the)h Fs(GPart)e Fx(ob)5 │ │ │ │ -b(ject)22 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ -51 b(170)0 1698 y Fy(21)29 b Fs(Graph)p Fy(:)39 b(A)32 │ │ │ │ -b(Graph)h(ob)5 b(ject)2685 b(174)125 1834 y Fx(21.1)41 │ │ │ │ -b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ -(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ -b(175)125 1969 y(21.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f │ │ │ │ -(of)g Fs(Graph)f Fx(metho)r(ds)81 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ -51 b(175)315 2105 y(21.2.1)h(Basic)27 b(metho)r(ds)74 │ │ │ │ -b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ -(.)h(.)g(.)f(.)h(.)f(.)51 b(175)315 2240 y(21.2.2)h(Initializer)27 │ │ │ │ +g(.)f(.)h(.)f(.)51 b(175)315 2240 y(21.2.2)h(Initializer)27 │ │ │ │ b(metho)r(ds)48 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(176)315 2375 y(21.2.3)h(Compress)27 │ │ │ │ b(and)g(Expand)g(metho)r(ds)g(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)51 b(177)315 2511 y(21.2.4)h(Wirebask)n(et)27 │ │ │ │ b(domain)g(decomp)r(osition)g(ordering)54 b(.)42 b(.)f(.)h(.)f(.)h(.)g │ │ │ │ @@ -11928,17 +11904,17 @@ │ │ │ │ f(of)g Fs(MSMDvtx)e Fx(metho)r(ds)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ 51 b(192)125 5407 y(22.5)41 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Fs(MSMD)e Fx(ob)5 b(ject)66 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)51 b(192)p eop end │ │ │ │ %%Page: 8 9 │ │ │ │ -TeXDict begin 8 8 bop 0 100 a Fx(8)p 125 100 1124 4 v │ │ │ │ -1289 w Fy(SPOOLES)32 b(2.2)26 b Fq(:)37 b(Decem)n(b)r(er)28 │ │ │ │ -b(20,)f(2018)p 2777 100 V 0 390 a Fy(23)i Fs(Network)p │ │ │ │ +TeXDict begin 8 8 bop 0 100 a Fx(8)p 125 100 1157 4 v │ │ │ │ +1322 w Fy(SPOOLES)32 b(2.2)26 b Fq(:)37 b(Octob)r(er)27 │ │ │ │ +b(11,)g(2021)p 2744 100 V 0 390 a Fy(23)i Fs(Network)p │ │ │ │ Fy(:)39 b(Simple)30 b(Max-\015o)m(w)i(solv)m(er)2283 │ │ │ │ b(195)125 514 y Fx(23.1)41 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(196)125 638 y(23.2)41 │ │ │ │ b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Fs(Network)e │ │ │ │ Fx(metho)r(ds)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ @@ -12048,17 +12024,17 @@ │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(220)315 5407 y(26.2.3)h │ │ │ │ (Initialization)27 b(metho)r(ds)62 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(222)p eop │ │ │ │ end │ │ │ │ %%Page: 9 10 │ │ │ │ -TeXDict begin 9 9 bop 83 100 1124 4 v 1289 100 a Fy(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fq(:)120 b(Decem)n(b)r(er)27 b(20,)g(2018)p │ │ │ │ -2737 100 V 1124 w Fx(9)315 390 y(26.2.4)52 b(Searc)n(h)27 │ │ │ │ +TeXDict begin 9 9 bop 83 100 1157 4 v 1322 100 a Fy(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fq(:)120 b(Octob)r(er)26 b(11,)h(2021)p 2704 │ │ │ │ +100 V 1157 w Fx(9)315 390 y(26.2.4)52 b(Searc)n(h)27 │ │ │ │ b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(223)315 513 │ │ │ │ y(26.2.5)h(Piv)n(ot)27 b(metho)r(ds)72 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ b(224)315 637 y(26.2.6)h(Up)r(date)28 b(metho)r(ds)65 │ │ │ │ @@ -12173,17 +12149,17 @@ │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(257)315 │ │ │ │ 5407 y(30.2.4)h(Utilit)n(y)28 b(F)-7 b(actorization)26 │ │ │ │ b(metho)r(ds)43 b(.)e(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)51 b(258)p eop end │ │ │ │ %%Page: 10 11 │ │ │ │ -TeXDict begin 10 10 bop 0 100 a Fx(10)p 166 100 1103 │ │ │ │ -4 v 1268 w Fy(SPOOLES)31 b(2.2)c Fq(:)37 b(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 2797 100 V 315 390 a Fx(30.2.5)52 b(Serial)27 │ │ │ │ +TeXDict begin 10 10 bop 0 100 a Fx(10)p 166 100 1136 │ │ │ │ +4 v 1301 w Fy(SPOOLES)31 b(2.2)c Fq(:)37 b(Octob)r(er)27 │ │ │ │ +b(11,)f(2021)p 2765 100 V 315 390 a Fx(30.2.5)52 b(Serial)27 │ │ │ │ b(F)-7 b(actorization)26 b(metho)r(d)45 b(.)d(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(260)315 512 y(30.2.6)h(QR)28 │ │ │ │ b(factorization)e(utilit)n(y)i(metho)r(ds)56 b(.)41 b(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(261)315 635 y(30.2.7)h(Serial)27 │ │ │ │ b Fr(QR)h Fx(F)-7 b(actorization)26 b(metho)r(d)82 b(.)41 │ │ │ │ @@ -12304,17 +12280,17 @@ │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)51 b(299)125 5407 y(33.3)41 b(Driv)n(er)27 │ │ │ │ b(programs)76 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) │ │ │ │ h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(302)p │ │ │ │ eop end │ │ │ │ %%Page: 11 12 │ │ │ │ -TeXDict begin 11 11 bop 83 100 1103 4 v 1269 100 a Fy(SPOOLES)31 │ │ │ │ -b(2.2)c Fq(:)120 b(Decem)n(b)r(er)28 b(20,)e(2018)p 2716 │ │ │ │ -100 V 1103 w Fx(11)0 390 y Fy(34)j Fs(PatchAndGoInfo)p │ │ │ │ +TeXDict begin 11 11 bop 83 100 1136 4 v 1302 100 a Fy(SPOOLES)31 │ │ │ │ +b(2.2)c Fq(:)120 b(Octob)r(er)27 b(11,)f(2021)p 2683 │ │ │ │ +100 V 1136 w Fx(11)0 390 y Fy(34)j Fs(PatchAndGoInfo)p │ │ │ │ Fy(:)36 b(Piv)m(ot)c(Mo)s(di\014cation)f(Ob)5 b(ject)1856 │ │ │ │ b(307)125 513 y Fx(34.1)41 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(308)125 637 y(34.2)41 │ │ │ │ b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Fs(PatchAndGoInfo)22 │ │ │ │ b Fx(metho)r(ds)76 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ @@ -12427,17 +12403,17 @@ │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(335)315 5407 │ │ │ │ y(38.2.4)h(IO)27 b(metho)r(ds)44 b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ b(335)p eop end │ │ │ │ %%Page: 12 13 │ │ │ │ -TeXDict begin 12 12 bop 0 100 a Fx(12)p 166 100 1103 │ │ │ │ -4 v 1268 w Fy(SPOOLES)31 b(2.2)c Fq(:)37 b(Decem)n(b)r(er)28 │ │ │ │ -b(20,)e(2018)p 2797 100 V 0 390 a Fy(39)j Fs(SubMtxManager)p │ │ │ │ +TeXDict begin 12 12 bop 0 100 a Fx(12)p 166 100 1136 │ │ │ │ +4 v 1301 w Fy(SPOOLES)31 b(2.2)c Fq(:)37 b(Octob)r(er)27 │ │ │ │ +b(11,)f(2021)p 2765 100 V 0 390 a Fy(39)j Fs(SubMtxManager)p │ │ │ │ Fy(:)36 b Fs(SubMtx)29 b Fy(ob)5 b(ject)33 b(manager)2057 │ │ │ │ b(336)125 515 y Fx(39.1)41 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(337)125 640 y(39.2)41 │ │ │ │ b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Fs(SubMtxManager)22 │ │ │ │ b Fx(metho)r(ds)56 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ @@ -12523,17 +12499,17 @@ │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(368)315 5407 │ │ │ │ y(43.1.1)h Fs(MatMulInfo)24 b Fx(:)37 b(Matrix-matrix)26 │ │ │ │ b(m)n(ultiply)i(information)f(ob)5 b(ject)75 b(.)41 b(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(368)p │ │ │ │ eop end │ │ │ │ %%Page: 13 14 │ │ │ │ -TeXDict begin 13 13 bop 83 100 1103 4 v 1269 100 a Fy(SPOOLES)31 │ │ │ │ -b(2.2)c Fq(:)120 b(Decem)n(b)r(er)28 b(20,)e(2018)p 2716 │ │ │ │ -100 V 1103 w Fx(13)125 390 y(43.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ +TeXDict begin 13 13 bop 83 100 1136 4 v 1302 100 a Fy(SPOOLES)31 │ │ │ │ +b(2.2)c Fq(:)120 b(Octob)r(er)27 b(11,)f(2021)p 2683 │ │ │ │ +100 V 1136 w Fx(13)125 390 y(43.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ b(and)i(descriptions)f(of)g Fs(MPI)g Fx(metho)r(ds)39 │ │ │ │ b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(369)315 │ │ │ │ 515 y(43.2.1)h(Split)28 b(and)g(redistribution)f(metho)r(ds)59 │ │ │ │ b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ b(369)315 639 y(43.2.2)h(Gather)27 b(and)h(scatter)f(metho)r(ds)j(.)42 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ The Reference Manual for SPOOLES, Release 2.2: │ │ │ │ │ An Object Oriented Software Library for Solving │ │ │ │ │ Sparse Linear Systems of Equations │ │ │ │ │ 1 2 3 4 │ │ │ │ │ Cleve Ashcraft Daniel Pierce David K. Wah Jason Wu │ │ │ │ │ - December 20, 2018 │ │ │ │ │ + October 11, 2021 │ │ │ │ │ 1Boeing Shared Services Group, P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, │ │ │ │ │ cleve.ashcraft@boeing.com. This research was supported in part by the DARPA Contract DABT63-95-C-0122 │ │ │ │ │ and the DoD High Performance Computing Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ 2Boeing Shared Services Group, P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, │ │ │ │ │ dpierce@redwood.rt.cs.boeing.com. This research was supported in part by the DARPA Contract DABT63- │ │ │ │ │ 95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software Support │ │ │ │ │ Initiative. │ │ │ │ │ @@ -68,15 +68,15 @@ │ │ │ │ │ 3.2 Prototypes and descriptions of Coords methods . . . . . . . . . . . . . . . . . . . . . . . . . . 34 │ │ │ │ │ 3.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 │ │ │ │ │ 3.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 │ │ │ │ │ 3.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 │ │ │ │ │ 3.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 │ │ │ │ │ 3.3 Driver programs for the Coords object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 │ │ │ │ │ 2 │ │ │ │ │ - SPOOLES 2.2 : December 20, 2018 3 │ │ │ │ │ + SPOOLES 2.2 : October 11, 2021 3 │ │ │ │ │ 4 DV: Double Vector Object 39 │ │ │ │ │ 4.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 │ │ │ │ │ 4.2 Prototypes and descriptions of DV methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 │ │ │ │ │ 4.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 │ │ │ │ │ 4.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 │ │ │ │ │ 4.2.3 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 │ │ │ │ │ 4.2.4 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 │ │ │ │ │ @@ -109,15 +109,15 @@ │ │ │ │ │ 8.2 Prototypes and descriptions of IV methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 │ │ │ │ │ 8.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 │ │ │ │ │ 8.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 │ │ │ │ │ 8.2.3 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 │ │ │ │ │ 8.2.4 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 │ │ │ │ │ 8.2.5 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 │ │ │ │ │ 8.3 Driver programs for the IV object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 │ │ │ │ │ - 4 SPOOLES 2.2: December 20, 2018 │ │ │ │ │ + 4 SPOOLES 2.2: October 11, 2021 │ │ │ │ │ 9 IVL: Integer Vector List Object 64 │ │ │ │ │ 9.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 │ │ │ │ │ 9.2 Prototypes and descriptions of IVL methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 │ │ │ │ │ 9.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 │ │ │ │ │ 9.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 │ │ │ │ │ 9.2.3 Initialization and resizing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 │ │ │ │ │ 9.2.4 List manipulation methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 │ │ │ │ │ @@ -149,15 +149,15 @@ │ │ │ │ │ 13.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 │ │ │ │ │ 13.2 Prototypes and descriptions of Utilities methods . . . . . . . . . . . . . . . . . . . . . . . . 81 │ │ │ │ │ 13.2.1 CV : char vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 │ │ │ │ │ 13.2.2 DV : double vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 │ │ │ │ │ 13.2.3 ZV : double complex vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 │ │ │ │ │ 13.2.4 IV : int vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 │ │ │ │ │ 13.2.5 FV : float vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 │ │ │ │ │ - SPOOLES 2.2 : December 20, 2018 5 │ │ │ │ │ + SPOOLES 2.2 : October 11, 2021 5 │ │ │ │ │ 13.2.6 PCV : char * vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 │ │ │ │ │ 13.2.7 PDV : double * vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 │ │ │ │ │ 13.2.8 PFV : float * vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 │ │ │ │ │ 13.2.9 Sorting routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 │ │ │ │ │ 13.2.10Sort and compress routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 │ │ │ │ │ 13.2.11IP : (int, pointer) singly linked-list methods . . . . . . . . . . . . . . . . . . . . . . 103 │ │ │ │ │ 13.2.12I2OP : (int, int, void*, pointer) singly linked-list methods . . . . . . . . . . . . 104 │ │ │ │ │ @@ -186,15 +186,15 @@ │ │ │ │ │ 16.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 │ │ │ │ │ 16.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 │ │ │ │ │ 16.2.3 Generate induced graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 │ │ │ │ │ 16.2.4 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 │ │ │ │ │ 16.2.5 Dulmage-Mendelsohn decomposition method . . . . . . . . . . . . . . . . . . . . . . . 123 │ │ │ │ │ 16.2.6 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 │ │ │ │ │ 16.3 Driver programs for the BPG object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 │ │ │ │ │ - 6 SPOOLES 2.2: December 20, 2018 │ │ │ │ │ + 6 SPOOLES 2.2: October 11, 2021 │ │ │ │ │ 17 DSTree: │ │ │ │ │ ADomain/Separator Tree Object 126 │ │ │ │ │ 17.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 │ │ │ │ │ 17.2 Prototypes and descriptions of DSTree methods . . . . . . . . . . . . . . . . . . . . . . . . . . 126 │ │ │ │ │ 17.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 │ │ │ │ │ 17.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 │ │ │ │ │ 17.2.3 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 │ │ │ │ │ @@ -226,15 +226,15 @@ │ │ │ │ │ 19.2.11Parallel factorization map methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 │ │ │ │ │ 19.2.12Storage profile methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 │ │ │ │ │ 19.2.13IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 │ │ │ │ │ 19.3 Driver programs for the ETree object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 │ │ │ │ │ 20 GPart: Graph Partitioning Object 162 │ │ │ │ │ 20.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 │ │ │ │ │ 20.2 Prototypes and descriptions of GPart methods . . . . . . . . . . . . . . . . . . . . . . . . . . 164 │ │ │ │ │ - SPOOLES 2.2 : December 20, 2018 7 │ │ │ │ │ + SPOOLES 2.2 : October 11, 2021 7 │ │ │ │ │ 20.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 │ │ │ │ │ 20.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 │ │ │ │ │ 20.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 │ │ │ │ │ 20.2.4 Domain decomposition methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 │ │ │ │ │ 20.2.5 Methods to generate a 2-set partition . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 │ │ │ │ │ 20.2.6 Methods to improve a 2-set partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 │ │ │ │ │ 20.2.7 Recursive Bisection method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 │ │ │ │ │ @@ -264,15 +264,15 @@ │ │ │ │ │ 22.3.1 Basic methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 │ │ │ │ │ 22.3.2 Initialization methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 22.3.3 Ordering methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 22.3.4 Extraction methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 22.3.5 Internal methods — private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ 22.4 Prototypes and descriptions of MSMDvtx methods . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ 22.5 Driver programs for the MSMD object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ - 8 SPOOLES 2.2: December 20, 2018 │ │ │ │ │ + 8 SPOOLES 2.2: October 11, 2021 │ │ │ │ │ 23 Network: Simple Max-flow solver 195 │ │ │ │ │ 23.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 │ │ │ │ │ 23.2 Prototypes and descriptions of Network methods . . . . . . . . . . . . . . . . . . . . . . . . . 197 │ │ │ │ │ 23.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 │ │ │ │ │ 23.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 │ │ │ │ │ 23.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 │ │ │ │ │ 23.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 │ │ │ │ │ @@ -303,15 +303,15 @@ │ │ │ │ │ IV Numeric Objects and Methods 216 │ │ │ │ │ 26 Chv: Block chevron 217 │ │ │ │ │ 26.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ 26.2 Prototypes and descriptions of Chv methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ 26.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 26.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 26.2.3 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 │ │ │ │ │ - SPOOLES 2.2 : December 20, 2018 9 │ │ │ │ │ + SPOOLES 2.2 : October 11, 2021 9 │ │ │ │ │ 26.2.4 Search methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 │ │ │ │ │ 26.2.5 Pivot methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 │ │ │ │ │ 26.2.6 Update methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 │ │ │ │ │ 26.2.7 Assembly methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 │ │ │ │ │ 26.2.8 Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 │ │ │ │ │ 26.2.9 Copy methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 │ │ │ │ │ 26.2.10Swap methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 │ │ │ │ │ @@ -343,15 +343,15 @@ │ │ │ │ │ 30 FrontMtx: Front matrix 250 │ │ │ │ │ 30.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 │ │ │ │ │ 30.2 Prototypes and descriptions of FrontMtx methods . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 30.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 30.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 30.2.3 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 │ │ │ │ │ 30.2.4 Utility Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 │ │ │ │ │ - 10 SPOOLES2.2: December 20, 2018 │ │ │ │ │ + 10 SPOOLES2.2: October 11, 2021 │ │ │ │ │ 30.2.5 Serial Factorization method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 │ │ │ │ │ 30.2.6 QR factorization utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 │ │ │ │ │ 30.2.7 Serial QR Factorization method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 │ │ │ │ │ 30.2.8 Postprocessing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 │ │ │ │ │ 30.2.9 Utility Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 │ │ │ │ │ 30.2.10Serial Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 │ │ │ │ │ 30.2.11Serial QR Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 │ │ │ │ │ @@ -384,15 +384,15 @@ │ │ │ │ │ 32.3 Driver programs for the InpMtx object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 │ │ │ │ │ 33 Iter: Iterative Methods 297 │ │ │ │ │ 33.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 33.2 Prototypes and descriptions of Iter methods . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 33.2.1 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 33.2.2 Iterative methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 │ │ │ │ │ 33.3 Driver programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 │ │ │ │ │ - SPOOLES2.2: December 20, 2018 11 │ │ │ │ │ + SPOOLES2.2: October 11, 2021 11 │ │ │ │ │ 34 PatchAndGoInfo: Pivot Modification Object 307 │ │ │ │ │ 34.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 34.2 Prototypes and descriptions of PatchAndGoInfo methods . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 34.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 34.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 │ │ │ │ │ 35 Pencil: Matrix pencil 310 │ │ │ │ │ 35.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 │ │ │ │ │ @@ -424,15 +424,15 @@ │ │ │ │ │ 38 SubMtxList: SubMtx list object 333 │ │ │ │ │ 38.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 38.2 Prototypes and descriptions of SubMtxList methods . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 38.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 38.2.2 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ 38.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ 38.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ - 12 SPOOLES2.2: December 20, 2018 │ │ │ │ │ + 12 SPOOLES2.2: October 11, 2021 │ │ │ │ │ 39 SubMtxManager: SubMtx object manager 336 │ │ │ │ │ 39.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 │ │ │ │ │ 39.2 Prototypes and descriptions of SubMtxManager methods . . . . . . . . . . . . . . . . . . . . . 337 │ │ │ │ │ 39.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 │ │ │ │ │ 39.2.2 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 │ │ │ │ │ 39.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 │ │ │ │ │ 39.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 │ │ │ │ │ @@ -459,15 +459,15 @@ │ │ │ │ │ 42.2.4 Multithreaded Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ 42.2.5 Multithreaded QR Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 42.3 Driver programs for the multithreaded functions . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ VII MPI Methods 367 │ │ │ │ │ 43 MPI directory 368 │ │ │ │ │ 43.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 │ │ │ │ │ 43.1.1 MatMulInfo : Matrix-matrix multiply information object . . . . . . . . . . . . . . . . 368 │ │ │ │ │ - SPOOLES2.2: December 20, 2018 13 │ │ │ │ │ + SPOOLES2.2: October 11, 2021 13 │ │ │ │ │ 43.2 Prototypes and descriptions of MPI methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 │ │ │ │ │ 43.2.1 Split and redistribution methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 │ │ │ │ │ 43.2.2 Gather and scatter methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 │ │ │ │ │ 43.2.3 Symbolic Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 │ │ │ │ │ 43.2.4 Numeric Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 │ │ │ │ │ 43.2.5 Post-processing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 │ │ │ │ │ 43.2.6 Numeric Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 │ │ ├── ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ ├── SemiImplMtx.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMEX10 CMR7 CMMI7 │ │ │ │ %%+ CMSY7 CMSY10 CMTI10 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SemiImplMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -741,22 +741,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -930,88 +930,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4388,16 +4377,16 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 2[59 1[44 44 3[56 62 93 31 2[31 │ │ │ │ 62 2[51 62 50 1[54 11[86 1[62 3[84 1[106 3[42 6[80 12[56 │ │ │ │ 56 56 56 56 2[31 46[{}27 99.6264 /CMBX12 rf /Fb 135[62 │ │ │ │ 3[62 3[62 2[62 62 2[62 3[62 17[62 5[62 3[62 73[{}10 119.552 │ │ │ │ /CMTT12 rf /Fc 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 │ │ │ │ -67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fd 141[33 4[69 │ │ │ │ -7[37 1[37 46 29[63 9[23 1[42 5[42 42 42 3[23 44[{}12 │ │ │ │ +67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fd 139[32 1[33 │ │ │ │ +2[42 9[37 1[37 46 18[65 20[23 7[42 42 42 3[23 44[{}12 │ │ │ │ 83.022 /CMSL10 rf /Fe 137[38 45 28 34 35 1[42 42 47 68 │ │ │ │ 21 2[25 3[38 42 38 1[42 12[59 1[61 11[54 1[63 2[62 6[25 │ │ │ │ 12[30 45[{}22 83.022 /CMTI10 rf /Ff 149[23 90[42 13[23 │ │ │ │ 65{}4 83.022 /CMSY10 rf /Fg 255[52{}1 58.1154 /CMSY7 │ │ │ │ rf /Fh 171[39 11[54 12[20 59[{}3 58.1154 /CMMI7 rf /Fi │ │ │ │ 205[33 33 49[{}2 58.1154 /CMR7 rf /Fj 157[46 62[48 48 │ │ │ │ 12[44 44 20[{}5 83.022 /CMEX10 rf /Fk 165[57 48 69 2[57 │ │ │ │ @@ -4549,21 +4538,21 @@ │ │ │ │ Fm(2)p Ff(j)p Fk(D)722 5419 y Fi(1)p Fh(;)p Fi(1)812 │ │ │ │ 5407 y Ff(j)g(\000)g(j)p Fk(A)1021 5419 y Fi(2)p Fh(;)p │ │ │ │ Fi(1)1112 5407 y Ff(j)g(\000)g(j)p Fk(A)1321 5419 y Fi(1)p │ │ │ │ Fh(;)p Fi(2)1412 5407 y Ff(j)p Fm(,)27 b(where)h Ff(j)18 │ │ │ │ b(\001)h(j)27 b Fm(denotes)h(the)g(n)n(um)n(b)r(er)f(of)g(nonzero)r(es) │ │ │ │ g(in)h(a)f(matrix.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1015 4 v │ │ │ │ -1180 w Fl(SemiImplMtx)24 b Fd(:)37 b Fe(DRAFT)27 b Fd(Decem)n(b)r(er)g │ │ │ │ -(20,)g(2018)p 2885 100 V 0 390 a Fc(1.1)135 b(Data)46 │ │ │ │ -b(Structure)0 595 y Fm(The)28 b Fl(SemiImplMtx)23 b Fm(structure)k(has) │ │ │ │ -g(the)h(follo)n(wing)e(\014elds.)125 776 y Ff(\017)41 │ │ │ │ -b Fl(int)h(neqns)26 b Fm(:)36 b(n)n(um)n(b)r(er)28 b(of)f(equations.) │ │ │ │ -125 939 y Ff(\017)41 b Fl(int)h(type)26 b Fm(:)37 b(t)n(yp)r(e)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1048 4 v │ │ │ │ +1213 w Fl(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)28 b Fd(Octob)r(er)e(11,) │ │ │ │ +h(2021)p 2852 100 V 0 390 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ +595 y Fm(The)28 b Fl(SemiImplMtx)23 b Fm(structure)k(has)g(the)h(follo) │ │ │ │ +n(wing)e(\014elds.)125 776 y Ff(\017)41 b Fl(int)h(neqns)26 │ │ │ │ +b Fm(:)36 b(n)n(um)n(b)r(er)28 b(of)f(equations.)125 │ │ │ │ +939 y Ff(\017)41 b Fl(int)h(type)26 b Fm(:)37 b(t)n(yp)r(e)28 │ │ │ │ b(of)f(en)n(tries,)g Fl(SPOOLES)p 1527 939 27 4 v 29 │ │ │ │ w(REAL)f Fm(or)g Fl(SPOOLES)p 2167 939 V 29 w(COMPLEX)p │ │ │ │ Fm(.)125 1101 y Ff(\017)41 b Fl(int)h(symmetryflag)13 │ │ │ │ b Fm(:)33 b(t)n(yp)r(e)18 b(of)h(matrix)e(symmetry)-7 │ │ │ │ b(,)20 b Fl(SPOOLES)p 2212 1101 V 29 w(SYMMETRIC)p Fm(,)15 │ │ │ │ b Fl(SPOOLES)p 2983 1101 V 28 w(HERMITIAN)g Fm(or)i Fl(SPOOLES)p │ │ │ │ 3822 1101 V 29 w(NONSYMMETRIC)p Fm(.)125 1263 y Ff(\017)41 │ │ │ │ @@ -4633,17 +4622,17 @@ │ │ │ │ Fm(.)101 5145 y(3.)42 b Fl(int)g(SemiImplMtx_clea)o(rD)o(ata)37 │ │ │ │ b(\()43 b(SemiImplMtx)c(*mtx)j(\))h(;)208 5276 y Fm(This)27 │ │ │ │ b(metho)r(d)h(releases)e(all)h(storage)f(held)i(b)n(y)f(the)h(ob)5 │ │ │ │ b(ject.)208 5407 y Fe(R)l(eturn)28 b(c)l(o)l(des:)38 │ │ │ │ b Fl(1)27 b Fm(means)g(a)g(normal)g(return,)g Fl(-1)g │ │ │ │ Fm(means)g Fl(mtx)f Fm(is)i Fl(NULL)p Fm(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1015 4 v 1181 100 a Fl(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2846 100 V 1015 w Fm(3)101 390 y(4.)42 b Fl(int)g(SemiImplMtx_free)37 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1048 4 v 1214 100 a Fl(SemiImplMtx)23 │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2813 100 V 1048 w Fm(3)101 390 y(4.)42 b Fl(int)g(SemiImplMtx_free)37 │ │ │ │ b(\()43 b(SemiImplMtx)c(*mtx)j(\))h(;)208 518 y Fm(This)22 │ │ │ │ b(metho)r(d)g(releases)f(all)g(storage)g(held)h(b)n(y)g(the)g(ob)5 │ │ │ │ b(ject)22 b(via)g(a)f(call)h(to)g Fl(SemiImplMtx)p 2968 │ │ │ │ 518 27 4 v 27 w(clearData\(\))p Fm(,)d(then)j(free'd)208 │ │ │ │ 617 y(the)28 b(storage)d(for)i(the)h(ob)5 b(ject.)208 │ │ │ │ 745 y Fe(R)l(eturn)28 b(c)l(o)l(des:)38 b Fl(1)27 b Fm(means)g(a)g │ │ │ │ (normal)g(return,)g Fl(-1)g Fm(means)g Fl(mtx)f Fm(is)i │ │ │ │ @@ -4737,17 +4726,17 @@ │ │ │ │ Fm(ob)5 b(jects)28 b(during)h(the)h(solv)n(e.)40 b(One)29 │ │ │ │ b(can)g(ha)n(v)n(e)f Fl(X)g Fm(and)h Fl(B)g Fm(p)r(oin)n(t)h(to)f(the)g │ │ │ │ (same)g(ob)5 b(ject,)29 b(for)g(en)n(tries)208 5407 y(are)d(read)h │ │ │ │ (from)g Fl(B)g Fm(and)h(written)g(to)f Fl(X)p Fm(.)g(On)h(return,)f │ │ │ │ (the)h Fl(cpus[])d Fm(v)n(ector)h(con)n(tains)h(the)h(follo)n(wing)f │ │ │ │ (information.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1015 4 v │ │ │ │ -1180 w Fl(SemiImplMtx)24 b Fd(:)37 b Fe(DRAFT)27 b Fd(Decem)n(b)r(er)g │ │ │ │ -(20,)g(2018)p 2885 100 V 369 377 a Fl(cpus[0])97 b Fm(initialize)27 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1048 4 v │ │ │ │ +1213 w Fl(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)28 b Fd(Octob)r(er)e(11,) │ │ │ │ +h(2021)p 2852 100 V 369 377 a Fl(cpus[0])97 b Fm(initialize)27 │ │ │ │ b(w)n(orking)f(matrices)369 477 y Fl(cpus[1])97 b Fm(load)27 │ │ │ │ b(righ)n(t)f(hand)i(side)369 576 y Fl(cpus[2])97 b Fm(\014rst)27 │ │ │ │ b(solv)n(e)f(with)j(domains)369 676 y Fl(cpus[3])97 b │ │ │ │ Fm(compute)27 b(Sc)n(h)n(ur)g(righ)n(t)g(hand)h(side)369 │ │ │ │ 775 y Fl(cpus[4])97 b Fm(Sc)n(h)n(ur)27 b(solv)n(e)2099 │ │ │ │ 377 y Fl(cpus[5])97 b Fm(compute)27 b(domains')g(righ)n(t)g(hand)h │ │ │ │ (side)2099 477 y Fl(cpus[6])97 b Fm(second)27 b(solv)n(e)f(with)i │ │ │ │ @@ -4810,17 +4799,17 @@ │ │ │ │ (loaded)f(with)i(random)e(en)n(tries.)50 b(The)32 b(linear)208 │ │ │ │ 5240 y(system)27 b Fk(AX)j Fm(=)22 b Fk(B)32 b Fm(is)27 │ │ │ │ b(solv)n(ed)g(as)g(follo)n(ws.)307 5407 y Ff(\017)41 │ │ │ │ b Fm(First)28 b Fk(A)g Fm(is)f(factored,)g(and)g(a)h │ │ │ │ Fl(FrontMtx)c Fm(ob)5 b(ject)27 b(is)h(created)f(to)g(hold)h(the)g │ │ │ │ (factorization.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1015 4 v 1181 100 a Fl(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Decem)n(b)r(er)28 b(20,)f(2018)p │ │ │ │ -2846 100 V 1015 w Fm(5)307 390 y Ff(\017)41 b Fm(The)28 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1048 4 v 1214 100 a Fl(SemiImplMtx)23 │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(Octob)r(er)27 b(11,)g(2021)p │ │ │ │ +2813 100 V 1048 w Fm(5)307 390 y Ff(\017)41 b Fm(The)28 │ │ │ │ b(system)f(is)h(solv)n(ed)e(using)h(the)h Fl(FrontMtx)d │ │ │ │ Fm(ob)5 b(ject.)307 523 y Ff(\017)41 b Fm(A)28 b Fl(SemiImplMtx)23 │ │ │ │ b Fm(matrix)k(ob)5 b(ject)28 b(is)f(constructed)g(from)h(the)g │ │ │ │ Fl(FrontMtx)c Fm(ob)5 b(ject)27 b(and)h Fk(A)p Fm(.)307 │ │ │ │ 656 y Ff(\017)41 b Fm(The)28 b(system)f(is)h(solv)n(ed)e(using)h(the)h │ │ │ │ Fl(SemiImplMtx)c Fm(ob)5 b(ject.)208 822 y(V)-7 b(arious)30 │ │ │ │ b(statistics)h(and)g(CPU)g(timings)g(are)g(written)g(to)g(the)h │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -51,15 +51,15 @@ │ │ │ │ │ in a semi-implicit form) can pay off — storage can be saved when the number of entries in L and U │ │ │ │ │ 2,1 1,2 │ │ │ │ │ are larger than the number of entries in A and A . The number of solve operations is reduced by │ │ │ │ │ 2,1 1,2 │ │ │ │ │ |L | + |U | − 2|D | − |A | − |A |, where | · | denotes the number of nonzeroes in a matrix. │ │ │ │ │ 2,1 1,2 1,1 2,1 1,2 │ │ │ │ │ 1 │ │ │ │ │ - 2 SemiImplMtx : DRAFT December 20, 2018 │ │ │ │ │ + 2 SemiImplMtx : DRAFT October 11, 2021 │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The SemiImplMtx structure has the following fields. │ │ │ │ │ • int neqns : number of equations. │ │ │ │ │ • int type : type of entries, SPOOLES REAL or SPOOLES COMPLEX. │ │ │ │ │ • int symmetryflag: typeofmatrixsymmetry,SPOOLES SYMMETRIC,SPOOLES HERMITIANorSPOOLES NONSYMMETRIC. │ │ │ │ │ • int ndomeqns : number of equations in the domains, or (1,1) block. │ │ │ │ │ • int nschureqns : number of equations in the Schur complement, or (2,2) block. │ │ │ │ │ @@ -95,15 +95,15 @@ │ │ │ │ │ Thismethodsetsthestructure’sfieldstodefaultvalues: neqns=0,type=SPOOLES REAL,symmetryflag │ │ │ │ │ =SPOOLES SYMMETRIC,ndomeqns=nschureqns=0,anddomainMtx,schurMtx,A21,A12,domRowsIV, │ │ │ │ │ schurRowsIV, domColumnsIV and schurColumnsIV are all set to NULL. │ │ │ │ │ Return codes: 1 means a normal return, -1 means mtx is NULL. │ │ │ │ │ 3. int SemiImplMtx_clearData ( SemiImplMtx *mtx ) ; │ │ │ │ │ This method releases all storage held by the object. │ │ │ │ │ Return codes: 1 means a normal return, -1 means mtx is NULL. │ │ │ │ │ - SemiImplMtx : DRAFT December 20, 2018 3 │ │ │ │ │ + SemiImplMtx : DRAFT October 11, 2021 3 │ │ │ │ │ 4. int SemiImplMtx_free ( SemiImplMtx *mtx ) ; │ │ │ │ │ This method releases all storage held by the object via a call to SemiImplMtx clearData(), then free’d │ │ │ │ │ the storage for the object. │ │ │ │ │ Return codes: 1 means a normal return, -1 means mtx is NULL. │ │ │ │ │ 1.2.2 Initialization Methods │ │ │ │ │ 1. int SemiImplMtx_initFromFrontMtx ( SemiImplMtx *semimtx, FrontMtx *frontmtx, │ │ │ │ │ InpMtx *inpmtx, IV *frontmapIV, int msglvl, FILE *msgFile) ; │ │ │ │ │ @@ -140,15 +140,15 @@ │ │ │ │ │ 1.2.3 Solve Methods │ │ │ │ │ 1. int SemiImplMtx_solve ( SemiImplMtx *mtx, DenseMtx *X, DenseMtx *B, │ │ │ │ │ SubMtxManager *mtxmanager, double cpus[], int msglvl, FILE *msgFile ) ; │ │ │ │ │ This methods solves a linear system (L + I)D(I + U)X = B, (UT + I)D(I + U)X = B or (UH + │ │ │ │ │ I)D(I + U)X = B, where X and B are DenseMtx objects. mtxmanager is an object to handle the │ │ │ │ │ working SubMtx objects during the solve. One can have X and B point to the same object, for entries │ │ │ │ │ are read from B and written to X. On return, the cpus[] vector contains the following information. │ │ │ │ │ - 4 SemiImplMtx : DRAFT December 20, 2018 │ │ │ │ │ + 4 SemiImplMtx : DRAFT October 11, 2021 │ │ │ │ │ cpus[0] initialize working matrices cpus[5] compute domains’ right hand side │ │ │ │ │ cpus[1] load right hand side cpus[6] second solve with domains │ │ │ │ │ cpus[2] first solve with domains cpus[7] store solution │ │ │ │ │ cpus[3] compute Schur right hand side cpus[8] miscellaneous time │ │ │ │ │ cpus[4] Schur solve cpus[9] total time │ │ │ │ │ Return codes: │ │ │ │ │ 1 normal return -3 B is NULL │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ This section contains brief descriptions of the driver programs. │ │ │ │ │ 1. testGrid msglvl msgFile n1 n2 n3 maxzeros maxsize seed type symmetryflag │ │ │ │ │ sparsityflag pivotingflag tau droptol nrhs depth │ │ │ │ │ This driver program tests the SemiImplMtx creation and solve methods for a matrix from a regular │ │ │ │ │ 2-D or 3-D grid. The matrix can be real or complex and is loaded with random entries. The linear │ │ │ │ │ system AX =B is solved as follows. │ │ │ │ │ • First A is factored, and a FrontMtx object is created to hold the factorization. │ │ │ │ │ - SemiImplMtx : DRAFT December 20, 2018 5 │ │ │ │ │ + SemiImplMtx : DRAFT October 11, 2021 5 │ │ │ │ │ • The system is solved using the FrontMtx object. │ │ │ │ │ • A SemiImplMtx matrix object is constructed from the FrontMtx object and A. │ │ │ │ │ • The system is solved using the SemiImplMtx object. │ │ │ │ │ Various statistics and CPU timings are written to the message file to compare the two solution pro- │ │ │ │ │ cesses. Use the do grid shell script for testing. │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ ├── ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ ├── SolveMap.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMMI10 CMTT8 CMMI8 │ │ │ │ %%+ CMSY10 CMBX10 CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SolveMap.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -738,22 +738,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -927,88 +927,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3882,16 +3871,16 @@ │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 2[59 62 44 44 46 1[62 56 62 93 31 │ │ │ │ 2[31 62 2[51 62 50 1[54 11[86 1[62 3[84 1[106 3[42 6[80 │ │ │ │ 10[56 56 56 56 56 56 56 2[31 46[{}32 99.6264 /CMBX12 │ │ │ │ rf /Fb 137[62 5[62 62 2[62 6[62 3[62 13[62 5[62 77[{}8 │ │ │ │ -119.552 /CMTT12 rf /Fc 141[36 4[76 7[40 1[40 51 29[69 │ │ │ │ -9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ +119.552 /CMTT12 rf /Fc 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Fd 132[52 123[{}1 90.9091 /CMBX10 rf /Fe 234[71 5[45 │ │ │ │ 15[{}2 90.9091 /CMSY10 rf /Ff 134[71 3[75 52 53 55 1[75 │ │ │ │ 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf /Fg 171[41 8[60 │ │ │ │ 39 1[58 12[20 59[{}5 66.4176 /CMMI8 rf /Fh 136[35 4[35 │ │ │ │ 2[35 2[35 2[35 4[35 35 23[35 35 35 73[{}10 66.4176 /CMTT8 │ │ │ │ rf /Fi 170[62 8[62 77 50 40 4[75 5[71 1[71 60[{}8 90.9091 │ │ │ │ @@ -3972,17 +3961,17 @@ │ │ │ │ b Fk(int)h(*rowidsUpper)27 b Fl({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f │ │ │ │ (for)g(the)h(upp)s(er)d(triangle)136 5213 y Fe(\017)46 │ │ │ │ b Fk(int)h(*colidsUpper)27 b Fl({)k(v)m(ector)h(of)e(column)h(ids)f │ │ │ │ (for)g(the)g(upp)s(er)f(triangle)136 5407 y Fe(\017)46 │ │ │ │ b Fk(int)h(*mapUpper)28 b Fl({)j(map)f(from)g(submatrices)g(to)h │ │ │ │ (threads)f(or)g(pro)s(cesses)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 998 4 v │ │ │ │ -1180 w Fk(SolveMap)28 b Fc(:)41 b Fj(DRAFT)30 b Fc(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 136 399 a Fe(\017)46 b Fk(int)h(nblockLower)27 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(SolveMap)28 b Fc(:)41 b Fj(DRAFT)30 b Fc(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 136 399 a Fe(\017)46 b Fk(int)h(nblockLower)27 │ │ │ │ b Fl({)k(n)m(um)m(b)s(er)e(of)i(submatrices)f(in)g(the)h(lo)m(w)m(er)g │ │ │ │ (triangle)136 588 y Fe(\017)46 b Fk(int)h(*rowidsLower)27 │ │ │ │ b Fl({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f(for)g(the)h(lo)m(w)m(er)g │ │ │ │ (triangle)136 778 y Fe(\017)46 b Fk(int)h(*colidsLower)27 │ │ │ │ b Fl({)k(v)m(ector)h(of)e(column)h(ids)f(for)g(the)g(lo)m(w)m(er)i │ │ │ │ (triangle)136 967 y Fe(\017)46 b Fk(int)h(*mapLower)28 │ │ │ │ b Fl({)j(map)f(from)g(submatrices)g(to)h(threads)f(or)g(pro)s(cesses)h │ │ │ │ @@ -4034,24 +4023,24 @@ │ │ │ │ b(SolveMap)d(*solvemap)g(\))j(;)227 5256 y Fl(This)30 │ │ │ │ b(metho)s(d)g(returns)f Fk(symmetryflag)p Fl(,)e(the)k(symmetry)f │ │ │ │ (\015ag.)227 5407 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fl(If)30 b Fk(solvemap)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 998 4 v 1179 100 a Fk(SolveMap)29 │ │ │ │ -b Fc(:)40 b Fj(DRAFT)121 b Fc(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(3)111 399 y(2.)46 b Fk(int)h(SolveMap_nfront)d(\()j │ │ │ │ -(SolveMap)f(*solvemap)f(\))j(;)227 552 y Fl(This)30 b(metho)s(d)g │ │ │ │ -(returns)f Fk(nfront)p Fl(,)g(the)h(n)m(um)m(b)s(er)f(of)i(fron)m(ts.) │ │ │ │ -227 706 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ -b Fk(solvemap)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g │ │ │ │ -(prin)m(ted)e(and)h(the)h(program)f(exits.)111 901 y(3.)46 │ │ │ │ -b Fk(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\))j(;)227 │ │ │ │ -1055 y Fl(This)30 b(metho)s(d)g(returns)f Fk(nproc)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1034 4 v 1215 100 a Fk(SolveMap)29 │ │ │ │ +b Fc(:)40 b Fj(DRAFT)121 b Fc(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(3)111 399 y(2.)46 b Fk(int)h(SolveMap_nfront)d(\() │ │ │ │ +j(SolveMap)f(*solvemap)f(\))j(;)227 552 y Fl(This)30 │ │ │ │ +b(metho)s(d)g(returns)f Fk(nfront)p Fl(,)g(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ +(fron)m(ts.)227 706 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fl(If)30 b Fk(solvemap)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f │ │ │ │ +(message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)111 │ │ │ │ +901 y(3.)46 b Fk(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\)) │ │ │ │ +j(;)227 1055 y Fl(This)30 b(metho)s(d)g(returns)f Fk(nproc)p │ │ │ │ Fl(,)g(the)i(n)m(um)m(b)s(er)e(of)h(threads)g(or)h(pro)s(cesses.)227 │ │ │ │ 1209 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fk(solvemap)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g │ │ │ │ (prin)m(ted)e(and)h(the)h(program)f(exits.)111 1404 y(4.)46 │ │ │ │ b Fk(int)h(SolveMap_nblockUpper)42 b(\()48 b(SolveMap)d(*solvemap)h(\)) │ │ │ │ h(;)227 1558 y Fl(This)d(metho)s(d)g(returns)g Fk(nblockUpper)p │ │ │ │ Fl(,)i(the)f(n)m(um)m(b)s(er)e(of)i(o\013-diagonal)i(submatrices)e(in)f │ │ │ │ @@ -4100,17 +4089,17 @@ │ │ │ │ Fk(rowidsLower)p Fl(,)g(a)i(p)s(oin)m(ter)g(to)h(the)f(v)m(ector)h(of)f │ │ │ │ (ro)m(w)g(ids)f(of)h(the)h(submatrices)e(in)227 5253 │ │ │ │ y(the)e(lo)m(w)m(er)g(triangle.)227 5407 y Fj(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(solvemap)e │ │ │ │ Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g(prin)m(ted)e(and)h │ │ │ │ (the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 998 4 v │ │ │ │ -1180 w Fk(SolveMap)28 b Fc(:)41 b Fj(DRAFT)30 b Fc(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 66 399 a Fl(11.)46 b Fk(int)h(*)h │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(SolveMap)28 b Fc(:)41 b Fj(DRAFT)30 b Fc(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 66 399 a Fl(11.)46 b Fk(int)h(*)h │ │ │ │ (SolveMap_colidsLower)42 b(\()47 b(SolveMap)f(*solvemap)f(\))j(;)227 │ │ │ │ 567 y Fl(This)31 b(metho)s(d)g(returns)f Fk(colidsLower)p │ │ │ │ Fl(,)f(a)j(p)s(oin)m(ter)f(to)h(the)g(v)m(ector)h(of)f(column)f(ids)g │ │ │ │ (of)g(the)h(submatrices)227 680 y(in)e(the)h(upp)s(er)d(triangle.)227 │ │ │ │ 848 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fk(solvemap)e Fl(is)j Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g │ │ │ │ (prin)m(ted)e(and)h(the)h(program)f(exits.)66 1072 y(12.)46 │ │ │ │ @@ -4168,17 +4157,17 @@ │ │ │ │ (fashion.)227 5294 y Fj(Err)-5 b(or)43 b(che)-5 b(cking:)59 │ │ │ │ b Fl(If)39 b Fk(solvemap)p Fl(,)i Fk(upperBlockIVL)36 │ │ │ │ b Fl(or)k Fk(ownersIV)d Fl(is)j Fk(NULL)p Fl(,)f(or)h(if)f │ │ │ │ Fk(symmetryflag)e Fl(is)227 5407 y(in)m(v)-5 b(alid,)31 │ │ │ │ b(an)g(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 998 4 v 1179 100 a Fk(SolveMap)29 │ │ │ │ -b Fc(:)40 b Fj(DRAFT)121 b Fc(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(5)0 399 y Fa(1.2.5)112 b(Solv)m(e)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1034 4 v 1215 100 a Fk(SolveMap)29 │ │ │ │ +b Fc(:)40 b Fj(DRAFT)121 b Fc(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(5)0 399 y Fa(1.2.5)112 b(Solv)m(e)38 │ │ │ │ b(setup)g(metho)s(ds)111 591 y Fl(1.)46 b Fk(IP)h(**)h │ │ │ │ (SolveMap_forwardSetup)42 b(\()47 b(SolveMap)f(*solvemap,)f(int)i │ │ │ │ (myid,)1659 704 y(int)g(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ 817 y(IP)g(**)h(SolveMap_backwardSetup)41 b(\()48 b(SolveMap)d │ │ │ │ (*solvemap,)g(int)i(myid,)1659 930 y(int)g(msglvl,)f(FILE)g(*msgFile)g │ │ │ │ (\))h(;)227 1076 y Fl(These)21 b(t)m(w)m(o)g(metho)s(ds)f(return)g(a)h │ │ │ │ (v)m(ector)h(of)f(p)s(oin)m(ters)f(to)h Fk(IP)f Fl(ob)5 │ │ │ │ @@ -4246,29 +4235,29 @@ │ │ │ │ b(ject)35 b(that)f(con)m(tains)h(the)f(aggregate)i(coun)m(t)f(for)e(a)h │ │ │ │ (forw)m(ard)f(solv)m(e.)52 b(If)227 5407 y Fk(myid)32 │ │ │ │ b Fl(o)m(wns)g(fron)m(t)h Fk(J)p Fl(,)g(then)f(en)m(try)h │ │ │ │ Fk(J)f Fl(of)h(the)g(returned)f Fk(IV)g Fl(ob)5 b(ject)33 │ │ │ │ b(con)m(tains)h(the)f(n)m(um)m(b)s(er)e(of)i(pro)s(cesses)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 998 4 v │ │ │ │ -1180 w Fk(SolveMap)28 b Fc(:)41 b Fj(DRAFT)30 b Fc(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2902 100 V 227 399 a Fl(\(other)c(than)e │ │ │ │ -Fk(myid)p Fl(\))g(that)i(o)m(wn)f(an)f Fi(L)1522 413 │ │ │ │ -y Fh(J)p Fg(;)p Fh(I)1643 399 y Fl(submatrix,)h(\(or)h │ │ │ │ -Fi(U)2304 413 y Fh(I)p Fg(;)p Fh(J)2425 399 y Fl(submatrix)e(if)h │ │ │ │ -(symmetric)g(or)g(hermitian\))227 511 y(and)j(so)h(is)f(the)h(n)m(um)m │ │ │ │ -(b)s(er)e(of)h(incoming)h(aggregate)i(submatrices)e(pro)s(cess)f │ │ │ │ -Fk(myid)f Fl(exp)s(ects)i(for)f(fron)m(t)g Fk(J)p Fl(.)227 │ │ │ │ -665 y Fj(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fl(If)31 │ │ │ │ -b Fk(solvemap)f Fl(is)i Fk(NULL)e Fl(or)i Fk(nlist)46 │ │ │ │ -b(<)h(0)32 b Fl(then)f(an)h(error)f(message)i(is)e(prin)m(ted)h(and)f │ │ │ │ -(the)227 778 y(program)f(exits.)0 1058 y Fa(1.2.7)112 │ │ │ │ -b(IO)38 b(metho)s(ds)0 1258 y Fl(There)20 b(are)g(the)h(usual)f(eigh)m │ │ │ │ -(t)h(IO)f(routines.)37 b(The)20 b(\014le)g(structure)g(of)h(a)f │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1034 4 v │ │ │ │ +1216 w Fk(SolveMap)28 b Fc(:)41 b Fj(DRAFT)30 b Fc(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2866 100 V 227 399 a Fl(\(other)c(than)e Fk(myid)p │ │ │ │ +Fl(\))g(that)i(o)m(wn)f(an)f Fi(L)1522 413 y Fh(J)p Fg(;)p │ │ │ │ +Fh(I)1643 399 y Fl(submatrix,)h(\(or)h Fi(U)2304 413 │ │ │ │ +y Fh(I)p Fg(;)p Fh(J)2425 399 y Fl(submatrix)e(if)h(symmetric)g(or)g │ │ │ │ +(hermitian\))227 511 y(and)j(so)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h │ │ │ │ +(incoming)h(aggregate)i(submatrices)e(pro)s(cess)f Fk(myid)f │ │ │ │ +Fl(exp)s(ects)i(for)f(fron)m(t)g Fk(J)p Fl(.)227 665 │ │ │ │ +y Fj(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fl(If)31 b │ │ │ │ +Fk(solvemap)f Fl(is)i Fk(NULL)e Fl(or)i Fk(nlist)46 b(<)h(0)32 │ │ │ │ +b Fl(then)f(an)h(error)f(message)i(is)e(prin)m(ted)h(and)f(the)227 │ │ │ │ +778 y(program)f(exits.)0 1058 y Fa(1.2.7)112 b(IO)38 │ │ │ │ +b(metho)s(ds)0 1258 y Fl(There)20 b(are)g(the)h(usual)f(eigh)m(t)h(IO)f │ │ │ │ +(routines.)37 b(The)20 b(\014le)g(structure)g(of)h(a)f │ │ │ │ Fk(SolveMap)e Fl(ob)5 b(ject)21 b(is)g(simple:)35 b Fk(symmetryflag)p │ │ │ │ Fl(,)0 1371 y Fk(nfront)p Fl(,)21 b Fk(nproc)p Fl(,)g │ │ │ │ Fk(nblockUpper)c Fl(and)j Fk(nblockLower)p Fl(,)f(follo)m(w)m(ed)j(b)m │ │ │ │ (y)e Fk(owners[*])p Fl(,)g Fk(rowidsUpper[*])p Fl(,)f │ │ │ │ Fk(colidsUpper[*])0 1484 y Fl(and)h Fk(mapidsUpper[*])p │ │ │ │ Fl(,)e(and)i(if)g Fk(symmetryflag)45 b(=)i(SPOOLES)p │ │ │ │ 2180 1484 29 4 v 33 w(NONSYMMETRIC)p Fl(,)17 b(follo)m(w)m(ed)22 │ │ │ │ @@ -4335,17 +4324,17 @@ │ │ │ │ Fl(is)h(returned.)37 b(If)24 b(an)f(IO)g(error)g(is)h(encoun)m(tered)g │ │ │ │ (from)f Fk(fprintf)p Fl(,)h(zero)g(is)g(returned.)227 │ │ │ │ 5407 y Fj(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fl(If)28 │ │ │ │ b Fk(solvemap)f Fl(or)i Fk(fp)g Fl(are)g Fk(NULL)f Fl(an)h(error)g │ │ │ │ (message)h(is)f(prin)m(ted)f(and)h(zero)h(is)f(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 998 4 v 1179 100 a Fk(SolveMap)29 │ │ │ │ -b Fc(:)40 b Fj(DRAFT)121 b Fc(Decem)m(b)s(er)32 b(20,)f(2018)p │ │ │ │ -2855 100 V 998 w Fl(7)111 399 y(6.)46 b Fk(int)h │ │ │ │ +TeXDict begin 7 6 bop 91 100 1034 4 v 1215 100 a Fk(SolveMap)29 │ │ │ │ +b Fc(:)40 b Fj(DRAFT)121 b Fc(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2819 100 V 1034 w Fl(7)111 399 y(6.)46 b Fk(int)h │ │ │ │ (SolveMap_writeToBinaryFil)o(e)42 b(\()47 b(SolveMap)f(*solvemap,)f │ │ │ │ (FILE)h(*fp)h(\))h(;)227 549 y Fl(This)29 b(metho)s(d)h(writes)g(an)f │ │ │ │ Fk(SolveMap)f Fl(ob)5 b(ject)31 b(to)f(a)h(binary)e(\014le.)40 │ │ │ │ b(If)30 b(there)g(are)g(no)g(errors)f(in)h(writing)g(the)227 │ │ │ │ 662 y(data,)i(the)e(v)-5 b(alue)31 b Fk(1)f Fl(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fk(fwrite)p Fl(,)f(zero)i(is)g(returned.)227 812 y Fj(Err)-5 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -19,15 +19,15 @@ │ │ │ │ │ • int nproc – number of threads or processes │ │ │ │ │ • int *owners – vector mapping fronts to owning threads or processes │ │ │ │ │ • int nblockUpper – number of submatrices in the upper triangle │ │ │ │ │ • int *rowidsUpper – vector of row ids for the upper triangle │ │ │ │ │ • int *colidsUpper – vector of column ids for the upper triangle │ │ │ │ │ • int *mapUpper – map from submatrices to threads or processes │ │ │ │ │ 1 │ │ │ │ │ - 2 SolveMap : DRAFT December 20, 2018 │ │ │ │ │ + 2 SolveMap : DRAFT October 11, 2021 │ │ │ │ │ • int nblockLower – number of submatrices in the lower triangle │ │ │ │ │ • int *rowidsLower – vector of row ids for the lower triangle │ │ │ │ │ • int *colidsLower – vector of column ids for the lower triangle │ │ │ │ │ • int *mapLower – map from submatrices to threads or processes processes │ │ │ │ │ 1.2 Prototypes and descriptions of SolveMap methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ SolveMap object. │ │ │ │ │ @@ -50,15 +50,15 @@ │ │ │ │ │ This method releases any storage by a call to SolveMap clearData() then free’s the storage │ │ │ │ │ for the structure with a call to free(). │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ 1. int SolveMap_symmetryflag ( SolveMap *solvemap ) ; │ │ │ │ │ This method returns symmetryflag, the symmetry flag. │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ - SolveMap : DRAFT December 20, 2018 3 │ │ │ │ │ + SolveMap : DRAFT October 11, 2021 3 │ │ │ │ │ 2. int SolveMap_nfront ( SolveMap *solvemap ) ; │ │ │ │ │ This method returns nfront, the number of fronts. │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. int SolveMap_nproc ( SolveMap *solvemap ) ; │ │ │ │ │ This method returns nproc, the number of threads or processes. │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. int SolveMap_nblockUpper ( SolveMap *solvemap ) ; │ │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │ │ This method returns mapUpper, a pointer to the vector that maps the submatrices in the │ │ │ │ │ upper triangle to threads or processes. │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ 10. int * SolveMap_rowidsLower ( SolveMap *solvemap ) ; │ │ │ │ │ This method returns rowidsLower, a pointer to the vector of row ids of the submatrices in │ │ │ │ │ the lower triangle. │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ - 4 SolveMap : DRAFT December 20, 2018 │ │ │ │ │ + 4 SolveMap : DRAFT October 11, 2021 │ │ │ │ │ 11. int * SolveMap_colidsLower ( SolveMap *solvemap ) ; │ │ │ │ │ This method returns colidsLower, a pointer to the vector of column ids of the submatrices │ │ │ │ │ in the upper triangle. │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ 12. int * SolveMap_mapLower ( SolveMap *solvemap ) ; │ │ │ │ │ This method returns mapLower, a pointer to the vector that maps the submatrices in the │ │ │ │ │ upper triangle to threads or processes. │ │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ │ fashion. A domain is a subtree of fronts that are owned by the same thread or process. │ │ │ │ │ Furthermore, a domain is maximal, i.e., the parent of the root domain (if it exists) is owned │ │ │ │ │ by a different process. If J belongs to a domain, then for all K, LK,J and UJ,K are owned by │ │ │ │ │ the thread or process that owns the domain. All other submatrices are mapped to threads or │ │ │ │ │ processes in a random fashion. │ │ │ │ │ Error checking: If solvemap, upperBlockIVL or ownersIV is NULL, or if symmetryflag is │ │ │ │ │ invalid, an error message is printed and the program exits. │ │ │ │ │ - SolveMap : DRAFT December 20, 2018 5 │ │ │ │ │ + SolveMap : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.5 Solve setup methods │ │ │ │ │ 1. IP ** SolveMap_forwardSetup ( SolveMap *solvemap, int myid, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ IP ** SolveMap_backwardSetup ( SolveMap *solvemap, int myid, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ ThesetwomethodsreturnavectorofpointerstoIPobjectsthatcontainthelistofsubmatrices │ │ │ │ │ that thread or process myid will use during the forward or backward solves. │ │ │ │ │ @@ -157,15 +157,15 @@ │ │ │ │ │ submatrices process myid expects for front J. │ │ │ │ │ Error checking: If solvemap is NULL or nlist < 0 then an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 5. IV * SolveMap_lowerAggregateIV ( SolveMap *solvemap, int myid │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method returns an IV object that contains the aggregate count for a forward solve. If │ │ │ │ │ myid owns front J, then entry J of the returned IV object contains the number of processes │ │ │ │ │ - 6 SolveMap : DRAFT December 20, 2018 │ │ │ │ │ + 6 SolveMap : DRAFT October 11, 2021 │ │ │ │ │ (other than myid) that own an L submatrix, (or U submatrix if symmetric or hermitian) │ │ │ │ │ J,I I,J │ │ │ │ │ and so is the number of incoming aggregate submatrices process myid expects for front J. │ │ │ │ │ Error checking: If solvemap is NULL or nlist < 0 then an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 1.2.7 IO methods │ │ │ │ │ TherearetheusualeightIOroutines. ThefilestructureofaSolveMapobjectissimple: symmetryflag, │ │ │ │ │ @@ -194,15 +194,15 @@ │ │ │ │ │ Error checking: If solvemap or fn are NULL, or if fn is not of the form *.solvemapf (for a │ │ │ │ │ formatted file) or *.solvemapb (for a binary file), an error message is printed and the method │ │ │ │ │ returns zero. │ │ │ │ │ 5. int SolveMap_writeToFormattedFile ( SolveMap *solvemap, FILE *fp ) ; │ │ │ │ │ This method writes an SolveMap object to a formatted file. If there are no errors in writing │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If solvemap or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ - SolveMap : DRAFT December 20, 2018 7 │ │ │ │ │ + SolveMap : DRAFT October 11, 2021 7 │ │ │ │ │ 6. int SolveMap_writeToBinaryFile ( SolveMap *solvemap, FILE *fp ) ; │ │ │ │ │ This method writes an SolveMap object to a binary file. If there are no errors in writing the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If solvemap or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ 7. int SolveMap_writeForHumanEye ( SolveMap *solvemap, FILE *fp ) ; │ │ │ │ │ This method writes an SolveMap object to a file in an easily readable format. The method │ │ │ │ │ SolveMap writeStats() is called to write out the header and statistics. The value 1 is │ │ ├── ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ ├── SubMtx.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMMI10 CMMI8 CMSY8 CMSY10 │ │ │ │ %%+ CMBX10 CMSL10 CMTI10 CMR8 CMEX10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1660,22 +1660,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1849,88 +1849,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4778,16 +4767,16 @@ │ │ │ │ 86 1[62 3[84 5[42 6[80 10[56 56 56 56 56 56 56 2[31 46[{}31 │ │ │ │ 99.6264 /CMBX12 rf /Fd 135[62 2[62 62 4[62 4[62 4[62 │ │ │ │ 1[62 62 14[62 5[62 77[{}10 119.552 /CMTT12 rf /Fe 134[71 │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 │ │ │ │ 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 119.552 │ │ │ │ /CMBX12 rf /Ff 138[49 30 37 38 1[46 46 51 1[23 42 1[28 │ │ │ │ 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ -58[{}23 90.9091 /CMTI10 rf /Fg 141[36 4[76 7[40 1[40 │ │ │ │ -51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ +58[{}23 90.9091 /CMTI10 rf /Fg 139[35 1[36 2[45 9[40 │ │ │ │ +1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ rf /Fh 132[52 123[{}1 90.9091 /CMBX10 rf /Fi 152[45 45 │ │ │ │ 9[61 70[71 71 4[45 11[45 71 1[71{}9 90.9091 /CMSY10 rf │ │ │ │ /Fj 163[47 92[{}1 66.4176 /CMSY8 rf /Fk 149[29 24 20[41 │ │ │ │ 9[39 31 58 7[37 4[20 59[{}8 66.4176 /CMMI8 rf /Fl 134[45 │ │ │ │ 52 13[37 31 7[48 7[53 75 2[62 8[62 1[50 40 4[75 1[69 │ │ │ │ 68 48 4[25 59[{}16 90.9091 /CMMI10 rf /Fm 133[48 48 48 │ │ │ │ 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ @@ -4877,17 +4866,17 @@ │ │ │ │ y Fh({)45 b Fn(sparse)30 b(using)g(dense)g(sub)s(columns)330 │ │ │ │ 5111 y Fh({)45 b Fn(sparse)30 b(using)g(sparse)g(ro)m(ws)330 │ │ │ │ 5259 y Fh({)45 b Fn(sparse)30 b(using)g(sparse)g(columns)330 │ │ │ │ 5407 y Fh({)45 b Fn(sparse)30 b(using)g(\()p Fl(i;)15 │ │ │ │ b(j;)g(a)1170 5421 y Fk(i;j)1252 5407 y Fn(\))31 b(triples)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1046 4 v │ │ │ │ -1228 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 330 399 a Fh({)45 b Fn(a)31 b(diagonal)h(matrix)330 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 330 399 a Fh({)45 b Fn(a)31 b(diagonal)h(matrix)330 │ │ │ │ 541 y Fh({)45 b Fn(a)c(blo)s(c)m(k)g(diagonal)g(symmetric)g(matrix)f │ │ │ │ (where)g(the)g(blo)s(c)m(ks)h(are)g(1)27 b Fi(\002)f │ │ │ │ Fn(1)41 b(or)f(2)28 b Fi(\002)e Fn(2,)43 b(used)d(in)g(the)427 │ │ │ │ 654 y(symmetric)31 b(inde\014nite)f(factorization.)330 │ │ │ │ 796 y Fh({)45 b Fn(a)d(blo)s(c)m(k)f(diagonal)h(Hermitian)g(matrix)f │ │ │ │ (where)f(the)h(blo)s(c)m(ks)h(are)f(1)27 b Fi(\002)g │ │ │ │ Fn(1)42 b(or)e(2)28 b Fi(\002)f Fn(2,)44 b(used)c(in)h(the)427 │ │ │ │ @@ -4958,17 +4947,17 @@ │ │ │ │ b(Data)46 b(Structure)0 5023 y Fn(The)30 b Fm(SubMtx)f │ │ │ │ Fn(structure)g(has)i(the)f(follo)m(wing)i(\014elds.)136 │ │ │ │ 5224 y Fi(\017)46 b Fm(int)h(type)29 b Fn(:)41 b(t)m(yp)s(e)31 │ │ │ │ b(of)f(en)m(tries.)330 5407 y Fh({)45 b Fm(SPOOLES)p │ │ │ │ 769 5407 29 4 v 33 w(REAL)29 b Fn(:)h(double)g(precision)h(real)g(en)m │ │ │ │ (tries.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1046 4 v 1227 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fn(3)330 399 y Fh({)45 b Fm(SPOOLES)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1263 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fn(3)330 399 y Fh({)45 b Fm(SPOOLES)p │ │ │ │ 769 399 29 4 v 33 w(COMPLEX)28 b Fn(:)j(double)f(precision)g(complex)h │ │ │ │ (en)m(tries.)136 590 y Fi(\017)46 b Fm(int)h(mode)29 │ │ │ │ b Fn(:)41 b(storage)32 b(mo)s(de.)330 781 y Fh({)45 b │ │ │ │ Fm(SUBMTX)p 721 781 V 33 w(DENSE)p 994 781 V 33 w(ROWS)29 │ │ │ │ b Fn(:)i(dense,)f(storage)i(b)m(y)e(ro)m(ws.)330 929 │ │ │ │ y Fh({)45 b Fm(SUBMTX)p 721 929 V 33 w(DENSE)p 994 929 │ │ │ │ V 33 w(COLUMNS)28 b Fn(:)j(dense,)f(storage)i(b)m(y)e(columns.)330 │ │ │ │ @@ -5030,17 +5019,17 @@ │ │ │ │ g(storage)h(format,)f(and)f Fm(0)g Fn(other-)227 5103 │ │ │ │ y(wise.)136 5294 y Fi(\017)46 b Fm(SUBMTX)p 521 5294 │ │ │ │ V 33 w(IS)p 650 5294 V 34 w(SPARSE)p 972 5294 V 33 w(COLUMNS\(mtx\))25 │ │ │ │ b Fn(is)30 b Fm(1)e Fn(if)h Fm(mtx)g Fn(has)g(sparse)f(columns)h(as)h │ │ │ │ (its)f(storage)i(format,)f(and)e Fm(0)227 5407 y Fn(otherwise.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1046 4 v │ │ │ │ -1228 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 136 399 a Fi(\017)46 b Fm(SUBMTX)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1082 4 v │ │ │ │ +1264 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 136 399 a Fi(\017)46 b Fm(SUBMTX)p │ │ │ │ 521 399 29 4 v 33 w(IS)p 650 399 V 34 w(SPARSE)p 972 │ │ │ │ 399 V 33 w(TRIPLES\(mtx\))24 b Fn(is)k Fm(1)g Fn(if)g │ │ │ │ Fm(mtx)f Fn(has)g(sparse)h(triples)g(as)g(its)g(storage)i(format,)f │ │ │ │ Fm(0)e Fn(other-)227 511 y(wise.)136 691 y Fi(\017)46 │ │ │ │ b Fm(SUBMTX)p 521 691 V 33 w(IS)p 650 691 V 34 w(DENSE)p │ │ │ │ 924 691 V 33 w(SUBROWS\(mtx\))25 b Fn(is)j Fm(1)g Fn(if)g │ │ │ │ Fm(mtx)g Fn(has)g(dense)g(subro)m(ws)f(as)i(its)f(storage)i(format,)f │ │ │ │ @@ -5104,17 +5093,17 @@ │ │ │ │ (a)h(call)g(to)h Fm(SubMtx)p 2355 5148 V 32 w(clearData\(\))c │ │ │ │ Fn(and)h(then)h(frees)h(the)f(space)227 5261 y(for)g │ │ │ │ Fm(mtx)p Fn(.)227 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(mtx)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g(message)h │ │ │ │ (is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1046 4 v 1227 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1082 4 v 1263 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)111 597 y Fn(1.)46 b Fm(void)h(SubMtx_ids)e(\()i(SubMtx)f │ │ │ │ (*mtx,)h(int)g(*prowid,)e(int)i(*pcolid)f(\))h(;)227 │ │ │ │ 748 y Fn(This)30 b(metho)s(d)g(\014lls)g Fm(*prowid)e │ │ │ │ Fn(with)i(the)h(ro)m(w)f(id)g(and)g Fm(*pcolid)f Fn(with)h(the)g │ │ │ │ (column)g(id)g(of)h(the)g(ob)5 b(ject.)227 900 y Ff(Err)-5 │ │ │ │ b(or)27 b(che)-5 b(cking:)36 b Fn(If)22 b Fm(mtx)p Fn(,)h │ │ │ │ Fm(prowid)e Fn(or)h Fm(pcolid)f Fn(is)h Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ @@ -5182,17 +5171,17 @@ │ │ │ │ (address)f(of)i(the)227 5294 y Fm(sizes[nrow])24 b Fn(v)m(ector)k(that) │ │ │ │ g(con)m(tains)g(the)f(n)m(um)m(b)s(er)e(of)i(en)m(tries)h(in)e(eac)m(h) │ │ │ │ i(ro)m(w,)g Fm(*indices)c Fn(with)j(the)g(base)227 5407 │ │ │ │ y(address)41 b(of)g(the)h Fm(indices[nent])c Fn(v)m(ector)43 │ │ │ │ b(that)f(con)m(tains)g(the)g(column)f(index)g(for)g(eac)m(h)h(en)m(try) │ │ │ │ -8 b(,)46 b(and)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1046 4 v │ │ │ │ -1228 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 227 399 a Fm(*pentries)f Fn(with)i(the)g(base)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1082 4 v │ │ │ │ +1264 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 227 399 a Fm(*pentries)f Fn(with)i(the)g(base)g │ │ │ │ (address)f(of)i Fm(entries[nent])29 b Fn(v)m(ector.)51 │ │ │ │ b(The)32 b(indices)h(and)g(en)m(tries)h(for)f(the)227 │ │ │ │ 511 y(ro)m(ws)e(are)f(stored)h(con)m(tiguously)-8 b(.)227 │ │ │ │ 662 y Ff(Err)j(or)28 b(che)-5 b(cking:)37 b Fn(If)24 │ │ │ │ b Fm(mtx)p Fn(,)h Fm(pnrow)p Fn(,)f Fm(pnent)p Fn(,)g │ │ │ │ Fm(psizes)p Fn(,)g Fm(pindices)d Fn(or)j Fm(pentries)e │ │ │ │ Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)g(the)h(matrix)227 775 │ │ │ │ @@ -5279,17 +5268,17 @@ │ │ │ │ 5294 y(base)48 b(address)f(of)h(the)g Fm(firstlocs[ncol])c │ │ │ │ Fn(v)m(ector,)54 b Fm(*plastlocs)45 b Fn(with)i(the)h(base)g(address)f │ │ │ │ (of)h(the)227 5407 y Fm(lastlocs[ncol])22 b Fn(v)m(ector,)29 │ │ │ │ b(and)c Fm(*pentries)e Fn(with)j(the)g(base)f(address)g(of)h │ │ │ │ Fm(entries[nent])c Fn(v)m(ector.)41 b(F)-8 b(or)p eop │ │ │ │ end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1046 4 v 1227 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fn(7)227 399 y(column)38 b Fm(jcol)p │ │ │ │ +TeXDict begin 7 6 bop 91 100 1082 4 v 1263 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fn(7)227 399 y(column)38 b Fm(jcol)p │ │ │ │ Fn(,)h(the)g(nonzero)f(en)m(tries)h(are)f(found)f(in)h(ro)m(ws)g │ │ │ │ Fm([firstlocs[jcol],lastlo)o(cs[j)o(col])o(])227 511 │ │ │ │ y Fn(when)32 b Fm(firstlocs[jcol])24 b Fi(\025)k Fn(0)33 │ │ │ │ b(and)f Fm(firstlocs[jcol])24 b Fi(\024)29 b Fm(lastlocs[jcol])l │ │ │ │ Fn(.)47 b(The)31 b(en)m(tries)j(for)e(the)227 624 y(columns)e(are)h │ │ │ │ (stored)g(con)m(tiguously)-8 b(.)227 787 y Ff(Err)j(or)32 │ │ │ │ b(che)-5 b(cking:)39 b Fn(If)28 b Fm(mtx)p Fn(,)g Fm(pnrow)p │ │ │ │ @@ -5364,17 +5353,17 @@ │ │ │ │ Fm(pReal)e Fn(or)i Fm(pImag)e Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)g │ │ │ │ Fm(irow)e Fn(or)i Fm(jcol)f Fn(is)h(out)g(of)g(range,)h(an)e(error)227 │ │ │ │ 5082 y(message)g(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 │ │ │ │ 5294 y(16.)46 b Fm(void)95 b(SubMtx_locationOfRealEn)o(try)41 │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(int)h(jcol,)1898 │ │ │ │ 5407 y(double)f(**ppValue)f(\))j(;)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1046 4 v │ │ │ │ -1228 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2855 100 V 227 399 a Fn(If)h(the)g Fm(\(irow,jcol\))d │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1082 4 v │ │ │ │ +1264 w Fm(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2819 100 V 227 399 a Fn(If)h(the)g Fm(\(irow,jcol\))d │ │ │ │ Fn(en)m(try)j(is)g(presen)m(t,)h(this)f(metho)s(d)g(\014lls)g │ │ │ │ Fm(*ppValue)d Fn(with)j(a)h(p)s(oin)m(ter)f(to)g(the)h(en)m(try)227 │ │ │ │ 511 y(in)d(ro)m(w)f Fm(irow)g Fn(and)g(column)p Fm(jcol)p │ │ │ │ Fn(.)41 b(Otherwise,)30 b Fm(*ppValue)f Fn(is)h(set)i(to)f │ │ │ │ Fm(NULL)p Fn(.)f(Note,)i Fm(irow)e Fn(and)g Fm(jcol)g │ │ │ │ Fn(are)227 624 y Ff(lo)-5 b(c)g(al)32 b Fn(indices,)f(i.e.,)h(0)26 │ │ │ │ b Fi(\024)f Fm(irow)f Fi(\024)h Fm(nrow)k Fn(and)h(0)25 │ │ │ │ @@ -5447,17 +5436,17 @@ │ │ │ │ Ff(Err)-5 b(or)37 b(che)-5 b(cking:)46 b Fn(If)33 b Fm(mtx)f │ │ │ │ Fn(is)h Fm(NULL)p Fn(,)g(or)g(if)g Fm(nrow)p Fn(,)g Fm(ncol)p │ │ │ │ Fn(,)g Fm(inc1)g Fn(or)g Fm(inc2)f Fn(is)h(less)h(than)f(or)g(equal)h │ │ │ │ (to)g(zero,)227 5407 y(or)d(if)f(neither)g Fm(inc1)g │ │ │ │ Fn(nor)f Fm(inc2)h Fn(are)g Fm(1)p Fn(,)h(an)f(error)g(message)h(is)g │ │ │ │ (prin)m(ted)f(and)f(the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1046 4 v 1227 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2807 100 V 1046 w Fn(9)111 399 y(4.)46 b Fm(void)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1082 4 v 1263 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2771 100 V 1082 w Fn(9)111 399 y(4.)46 b Fm(void)h │ │ │ │ (SubMtx_initRandomLowerTr)o(iang)o(le)41 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ (int)h(type,)g(int)g(mode,)370 511 y(int)g(rowid,)f(int)h(colid,)f(int) │ │ │ │ h(nrow,)g(int)g(ncol,)f(int)h(nent,)f(int)h(seed,)g(int)f(strict)h(\))g │ │ │ │ (;)227 624 y(void)g(SubMtx_initRandomUpperTr)o(iang)o(le)41 │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(type,)g(int)g(mode,)370 │ │ │ │ 737 y(int)g(rowid,)f(int)h(colid,)f(int)h(nrow,)g(int)g(ncol,)f(int)h │ │ │ │ (nent,)f(int)h(seed,)g(int)f(strict)h(\))g(;)227 885 │ │ │ │ @@ -5539,19 +5528,19 @@ │ │ │ │ (er)e(triangular,)j(then)f Fm(mtxA)e Fn(m)m(ust)i(ha)m(v)m(e)h(dense)f │ │ │ │ (sub)s(columns)d(or)j(sparse)227 5260 y(columns.)227 │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(mtxA)g Fn(or)g Fm(mtxB)f Fn(is)i Fm(NULL)p Fn(,)e(an)h(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1023 4 │ │ │ │ -v 1205 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2877 100 V 111 399 a Fn(2.)46 b Fm(void)h(SubMtx_solveH)d │ │ │ │ -(\()k(SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\))i(;)227 547 │ │ │ │ -y Fn(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(\()p │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1059 4 │ │ │ │ +v 1241 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2841 100 V 111 399 a Fn(2.)46 b Fm(void)h(SubMtx_solveH)d(\()k │ │ │ │ +(SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\))i(;)227 547 y │ │ │ │ +Fn(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(\()p │ │ │ │ Fl(I)15 b Fn(+)8 b Fl(A)1598 514 y Fk(H)1665 547 y Fn(\))p │ │ │ │ Fl(X)33 b Fn(=)25 b Fl(B)5 b Fn(,)26 b(where)d Fl(A)i │ │ │ │ Fn(is)f(strict)h(lo)m(w)m(er)g(or)f(upp)s(er)e(triangular.)39 │ │ │ │ b(The)227 660 y(solution)32 b Fl(X)38 b Fn(o)m(v)m(erwrites)32 │ │ │ │ b Fl(B)5 b Fn(,)31 b(and)f Fm(mtxB)g Fn(m)m(ust)g(ha)m(v)m(e)i(dense)f │ │ │ │ (columns.)42 b(If)30 b Fl(A)h Fn(is)g(strict)g(lo)m(w)m(er)h │ │ │ │ (triangular,)227 773 y(then)27 b Fm(mtxA)g Fn(m)m(ust)g(ha)m(v)m(e)i │ │ │ │ @@ -5622,17 +5611,17 @@ │ │ │ │ (prin)m(ted)g(and)g(the)g(program)g(exits.)111 5146 y(2.)46 │ │ │ │ b Fm(int)h(SubMtx_nbytesInUse)c(\()k(SubMtx)g(*mtx)f(\))i(;)227 │ │ │ │ 5294 y Fn(This)36 b(metho)s(d)f(returns)g(the)i(actual)g(n)m(um)m(b)s │ │ │ │ (er)e(of)i(b)m(ytes)g(that)f(are)h(used)f(in)f(the)i(w)m(orkspace)g(o)m │ │ │ │ (wned)f(b)m(y)227 5407 y(this)31 b(ob)5 b(ject.)p eop │ │ │ │ end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1023 4 v 1204 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2785 100 V 1023 w Fn(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1059 4 v 1240 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2749 100 V 1059 w Fn(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fn(If)30 b Fm(mtx)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 │ │ │ │ 606 y(3.)46 b Fm(int)h(SubMtx_nbytesInWorkspace)41 b(\()48 │ │ │ │ b(SubMtx)e(*mtx)h(\))g(;)227 766 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(in)f(the)g(w)m(orkspace)i(o)m │ │ │ │ (wned)e(b)m(y)g(this)g(ob)5 b(ject.)227 926 y Ff(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(mtx)g Fn(is)g │ │ │ │ @@ -5690,19 +5679,19 @@ │ │ │ │ Fn(of)j(the)f Fm(mtx)227 5134 y Fn(ob)5 b(ject)32 b(in)m(to)f(the)f │ │ │ │ Fm(colDV)f Fn(v)m(ector)j(ob)5 b(ject.)227 5294 y Ff(Err)-5 │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fn(If)26 b Fm(mtx)f Fn(or)h │ │ │ │ Fm(colDV)e Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)g Fm(jcol)f │ │ │ │ Fn(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin)m(ted)227 │ │ │ │ 5407 y(and)k(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1023 │ │ │ │ -4 v 1205 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2877 100 V 66 399 a Fn(11.)46 b Fm(void)h │ │ │ │ -(SubMtx_fillRowZV)c(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(ZV)i(*rowZV) │ │ │ │ -e(\))h(;)227 551 y Fn(This)35 b(metho)s(d)f(is)h(used)f(for)h(complex)h │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1059 │ │ │ │ +4 v 1241 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2841 100 V 66 399 a Fn(11.)46 b Fm(void)h(SubMtx_fillRowZV)c │ │ │ │ +(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(ZV)i(*rowZV)e(\))h(;)227 │ │ │ │ +551 y Fn(This)35 b(metho)s(d)f(is)h(used)f(for)h(complex)h │ │ │ │ (submatrices.)55 b(It)35 b(copies)h(the)f(en)m(tries)h(in)e(ro)m(w)h │ │ │ │ Fm(irow)f Fn(of)i(the)f Fm(mtx)227 664 y Fn(ob)5 b(ject)32 │ │ │ │ b(in)m(to)f(the)f Fm(rowZV)f Fn(v)m(ector)j(ob)5 b(ject.)227 │ │ │ │ 816 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fn(If)26 │ │ │ │ b Fm(mtx)f Fn(or)h Fm(rowZV)e Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)g │ │ │ │ Fm(irow)f Fn(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin) │ │ │ │ m(ted)227 929 y(and)k(the)h(program)f(exits.)66 1121 │ │ │ │ @@ -5764,17 +5753,17 @@ │ │ │ │ Fm(SubMtx)e Fn(ob)5 b(ject)37 b(from)f(a)g(binary)f(\014le.)57 │ │ │ │ b(If)36 b(there)g(are)g(no)g(errors)f(in)h(reading)227 │ │ │ │ 5407 y(the)30 b(data,)h(the)f(v)-5 b(alue)30 b Fm(1)f │ │ │ │ Fn(is)h(returned.)39 b(If)29 b(an)h(IO)f(error)g(is)h(encoun)m(tered)g │ │ │ │ (from)f Fm(fread)p Fn(,)g(zero)h(is)g(returned.)p eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1023 4 v 1204 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2785 100 V 1023 w Fn(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i │ │ │ │ +TeXDict begin 13 12 bop 91 100 1059 4 v 1240 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2749 100 V 1059 w Fn(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i │ │ │ │ (v)m(ectors)f(are)g(one-based)f(\(as)h(for)f(F)-8 b(ortran\),)39 │ │ │ │ b(they)e(are)f(con)m(v)m(erted)i(to)f(zero-)227 511 y(based)30 │ │ │ │ b(v)m(ectors.)227 660 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(mtx)g Fn(or)g Fm(fp)g Fn(are)h Fm(NULL)p │ │ │ │ Fn(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g │ │ │ │ (returned.)111 843 y(4.)46 b Fm(int)h(SubMtx_writeToFile)c(\()k(SubMtx) │ │ │ │ g(*mtx,)f(char)h(*fn)f(\))i(;)227 991 y Fn(This)32 b(metho)s(d)g │ │ │ │ @@ -5843,17 +5832,17 @@ │ │ │ │ (follo)m(w)h(the)f(Matlab)h(and)e(F)m(OR)-8 b(TRAN)227 │ │ │ │ 5146 y(con)m(v)m(en)m(tion.)227 5294 y Ff(Err)j(or)45 │ │ │ │ b(che)-5 b(cking:)63 b Fn(If)42 b Fm(mtx)p Fn(,)i Fm(mtxname)c │ │ │ │ Fn(or)i Fm(fp)f Fn(are)h Fm(NULL)p Fn(,)f(an)h(error)f(message)i(is)f │ │ │ │ (prin)m(ted)g(and)f(zero)i(is)227 5407 y(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1023 │ │ │ │ -4 v 1205 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2877 100 V 0 399 a Fe(1.3)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1059 │ │ │ │ +4 v 1241 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2841 100 V 0 399 a Fe(1.3)135 b(Driv)l(er)46 │ │ │ │ b(programs)g(for)f(the)g Fd(SubMtx)58 b(object)111 629 │ │ │ │ y Fn(1.)46 b Fm(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 │ │ │ │ 782 y Fn(This)c(driv)m(er)f(program)h(reads)g(in)g(a)g │ │ │ │ Fm(SubMtx)e Fn(ob)5 b(ject)43 b(from)f Fm(inFile)e Fn(and)i(writes)g │ │ │ │ (out)g(the)g(ob)5 b(ject)43 b(to)227 895 y Fm(outFile)336 │ │ │ │ 1114 y Fi(\017)j Fn(The)28 b Fm(msglvl)f Fn(parameter)i(determines)g │ │ │ │ (the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fm(msglvl)46 │ │ │ │ @@ -5920,17 +5909,17 @@ │ │ │ │ b(When)40 b(the)g(output)g(\014le)g(is)g(loaded)h(in)m(to)227 │ │ │ │ 5075 y(matlab,)32 b(the)e(last)h(lines)g(to)g(the)g(screen)f(con)m │ │ │ │ (tain)i(the)e(errors.)336 5294 y Fi(\017)46 b Fn(The)e │ │ │ │ Fm(msglvl)e Fn(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ 82 b(Use)44 b Fm(msglvl)i(=)i(1)c Fn(for)g(just)427 5407 │ │ │ │ y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1023 4 v 1204 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2785 100 V 1023 w Fn(15)336 399 y Fi(\017)46 b Fn(The)33 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1059 4 v 1240 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2749 100 V 1059 w Fn(15)336 399 y Fi(\017)46 b Fn(The)33 │ │ │ │ b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)336 772 y Fi(\017)46 b Fn(The)30 b Fm(type)f │ │ │ │ Fn(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ @@ -6010,18 +5999,18 @@ │ │ │ │ b(When)35 b(the)g(output)f(\014le)h(is)227 5078 y(loaded)c(in)m(to)g │ │ │ │ (matlab,)h(the)e(last)i(lines)e(to)h(the)g(screen)f(con)m(tain)i(the)f │ │ │ │ (errors.)336 5294 y Fi(\017)46 b Fn(The)e Fm(msglvl)e │ │ │ │ Fn(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ b(Use)44 b Fm(msglvl)i(=)i(1)c Fn(for)g(just)427 5407 │ │ │ │ y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1023 │ │ │ │ -4 v 1205 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2877 100 V 336 399 a Fi(\017)46 b Fn(The)33 │ │ │ │ -b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1059 │ │ │ │ +4 v 1241 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2841 100 V 336 399 a Fi(\017)46 b Fn(The)33 b │ │ │ │ +Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)336 767 y Fi(\017)46 b Fn(The)30 b Fm(type)f │ │ │ │ Fn(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ Fm(SPOOLES)p 2342 767 29 4 v 33 w(REAL)p Fn(\))f(or)g(2)h(\()p │ │ │ │ @@ -6102,17 +6091,17 @@ │ │ │ │ y(columns,)i(and)d Fl(A)h Fn(has)f(dense)h(ro)m(ws)g(or)f(columns)h(or) │ │ │ │ g(sparse)f(ro)m(ws)h(or)f(columns.)63 b(Use)38 b(the)g(script)g(\014le) │ │ │ │ 227 5294 y Fm(do)p 329 5294 V 34 w(solveupdH)32 b Fn(for)j(testing.)54 │ │ │ │ b(When)35 b(the)f(output)h(\014le)f(is)h(loaded)g(in)m(to)h(matlab,)g │ │ │ │ (the)f(last)h(lines)e(to)i(the)227 5407 y(screen)31 b(con)m(tain)g(the) │ │ │ │ g(errors.)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 1023 4 v 1204 100 a Fm(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2785 100 V 1023 w Fn(17)336 399 y Fi(\017)46 b Fn(The)e │ │ │ │ +TeXDict begin 17 16 bop 91 100 1059 4 v 1240 100 a Fm(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2749 100 V 1059 w Fn(17)336 399 y Fi(\017)46 b Fn(The)e │ │ │ │ Fm(msglvl)e Fn(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ 82 b(Use)44 b Fm(msglvl)i(=)i(1)c Fn(for)g(just)427 511 │ │ │ │ y(timing)31 b(output.)336 655 y Fi(\017)46 b Fn(The)33 │ │ │ │ b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 767 y(message)27 b(\014le)f(is)g Ff(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ @@ -6191,17 +6180,17 @@ │ │ │ │ (en)m(tries)g(in)f(the)h(submatrix,)g(when)e(appro-)427 │ │ │ │ 5121 y(priate.)336 5264 y Fi(\017)46 b Fn(The)30 b Fm(nrowX)f │ │ │ │ Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(in)g │ │ │ │ Fl(X)7 b Fn(,)31 b Fm(nrowA)24 b Fi(\024)h Fm(nrowY)n │ │ │ │ Fn(.)336 5407 y Fi(\017)46 b Fn(The)30 b Fm(seed)f Fn(parameter)i(is)g │ │ │ │ (a)f(random)g(n)m(um)m(b)s(er)f(seed.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1023 │ │ │ │ -4 v 1205 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2877 100 V 111 399 a Fn(9.)46 b Fm(test_sort)g(msglvl)g │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1059 │ │ │ │ +4 v 1241 w Fm(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2841 100 V 111 399 a Fn(9.)46 b Fm(test_sort)g(msglvl)g │ │ │ │ (msgFile)f(type)i(mode)g(nrowA)f(ncolA)g(nentA)h(seed)227 │ │ │ │ 549 y Fn(This)22 b(driv)m(er)h(program)f(tests)i(the)f │ │ │ │ Fm(SubMtx)p 1688 549 29 4 v 32 w(sortRowsUp\(\))d Fn(and)i │ │ │ │ Fm(SubMtx)p 2773 549 V 33 w(sortColumnsUp\(\))c Fn(metho)s(ds.)227 │ │ │ │ 662 y(Use)34 b(the)g(script)f(\014le)h Fm(do)p 1073 662 │ │ │ │ V 33 w(sort)f Fn(for)g(testing.)51 b(When)33 b(the)h(output)f(\014le)g │ │ │ │ (is)h(loaded)g(in)m(to)g(matlab,)h(the)f(last)227 775 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ – dense by columns, i.e., dense and column major │ │ │ │ │ – sparse using dense subrows │ │ │ │ │ – sparse using dense subcolumns │ │ │ │ │ – sparse using sparse rows │ │ │ │ │ – sparse using sparse columns │ │ │ │ │ – sparse using (i,j,ai,j) triples │ │ │ │ │ 1 │ │ │ │ │ - 2 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 2 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ – a diagonal matrix │ │ │ │ │ – a block diagonal symmetric matrix where the blocks are 1 × 1 or 2 × 2, used in the │ │ │ │ │ symmetric indefinite factorization. │ │ │ │ │ – a block diagonal Hermitian matrix where the blocks are 1 × 1 or 2 × 2, used in the │ │ │ │ │ hermitian indefinite factorization. │ │ │ │ │ • The SubMtx object can be self-contained, in the sense that its structure contains a DV object │ │ │ │ │ that manages a contiguous vector of workspace that is used to store all information about the │ │ │ │ │ @@ -60,15 +60,15 @@ │ │ │ │ │ information is better than using explicit structure fields. For example, if we want to extend the │ │ │ │ │ object by allowing another storage format, we do not need to increase the size of the structure at │ │ │ │ │ all — it is only necessary to provide one or more instance methods to return the new information. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The SubMtx structure has the following fields. │ │ │ │ │ • int type : type of entries. │ │ │ │ │ – SPOOLES REAL : double precision real entries. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 3 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 3 │ │ │ │ │ – SPOOLES COMPLEX : double precision complex entries. │ │ │ │ │ • int mode : storage mode. │ │ │ │ │ – SUBMTX DENSE ROWS : dense, storage by rows. │ │ │ │ │ – SUBMTX DENSE COLUMNS : dense, storage by columns. │ │ │ │ │ – SUBMTX SPARSE ROWS : sparse, storage by rows. │ │ │ │ │ – SUBMTX SPARSE COLUMNS : sparse, storage by columns. │ │ │ │ │ – SUBMTX SPARSE TRIPLES : sparse, storage by (i,j,ai,j) triples. │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ • SUBMTX IS DENSE ROWS(mtx)is 1 if mtx has dense rows as its storage format, and 0 otherwise. │ │ │ │ │ • SUBMTX IS DENSE COLUMNS(mtx) is 1 if mtx has dense columns as its storage format, and 0 │ │ │ │ │ otherwise. │ │ │ │ │ • SUBMTX IS SPARSE ROWS(mtx) is 1 if mtx has sparse rows as its storage format, and 0 other- │ │ │ │ │ wise. │ │ │ │ │ • SUBMTX IS SPARSE COLUMNS(mtx) is 1 if mtx has sparse columns as its storage format, and 0 │ │ │ │ │ otherwise. │ │ │ │ │ - 4 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 4 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ • SUBMTX IS SPARSE TRIPLES(mtx) is 1 if mtx has sparse triples as its storage format, 0 other- │ │ │ │ │ wise. │ │ │ │ │ • SUBMTX IS DENSE SUBROWS(mtx) is 1 if mtx has dense subrows as its storage format, 0 other- │ │ │ │ │ wise. │ │ │ │ │ • SUBMTX IS DENSE SUBCOLUMNS(mtx) is 1 if mtx has dense subcolumns as its storage format, │ │ │ │ │ 0 otherwise. │ │ │ │ │ • SUBMTX IS DIAGONAL(mtx) is 1 if mtx is diagonal, 0 otherwise. │ │ │ │ │ @@ -126,15 +126,15 @@ │ │ │ │ │ This method clears the object and free’s any owned data by invoking the clearData() │ │ │ │ │ methodsforitsinternal DVobject. Thereis a concluding call to SubMtx setDefaultFields(). │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void SubMtx_free ( SubMtx *mtx ) ; │ │ │ │ │ This method releases any storage by a call to SubMtx clearData() and then frees the space │ │ │ │ │ for mtx. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 5 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ 1. void SubMtx_ids ( SubMtx *mtx, int *prowid, int *pcolid ) ; │ │ │ │ │ This method fills *prowid with the row id and *pcolid with the column id of the object. │ │ │ │ │ Error checking: If mtx, prowid or pcolid is NULL, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 2. void SubMtx_setIds ( SubMtx *mtx, int rowid, int colid ) ; │ │ │ │ │ This method sets the row and column id’s of the matrix. │ │ │ │ │ @@ -163,15 +163,15 @@ │ │ │ │ │ the program exits. │ │ │ │ │ 7. void SubMtx_sparseRowsInfo ( SubMtx *mtx, int *pnrow, int *pnent, │ │ │ │ │ int **psizes, int **pindices, double **pentries ) ; │ │ │ │ │ This method is used when the storage mode is sparse rows. It fills *pnrow with the number │ │ │ │ │ of rows, *pnent with the number of matrix entries, *psizes with the base address of the │ │ │ │ │ sizes[nrow]vector that contains the number of entries in each row, *indices with the base │ │ │ │ │ address of the indices[nent] vector that contains the column index for each entry, and │ │ │ │ │ - 6 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 6 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ *pentries with the base address of entries[nent] vector. The indices and entries for the │ │ │ │ │ rows are stored contiguously. │ │ │ │ │ Error checking: If mtx, pnrow, pnent, psizes, pindices or pentries is NULL, or if the matrix │ │ │ │ │ type is not SUBMTX SPARSE ROWS, an error message is printed and the program exits. │ │ │ │ │ 8. void SubMtx_sparseColumnsInfo ( SubMtx *mtx, int *pncol, int *pnent, │ │ │ │ │ int **psizes, int **pindices, double **pentries ) ; │ │ │ │ │ Thismethodisusedwhenthestoragemodeissparsecolumns. Itfills*pncolwiththenumber │ │ │ │ │ @@ -204,15 +204,15 @@ │ │ │ │ │ exits. │ │ │ │ │ 11. void SubMtx_denseSubcolumnsInfo ( SubMtx *mtx, int *pncol, int *pnent, │ │ │ │ │ int **pfirstlocs, int **plastlocs, double **pentries ) ; │ │ │ │ │ This method is used when the storage mode is dense subcolumns. It fills *pncol with │ │ │ │ │ the number of columns, *pnent with the number of matrix entries, *pfirstlocs with the │ │ │ │ │ base address of the firstlocs[ncol] vector, *plastlocs with the base address of the │ │ │ │ │ lastlocs[ncol]vector, and *pentries with the base address of entries[nent] vector. For │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 7 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 7 │ │ │ │ │ column jcol, the nonzero entries are found in rows [firstlocs[jcol],lastlocs[jcol]] │ │ │ │ │ when firstlocs[jcol] ≥ 0 and firstlocs[jcol] ≤ lastlocs[jcol]. The entries for the │ │ │ │ │ columns are stored contiguously. │ │ │ │ │ Error checking: If mtx, pnrow, pnent, pfirstlocs, plastlocs or pentries is NULL, or if the │ │ │ │ │ matrix type is not SUBMTX DENSE SUBCOLUMNS, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ 12. void SubMtx_diagonalInfo ( SubMtx *mtx, int *pncol, double **pentries ) ; │ │ │ │ │ @@ -242,15 +242,15 @@ │ │ │ │ │ and 0 ≤ jcol ≤ ncol. If the (irow,jcol) entry is present, the return value is the offset │ │ │ │ │ from the start of the entries vector. (The offset is in terms of complex entries, not double │ │ │ │ │ entries.) Otherwise, -1 is returned. │ │ │ │ │ Error checking: If mtx, pReal or pImag is NULL, or if irow or jcol is out of range, an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ 16. void SubMtx_locationOfRealEntry ( SubMtx *mtx, int irow, int jcol, │ │ │ │ │ double **ppValue ) ; │ │ │ │ │ - 8 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 8 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ If the (irow,jcol) entry is present, this method fills *ppValue with a pointer to the entry │ │ │ │ │ in row irow and columnjcol. Otherwise, *ppValue is set to NULL. Note, irow and jcol are │ │ │ │ │ local indices, i.e., 0 ≤ irow ≤ nrow and 0 ≤ jcol ≤ ncol. │ │ │ │ │ Error checking: If mtx or ppValue is NULL, or if irow or jcol is out of range, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ 17. void SubMtx_locationOfComplexEntry ( SubMtx *mtx, int irow, int jcol, │ │ │ │ │ double **ppReal, double **ppImag ) ; │ │ │ │ │ @@ -278,15 +278,15 @@ │ │ │ │ │ int nrow, int ncol, int nent, int seed ) ; │ │ │ │ │ This is used to initialize an object to have random entries and (possibly) random structure. │ │ │ │ │ The object is first initialized via a call to SubMtx init(). Its matrix entries are then filled │ │ │ │ │ with random numbers. If the matrix is sparse, its sparsity pattern is sparse and random, │ │ │ │ │ using nent when applicable. The row and column indices are ascending starting from zero. │ │ │ │ │ Error checking: If mtx is NULL, or if nrow, ncol, inc1 or inc2 is less than or equal to zero, │ │ │ │ │ or if neither inc1 nor inc2 are 1, an error message is printed and the program exits. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 9 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 9 │ │ │ │ │ 4. void SubMtx_initRandomLowerTriangle ( SubMtx *mtx, int type, int mode, │ │ │ │ │ int rowid, int colid, int nrow, int ncol, int nent, int seed, int strict ) ; │ │ │ │ │ void SubMtx_initRandomUpperTriangle ( SubMtx *mtx, int type, int mode, │ │ │ │ │ int rowid, int colid, int nrow, int ncol, int nent, int seed, int strict ) ; │ │ │ │ │ This is used to initialize an object to have random entries and (possibly) random struc- │ │ │ │ │ ture. The matrix type may not be diagonal, block diagonal, or triples. If strict = 1, the │ │ │ │ │ matrix will be strict lower or upper triangular. The object is first initialized via a call to │ │ │ │ │ @@ -317,15 +317,15 @@ │ │ │ │ │ 1. void SubMtx_solve ( SubMtx *mtxA, SubMtx *mtxB ) ; │ │ │ │ │ This method is used to solve (I + A)X = B (if A is strict lower or upper triangular) or │ │ │ │ │ AX =B (if A is diagonal or block diagonal). The solution X overwrites B, and mtxB must │ │ │ │ │ have dense columns. If A is strict lower triangular, then mtxA must have dense subrows or │ │ │ │ │ sparse rows. If A is strict upper triangular, then mtxA must have dense subcolumns or sparse │ │ │ │ │ columns. │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, an error message is printed and the program exits. │ │ │ │ │ - 10 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 10 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ 2. void SubMtx_solveH ( SubMtx *mtxA, SubMtx *mtxB ) ; │ │ │ │ │ This method is used to solve (I+AH)X = B, where A is strict lower or upper triangular. The │ │ │ │ │ solution X overwrites B, and mtxB must have dense columns. If A is strict lower triangular, │ │ │ │ │ then mtxA must have dense subrows or sparse rows. If A is strict upper triangular, then mtxA │ │ │ │ │ must have dense subcolumns or sparse columns. │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. void SubMtx_solveT ( SubMtx *mtxA, SubMtx *mtxB ) ; │ │ │ │ │ @@ -354,15 +354,15 @@ │ │ │ │ │ This method returns the number of bytes required to store the object’s information in its │ │ │ │ │ buffer. │ │ │ │ │ Error checking: If nrow or ncol is less than or equal to zero, or if nent is less than to zero, │ │ │ │ │ or if type is invalid, an error message is printed and the program exits. │ │ │ │ │ 2. int SubMtx_nbytesInUse ( SubMtx *mtx ) ; │ │ │ │ │ This method returns the actual number of bytes that are used in the workspace owned by │ │ │ │ │ this object. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 11 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 11 │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. int SubMtx_nbytesInWorkspace ( SubMtx *mtx ) ; │ │ │ │ │ This method returns the number of bytes in the workspace owned by this object. │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 4. void SubMtx_setNbytesInWorkspace ( SubMtx *mtx, int nbytes ) ; │ │ │ │ │ This method sets the number of bytes in the workspace of this object. If nbytes is less than │ │ │ │ │ the present number of bytes, the workspace is not resized. │ │ │ │ │ @@ -387,15 +387,15 @@ │ │ │ │ │ Error checking: If mtx or rowDV is NULL, or if irow is out of range, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 10. void SubMtx_fillColumnDV ( SubMtx *mtx, int jcol, DV *rowDV ) ; │ │ │ │ │ This method is used for real submatrices. It copies the entries in column jcol of the mtx │ │ │ │ │ object into the colDV vector object. │ │ │ │ │ Error checking: If mtx or colDV is NULL, or if jcol is out of range, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ - 12 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 12 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ 11. void SubMtx_fillRowZV ( SubMtx *mtx, int irow, ZV *rowZV ) ; │ │ │ │ │ This method is used for complex submatrices. It copies the entries in row irow of the mtx │ │ │ │ │ object into the rowZV vector object. │ │ │ │ │ Error checking: If mtx or rowZV is NULL, or if irow is out of range, an error message is printed │ │ │ │ │ and the program exits. │ │ │ │ │ 12. void SubMtx_fillColumnZV ( SubMtx *mtx, int jcol, ZV *rowZV ) ; │ │ │ │ │ This method is used for complex submatrices. It copies the entries in column jcol of the mtx │ │ │ │ │ @@ -422,15 +422,15 @@ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Note, if the mtxutation vectors are one-based (as for Fortran), they are converted to zero- │ │ │ │ │ based vectors. │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 3. int SubMtx_readFromBinaryFile ( SubMtx *mtx, FILE *fp ) ; │ │ │ │ │ This method reads in a SubMtx object from a binary file. If there are no errors in reading │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 13 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 13 │ │ │ │ │ Note, if the mtxutation vectors are one-based (as for Fortran), they are converted to zero- │ │ │ │ │ based vectors. │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 4. int SubMtx_writeToFile ( SubMtx *mtx, char *fn ) ; │ │ │ │ │ This method writes a SubMtx object to a file. It tries to open the file and if it is successful, │ │ │ │ │ it then calls SubMtx writeFromFormattedFile()or SubMtx writeFromBinaryFile(),closes │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ for complex matrices, or │ │ │ │ │ a(10,5) = -1.550328201511e-01 ; │ │ │ │ │ for real matrices, where mtxname = "a". The matrix indices come from the rowind[] │ │ │ │ │ and colind[] vectors, and are incremented by one to follow the Matlab and FORTRAN │ │ │ │ │ convention. │ │ │ │ │ Error checking: If mtx, mtxname or fp are NULL, an error message is printed and zero is │ │ │ │ │ returned. │ │ │ │ │ - 14 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 14 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ 1.3 Driver programs for the SubMtx object │ │ │ │ │ 1. testIO msglvl msgFile inFile outFile │ │ │ │ │ This driver program reads in a SubMtx object from inFile and writes out the object to │ │ │ │ │ outFile │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the SubMtx object is written to the message file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ @@ -494,15 +494,15 @@ │ │ │ │ │ 3. test_solve msglvl msgFile type mode nrowA nentA ncolB seed │ │ │ │ │ This driver program tests the SubMtx solve() method which tests the solve AX = B when │ │ │ │ │ A is diagonal or block diagonal, and (I + A)X = B otherwise (A is strict upper or lower │ │ │ │ │ triangular). Use the script file do solve for testing. When the output file is loaded into │ │ │ │ │ matlab, the last lines to the screen contain the errors. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 15 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 15 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The type parameter must be one of 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ • Themodeparametermustbeoneof2(SUBMTX SPARSE ROWS),3(SUBMTX SPARSE COLUMNS), │ │ │ │ │ 5 (SUBMTX DENSE SUBROWS), 6 (SUBMTX DENSE SUBCOLUMNS), 7 (SUBMTX DIAGONAL), │ │ │ │ │ 8 (SUBMTX BLOCK DIAGONAL SYM) or 9 (SUBMTX BLOCK DIAGONAL HERM). │ │ │ │ │ @@ -534,15 +534,15 @@ │ │ │ │ │ T │ │ │ │ │ This driver program tests the SubMtx solve() method which tests the solve (I +A )X = B │ │ │ │ │ when A is strict upper or lower triangular and has dense subrows, dense subcolumns, sparse │ │ │ │ │ rows, or sparse columns. Use the script file do solveT for testing. When the output file is │ │ │ │ │ loaded into matlab, the last lines to the screen contain the errors. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ - 16 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 16 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The type parameter must be one of 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ • Themodeparametermustbeoneof2(SUBMTX SPARSE ROWS),3(SUBMTX SPARSE COLUMNS), │ │ │ │ │ 5 (SUBMTX DENSE SUBROWS) or 6 (SUBMTX DENSE SUBCOLUMNS). │ │ │ │ │ • The nrowA parameter is the number of rows in the matrix. │ │ │ │ │ @@ -573,15 +573,15 @@ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 7. test_solveupdH msglvl msgFile type mode nrowA nentA ncolB seed │ │ │ │ │ This driver program tests the SubMtx solveupd() method which tests the update Y := │ │ │ │ │ Y −AH ∗X, used in the forward solve of a hermitian factorization. X and Y have dense │ │ │ │ │ columns, and A has dense rows or columns or sparse rows or columns. Use the script file │ │ │ │ │ do solveupdH for testing. When the output file is loaded into matlab, the last lines to the │ │ │ │ │ screen contain the errors. │ │ │ │ │ - SubMtx : DRAFT December 20, 2018 17 │ │ │ │ │ + SubMtx : DRAFT October 11, 2021 17 │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The type parameter must be 2 (SPOOLES COMPLEX). │ │ │ │ │ • Themodeparametermustbeoneof0(SUBMTX DENSE ROWS),1(SUBMTX DENSE COLUMNS), │ │ │ │ │ @@ -612,15 +612,15 @@ │ │ │ │ │ • The ncolY parameter is the number of columns in Y. │ │ │ │ │ • The nrowA parameter is the number of rows in A, nrowA ≤ nrowY. │ │ │ │ │ • The ncolA parameter is the number of columns in A, ncolA ≤ nrowX. │ │ │ │ │ • The nentA parameter is the number of nonzero entries in the submatrix, when appro- │ │ │ │ │ priate. │ │ │ │ │ • The nrowX parameter is the number of rows in X, nrowA ≤ nrowY. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ - 18 SubMtx : DRAFT December 20, 2018 │ │ │ │ │ + 18 SubMtx : DRAFT October 11, 2021 │ │ │ │ │ 9. test_sort msglvl msgFile type mode nrowA ncolA nentA seed │ │ │ │ │ Thisdriver program tests the SubMtx sortRowsUp()and SubMtx sortColumnsUp()methods. │ │ │ │ │ Use the script file do sort for testing. When the output file is loaded into matlab, the last │ │ │ │ │ lines to the screen contain the errors. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ ├── ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ ├── SubMtxList.ps │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtxList.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1076,22 +1076,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1265,88 +1265,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2857,24 +2846,24 @@ │ │ │ │ 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 │ │ │ │ 99.6264 /CMBX12 rf /Fb 135[62 2[62 62 62 9[62 6[62 14[62 │ │ │ │ 5[62 62 76[{}9 119.552 /CMTT12 rf /Fc 134[71 3[75 52 │ │ │ │ 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 │ │ │ │ 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf │ │ │ │ /Fd 141[38 2[46 51 2[42 1[28 46 42 1[42 1[42 14[65 1[66 │ │ │ │ 11[59 62 69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf /Fe │ │ │ │ -141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 │ │ │ │ -44[{}12 90.9091 /CMSL10 rf /Ff 235[71 4[45 15[{}2 90.9091 │ │ │ │ -/CMSY10 rf /Fg 134[48 48 48 48 48 48 48 48 1[48 48 48 │ │ │ │ -48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 │ │ │ │ -48 48 2[48 48 48 48 3[48 48 48 48 2[48 48 1[48 48 48 │ │ │ │ -48 5[48 1[48 8[48 48 48 3[48 1[48 48 48 48 39[{}53 90.9091 │ │ │ │ -/CMTT10 rf /Fh 133[40 48 48 66 48 51 35 36 36 48 51 45 │ │ │ │ -51 76 25 48 28 25 51 45 28 40 51 40 51 45 8[68 2[68 66 │ │ │ │ -51 67 1[62 71 68 83 3[33 68 1[59 4[68 1[43 4[25 4[45 │ │ │ │ -45 45 45 45 45 1[25 1[25 2[35 35 25 25[51 51 12[{}54 │ │ │ │ +139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 │ │ │ │ +3[25 44[{}12 90.9091 /CMSL10 rf /Ff 235[71 4[45 15[{}2 │ │ │ │ +90.9091 /CMSY10 rf /Fg 134[48 48 48 48 48 48 48 48 1[48 │ │ │ │ +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 │ │ │ │ +1[48 48 48 2[48 48 48 48 3[48 48 48 48 2[48 48 1[48 48 │ │ │ │ +48 48 5[48 1[48 8[48 48 48 3[48 1[48 48 48 48 39[{}53 │ │ │ │ +90.9091 /CMTT10 rf /Fh 133[40 48 48 66 48 51 35 36 36 │ │ │ │ +48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 8[68 │ │ │ │ +2[68 66 51 67 1[62 71 68 83 3[33 68 1[59 4[68 1[43 4[25 │ │ │ │ +4[45 45 45 45 45 45 1[25 1[25 2[35 35 25 25[51 51 12[{}54 │ │ │ │ 90.9091 /CMR10 rf /Fi 135[123 3[90 92 3[116 129 1[65 │ │ │ │ 1[71 65 3[106 129 103 129 24[87 14[65 58[{}14 206.559 │ │ │ │ /CMBX12 rf /Fj 135[106 2[106 106 106 9[106 6[106 14[106 │ │ │ │ 5[106 106 76[{}9 206.559 /CMTT12 rf /Fk 139[75 1[79 1[108 │ │ │ │ 7[108 2[88 3[94 29[140 17[97 49[{}8 172.188 /CMBX12 rf │ │ │ │ end │ │ │ │ %%EndProlog │ │ │ │ @@ -2944,19 +2933,19 @@ │ │ │ │ (ciated)g(with)e(a)g Fg(SubMtxList)e Fh(ob)5 b(ject)36 │ │ │ │ b(is)g(optional,)i(for)d(example,)i(it)f(is)g(not)f(needed)0 │ │ │ │ 5407 y(during)22 b(a)i(serial)g(factorization)i(nor)d(a)h(MPI)f(solv)m │ │ │ │ (e.)40 b(In)23 b(the)g(latter)i(case)f(there)g(is)f(one)h │ │ │ │ Fg(SubMtxList)d Fh(p)s(er)h(pro)s(cess.)1927 5656 y(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 950 4 v │ │ │ │ -1132 w Fg(SubMtxList)28 b Fe(:)40 b Fd(DRAFT)31 b Fe(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2950 100 V 0 399 a Fh(F)-8 b(or)26 b(a)f(m)m │ │ │ │ -(ultithreaded)h(solv)m(e)g(there)g(is)f(one)g Fg(SubMtxList)e │ │ │ │ -Fh(ob)5 b(ject)26 b(that)g(is)f(shared)f(b)m(y)h(all)h(threads.)39 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 986 4 v │ │ │ │ +1168 w Fg(SubMtxList)28 b Fe(:)40 b Fd(DRAFT)31 b Fe(Octob)s(er)f(11,)h │ │ │ │ +(2021)p 2914 100 V 0 399 a Fh(F)-8 b(or)26 b(a)f(m)m(ultithreaded)h │ │ │ │ +(solv)m(e)g(there)g(is)f(one)g Fg(SubMtxList)e Fh(ob)5 │ │ │ │ +b(ject)26 b(that)g(is)f(shared)f(b)m(y)h(all)h(threads.)39 │ │ │ │ b(The)25 b(m)m(utual)0 511 y(exclusion)33 b(lo)s(c)m(k)h(that)f(is)f │ │ │ │ (\(optionally\))j(em)m(b)s(edded)c(in)i(the)f Fg(SubMtxList)e │ │ │ │ Fh(ob)5 b(ject)34 b(is)e(a)h Fg(Lock)f Fh(ob)5 b(ject)33 │ │ │ │ b(from)f(this)0 624 y(library)-8 b(.)39 b(It)27 b(is)f(inside)g(the)g │ │ │ │ Fg(Lock)f Fh(ob)5 b(ject)27 b(that)g(w)m(e)f(ha)m(v)m(e)i(a)e(m)m │ │ │ │ (utual)h(exclusion)g(lo)s(c)m(k.)40 b(Presen)m(tly)27 │ │ │ │ b(w)m(e)f(supp)s(ort)f(the)0 737 y(Solaris)32 b(and)g(POSIX)f(thread)h │ │ │ │ @@ -3007,17 +2996,17 @@ │ │ │ │ (and)d Fg(heads)p Fh(,)227 5251 y Fg(counts)p Fh(,)29 │ │ │ │ b Fg(lock)g Fh(and)h Fg(flags)f Fh(are)i(set)g(to)g Fg(NULL)e │ │ │ │ Fh(.)227 5407 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fh(If)30 b Fg(list)g Fh(is)g Fg(NULL)p Fh(,)f(an)i(error)f(message)h │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 950 4 v 1132 100 a Fg(SubMtxList)27 │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2903 100 V 950 w Fh(3)111 399 y(3.)46 b Fg(void)h(SubMtxList_clearData) │ │ │ │ +TeXDict begin 3 2 bop 91 100 986 4 v 1168 100 a Fg(SubMtxList)27 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2867 100 V 986 w Fh(3)111 399 y(3.)46 b Fg(void)h(SubMtxList_clearData) │ │ │ │ 42 b(\()48 b(SubMtxList)d(*list)h(\))h(;)227 555 y Fh(This)31 │ │ │ │ b(metho)s(d)f(clears)j(the)e(ob)5 b(ject)32 b(and)f(free's)h(an)m(y)f │ │ │ │ (o)m(wned)g(data)h(b)m(y)g(calling)g Fg(SubMtx)p 3241 │ │ │ │ 555 29 4 v 33 w(free\(\))e Fh(for)h(eac)m(h)227 668 y(ob)5 │ │ │ │ b(ject)30 b(on)e(the)h(free)g(list.)41 b(If)28 b Fg(heads)f │ │ │ │ Fh(is)i(not)g Fg(NULL)p Fh(,)f(it)h(is)g(free'd.)40 b(If)28 │ │ │ │ b Fg(counts)f Fh(is)i(not)g Fg(NULL)p Fh(,)f(it)h(is)g(free'd)f(via)227 │ │ │ │ @@ -3081,17 +3070,17 @@ │ │ │ │ (1.)44 b(Otherwise,)32 b(the)227 5138 y(metho)s(d)e(returns)f(0.)227 │ │ │ │ 5294 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fh(If)29 │ │ │ │ b Fg(list)g Fh(is)h Fg(NULL)p Fh(,)f(or)h(if)g Fg(ilist)e │ │ │ │ Fh(is)i(not)h(in)e(the)h(range)h Fg([0,nlist\))p Fh(,)c(an)j(error)g │ │ │ │ (message)227 5407 y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 950 4 v │ │ │ │ -1132 w Fg(SubMtxList)28 b Fe(:)40 b Fd(DRAFT)31 b Fe(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2950 100 V 111 399 a Fh(3.)46 b Fg(SubMtx)g(*)i │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 986 4 v │ │ │ │ +1168 w Fg(SubMtxList)28 b Fe(:)40 b Fd(DRAFT)31 b Fe(Octob)s(er)f(11,)h │ │ │ │ +(2021)p 2914 100 V 111 399 a Fh(3.)46 b Fg(SubMtx)g(*)i │ │ │ │ (SubMtxList_getList)43 b(\()k(SubMtxList)e(*list,)h(int)h(ilist)f(\))i │ │ │ │ (;)227 549 y Fh(If)28 b(list)h Fg(ilist)e Fh(is)h(empt)m(y)-8 │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fg(NULL)p Fh(.)g(Otherwise,)i(if)f │ │ │ │ (the)h(list)g(needs)f(to)h(b)s(e)e(lo)s(c)m(k)m(ed,)k(the)227 │ │ │ │ 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m(ed.)57 b(The)34 │ │ │ │ b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f(p)s(oin)m(ter)h │ │ │ │ (and)e(then)h(the)h(head)f(is)g(set)h(to)g Fg(NULL)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ Having a lock associated with a SubMtxList object is optional, for example, it is not needed │ │ │ │ │ during a serial factorization nor a MPI solve. In the latter case there is one SubMtxList per process. │ │ │ │ │ 1 │ │ │ │ │ - 2 SubMtxList : DRAFT December 20, 2018 │ │ │ │ │ + 2 SubMtxList : DRAFT October 11, 2021 │ │ │ │ │ For a multithreaded solve there is one SubMtxList object that is shared by all threads. The mutual │ │ │ │ │ exclusion lock that is (optionally) embedded in the SubMtxList object is a Lock object from this │ │ │ │ │ library. It is inside the Lock object that we have a mutual exclusion lock. Presently we support the │ │ │ │ │ Solaris and POSIX thread packages. Porting the multithreaded codes to another platform should │ │ │ │ │ be simple if the POSIX thread package is present. Another type of thread package will require │ │ │ │ │ some modifications to the Lock object, but none to the SubMtxList objects. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ 1. SubMtxList * SubMtxList_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the SubMtxList structure and then sets the default │ │ │ │ │ fields by a call to SubMtxList setDefaultFields(). │ │ │ │ │ 2. void SubMtxList_setDefaultFields ( SubMtxList *list ) ; │ │ │ │ │ The structure’s fields are set to default values: nlist and nlocks set to zero, and heads, │ │ │ │ │ counts, lock and flags are set to NULL . │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ - SubMtxList : DRAFT December 20, 2018 3 │ │ │ │ │ + SubMtxList : DRAFT October 11, 2021 3 │ │ │ │ │ 3. void SubMtxList_clearData ( SubMtxList *list ) ; │ │ │ │ │ This method clears the object and free’s any owned data by calling SubMtx free() for each │ │ │ │ │ object on the free list. If heads is not NULL, it is free’d. If counts is not NULL, it is free’d via │ │ │ │ │ a call to IVfree(). If flags is not NULL, it is free’d via a call to CVfree(). If the lock is not │ │ │ │ │ NULL, it is destroyed via a call to mutex destroy() and then free’d. There is a concluding │ │ │ │ │ call to SubMtxList setDefaultFields(). │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ 2. int SubMtxList_isCountZero ( SubMtxList *list, int ilist ) ; │ │ │ │ │ If counts is NULL, or if counts[ilist] equal to zero, the method returns 1. Otherwise, the │ │ │ │ │ method returns 0. │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ - 4 SubMtxList : DRAFT December 20, 2018 │ │ │ │ │ + 4 SubMtxList : DRAFT October 11, 2021 │ │ │ │ │ 3. SubMtx * SubMtxList_getList ( SubMtxList *list, int ilist ) ; │ │ │ │ │ If list ilist is empty, the method returns NULL. Otherwise, if the list needs to be locked, the │ │ │ │ │ lock is locked. The head of the list is saved to a pointer and then the head is set to NULL. │ │ │ │ │ If the list was locked, the number of locks is incremented and the lock unlocked. The saved │ │ │ │ │ pointer is returned. │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ is printed and zero is returned. │ │ ├── ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ ├── SubMtxManager.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMTI10 CMMI10 CMMI8 │ │ │ │ %%+ CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtxManager.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -719,22 +719,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -908,88 +908,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3402,16 +3391,16 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 3[56 62 93 31 2[31 62 2[51 │ │ │ │ 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 │ │ │ │ 99.6264 /CMBX12 rf /Fb 135[62 2[62 62 1[62 3[62 6[62 │ │ │ │ 1[62 2[62 62 13[62 5[62 77[{}11 119.552 /CMTT12 rf /Fc │ │ │ │ 134[71 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 │ │ │ │ 60 1[65 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 │ │ │ │ -/CMBX12 rf /Fd 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 │ │ │ │ -5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 180[60 │ │ │ │ +/CMBX12 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 180[60 │ │ │ │ 39 9[37 4[20 59[{}4 66.4176 /CMMI8 rf /Ff 170[62 8[62 │ │ │ │ 76[{}2 90.9091 /CMMI10 rf /Fg 134[44 4[30 37 38 2[46 │ │ │ │ 51 74 23 42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 │ │ │ │ 62 69 2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fh 235[71 │ │ │ │ 4[45 15[{}2 90.9091 /CMSY10 rf /Fi 133[48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ 48 48 48 1[48 1[48 1[48 5[48 1[48 3[48 48 48 48 2[48 │ │ │ │ @@ -3512,26 +3501,26 @@ │ │ │ │ (utual)f(exclusion)h(lo)s(c)m(k.)63 b(This)36 b(is)i(not)0 │ │ │ │ 5294 y(necessary)33 b(for)g(a)g(serial)h(or)f(MPI)g(factorization)j(or) │ │ │ │ d(solv)m(e)h(\(where)f(there)g(is)g(one)g Fi(SubMtxManager)c │ │ │ │ Fj(ob)5 b(ject)34 b(for)0 5407 y(eac)m(h)e(pro)s(cessor\),)e(but)g(it)h │ │ │ │ (is)f(necessary)h(for)f(in)g(a)h(m)m(ultithreaded)f(en)m(vironmen)m(t.) │ │ │ │ 1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 879 4 v │ │ │ │ -1061 w Fi(SubMtxManager)26 b Fd(:)41 b Fg(DRAFT)30 b │ │ │ │ -Fd(Decem)m(b)s(er)h(20,)h(2018)p 3022 100 V 141 399 a │ │ │ │ -Fj(Eac)m(h)21 b(manager)h(ob)5 b(ject)21 b(k)m(eeps)h(trac)m(k)g(of)e │ │ │ │ -(certain)i(statistics,)j(b)m(ytes)c(in)g(their)f(w)m(orkspaces,)k(the)d │ │ │ │ -(total)h(n)m(um)m(b)s(er)0 511 y(of)34 b(b)m(ytes)h(requested,)h(the)e │ │ │ │ -(n)m(um)m(b)s(er)f(of)i(requests)f(for)g(a)h Fi(SubMtx)d │ │ │ │ -Fj(ob)5 b(jects,)36 b(the)f(n)m(um)m(b)s(er)e(of)h(releases,)j(and)d │ │ │ │ -(the)0 624 y(n)m(um)m(b)s(er)29 b(of)i(lo)s(c)m(ks)g(and)f(unlo)s(c)m │ │ │ │ -(ks.)0 951 y Fc(1.1)135 b(Data)46 b(Structure)0 1184 │ │ │ │ -y Fj(The)30 b Fi(SubMtxManager)d Fj(structure)j(has)g(the)g(follo)m │ │ │ │ -(wing)i(\014elds.)136 1407 y Fh(\017)46 b Fi(SubMtx)g(*head)29 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 915 4 v │ │ │ │ +1097 w Fi(SubMtxManager)26 b Fd(:)41 b Fg(DRAFT)30 b │ │ │ │ +Fd(Octob)s(er)g(11,)i(2021)p 2986 100 V 141 399 a Fj(Eac)m(h)21 │ │ │ │ +b(manager)h(ob)5 b(ject)21 b(k)m(eeps)h(trac)m(k)g(of)e(certain)i │ │ │ │ +(statistics,)j(b)m(ytes)c(in)g(their)f(w)m(orkspaces,)k(the)d(total)h │ │ │ │ +(n)m(um)m(b)s(er)0 511 y(of)34 b(b)m(ytes)h(requested,)h(the)e(n)m(um)m │ │ │ │ +(b)s(er)f(of)i(requests)f(for)g(a)h Fi(SubMtx)d Fj(ob)5 │ │ │ │ +b(jects,)36 b(the)f(n)m(um)m(b)s(er)e(of)h(releases,)j(and)d(the)0 │ │ │ │ +624 y(n)m(um)m(b)s(er)29 b(of)i(lo)s(c)m(ks)g(and)f(unlo)s(c)m(ks.)0 │ │ │ │ +951 y Fc(1.1)135 b(Data)46 b(Structure)0 1184 y Fj(The)30 │ │ │ │ +b Fi(SubMtxManager)d Fj(structure)j(has)g(the)g(follo)m(wing)i │ │ │ │ +(\014elds.)136 1407 y Fh(\017)46 b Fi(SubMtx)g(*head)29 │ │ │ │ b Fj(:)41 b(head)30 b(of)h(the)f(free)h(list)g(of)f Fi(SubMtx)f │ │ │ │ Fj(ob)5 b(jects.)136 1606 y Fh(\017)46 b Fi(Lock)h(*lock)29 │ │ │ │ b Fj(:)41 b(m)m(utual)30 b(exclusion)h(lo)s(c)m(k.)136 │ │ │ │ 1804 y Fh(\017)46 b Fi(int)h(mode)19 b Fj(:)36 b(b)s(eha)m(vior)20 │ │ │ │ b(mo)s(de.)37 b(When)20 b Fi(mode)47 b(=)g(0)p Fj(,)23 │ │ │ │ b(the)d(ob)5 b(ject)21 b(calls)h Fi(SubMtx)p 2911 1804 │ │ │ │ 29 4 v 32 w(new\(\))d Fj(and)h Fi(SubMtx)p 3657 1804 │ │ │ │ @@ -3571,17 +3560,17 @@ │ │ │ │ k(SubMtxManager_new)43 b(\()k(void)g(\))h(;)227 5294 │ │ │ │ y Fj(This)41 b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e(the) │ │ │ │ h Fi(SubMtxManager)c Fj(structure)j(and)g(then)g(sets)h(the)227 │ │ │ │ 5407 y(default)31 b(\014elds)f(b)m(y)g(a)h(call)g(to)g │ │ │ │ Fi(SubMtxManager)p 1875 5407 V 31 w(setDefaultFields\(\))p │ │ │ │ Fj(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 879 4 v 1060 100 a Fi(SubMtxManager)27 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2974 100 V 879 w Fj(3)111 399 y(2.)46 b Fi(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 915 4 v 1096 100 a Fi(SubMtxManager)27 │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(Octob)s(er)30 b(11,)h(2021)p │ │ │ │ +2938 100 V 915 w Fj(3)111 399 y(2.)46 b Fi(void)h │ │ │ │ (SubMtxManager_setDefault)o(Fiel)o(ds)41 b(\()48 b(SubMtxManager)c │ │ │ │ (*manager)i(\))h(;)227 558 y Fj(The)20 b(structure's)g(\014elds)g(are)g │ │ │ │ (set)h(to)g(default)g(v)-5 b(alues:)36 b Fi(mode)p Fj(,)21 │ │ │ │ b Fi(nactive)p Fj(,)g Fi(nbytesactive)p Fj(,)e Fi(nbytesrequested)p │ │ │ │ Fj(,)227 671 y Fi(nbytesalloc)p Fj(,)33 b Fi(nrequests)p │ │ │ │ Fj(,)f Fi(nreleases)p Fj(,)h Fi(nlocks)g Fj(and)g Fi(nunlocks)f │ │ │ │ Fj(are)j(set)g(to)g(zero,)h(and)d Fi(head)h Fj(and)227 │ │ │ │ @@ -3644,18 +3633,18 @@ │ │ │ │ Fi(mode)46 b(=)i(0)p Fj(\),)30 b(or)g(returning)f(it)i(to)g(the)227 │ │ │ │ 5247 y(free)g(list)g(\(if)f Fi(mode)47 b(=)h(1)p Fj(\).)227 │ │ │ │ 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(manager)f Fj(or)h Fi(mtx)g Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)f │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(zero)i(is)g(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 879 4 v │ │ │ │ -1061 w Fi(SubMtxManager)26 b Fd(:)41 b Fg(DRAFT)30 b │ │ │ │ -Fd(Decem)m(b)s(er)h(20,)h(2018)p 3022 100 V 111 399 a │ │ │ │ -Fj(3.)46 b Fi(void)h(SubMtxManager_releaseLis)o(tOfO)o(bje)o(cts)41 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 915 4 v │ │ │ │ +1097 w Fi(SubMtxManager)26 b Fd(:)41 b Fg(DRAFT)30 b │ │ │ │ +Fd(Octob)s(er)g(11,)i(2021)p 2986 100 V 111 399 a Fj(3.)46 │ │ │ │ +b Fi(void)h(SubMtxManager_releaseLis)o(tOfO)o(bje)o(cts)41 │ │ │ │ b(\()48 b(SubMtxManager)c(*manager,)h(SubMtx)h(*first)g(\))i(;)227 │ │ │ │ 549 y Fj(This)35 b(metho)s(d)g(releases)h(a)g(list)g(of)f │ │ │ │ Fi(SubMtx)f Fj(ob)5 b(jects)36 b(whose)f(head)g(is)g │ │ │ │ Fi(first)p Fj(,)h(either)f(free'ing)h(them)g(\(if)227 │ │ │ │ 662 y Fi(mode)47 b(=)g(0)p Fj(\),)31 b(or)f(returning)g(them)g(to)h │ │ │ │ (the)g(free)f(list)h(\(if)g Fi(mode)47 b(=)g(1)p Fj(\).)227 │ │ │ │ 812 y Fg(Err)-5 b(or)32 b(che)-5 b(cking:)39 b Fj(If)28 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -27,15 +27,15 @@ │ │ │ │ │ with sufficient work space, and returns a pointer to the object. When a SubMtx object is no longer │ │ │ │ │ necessary, it is released to the manager object, which then inserts it into the free list. A list of │ │ │ │ │ SubMtx objects can be released in one call. │ │ │ │ │ One can specify whether the object is to be locked via a mutual exclusion lock. This is not │ │ │ │ │ necessary for a serial or MPI factorization or solve (where there is one SubMtxManager object for │ │ │ │ │ each processor), but it is necessary for in a multithreaded environment. │ │ │ │ │ 1 │ │ │ │ │ - 2 SubMtxManager : DRAFT December 20, 2018 │ │ │ │ │ + 2 SubMtxManager : DRAFT October 11, 2021 │ │ │ │ │ Eachmanagerobjectkeepstrackofcertainstatistics, bytesintheirworkspaces, thetotal number │ │ │ │ │ of bytes requested, the number of requests for a SubMtx objects, the number of releases, and the │ │ │ │ │ number of locks and unlocks. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The SubMtxManager structure has the following fields. │ │ │ │ │ • SubMtx *head : head of the free list of SubMtx objects. │ │ │ │ │ • Lock *lock : mutual exclusion lock. │ │ │ │ │ @@ -55,15 +55,15 @@ │ │ │ │ │ SubMtxManager object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. SubMtxManager * SubMtxManager_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the SubMtxManager structure and then sets the │ │ │ │ │ default fields by a call to SubMtxManager setDefaultFields(). │ │ │ │ │ - SubMtxManager : DRAFT December 20, 2018 3 │ │ │ │ │ + SubMtxManager : DRAFT October 11, 2021 3 │ │ │ │ │ 2. void SubMtxManager_setDefaultFields ( SubMtxManager *manager ) ; │ │ │ │ │ Thestructure’sfieldsaresettodefaultvalues: mode,nactive,nbytesactive,nbytesrequested, │ │ │ │ │ nbytesalloc, nrequests, nreleases, nlocks and nunlocks are set to zero, and head and │ │ │ │ │ lock are set to NULL . │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. void SubMtxManager_clearData ( SubMtxManager *manager ) ; │ │ │ │ │ This method clears the object and free’s any owned data by calling SubMtx free() for each │ │ │ │ │ @@ -89,15 +89,15 @@ │ │ │ │ │ its workspace. │ │ │ │ │ Error checking: If manager is NULL, or if nbytesNeeded ≤ 0, an error message is printed and │ │ │ │ │ zero is returned. │ │ │ │ │ 2. void SubMtxManager_releaseObject ( SubMtxManager *manager, SubMtx *mtx ) ; │ │ │ │ │ This method releases the mtx instance, either free’ing it (if mode = 0), or returning it to the │ │ │ │ │ free list (if mode = 1). │ │ │ │ │ Error checking: If manager or mtx is NULL, an error message is printed and zero is returned. │ │ │ │ │ - 4 SubMtxManager : DRAFT December 20, 2018 │ │ │ │ │ + 4 SubMtxManager : DRAFT October 11, 2021 │ │ │ │ │ 3. void SubMtxManager_releaseListOfObjects ( SubMtxManager *manager, SubMtx *first ) ; │ │ │ │ │ This method releases a list of SubMtx objects whose head is first, either free’ing them (if │ │ │ │ │ mode = 0), or returning them to the free list (if mode = 1). │ │ │ │ │ Error checking: If manager or head is NULL, an error message is printed and zero is returned. │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ 1. void SubMtxManager_writeForHumanEye ( SubMtxManager *manager, FILE *fp ) ; │ │ │ │ │ This method writes a SubMtxManager object to a file in an easily readable format. │ │ ├── ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ ├── SymbFac.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMMI10 CMSY10 CMBX10 │ │ │ │ %%+ CMSL10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SymbFac.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -548,22 +548,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -737,88 +737,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3467,16 +3456,16 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258431 52099146 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ 1[34 51 62 50 62 54 13[62 32[56 56 2[31 46[{}21 99.6264 │ │ │ │ -/CMBX12 rf /Fb 141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 │ │ │ │ -5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fc 134[62 │ │ │ │ +/CMBX12 rf /Fb 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fc 134[62 │ │ │ │ 11[62 9[62 62 62 13[62 12[62 70[{}7 119.552 /CMTT12 rf │ │ │ │ /Fd 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 │ │ │ │ 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 │ │ │ │ 119.552 /CMBX12 rf /Fe 171[73 4[79 82 8[69 10[29 58[{}5 │ │ │ │ 90.9091 /CMBX10 rf /Ff 164[61 36[0 38[45 14[71{}4 90.9091 │ │ │ │ /CMSY10 rf /Fg 181[50 7[69 68 48 3[71 32[52 27[{}6 90.9091 │ │ │ │ /CMMI10 rf /Fh 137[42 49 30 37 38 1[46 46 51 2[42 1[28 │ │ │ │ @@ -3564,17 +3553,17 @@ │ │ │ │ (ciated)g(with)g(the)f Fi(SymbFac)f Fj(ob)5 b(ject.)0 │ │ │ │ 5073 y Fd(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fc(SymbFac)d Fd(metho)t(ds)0 5294 y Fj(This)f(section)j(con)m(tains)f │ │ │ │ (brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 y Fi(SymbFac)28 │ │ │ │ b Fj(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1022 4 v │ │ │ │ -1204 w Fi(SymbFac)28 b Fb(:)41 b Fh(DRAFT)30 b Fb(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 0 399 a Fa(1.2.1)112 b(Sym)m(b)s(olic)39 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1058 4 v │ │ │ │ +1240 w Fi(SymbFac)28 b Fb(:)41 b Fh(DRAFT)30 b Fb(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 0 399 a Fa(1.2.1)112 b(Sym)m(b)s(olic)39 │ │ │ │ b(factorization)f(metho)s(ds)111 596 y Fj(1.)46 b Fi(IVL)h(*)h │ │ │ │ (SymbFac_initFromGraph)42 b(\()47 b(ETree)f(*etree,)g(Graph)h(*graph)f │ │ │ │ (\))h(;)227 748 y Fj(This)33 b(sym)m(b)s(olic)h(factorization)i(metho)s │ │ │ │ (d)d(tak)m(es)i(a)f Fi(Graph)e Fj(ob)5 b(ject)34 b(as)g(input.)49 │ │ │ │ b(This)33 b(metho)s(d)g(constructs)227 861 y(an)e Fi(IVL)f │ │ │ │ Fj(ob)5 b(ject)32 b(that)f(con)m(tains)h(one)g(list)f(p)s(er)f(fron)m │ │ │ │ (t.)42 b(List)31 b Fi(ilist)f Fj(con)m(tains)i(the)f(in)m(ternal)h(and) │ │ │ │ @@ -3658,17 +3647,17 @@ │ │ │ │ b(is)h(optionally)h(written)f(out)g(to)g Fi(outETreeFile)p │ │ │ │ Fj(.)35 b(The)22 b(old-to-new)i Fi(IV)e Fj(ob)5 b(ject)23 │ │ │ │ b(is)g(optionally)h(written)227 5294 y(to)32 b Fi(outIVfile)p │ │ │ │ Fj(.)40 b(The)31 b Fi(IVL)f Fj(ob)5 b(ject)32 b(that)g(con)m(tains)g │ │ │ │ (the)f(sym)m(b)s(olic)h(factorization)h(is)e(optionally)i(written)227 │ │ │ │ 5407 y(to)e Fi(outIVLfile)p Fj(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1022 4 v 1203 100 a Fi(SymbFac)29 │ │ │ │ -b Fb(:)40 b Fh(DRAFT)122 b Fb(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2831 100 V 1022 w Fj(3)336 399 y Ff(\017)46 b Fj(The)30 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1058 4 v 1239 100 a Fi(SymbFac)29 │ │ │ │ +b Fb(:)40 b Fh(DRAFT)121 b Fb(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2795 100 V 1058 w Fj(3)336 399 y Ff(\017)46 b Fj(The)30 │ │ │ │ b Fi(msglvl)f Fj(parameter)i(determines)f(the)h(amoun)m(t)f(of)h │ │ │ │ (output.)336 557 y Ff(\017)46 b Fj(The)33 b Fi(msgFile)e │ │ │ │ Fj(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fi(msgFile)e Fj(is)i Fi(stdout)p Fj(,)g(then)g(the)427 │ │ │ │ 670 y(message)27 b(\014le)f(is)g Fh(stdout)p Fj(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fh(app)-5 b(end)28 │ │ │ │ b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 783 │ │ │ │ @@ -3749,18 +3738,18 @@ │ │ │ │ (input)e(\014le)i(for)f(the)g Fi(Graph)f Fj(ob)5 b(ject.)39 │ │ │ │ b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f(form)427 5294 │ │ │ │ y Fi(*.graphf)18 b Fj(or)j Fi(*.graphb)p Fj(.)35 b(The)19 │ │ │ │ b Fi(Graph)g Fj(ob)5 b(ject)21 b(is)g(read)f(from)g(the)g(\014le)h(via) │ │ │ │ f(the)h Fi(Graph)p 3368 5294 V 33 w(readFromFile\(\))427 │ │ │ │ 5407 y Fj(metho)s(d.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1022 4 v │ │ │ │ -1204 w Fi(SymbFac)28 b Fb(:)41 b Fh(DRAFT)30 b Fb(Decem)m(b)s(er)h(20,) │ │ │ │ -h(2018)p 2878 100 V 336 399 a Ff(\017)46 b Fj(The)24 │ │ │ │ -b Fi(outETreeFile)d Fj(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1058 4 v │ │ │ │ +1240 w Fi(SymbFac)28 b Fb(:)41 b Fh(DRAFT)30 b Fb(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2842 100 V 336 399 a Ff(\017)46 b Fj(The)24 b │ │ │ │ +Fi(outETreeFile)d Fj(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ (the)h Fi(ETree)d Fj(ob)5 b(ject.)40 b(If)24 b Fi(outETreeFile)d │ │ │ │ Fj(is)427 511 y Fi(none)g Fj(then)h(the)g Fi(ETree)f │ │ │ │ Fj(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ b(Otherwise,)23 b(the)g Fi(ETree)p 3253 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fj(metho)s(d)30 b(is)h(called)h(to)f(write) │ │ │ │ g(the)g(ob)5 b(ject)31 b(to)h(a)f(formatted)g(\014le)g(\(if)g │ │ │ │ Fi(outETreeFile)c Fj(is)k(of)g(the)f(form)427 737 y Fi(*.etreef)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ to have chevron coordinate type and storage mode must be by vectors. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ There is no struct or data associated with the SymbFac object. │ │ │ │ │ 1.2 Prototypes and descriptions of SymbFac methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ SymbFac object. │ │ │ │ │ 1 │ │ │ │ │ - 2 SymbFac : DRAFT December 20, 2018 │ │ │ │ │ + 2 SymbFac : DRAFT October 11, 2021 │ │ │ │ │ 1.2.1 Symbolic factorization methods │ │ │ │ │ 1. IVL * SymbFac_initFromGraph ( ETree *etree, Graph *graph ) ; │ │ │ │ │ This symbolic factorization method takes a Graph object as input. This method constructs │ │ │ │ │ an IVL object that contains one list per front. List ilist contains the internal and external │ │ │ │ │ vertices for front ilist. If the input graph is a compressed graph, then the lists of compressed │ │ │ │ │ vertices make little sense; they must be converted to original vertices. To do this, see the │ │ │ │ │ IVL expand() method. The nodwghtsIV and bndwghtsIV objects for the ETree object are │ │ │ │ │ @@ -61,15 +61,15 @@ │ │ │ │ │ 1. testSymbFacInpMtx msglvl msgFile inETreeFile inDInpMtxFile │ │ │ │ │ outETreeFile outIVfile outIVLfile │ │ │ │ │ This driver program reads in an ETree object and a InpMtx object and computes the symbolic │ │ │ │ │ factorization. The ETree object is updated (the front sizes and boundary sizes may change) │ │ │ │ │ andisoptionally written out to outETreeFile. The old-to-new IV object is optionally written │ │ │ │ │ to outIVfile. The IVL object that contains the symbolic factorization is optionally written │ │ │ │ │ to outIVLfile. │ │ │ │ │ - SymbFac : DRAFT December 20, 2018 3 │ │ │ │ │ + SymbFac : DRAFT October 11, 2021 3 │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ @@ -101,15 +101,15 @@ │ │ │ │ │ data. │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ - 4 SymbFac : DRAFT December 20, 2018 │ │ │ │ │ + 4 SymbFac : DRAFT October 11, 2021 │ │ │ │ │ • TheoutETreeFileparameter is the output file for the ETree object. If outETreeFileis │ │ │ │ │ nonethentheETreeobjectisnotwrittentoafile. Otherwise,theETree writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if outETreeFile is of the form │ │ │ │ │ *.etreef), or a binary file (if outETreeFile is of the form *.etreeb). │ │ │ │ │ • The outIVfile parameter is the output file for the vertex-to-front map IV object. │ │ │ │ │ If outIVfile is none then the IV object is not written to a file. Otherwise, the │ │ │ │ │ IV writeToFile()methodis called to write the object to a formatted file (if outIVfile │ │ ├── ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ ├── Tree.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMTI10 CMBX10 CMSY10 CMMI10 │ │ │ │ %%+ CMSL10 CMR8 CMMI8 CMCSC10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Tree.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1562,22 +1562,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1751,88 +1751,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4536,17 +4525,17 @@ │ │ │ │ @start /Fa 173[73 13[75 17[50 50 50 48[{}5 90.9091 /CMCSC10 │ │ │ │ rf /Fb 146[62 3[24 105[{}2 66.4176 /CMMI8 rf /Fc 206[35 │ │ │ │ 5[55 43[{}2 66.4176 /CMR8 rf /Fd 133[50 59 1[81 1[62 │ │ │ │ 44 44 46 1[62 56 62 93 31 2[31 62 56 1[51 62 50 1[54 │ │ │ │ 11[86 4[77 84 1[106 2[58 42 4[86 81 80 8[56 56 56 56 │ │ │ │ 56 56 56 56 56 56 1[31 33[62 12[{}40 99.6264 /CMBX12 │ │ │ │ rf /Fe 141[62 12[62 16[62 84[{}3 119.552 /CMTT12 rf /Ff │ │ │ │ -141[36 4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 │ │ │ │ -44[{}12 90.9091 /CMSL10 rf /Fg 134[45 52 1[44 7[55 80 │ │ │ │ -3[31 42[71 1[71 25 25 58[{}10 90.9091 /CMMI10 rf /Fh │ │ │ │ +139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 │ │ │ │ +3[25 44[{}12 90.9091 /CMSL10 rf /Fg 134[45 52 1[44 7[55 │ │ │ │ +80 3[31 42[71 1[71 25 25 58[{}10 90.9091 /CMMI10 rf /Fh │ │ │ │ 152[45 45 81[71 4[45 15[{}4 90.9091 /CMSY10 rf /Fi 134[71 │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 │ │ │ │ 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}27 119.552 │ │ │ │ /CMBX12 rf /Fj 192[49 63[{}1 90.9091 /CMBX10 rf /Fk 138[49 │ │ │ │ 30 37 38 1[46 46 51 74 1[42 1[28 46 42 1[42 46 42 1[46 │ │ │ │ 12[65 1[66 11[59 62 69 2[68 6[28 58[{}23 90.9091 /CMTI10 │ │ │ │ rf /Fl 130[48 1[48 48 48 48 48 48 48 48 48 48 1[48 48 │ │ │ │ @@ -4633,17 +4622,17 @@ │ │ │ │ b(>)f Fm(0)31 b(then)f(w)m(e)h(assume)f(that)h(the)f(structure)0 │ │ │ │ 5294 y(w)m(as)e(in)m(tialized)i(correctly)f(and)e(that)h(the)g │ │ │ │ Fl(par)p Fm(,)g Fl(fch)f Fm(and)g Fl(sib)f Fm(\014elds)i(p)s(oin)m(t)f │ │ │ │ (to)i(storage)g(that)f(w)m(as)g(allo)s(cated)i(b)m(y)0 │ │ │ │ 5407 y(the)h(initializer)h(metho)s(d.)1927 5656 y(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1094 4 v │ │ │ │ -1275 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 0 399 a Fi(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1130 4 v │ │ │ │ +1311 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 0 399 a Fi(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fe(Tree)e Fi(metho)t(ds)0 │ │ │ │ 628 y Fm(This)25 b(section)h(con)m(tains)h(brief)e(descriptions)h │ │ │ │ (including)f(protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d(that)j(b)s │ │ │ │ (elong)e(to)h(the)g Fl(Tree)0 741 y Fm(ob)5 b(ject.)0 │ │ │ │ 1013 y Fd(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1210 y │ │ │ │ Fm(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s │ │ │ │ (ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h │ │ │ │ @@ -4692,17 +4681,17 @@ │ │ │ │ y(3.)46 b Fl(int)h(*)h(Tree_par)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ 5256 y Fm(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ g(paren)m(t)f(v)m(ector.)227 5407 y Fk(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fm(If)30 b Fl(tree)g Fm(is)g Fl(NULL)p │ │ │ │ Fm(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1094 4 v 1275 100 a Fl(Tree)29 │ │ │ │ -b Ff(:)41 b Fk(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fm(3)111 399 y(4.)46 b Fl(int)h(*)h(Tree_fch)d(\()j │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1311 100 a Fl(Tree)29 │ │ │ │ +b Ff(:)41 b Fk(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fm(3)111 399 y(4.)46 b Fl(int)h(*)h(Tree_fch)d(\()j │ │ │ │ (Tree)e(*tree)h(\))g(;)227 548 y Fm(This)30 b(metho)s(d)g(returns)f(a)i │ │ │ │ (p)s(oin)m(ter)f(to)h(the)g(\014rst)e(c)m(hild)i(v)m(ector.)227 │ │ │ │ 698 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(tree)g Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)111 885 y(5.)46 b │ │ │ │ Fl(int)h(*)h(Tree_sib)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ 1035 y Fm(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ @@ -4760,26 +4749,26 @@ │ │ │ │ 4996 y Fk(R)-5 b(eturn)34 b(c)-5 b(o)g(des:)1030 5193 │ │ │ │ y Fm(1)100 b(normal)31 b(return)1000 5306 y(-1)100 b │ │ │ │ Fl(subtree)29 b Fm(is)h Fl(NULL)1000 5419 y Fm(-2)100 │ │ │ │ b Fl(nodeidsIV)28 b Fm(is)i Fl(NULL)2138 5250 y Fm(-3)101 │ │ │ │ b Fl(tree)29 b Fm(is)h Fl(NULL)2138 5363 y Fm(-4)101 │ │ │ │ b Fl(nodeidsIV)27 b Fm(is)k(in)m(v)-5 b(alid)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1094 4 v │ │ │ │ -1275 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 111 399 a Fm(5.)46 b Fl(void)h(Tree_setFchSibRoot)c │ │ │ │ -(\()k(Tree)g(*tree)f(\))i(;)227 553 y Fm(The)25 b(ro)s(ot)g(and)f(the)h │ │ │ │ -(en)m(tries)h(in)e(the)h Fl(fch[])e Fm(and)i Fl(sib[])e │ │ │ │ -Fm(v)m(ectors)j(are)g(set)f(using)f(the)h(en)m(tries)h(in)e(the)h │ │ │ │ -Fl(par[])227 666 y Fm(v)m(ector.)227 821 y Fk(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(tree)g Fm(is)g │ │ │ │ -Fl(NULL)p Fm(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ -(program)f(exits.)111 1017 y(6.)46 b Fl(void)h(Tree_setRoot)d(\()k │ │ │ │ -(Tree)e(*tree)h(\))g(;)227 1172 y Fm(The)28 b(v)m(ertices)i(that)f(are) │ │ │ │ -g(ro)s(ots)g(in)f(the)h(tree)g(are)g(link)m(ed)g(b)m(y)f(their)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1130 4 v │ │ │ │ +1311 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 111 399 a Fm(5.)46 b Fl(void)h(Tree_setFchSibRoot)c(\()k │ │ │ │ +(Tree)g(*tree)f(\))i(;)227 553 y Fm(The)25 b(ro)s(ot)g(and)f(the)h(en)m │ │ │ │ +(tries)h(in)e(the)h Fl(fch[])e Fm(and)i Fl(sib[])e Fm(v)m(ectors)j(are) │ │ │ │ +g(set)f(using)f(the)h(en)m(tries)h(in)e(the)h Fl(par[])227 │ │ │ │ +666 y Fm(v)m(ector.)227 821 y Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ +b(cking:)40 b Fm(If)30 b Fl(tree)g Fm(is)g Fl(NULL)p │ │ │ │ +Fm(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ +(exits.)111 1017 y(6.)46 b Fl(void)h(Tree_setRoot)d(\()k(Tree)e(*tree)h │ │ │ │ +(\))g(;)227 1172 y Fm(The)28 b(v)m(ertices)i(that)f(are)g(ro)s(ots)g │ │ │ │ +(in)f(the)h(tree)g(are)g(link)m(ed)g(b)m(y)f(their)g │ │ │ │ Fl(sib[])g Fm(\014eld)g(and)f(the)i(ro)s(ot)g(of)g(the)f(tree)227 │ │ │ │ 1285 y(is)j(set)g(to)g(the)f(head)g(of)h(the)g(list.)227 │ │ │ │ 1440 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(tree)g Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)0 1721 y Fd(1.2.4)112 │ │ │ │ b(Utilit)m(y)38 b(metho)s(ds)0 1922 y Fm(The)33 b(utilit)m(y)i(metho)s │ │ │ │ (ds)e(return)f(the)i(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g(tak)m(en)h(b)m │ │ │ │ @@ -4825,17 +4814,17 @@ │ │ │ │ (tra)m(v)m(ersal.)227 5294 y Fk(Err)-5 b(or)37 b(che)-5 │ │ │ │ b(cking:)47 b Fm(If)33 b Fl(tree)f Fm(is)i Fl(NULL)p │ │ │ │ Fm(,)e(or)i(if)f Fl(tree->n)46 b(<)i(1)p Fm(,)34 b(or)f │ │ │ │ Fl(v)g Fm(is)h(not)g(in)f Fl([0,tree->n-1])p Fm(,)e(an)i(error)227 │ │ │ │ 5407 y(message)f(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1094 4 v 1275 100 a Fl(Tree)29 │ │ │ │ -b Ff(:)41 b Fk(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fm(5)111 399 y(6.)46 b Fl(int)h(Tree_nleaves)e(\()i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1130 4 v 1311 100 a Fl(Tree)29 │ │ │ │ +b Ff(:)41 b Fk(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fm(5)111 399 y(6.)46 b Fl(int)h(Tree_nleaves)e(\()i │ │ │ │ (Tree)g(*tree)f(\))i(;)227 569 y Fm(This)30 b(metho)s(d)g(returns)f │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(lea)m(v)m(es)i(of)d(the)h(tree.)227 │ │ │ │ 740 y Fk(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fm(If)41 │ │ │ │ b Fl(tree)g Fm(is)h Fl(NULL)p Fm(,)f(or)h(if)h Fl(tree->n)i(<)j(1)p │ │ │ │ Fm(,)d(an)d(error)f(message)j(is)e(prin)m(ted)f(and)h(the)227 │ │ │ │ 853 y(program)30 b(exits.)111 1082 y(7.)46 b Fl(int)h(Tree_nroots)e(\() │ │ │ │ i(Tree)g(*tree)f(\))i(;)227 1253 y Fm(This)30 b(metho)s(d)g(returns)f │ │ │ │ @@ -4884,27 +4873,27 @@ │ │ │ │ 5123 y(main/Sc)m(h)m(ur)30 b(complemen)m(t)i(partition)f(for)f(a)h │ │ │ │ (semi-implicit)h(factorization.)227 5294 y Fk(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)41 b Fm(If)30 b Fl(tree)p Fm(,)g │ │ │ │ Fl(gainIV)f Fm(or)h Fl(ptotalgain)e Fm(is)j Fl(NULL)p │ │ │ │ Fm(,)f(an)g(error)g(message)i(is)f(prin)m(ted)f(and)g(the)227 │ │ │ │ 5407 y(program)g(exits.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1094 4 v │ │ │ │ -1275 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 0 399 a Fd(1.2.5)112 b(Metrics)38 │ │ │ │ -b(metho)s(ds)0 595 y Fm(Man)m(y)24 b(op)s(erations)h(need)e(to)i(kno)m │ │ │ │ -(w)e(some)i Fk(metric)f Fm(de\014ned)e(on)i(the)g(no)s(des)f(in)g(a)h │ │ │ │ -(tree.)40 b(Here)24 b(are)g(three)g(examples:)0 708 y(the)39 │ │ │ │ -b(heigh)m(t)h(of)f(a)g(no)s(de)f(\(the)i(minim)m(um)e(distance)h(from)g │ │ │ │ -(a)g(descendan)m(t)g(leaf)7 b(\),)43 b(the)c(depth)f(of)h(a)g(no)s(de)f │ │ │ │ -(\(the)0 821 y(distance)j(from)e(its)h(ro)s(ot)g(ancestor\),)k(or)c │ │ │ │ -(the)g(w)m(eigh)m(t)h(asso)s(ciated)h(with)d(a)i(subtree)e(ro)s(oted)h │ │ │ │ -(at)h(a)f(no)s(de.)69 b(Of)0 934 y(course,)30 b(a)g(w)m(eigh)m(t)h │ │ │ │ -(could)e(b)s(e)g(asso)s(ciated)i(with)e(eac)m(h)i(no)s(de,)e(so)h(the)g │ │ │ │ -(heigh)m(t)g(or)g(depth)e(b)s(ecomes)i(the)g(w)m(eigh)m(t)h(of)0 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1130 4 v │ │ │ │ +1311 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 0 399 a Fd(1.2.5)112 b(Metrics)38 b(metho)s(ds)0 │ │ │ │ +595 y Fm(Man)m(y)24 b(op)s(erations)h(need)e(to)i(kno)m(w)e(some)i │ │ │ │ +Fk(metric)f Fm(de\014ned)e(on)i(the)g(no)s(des)f(in)g(a)h(tree.)40 │ │ │ │ +b(Here)24 b(are)g(three)g(examples:)0 708 y(the)39 b(heigh)m(t)h(of)f │ │ │ │ +(a)g(no)s(de)f(\(the)i(minim)m(um)e(distance)h(from)g(a)g(descendan)m │ │ │ │ +(t)g(leaf)7 b(\),)43 b(the)c(depth)f(of)h(a)g(no)s(de)f(\(the)0 │ │ │ │ +821 y(distance)j(from)e(its)h(ro)s(ot)g(ancestor\),)k(or)c(the)g(w)m │ │ │ │ +(eigh)m(t)h(asso)s(ciated)h(with)d(a)i(subtree)e(ro)s(oted)h(at)h(a)f │ │ │ │ +(no)s(de.)69 b(Of)0 934 y(course,)30 b(a)g(w)m(eigh)m(t)h(could)e(b)s │ │ │ │ +(e)g(asso)s(ciated)i(with)e(eac)m(h)i(no)s(de,)e(so)h(the)g(heigh)m(t)g │ │ │ │ +(or)g(depth)e(b)s(ecomes)i(the)g(w)m(eigh)m(t)h(of)0 │ │ │ │ 1047 y(the)g(no)s(des)e(on)h(the)h(path.)141 1185 y(Metrics)h(can)f(b)s │ │ │ │ (e)f Fl(int)f Fm(or)i Fl(double)p Fm(.)40 b(Because)32 │ │ │ │ b(of)e(the)h(limitations)i(of)d(C,)h(w)m(e)g(need)f(t)m(w)m(o)i │ │ │ │ (separate)g(metho)s(ds)0 1298 y(for)f(eac)m(h)i(of)f(the)g(heigh)m(t,)h │ │ │ │ (depth)e(and)g(subtree)g(functions.)44 b(Eac)m(h)32 b(pair)g(of)g │ │ │ │ (metho)s(ds)f(di\013ers)g(only)h(in)f(the)h(t)m(yp)s(e)0 │ │ │ │ 1410 y(of)f(the)f(v)m(ector)i(ob)5 b(ject)31 b(argumen)m(t.)111 │ │ │ │ @@ -4953,17 +4942,17 @@ │ │ │ │ 4956 y Fl(hmetric[v])45 b(=)j(vmetric[v])d(if)i(fch[v])f(==)h(-1)752 │ │ │ │ 5069 y(=)h(vmetric[v])d(+)i(max_{par[u])e(=)i(v})h(hmetric[par[v]])227 │ │ │ │ 5294 y Fk(Err)-5 b(or)47 b(che)-5 b(cking:)68 b Fm(If)44 │ │ │ │ b Fl(tree)f Fm(or)h Fl(vmetric)p Fh(f)p Fl(I,D)p Fh(g)p │ │ │ │ Fl(V)e Fm(is)i Fl(NULL)p Fm(,)g(an)g(error)g(message)h(is)f(prin)m(ted) │ │ │ │ g(and)g(the)227 5407 y(program)30 b(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1094 4 v 1275 100 a Fl(Tree)29 │ │ │ │ -b Ff(:)41 b Fk(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fm(7)0 399 y Fd(1.2.6)112 b(Compression)39 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1130 4 v 1311 100 a Fl(Tree)29 │ │ │ │ +b Ff(:)41 b Fk(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fm(7)0 399 y Fd(1.2.6)112 b(Compression)39 │ │ │ │ b(metho)s(ds)0 590 y Fm(F)-8 b(requen)m(tly)31 b(a)f(tree)g(will)g │ │ │ │ (need)g(to)g(b)s(e)f(compressed)g(in)h(some)g(manner.)39 │ │ │ │ b(Elimination)31 b(trees)f(usually)f(ha)m(v)m(e)i(long)0 │ │ │ │ 703 y(c)m(hains)i(of)f(no)s(des)g(at)h(the)f(higher)g(lev)m(els,)j │ │ │ │ (where)c(eac)m(h)j(c)m(hain)f(of)f(no)s(des)g(corresp)s(onds)e(to)j(a)g │ │ │ │ (sup)s(erno)s(de.)44 b(Liu's)0 816 y(generalized)27 b(ro)m(w)e(en)m(v)m │ │ │ │ (elop)s(e)i(metho)s(ds)d(partition)i(the)g(v)m(ertices)g(b)m(y)g │ │ │ │ @@ -5039,37 +5028,37 @@ │ │ │ │ b(.)47 b(If)32 b Fl(u)g Fm(and)g Fl(v)227 5294 y Fm(are)k(siblings,)g │ │ │ │ (and)f Fl(u)g Fm(comes)h(b)s(efore)f Fl(v)g Fm(in)g(a)g(p)s(ost-order)g │ │ │ │ (tra)m(v)m(ersal,)j(then)d(the)h(w)m(eigh)m(t)h(of)e(the)g(subtree)227 │ │ │ │ 5407 y(ro)s(oted)c(at)g Fl(u)f Fm(is)g(as)h(large)h(or)e(larger)h(than) │ │ │ │ f(the)h(w)m(eigh)m(t)h(of)e(the)h(subtree)f(ro)s(oted)g(at)h │ │ │ │ Fl(v)p Fm(.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1094 4 v │ │ │ │ -1275 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 227 399 a Fk(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fm(If)30 b Fl(tree)f Fm(or)h Fl(metricIV)e │ │ │ │ -Fm(is)i Fl(NULL)p Fm(,)f(or)h(if)h Fl(n)47 b(<)g(1)p │ │ │ │ -Fm(,)31 b(or)f(if)g Fl(n)g Fm(is)g(not)g(the)h(size)g(of)f │ │ │ │ -Fl(metricIV)p Fm(,)227 511 y(an)h(error)f(message)h(is)f(prin)m(ted)g │ │ │ │ -(and)g(the)h(program)f(exits.)0 778 y Fd(1.2.8)112 b(P)m(erm)m(utation) │ │ │ │ -38 b(metho)s(ds)0 973 y Fm(Often)32 b(w)m(e)h(need)f(to)h(extract)g(a)g │ │ │ │ -(p)s(erm)m(utation)f(from)g(a)h(tree,)g(e.g.,)i(a)d(p)s(ost-order)g │ │ │ │ -(tra)m(v)m(ersal)i(of)e(an)h(elimination)0 1086 y(tree)39 │ │ │ │ -b(giv)m(es)i(an)d(ordering)h(for)f(a)h(sparse)g(matrix.)66 │ │ │ │ -b(On)37 b(other)i(o)s(ccasions,)k(w)m(e)c(need)f(to)i(p)s(erm)m(ute)e │ │ │ │ -(a)h(tree,)j(i.e.)0 1199 y(re-lab)s(el)31 b(the)g(no)s(des.)111 │ │ │ │ -1429 y(1.)46 b Fl(void)h(Tree_fillNewToOldPerm)42 b(\()47 │ │ │ │ -b(Tree)g(*tree,)f(int)h(newToOld[])e(\))i(;)227 1542 │ │ │ │ -y(void)g(Tree_fillOldToNewPerm)42 b(\()47 b(Tree)g(*tree,)f(int)h │ │ │ │ -(oldToNew[])e(\))i(;)227 1655 y(void)g(Tree_fillBothPerms)c(\()k(Tree)g │ │ │ │ -(*tree,)f(int)h(newToOld[],)e(int)h(oldToNew[])f(\))j(;)227 │ │ │ │ -1804 y Fm(If)35 b Fl(tree)f Fm(is)h Fl(NULL)p Fm(,)g │ │ │ │ -Fl(tree->n)46 b(<)h(1)35 b Fm(or)g(a)h(p)s(erm)m(utation)f(v)m(ector)i │ │ │ │ -(is)e Fl(NULL)p Fm(,)g(an)g(error)g(message)h(is)f(prin)m(ted)227 │ │ │ │ -1917 y(and)29 b(the)g(program)g(exits.)41 b(Otherwise,)29 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1130 4 v │ │ │ │ +1311 w Fl(Tree)30 b Ff(:)40 b Fk(DRAFT)30 b Ff(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 227 399 a Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fm(If)30 b Fl(tree)f Fm(or)h Fl(metricIV)e Fm(is)i │ │ │ │ +Fl(NULL)p Fm(,)f(or)h(if)h Fl(n)47 b(<)g(1)p Fm(,)31 │ │ │ │ +b(or)f(if)g Fl(n)g Fm(is)g(not)g(the)h(size)g(of)f Fl(metricIV)p │ │ │ │ +Fm(,)227 511 y(an)h(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h │ │ │ │ +(program)f(exits.)0 778 y Fd(1.2.8)112 b(P)m(erm)m(utation)38 │ │ │ │ +b(metho)s(ds)0 973 y Fm(Often)32 b(w)m(e)h(need)f(to)h(extract)g(a)g(p) │ │ │ │ +s(erm)m(utation)f(from)g(a)h(tree,)g(e.g.,)i(a)d(p)s(ost-order)g(tra)m │ │ │ │ +(v)m(ersal)i(of)e(an)h(elimination)0 1086 y(tree)39 b(giv)m(es)i(an)d │ │ │ │ +(ordering)h(for)f(a)h(sparse)g(matrix.)66 b(On)37 b(other)i(o)s │ │ │ │ +(ccasions,)k(w)m(e)c(need)f(to)i(p)s(erm)m(ute)e(a)h(tree,)j(i.e.)0 │ │ │ │ +1199 y(re-lab)s(el)31 b(the)g(no)s(des.)111 1429 y(1.)46 │ │ │ │ +b Fl(void)h(Tree_fillNewToOldPerm)42 b(\()47 b(Tree)g(*tree,)f(int)h │ │ │ │ +(newToOld[])e(\))i(;)227 1542 y(void)g(Tree_fillOldToNewPerm)42 │ │ │ │ +b(\()47 b(Tree)g(*tree,)f(int)h(oldToNew[])e(\))i(;)227 │ │ │ │ +1655 y(void)g(Tree_fillBothPerms)c(\()k(Tree)g(*tree,)f(int)h │ │ │ │ +(newToOld[],)e(int)h(oldToNew[])f(\))j(;)227 1804 y Fm(If)35 │ │ │ │ +b Fl(tree)f Fm(is)h Fl(NULL)p Fm(,)g Fl(tree->n)46 b(<)h(1)35 │ │ │ │ +b Fm(or)g(a)h(p)s(erm)m(utation)f(v)m(ector)i(is)e Fl(NULL)p │ │ │ │ +Fm(,)g(an)g(error)g(message)h(is)f(prin)m(ted)227 1917 │ │ │ │ +y(and)29 b(the)g(program)g(exits.)41 b(Otherwise,)29 │ │ │ │ b(the)g(p)s(erm)m(utation)h(v)m(ector\(s\))h(is)e(\(are\))h(\014lled)f │ │ │ │ (with)g(the)g(ordering)227 2030 y(of)i(the)f(no)s(des)g(in)g(a)h(p)s │ │ │ │ (ost-order)f(tra)m(v)m(ersal.)227 2179 y Fk(Err)-5 b(or)42 │ │ │ │ b(che)-5 b(cking:)57 b Fm(If)38 b Fl(tree)g Fm(or)h(a)g(p)s(erm)m │ │ │ │ (utation)g(v)m(ector)h(is)f Fl(NULL)p Fm(,)f(or)h(if)f │ │ │ │ Fl(n)48 b(<)f(1)p Fm(,)41 b(an)e(error)f(message)i(is)227 │ │ │ │ 2292 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.)111 │ │ │ │ @@ -5110,17 +5099,17 @@ │ │ │ │ b(alid)2198 4858 y(-3)100 b Fl(xDV)30 b Fm(is)g Fl(NULL)2198 │ │ │ │ 4970 y Fm(-4)100 b Fl(yDV)30 b Fm(is)g Fl(NULL)111 5181 │ │ │ │ y Fm(2.)46 b Fl(int)h(Tree_drawToEPS)d(\()k(Tree)e(*tree,)g(FILE)h │ │ │ │ (*filename,)e(DV)i(*xDV,)f(DV)i(*yDV,)1230 5294 y(double)e(rscale,)f │ │ │ │ (DV)j(*radiusDV,)d(int)i(labelflag,)1230 5407 y(double)f(fontscale,)f │ │ │ │ (IV)i(*labelsIV,)e(double)h(bbox[],)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1094 4 v 1275 100 a Fl(Tree)29 │ │ │ │ -b Ff(:)41 b Fk(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fm(9)1230 399 y Fl(double)46 b(frame[],)f(double)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1130 4 v 1311 100 a Fl(Tree)29 │ │ │ │ +b Ff(:)41 b Fk(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fm(9)1230 399 y Fl(double)46 b(frame[],)f(double)h │ │ │ │ (bounds[])g(\))h(;)227 557 y Fm(This)24 b(metho)s(d)f(dra)m(ws)h(a)g │ │ │ │ (tree.)40 b(The)23 b(co)s(ordinates)i(of)f(the)h(no)s(des)e(are)h │ │ │ │ (found)f(in)h(the)g Fl(xDV)f Fm(and)h Fl(yDV)f Fm(v)m(ectors.)227 │ │ │ │ 715 y(The)29 b(no)s(des)f(will)h(ha)m(v)m(e)i(circles)f(of)f(constan)m │ │ │ │ (t)i(radius)d(\(if)h Fl(radiusDV)e Fm(is)i Fl(NULL)p │ │ │ │ Fm(\))f(or)h(eac)m(h)i(circle)f(can)f(ha)m(v)m(e)i(a)227 │ │ │ │ 828 y(di\013eren)m(t)g(radius)f(found)f(in)h Fl(radiusDV)e │ │ │ │ @@ -5193,17 +5182,17 @@ │ │ │ │ b(alue)27 b Fl(1)g Fm(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ h(encoun)m(tered)g(from)f Fl(fscanf)p Fm(,)g(zero)h(is)g(returned.)227 │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(tree)g Fm(or)g Fl(fp)g Fm(are)g Fl(NULL)p Fm(,)g(an)g(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1071 4 │ │ │ │ -v 1253 w Fl(Tree)29 b Ff(:)41 b Fk(DRAFT)30 b Ff(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2830 100 V 111 399 a Fm(3.)46 b Fl(int)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1107 4 │ │ │ │ +v 1289 w Fl(Tree)29 b Ff(:)41 b Fk(DRAFT)30 b Ff(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2794 100 V 111 399 a Fm(3.)46 b Fl(int)h │ │ │ │ (Tree_readFromBinaryFile)42 b(\()47 b(Tree)g(*tree,)f(FILE)g(*fp)h(\))h │ │ │ │ (;)227 557 y Fm(This)32 b(metho)s(d)g(reads)g(in)h(a)g │ │ │ │ Fl(Perm)e Fm(ob)5 b(ject)33 b(from)f(a)h(binary)f(\014le.)48 │ │ │ │ b(If)32 b(there)g(are)h(no)g(errors)f(in)g(reading)h(the)227 │ │ │ │ 670 y(data,)f(the)e(v)-5 b(alue)31 b Fl(1)f Fm(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fl(fread)p Fm(,)f(zero)i(is)g(returned.)227 828 y Fk(Err)-5 │ │ │ │ @@ -5271,17 +5260,17 @@ │ │ │ │ (fontsize)227 5062 y Fm(This)29 b(driv)m(er)g(program)g(reads)g(in)f(a) │ │ │ │ i Fl(Tree)e Fm(\014le)h(and)g(optionally)h(a)g(tags)g │ │ │ │ Fl(IV)f Fm(\014le)g(and)g(creates)h(an)f(EPS)g(\014le)227 │ │ │ │ 5175 y(with)h(a)h(simple)f(picture)h(of)f(a)h(tree.)336 │ │ │ │ 5407 y Fh(\017)46 b Fm(The)30 b Fl(msglvl)f Fm(parameter)i(determines)f │ │ │ │ (the)h(amoun)m(t)f(of)h(output.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1071 4 v 1252 100 a Fl(Tree)29 │ │ │ │ -b Ff(:)41 b Fk(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2737 100 V 1071 w Fm(11)336 399 y Fh(\017)46 b Fm(The)33 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1107 4 v 1288 100 a Fl(Tree)29 │ │ │ │ +b Ff(:)41 b Fk(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2701 100 V 1107 w Fm(11)336 399 y Fh(\017)46 b Fm(The)33 │ │ │ │ b Fl(msgFile)e Fm(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fl(msgFile)e Fm(is)i Fl(stdout)p Fm(,)g(then)g(the)427 │ │ │ │ 511 y(output)c(\014le)h(is)f Fk(stdout)p Fm(,)i(otherwise)f(a)f(\014le) │ │ │ │ h(is)f(op)s(ened)g(with)g Fk(app)-5 b(end)31 b Fm(status)e(to)i(receiv) │ │ │ │ m(e)g(an)m(y)e(output)427 624 y(data.)336 770 y Fh(\017)46 │ │ │ │ b Fm(The)29 b Fl(inTreeFile)e Fm(parameter)j(is)g(the)f(input)g(\014le) │ │ │ │ g(for)h(the)f Fl(Tree)g Fm(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g │ │ │ │ @@ -5329,23 +5318,23 @@ │ │ │ │ Fm(The)30 b Fl(fontsize)e Fm(parameter)j(is)g(the)f(size)h(of)g(the)f │ │ │ │ (fon)m(t)h(to)g(b)s(e)f(used)g(to)h(dra)m(w)f(the)g(no)s(de)g(lab)s │ │ │ │ (els.)227 3314 y(Use)g(the)h Fl(doDraw)d Fm(script)h(\014le)h(as)g(an)g │ │ │ │ (example.)41 b(F)-8 b(our)31 b(plots)f(of)g(a)g(tree)h(for)e(the)h │ │ │ │ Fl(R2D100)e Fm(matrix)j(ordered)227 3427 y(b)m(y)g(nested)f(dissection) │ │ │ │ h(are)g(found)e(b)s(elo)m(w.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1071 │ │ │ │ -4 v 1253 w Fl(Tree)29 b Ff(:)41 b Fk(DRAFT)30 b Ff(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2830 100 V 0 571 a Fm(Figure)38 b(1.1:)56 │ │ │ │ -b Fa(R2D100)p Fm(:)f(domain/separator)39 b(tree.)62 b(On)37 │ │ │ │ -b(the)g(left)h Fl(heightflag)45 b(=)j('H')36 b Fm(and)h │ │ │ │ -Fl(coordflag)45 b(=)0 684 y('C')p Fm(,)30 b(on)g(the)h(righ)m(t)g │ │ │ │ -Fl(heightflag)45 b(=)i('D')29 b Fm(and)h Fl(coordflag)45 │ │ │ │ -b(=)j('C')p Fm(.)105 2612 y @beginspecial 0 @llx 0 @lly │ │ │ │ -600 @urx 600 @ury 2159 @rwi 2159 @rhi @setspecial │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1107 │ │ │ │ +4 v 1289 w Fl(Tree)29 b Ff(:)41 b Fk(DRAFT)30 b Ff(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2794 100 V 0 571 a Fm(Figure)38 b(1.1:)56 b Fa(R2D100)p │ │ │ │ +Fm(:)f(domain/separator)39 b(tree.)62 b(On)37 b(the)g(left)h │ │ │ │ +Fl(heightflag)45 b(=)j('H')36 b Fm(and)h Fl(coordflag)45 │ │ │ │ +b(=)0 684 y('C')p Fm(,)30 b(on)g(the)h(righ)m(t)g Fl(heightflag)45 │ │ │ │ +b(=)i('D')29 b Fm(and)h Fl(coordflag)45 b(=)j('C')p Fm(.)105 │ │ │ │ +2612 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ +2159 @rwi 2159 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../Tree/doc/R2D100HC.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ /CSH { │ │ │ │ % │ │ │ │ % center show a string │ │ │ │ % │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -20,15 +20,15 @@ │ │ │ │ │ • int *sib : pointer to sibling vector, size n, entries in the range [-1,n-1] │ │ │ │ │ The user should rarely if ever change these five fields. In particular, throughout the code we │ │ │ │ │ assume that the Tree object was correctly initialized using one of the three initializer methods. │ │ │ │ │ Inside almost every method we check to ensure n > 0. If n > 0 then we assume that the structure │ │ │ │ │ was intialized correctly and that the par, fch and sib fields point to storage that was allocated by │ │ │ │ │ the initializer method. │ │ │ │ │ 1 │ │ │ │ │ - 2 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 2 Tree : DRAFT October 11, 2021 │ │ │ │ │ 1.2 Prototypes and descriptions of Tree methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Tree │ │ │ │ │ object. │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ 1. Tree * Tree_new ( void ) ; │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ 2. int Tree_root ( Tree *tree ) ; │ │ │ │ │ This method returns the root of the tree. │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ 3. int * Tree_par ( Tree *tree ) ; │ │ │ │ │ This method returns a pointer to the parent vector. │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ - Tree : DRAFT December 20, 2018 3 │ │ │ │ │ + Tree : DRAFT October 11, 2021 3 │ │ │ │ │ 4. int * Tree_fch ( Tree *tree ) ; │ │ │ │ │ This method returns a pointer to the first child vector. │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ 5. int * Tree_sib ( Tree *tree ) ; │ │ │ │ │ This method returns a pointer to the sibling vector. │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ │ The subtree object is initialized from the tree object, the nodes that are included are those │ │ │ │ │ found in nodeidsIV. A parent-child link in the subtree means that the two nodes have a │ │ │ │ │ parent-child link in the tree. │ │ │ │ │ Return codes: │ │ │ │ │ 1 normal return -3 tree is NULL │ │ │ │ │ -1 subtree is NULL -4 nodeidsIV is invalid │ │ │ │ │ -2 nodeidsIV is NULL │ │ │ │ │ - 4 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 4 Tree : DRAFT October 11, 2021 │ │ │ │ │ 5. void Tree_setFchSibRoot ( Tree *tree ) ; │ │ │ │ │ Theroot and the entries in the fch[] and sib[] vectors are set using the entries in the par[] │ │ │ │ │ vector. │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ 6. void Tree_setRoot ( Tree *tree ) ; │ │ │ │ │ The vertices that are roots in the tree are linked by their sib[] field and the root of the tree │ │ │ │ │ is set to the head of the list. │ │ │ │ │ @@ -122,15 +122,15 @@ │ │ │ │ │ This method returns the first node in a pre-order traversal. │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 5. int Tree_preOTnext ( Tree *tree, int v ) ; │ │ │ │ │ This method returns the node that follows v in a pre-order traversal. │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, or v is not in [0,tree->n-1], an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ - Tree : DRAFT December 20, 2018 5 │ │ │ │ │ + Tree : DRAFT October 11, 2021 5 │ │ │ │ │ 6. int Tree_nleaves ( Tree *tree ) ; │ │ │ │ │ This method returns the number of leaves of the tree. │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 7. int Tree_nroots ( Tree *tree ) ; │ │ │ │ │ This method returns the number of roots of the tree (really a forest). │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, an error message is printed and the │ │ │ │ │ @@ -155,15 +155,15 @@ │ │ │ │ │ 12. IV * Tree_maximizeGainIV ( Tree *tree, IV *gainIV, int *ptotalgain, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ Given a gain value assigned to each node, find a set of nodes, no two in a child-ancestor │ │ │ │ │ relationship, that maximizes the total gain. This problem arises in finding the optimal do- │ │ │ │ │ main/Schur complement partition for a semi-implicit factorization. │ │ │ │ │ Error checking: If tree, gainIV or ptotalgain is NULL, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ - 6 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 6 Tree : DRAFT October 11, 2021 │ │ │ │ │ 1.2.5 Metrics methods │ │ │ │ │ Manyoperations need to know some metric defined on the nodes in a tree. Here are three examples: │ │ │ │ │ the height of a node (the minimum distance from a descendant leaf), the depth of a node (the │ │ │ │ │ distance from its root ancestor), or the weight associated with a subtree rooted at a node. Of │ │ │ │ │ course, a weight could be associated with each node, so the height or depth becomes the weight of │ │ │ │ │ the nodes on the path. │ │ │ │ │ Metrics can be int or double. Because of the limitations of C, we need two separate methods │ │ │ │ │ @@ -191,15 +191,15 @@ │ │ │ │ │ These methods create and return IV or DV objects that contain height metrics using as input │ │ │ │ │ an IV or DV object that contains the metric for each of the nodes. If hmetric[] is the vector │ │ │ │ │ in the returned IV or DV object, then │ │ │ │ │ hmetric[v] = vmetric[v] if fch[v] == -1 │ │ │ │ │ = vmetric[v] + max_{par[u] = v} hmetric[par[v]] │ │ │ │ │ Error checking: If tree or vmetric{I,D}V is NULL, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ - Tree : DRAFT December 20, 2018 7 │ │ │ │ │ + Tree : DRAFT October 11, 2021 7 │ │ │ │ │ 1.2.6 Compression methods │ │ │ │ │ Frequently a tree will need to be compressed in some manner. Elimination trees usually have long │ │ │ │ │ chains of nodes at the higher levels, where each chain of nodes corresponds to a supernode. Liu’s │ │ │ │ │ generalized row envelope methods partition the vertices by longest chains [?]. In both cases, we can │ │ │ │ │ construct a map from each node to a set of nodes to define a smaller, more compact tree. Given │ │ │ │ │ such a map, we construct the smaller tree. │ │ │ │ │ Afundamental chain is a set of nodes v ,...,v such that (1) v is a leaf or has two or more │ │ │ │ │ @@ -232,15 +232,15 @@ │ │ │ │ │ Error checking: If tree or map is NULL, or if n < 1, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ 2. void Tree_leftJustifyI ( Tree *tree, IV *metricIV ) ; │ │ │ │ │ void Tree_leftJustifyD ( Tree *tree, DV *metricIV ) ; │ │ │ │ │ This method justifies the tree, reordering the children of each node as necessary. If u and v │ │ │ │ │ are siblings, and u comes before v in a post-order traversal, then the weight of the subtree │ │ │ │ │ rooted at u is as large or larger than the weight of the subtree rooted at v. │ │ │ │ │ - 8 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 8 Tree : DRAFT October 11, 2021 │ │ │ │ │ Error checking: If tree or metricIV is NULL, or if n < 1, or if n is not the size of metricIV, │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ 1.2.8 Permutation methods │ │ │ │ │ Often we need to extract a permutation from a tree, e.g., a post-order traversal of an elimination │ │ │ │ │ tree gives an ordering for a sparse matrix. On other occasions, we need to permute a tree, i.e. │ │ │ │ │ re-label the nodes. │ │ │ │ │ 1. void Tree_fillNewToOldPerm ( Tree *tree, int newToOld[] ) ; │ │ │ │ │ @@ -269,15 +269,15 @@ │ │ │ │ │ Return codes: │ │ │ │ │ 1 normal return -3 coordflag is invalid │ │ │ │ │ -1 tree is NULL -3 xDV is NULL │ │ │ │ │ -2 heightflag is invalid -4 yDV is NULL │ │ │ │ │ 2. int Tree_drawToEPS ( Tree *tree, FILE *filename, DV *xDV, DV *yDV, │ │ │ │ │ double rscale, DV *radiusDV, int labelflag, │ │ │ │ │ double fontscale, IV *labelsIV, double bbox[], │ │ │ │ │ - Tree : DRAFT December 20, 2018 9 │ │ │ │ │ + Tree : DRAFT October 11, 2021 9 │ │ │ │ │ double frame[], double bounds[] ) ; │ │ │ │ │ This method draws a tree. The coordinates of the nodes are found in the xDV and yDV vectors. │ │ │ │ │ The nodes will have circles of constant radius (if radiusDV is NULL) or each circle can have a │ │ │ │ │ different radius found in radiusDV when radiusDV is not NULL. The value rscale is used to │ │ │ │ │ scale all the radii. (If radiusDV is NULL, then all radii are equal to one point — there are 72 │ │ │ │ │ points to the inch.) │ │ │ │ │ If labelflag = 1, the nodes will have a numeric label. If labelsIV is NULL, then the label │ │ │ │ │ @@ -306,15 +306,15 @@ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ Error checking: If tree or fn are NULL, or if fn is not of the form *.treef (for a formatted │ │ │ │ │ file) or *.treeb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 2. int Tree_readFromFormattedFile ( Tree *tree, FILE *fp ) ; │ │ │ │ │ This method reads in a Perm object from a formatted file. If there are no errors in reading │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ Error checking: If tree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - 10 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 10 Tree : DRAFT October 11, 2021 │ │ │ │ │ 3. int Tree_readFromBinaryFile ( Tree *tree, FILE *fp ) ; │ │ │ │ │ This method reads in a Perm object from a binary file. If there are no errors in reading the │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ Error checking: If tree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 4. int Tree_writeToFile ( Tree *tree, char *fn ) ; │ │ │ │ │ This method writes a Perm object to a file. It tries to open the file and if it is successful, │ │ │ │ │ it then calls Tree writeFromFormattedFile() or Tree writeFromBinaryFile(), closes the │ │ │ │ │ @@ -339,15 +339,15 @@ │ │ │ │ │ Error checking: If tree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 1.3 Driver programs for the Tree object │ │ │ │ │ 1. drawTree msglvl msgFile inTreeFile inTagsFile outEPSfile │ │ │ │ │ heightflag coordflag radius bbox[4] frame[4] tagflag fontsize │ │ │ │ │ This driver program reads in a Tree file and optionally a tags IV file and creates an EPS file │ │ │ │ │ with a simple picture of a tree. │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ - Tree : DRAFT December 20, 2018 11 │ │ │ │ │ + Tree : DRAFT October 11, 2021 11 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ output file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The inTreeFile parameter is the input file for the Tree object. It must be of the form │ │ │ │ │ *.treefor*.treeb. TheTreeobjectisreadfromthefileviatheTree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The inTagsFile parameter is the input file for the IV vector object than holds the tags │ │ │ │ │ @@ -364,15 +364,15 @@ │ │ │ │ │ • The frame parameter a sequence of four numbers that form the frame of the plot within │ │ │ │ │ the bounding box: lower left x value, lower left y value, width and height. │ │ │ │ │ • When tagflag = 1, tags are drawn on the nodes. If tagsFile is NULL, then node ids │ │ │ │ │ will be drawn on the nodes. Otherwise, node ids will be taken from the tagsIV object. │ │ │ │ │ • The fontsize parameter is the size of the font to be used to draw the node labels. │ │ │ │ │ Use the doDraw script file as an example. Four plots of a tree for the R2D100 matrix ordered │ │ │ │ │ by nested dissection are found below. │ │ │ │ │ - 12 Tree : DRAFT December 20, 2018 │ │ │ │ │ + 12 Tree : DRAFT October 11, 2021 │ │ │ │ │ Figure 1.1: R2D100: domain/separator tree. On the left heightflag = ’H’ and coordflag = │ │ │ │ │ ’C’, on the right heightflag = ’D’ and coordflag = ’C’. │ │ │ │ │ 71 71 │ │ │ │ │ 70 70 32 │ │ │ │ │ 51 51 69 31 13 │ │ │ │ │ 40 32 50 40 61 68 22 30 8 12 │ │ │ │ │ 39 31 49 43 39 56 60 67 64 21 17 29 23 7 11 9 │ │ ├── ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ ├── Utilities.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMBX10 CMSY10 CMSL10 CMTI10 │ │ │ │ %%+ CMEX10 CMTT8 CMSY8 CMR8 CMMI10 CMMI8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Utilities.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -2651,22 +2651,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2840,88 +2840,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5041,16 +5030,16 @@ │ │ │ │ 5[51 2[51 1[51 51 16[51 5[51 1[51 51 51 40[{}31 99.6264 │ │ │ │ /CMTT12 rf /Fh 134[59 2[59 62 44 44 46 1[62 56 62 93 │ │ │ │ 31 59 1[31 62 56 1[51 62 50 1[54 13[62 24[31 56 56 56 │ │ │ │ 56 56 56 56 56 56 56 1[31 37 45[{}33 99.6264 /CMBX12 │ │ │ │ rf /Fi 139[62 62 6[62 2[62 3[62 15[62 85[{}6 119.552 │ │ │ │ /CMTT12 rf /Fj 138[49 30 37 38 1[46 46 51 2[42 1[28 46 │ │ │ │ 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}22 │ │ │ │ -90.9091 /CMTI10 rf /Fk 141[36 4[76 7[40 1[40 51 29[69 │ │ │ │ -9[25 1[45 5[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ +90.9091 /CMTI10 rf /Fk 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 7[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Fl 240[45 11[45 71 1[71{}4 90.9091 /CMSY10 rf /Fm 134[71 │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 │ │ │ │ 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 119.552 │ │ │ │ /CMBX12 rf /Fn 132[52 4[55 58 41 41 43 2[52 58 87 29 │ │ │ │ 55 1[29 58 2[48 58 46 1[51 10[79 4[79 7[40 9[49 4[29 │ │ │ │ 58[{}22 90.9091 /CMBX10 rf /Fo 130[48 1[48 48 48 48 48 │ │ │ │ 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ @@ -5115,17 +5104,17 @@ │ │ │ │ b Fp(data)h(\014elds.)558 4763 y Fo(typedef)45 b(struct)h(_I2OP)h(I2OP) │ │ │ │ f(;)558 4876 y(struct)g(_I2OP)g({)701 4989 y(int)190 │ │ │ │ b(value0)94 b(;)701 5101 y(int)190 b(value1)94 b(;)701 │ │ │ │ 5214 y(void)142 b(*value2)46 b(;)701 5327 y(I2OP)142 │ │ │ │ b(*next)g(;)558 5440 y(})47 b(;)1927 5656 y Fp(1)p eop │ │ │ │ end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 974 4 v │ │ │ │ -1156 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Decem)m(b)s(er)h │ │ │ │ -(20,)g(2018)p 2926 100 V 0 399 a Fm(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1010 4 v │ │ │ │ +1192 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(11,)h │ │ │ │ +(2021)p 2890 100 V 0 399 a Fm(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fi(Utilities)c Fm(metho)t(ds)0 │ │ │ │ 632 y Fp(This)g(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ (elong)f(to)h(the)0 744 y Fo(Utilities)28 b Fp(directory)-8 │ │ │ │ b(.)0 1028 y Fh(1.2.1)112 b Fg(CV)38 b Fh(:)g Fg(char)g │ │ │ │ Fh(v)m(ector)f(metho)s(ds)111 1230 y Fp(1.)46 b Fo(char)h(*)g(CVinit)f │ │ │ │ (\()i(int)f(n,)g(char)g(c)g(\))h(;)227 1385 y Fp(This)32 │ │ │ │ @@ -5181,17 +5170,17 @@ │ │ │ │ (val)f(\))i(;)227 5294 y Fp(This)26 b(is)h(the)g(allo)s(cator)i(and)d │ │ │ │ (initializer)j(metho)s(d)d(for)g Fo(double)f Fp(v)m(ectors.)41 │ │ │ │ b(Storage)28 b(for)f(an)f(arra)m(y)i(with)e(size)227 │ │ │ │ 5407 y Fo(n)k Fp(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled) │ │ │ │ g(with)g Fo(val)p Fp(.)40 b(A)31 b(p)s(oin)m(ter)f(to)h(the)g(arra)m(y) │ │ │ │ g(is)f(returned.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 974 4 v 1156 100 a Fo(Utilities)27 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2879 100 V 974 w Fp(3)111 399 y(2.)46 b Fo(double)g(*)i(DVinit2)e(\()h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1010 4 v 1192 100 a Fo(Utilities)27 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2843 100 V 1010 w Fp(3)111 399 y(2.)46 b Fo(double)g(*)i(DVinit2)e(\()h │ │ │ │ (int)g(n)g(\))h(;)227 545 y Fp(This)30 b(is)g(an)h(allo)s(cator)h │ │ │ │ (metho)s(d)e(for)g Fo(double)f Fp(v)m(ectors.)42 b(Storage)32 │ │ │ │ b(for)e(an)g(arra)m(y)h(with)f(size)i Fo(n)e Fp(is)g(found.)40 │ │ │ │ b(A)227 658 y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.) │ │ │ │ 39 b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e │ │ │ │ (garbage)h(in)g(the)f(arra)m(y)-8 b(.)111 838 y(3.)46 │ │ │ │ b Fo(void)h(DVfree)f(\()h(int)g(vec[])g(\))g(;)227 985 │ │ │ │ @@ -5243,20 +5232,20 @@ │ │ │ │ (alpha[3])d(*)j(x1[])227 4945 y(y2[])f(=)g(y2[])g(+)g(alpha[4])f(*)h │ │ │ │ (x0[])g(+)h(alpha[5])d(*)j(x1[])66 5148 y Fp(11.)e Fo(void)h(DVaxpy31)e │ │ │ │ (\()j(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ 5261 y(double)g(alpha,)g(double)g(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ 5407 y Fp(This)30 b(metho)s(d)g(computes)g(this)g(computation.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 974 4 v │ │ │ │ -1156 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Decem)m(b)s(er)h │ │ │ │ -(20,)g(2018)p 2926 100 V 227 399 a Fo(y0[])47 b(=)g(y0[])g(+)g │ │ │ │ -(alpha[0])f(*)h(x0[])227 511 y(y1[])g(=)g(y1[])g(+)g(alpha[1])f(*)h │ │ │ │ -(x0[])227 624 y(y2[])g(=)g(y2[])g(+)g(alpha[2])f(*)h(x0[])66 │ │ │ │ -850 y Fp(12.)f Fo(void)h(DVaxpy23)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1010 4 v │ │ │ │ +1192 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(11,)h │ │ │ │ +(2021)p 2890 100 V 227 399 a Fo(y0[])47 b(=)g(y0[])g(+)g(alpha[0])f(*)h │ │ │ │ +(x0[])227 511 y(y1[])g(=)g(y1[])g(+)g(alpha[1])f(*)h(x0[])227 │ │ │ │ +624 y(y2[])g(=)g(y2[])g(+)g(alpha[2])f(*)h(x0[])66 850 │ │ │ │ +y Fp(12.)f Fo(void)h(DVaxpy23)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ (double)h(y1[],)991 963 y(double)f(alpha,)g(double)g(x0[],)h(double)f │ │ │ │ (x1[],)g(double)g(x2[])h(\))g(;)227 1114 y Fp(This)30 │ │ │ │ b(metho)s(d)g(computes)g(this)g(computation.)227 1340 │ │ │ │ y Fo(y0[])47 b(=)g(y0[])g(+)g(alpha[0])f(*)h(x0[])g(+)h(alpha[1])d(*)j │ │ │ │ (x1[])e(+)i(alpha[2])d(*)j(x2[])227 1453 y(y1[])f(=)g(y1[])g(+)g │ │ │ │ (alpha[3])f(*)h(x0[])g(+)h(alpha[4])d(*)j(x1[])e(+)i(alpha[5])d(*)j │ │ │ │ (x2[])66 1679 y Fp(13.)e Fo(void)h(DVaxpy22)e(\()j(int)f(n,)g(double)f │ │ │ │ @@ -5287,17 +5276,17 @@ │ │ │ │ (int)g(index[],)e(double)i(alpha,)f(double)g(x[])h(\))g(;)227 │ │ │ │ 5294 y Fp(This)31 b(metho)s(d)f(scatteradds)i(a)g(scaled)g(m)m(ultiple) │ │ │ │ g(of)f Fo(n)g Fp(en)m(tries)h(from)f Fo(x[])f Fp(in)m(to)i │ │ │ │ Fo(y[])p Fp(,)f(i.e.,)i Fo(y[index[i]])227 5407 y(+=)47 │ │ │ │ b(alpha)g(*)g(x[i])29 b Fp(for)i Fo(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fp(.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 974 4 v 1156 100 a Fo(Utilities)27 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2879 100 V 974 w Fp(5)66 399 y(19.)46 b Fo(void)h(DVcompress)e(\()i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1010 4 v 1192 100 a Fo(Utilities)27 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2843 100 V 1010 w Fp(5)66 399 y(19.)46 b Fo(void)h(DVcompress)e(\()i │ │ │ │ (int)g(n1,)g(double)f(x1[],)h(double)f(y1[],)1086 511 │ │ │ │ y(int)h(n2,)g(double)f(x2[],)h(double)f(y2[])g(\))i(;)227 │ │ │ │ 672 y Fp(Giv)m(en)c(a)f(pair)g(of)f(arra)m(ys)i Fo(x1[n1])d │ │ │ │ Fp(and)h Fo(y1[n1])p Fp(,)i(\014ll)f Fo(x2[n2])e Fp(and)h │ │ │ │ Fo(y2[n2])f Fp(with)i(a)g(subset)f(of)h(the)227 785 y │ │ │ │ Fo(\(x1[j],y1[j])27 b Fp(en)m(tries)k(whose)g(distribution)e(is)i(an)f │ │ │ │ (appro)m(ximation.)66 993 y(20.)46 b Fo(void)h(DVcopy)f(\()h(int)g(n,)h │ │ │ │ @@ -5387,40 +5376,39 @@ │ │ │ │ Fo(row1)p Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col0)p │ │ │ │ Fp([)p Fo(i)p Fp(])277 5346 y Fo(sums)p Fp([)p Fo(2)p │ │ │ │ Fp(])j(=)687 5241 y Fe(n)p Fd(\000)p Fe(1)690 5266 y │ │ │ │ Ff(X)687 5445 y Fe(i)p Fc(=)p Fe(0)828 5346 y Fo(row2)p │ │ │ │ Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p │ │ │ │ Fp(])p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 974 4 v │ │ │ │ -1156 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Decem)m(b)s(er)h │ │ │ │ -(20,)g(2018)p 2926 100 V 66 399 a Fp(25.)46 b Fo(int)h(DVdot23)f(\()h │ │ │ │ -(int)g(n,)h(double)e(row0[],)f(double)i(row1[],)895 511 │ │ │ │ -y(double)g(col0[],)e(double)h(col1[],)g(double)g(col2[],)g(double)g │ │ │ │ -(sums[])g(\))i(;)227 667 y Fp(This)30 b(metho)s(d)g(computes)g(six)h │ │ │ │ -(dot)f(pro)s(ducts.)277 891 y Fo(sums)p Fp([)p Fo(0)p │ │ │ │ -Fp(])24 b(=)687 786 y Fe(n)p Fd(\000)p Fe(1)690 810 y │ │ │ │ -Ff(X)687 989 y Fe(i)p Fc(=)p Fe(0)828 891 y Fo(row0)p │ │ │ │ -Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p │ │ │ │ -Fp(])99 b Fo(sums)p Fp([)p Fo(1)p Fp(])24 b(=)2002 786 │ │ │ │ -y Fe(n)p Fd(\000)p Fe(1)2005 810 y Ff(X)2002 989 y Fe(i)p │ │ │ │ -Fc(=)p Fe(0)2143 891 y Fo(row0)p Fp([)p Fo(i)p Fp(])19 │ │ │ │ -b Fl(\003)i Fo(col1)p Fp([)p Fo(i)p Fp(])99 b Fo(sums)p │ │ │ │ -Fp([)p Fo(2)p Fp(])24 b(=)3317 786 y Fe(n)p Fd(\000)p │ │ │ │ -Fe(1)3320 810 y Ff(X)3317 989 y Fe(i)p Fc(=)p Fe(0)3457 │ │ │ │ -891 y Fo(row0)p Fp([)p Fo(i)p Fp(])c Fl(\003)g Fo(col2)p │ │ │ │ -Fp([)p Fo(i)p Fp(])277 1152 y Fo(sums)p Fp([)p Fo(3)p │ │ │ │ -Fp(])k(=)687 1047 y Fe(n)p Fd(\000)p Fe(1)690 1072 y │ │ │ │ -Ff(X)687 1250 y Fe(i)p Fc(=)p Fe(0)828 1152 y Fo(row1)p │ │ │ │ -Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p │ │ │ │ -Fp(])99 b Fo(sums)p Fp([)p Fo(4)p Fp(])24 b(=)2002 1047 │ │ │ │ -y Fe(n)p Fd(\000)p Fe(1)2005 1072 y Ff(X)2002 1250 y │ │ │ │ -Fe(i)p Fc(=)p Fe(0)2143 1152 y Fo(row1)p Fp([)p Fo(i)p │ │ │ │ -Fp(])19 b Fl(\003)i Fo(col1)p Fp([)p Fo(i)p Fp(])99 b │ │ │ │ -Fo(sums)p Fp([)p Fo(5)p Fp(])24 b(=)3317 1047 y Fe(n)p │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1010 4 v │ │ │ │ +1192 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(11,)h │ │ │ │ +(2021)p 2890 100 V 66 399 a Fp(25.)46 b Fo(int)h(DVdot23)f(\()h(int)g │ │ │ │ +(n,)h(double)e(row0[],)f(double)i(row1[],)895 511 y(double)g(col0[],)e │ │ │ │ +(double)h(col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ +667 y Fp(This)30 b(metho)s(d)g(computes)g(six)h(dot)f(pro)s(ducts.)277 │ │ │ │ +891 y Fo(sums)p Fp([)p Fo(0)p Fp(])24 b(=)687 786 y Fe(n)p │ │ │ │ +Fd(\000)p Fe(1)690 810 y Ff(X)687 989 y Fe(i)p Fc(=)p │ │ │ │ +Fe(0)828 891 y Fo(row0)p Fp([)p Fo(i)p Fp(])19 b Fl(\003)i │ │ │ │ +Fo(col0)p Fp([)p Fo(i)p Fp(])99 b Fo(sums)p Fp([)p Fo(1)p │ │ │ │ +Fp(])24 b(=)2002 786 y Fe(n)p Fd(\000)p Fe(1)2005 810 │ │ │ │ +y Ff(X)2002 989 y Fe(i)p Fc(=)p Fe(0)2143 891 y Fo(row0)p │ │ │ │ +Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col1)p Fp([)p Fo(i)p │ │ │ │ +Fp(])99 b Fo(sums)p Fp([)p Fo(2)p Fp(])24 b(=)3317 786 │ │ │ │ +y Fe(n)p Fd(\000)p Fe(1)3320 810 y Ff(X)3317 989 y Fe(i)p │ │ │ │ +Fc(=)p Fe(0)3457 891 y Fo(row0)p Fp([)p Fo(i)p Fp(])c │ │ │ │ +Fl(\003)g Fo(col2)p Fp([)p Fo(i)p Fp(])277 1152 y Fo(sums)p │ │ │ │ +Fp([)p Fo(3)p Fp(])k(=)687 1047 y Fe(n)p Fd(\000)p Fe(1)690 │ │ │ │ +1072 y Ff(X)687 1250 y Fe(i)p Fc(=)p Fe(0)828 1152 y │ │ │ │ +Fo(row1)p Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col0)p │ │ │ │ +Fp([)p Fo(i)p Fp(])99 b Fo(sums)p Fp([)p Fo(4)p Fp(])24 │ │ │ │ +b(=)2002 1047 y Fe(n)p Fd(\000)p Fe(1)2005 1072 y Ff(X)2002 │ │ │ │ +1250 y Fe(i)p Fc(=)p Fe(0)2143 1152 y Fo(row1)p Fp([)p │ │ │ │ +Fo(i)p Fp(])19 b Fl(\003)i Fo(col1)p Fp([)p Fo(i)p Fp(])99 │ │ │ │ +b Fo(sums)p Fp([)p Fo(5)p Fp(])24 b(=)3317 1047 y Fe(n)p │ │ │ │ Fd(\000)p Fe(1)3320 1072 y Ff(X)3317 1250 y Fe(i)p Fc(=)p │ │ │ │ Fe(0)3457 1152 y Fo(row1)p Fp([)p Fo(i)p Fp(])c Fl(\003)g │ │ │ │ Fo(col2)p Fp([)p Fo(i)p Fp(])66 1417 y(26.)46 b Fo(int)h(DVdot22)f(\()h │ │ │ │ (int)g(n,)h(double)e(row0[],)f(double)i(row1[],)895 1529 │ │ │ │ y(double)g(col0[],)e(double)h(col1[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ 1686 y Fp(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.) │ │ │ │ 277 1909 y Fo(sums)p Fp([)p Fo(0)p Fp(])24 b(=)687 1804 │ │ │ │ @@ -5478,17 +5466,17 @@ │ │ │ │ (double)i(col0[],)e(double)h(sums[])h(\))g(;)227 5123 │ │ │ │ y Fp(This)30 b(metho)s(d)g(computes)g(one)h(dot)f(pro)s(duct.)277 │ │ │ │ 5346 y Fo(sums)p Fp([)p Fo(0)p Fp(])24 b(=)687 5241 y │ │ │ │ Fe(n)p Fd(\000)p Fe(1)690 5266 y Ff(X)687 5445 y Fe(i)p │ │ │ │ Fc(=)p Fe(0)828 5346 y Fo(row0)p Fp([)p Fo(i)p Fp(])19 │ │ │ │ b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p Fp(])p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 974 4 v 1156 100 a Fo(Utilities)27 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2879 100 V 974 w Fp(7)66 399 y(31.)46 b Fo(int)h(DVdoti)f(\()i(int)f │ │ │ │ +TeXDict begin 7 6 bop 91 100 1010 4 v 1192 100 a Fo(Utilities)27 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2843 100 V 1010 w Fp(7)66 399 y(31.)46 b Fo(int)h(DVdoti)f(\()i(int)f │ │ │ │ (n,)g(double)f(y[],)h(int)f(index[],)g(double)g(x[])h(\))g(;)227 │ │ │ │ 616 y Fp(This)30 b(metho)s(d)g(returns)f(the)h(indexed)g(dot)h(pro)s │ │ │ │ (duct)2075 510 y Fe(n)p Fd(\000)p Fe(1)2078 535 y Ff(X)2075 │ │ │ │ 714 y Fe(i)p Fc(=)p Fe(0)2216 616 y Fo(y)p Fp([)p Fo(index)p │ │ │ │ Fp([)p Fo(i)p Fp(]])19 b Fl(\003)i Fo(x)p Fp([)p Fo(i)p │ │ │ │ Fp(].)66 862 y(32.)46 b Fo(void)h(DVfill)f(\()h(int)g(n,)h(double)e │ │ │ │ (y[],)g(double)g(val)h(\))h(;)227 1009 y Fp(This)30 b(metho)s(d)g │ │ │ │ @@ -5542,21 +5530,21 @@ │ │ │ │ Fp(,)34 b Fo(start)227 5079 y(+)48 b(3*inc)p Fp(,)29 │ │ │ │ b(etc.)66 5260 y(43.)46 b Fo(void)h(DVscale)f(\()h(int)g(n,)g(double)f │ │ │ │ (y[],)h(double)f(alpha)g(\))i(;)227 5407 y Fp(This)30 │ │ │ │ b(metho)s(d)g(scales)h(a)g(v)m(ector)h Fo(y[])d Fp(b)m(y)i │ │ │ │ Fo(alpha)p Fp(,)e(i.e.,)j Fo(y[i])46 b(*=)h(alpha)p Fp(.)40 │ │ │ │ b(for)30 b Fo(0)47 b(<=)g(i)h(<)f(n)p Fp(.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 974 4 v │ │ │ │ -1156 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Decem)m(b)s(er)h │ │ │ │ -(20,)g(2018)p 2926 100 V 66 399 a Fp(44.)46 b Fo(void)h(DVscale2)e(\()j │ │ │ │ -(int)f(n,)g(double)f(x[],)h(double)f(y[],)991 511 y(double)g(a,)h │ │ │ │ -(double)f(b,)h(double)g(c,)g(double)f(d)h(\))h(;)227 │ │ │ │ -668 y Fp(This)30 b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g │ │ │ │ -Fo(y[])d Fp(b)m(y)h(a)h(2)21 b Fl(\002)f Fp(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1010 4 v │ │ │ │ +1192 w Fo(Utilities)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(11,)h │ │ │ │ +(2021)p 2890 100 V 66 399 a Fp(44.)46 b Fo(void)h(DVscale2)e(\()j(int)f │ │ │ │ +(n,)g(double)f(x[],)h(double)f(y[],)991 511 y(double)g(a,)h(double)f │ │ │ │ +(b,)h(double)g(c,)g(double)f(d)h(\))h(;)227 668 y Fp(This)30 │ │ │ │ +b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g Fo(y[])d │ │ │ │ +Fp(b)m(y)h(a)h(2)21 b Fl(\002)f Fp(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ 800 y Ff(")971 887 y Fo(x)p Fp([)p Fo(0)p Fp(])83 b Fb(:)15 │ │ │ │ b(:)g(:)84 b Fo(x)p Fp([)p Fo(n)20 b Fl(\000)g Fo(1)p │ │ │ │ Fp(])971 1000 y Fo(y)p Fp([)p Fo(0)p Fp(])83 b Fb(:)15 │ │ │ │ b(:)g(:)84 b Fo(y)p Fp([)p Fo(n)20 b Fl(\000)g Fo(1)p │ │ │ │ Fp(])1735 800 y Ff(#)1809 944 y Fp(:=)1930 800 y Ff(")2020 │ │ │ │ 887 y Fo(a)83 b(b)2020 1000 y(c)g(d)2240 800 y Ff(#)15 │ │ │ │ b(")2393 887 y Fo(x)p Fp([)p Fo(0)p Fp(])83 b Fb(:)15 │ │ │ │ @@ -5618,17 +5606,17 @@ │ │ │ │ h(seed)g(\))g(;)227 5294 y Fp(This)23 b(metho)s(d)g(sh)m(u\017es)g(the) │ │ │ │ g(\014rst)g Fo(n)g Fp(en)m(tries)h(in)f Fo(y[])p Fp(.)38 │ │ │ │ b(The)23 b(v)-5 b(alue)24 b Fo(seed)e Fp(is)h(the)h(seed)g(to)g(a)g │ │ │ │ (random)e(n)m(um)m(b)s(er)227 5407 y(generator,)32 b(and)e(one)h(can)f │ │ │ │ (get)i(rep)s(eatable)f(b)s(eha)m(vior)f(b)m(y)h(rep)s(eating)f │ │ │ │ Fo(seed)p Fp(.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 974 4 v 1156 100 a Fo(Utilities)27 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2879 100 V 974 w Fp(9)0 399 y Fh(1.2.3)112 b Fg(ZV)38 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1010 4 v 1192 100 a Fo(Utilities)27 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2843 100 V 1010 w Fp(9)0 399 y Fh(1.2.3)112 b Fg(ZV)38 │ │ │ │ b Fh(:)g Fg(double)53 b(complex)90 b Fh(v)m(ector)37 │ │ │ │ b(metho)s(ds)0 605 y Fp(A)22 b(double)g(precision)g(complex)g(v)m │ │ │ │ (ector)i(of)e(length)g Fo(n)g Fp(is)g(simply)f(a)i(double)e(precision)h │ │ │ │ (v)m(ector)i(of)e(length)g Fo(2n)p Fp(.)37 b(There)0 │ │ │ │ 718 y(is)28 b(a)h(separate)g Fo(ZVinit\(\))d Fp(allo)s(cator)31 │ │ │ │ b(and)c(initializer)j(metho)s(d,)f(since)f(it)h(requires)f(a)h(real)g │ │ │ │ (and)e(imaginary)i(part)0 831 y(to)g(\014ll)g(the)g(v)m(ector.)42 │ │ │ │ @@ -5695,18 +5683,18 @@ │ │ │ │ 5294 y Fp(This)33 b(metho)s(d)h(adds)f(a)h(scaled)g(m)m(ultiple)h(of)f │ │ │ │ (t)m(w)m(o)h(v)m(ectors)g Fo(x[])e Fp(and)h Fo(y[])f │ │ │ │ Fp(to)h(another)g(v)m(ector)i Fo(z[])p Fp(,)e(i.e.,)227 │ │ │ │ 5407 y(i.e.,)e Fo(z[i])47 b(+=)g(\(areal,aimag\))d(*)j(x[i])g(+)h │ │ │ │ (\(breal,bimag\))c(*)j(y[i])29 b Fp(for)h Fo(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ Fp(.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 111 399 a Fp(8.)46 b Fo(void)h(ZVaxpy33)e(\()j │ │ │ │ -(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 111 399 a Fp(8.)46 b Fo(void)h(ZVaxpy33)e(\()j(int) │ │ │ │ +f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ 511 y(double)g(alpha[],)g(double)g(x0[],)g(double)g(x1[],)g(double)h │ │ │ │ (x2[])f(\))i(;)227 661 y Fp(This)30 b(metho)s(d)g(computes)g(the)h │ │ │ │ (follo)m(wing.)227 881 y Fo(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j │ │ │ │ (x0[])f(+)g(alpha[2:3])e(*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])227 │ │ │ │ 994 y(y1[])g(=)g(y1[])g(+)g(alpha[6:7])e(*)j(x0[])f(+)g(alpha[8:9])e(*) │ │ │ │ i(x1[])g(+)h(alpha[10:11])c(*)j(x2[])227 1107 y(y2[])g(=)g(y2[])g(+)g │ │ │ │ (alpha[12:13])e(*)i(x0[])g(+)g(alpha[14:15])e(*)i(x1[])g(+)g │ │ │ │ @@ -5741,17 +5729,17 @@ │ │ │ │ (int)f(n,)g(double)f(y0[],)g(double)h(y1[],)991 4925 │ │ │ │ y(double)f(alpha[],)g(double)g(x0[])g(\))i(;)227 5074 │ │ │ │ y Fp(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ 5294 y Fo(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])227 │ │ │ │ 5407 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(11)66 399 y(14.)46 b Fo(void)h(ZVaxpy13)e(\()j(int) │ │ │ │ +TeXDict begin 11 10 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(11)66 399 y(14.)46 b Fo(void)h(ZVaxpy13)e(\()j(int) │ │ │ │ f(n,)g(double)f(y0[],)991 511 y(double)g(alpha[],)g(double)g(x0[],)g │ │ │ │ (double)g(x1[],)g(double)h(x2[])f(\))i(;)227 667 y Fp(This)30 │ │ │ │ b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 907 │ │ │ │ y Fo(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ (*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])66 1146 y Fp(15.)f │ │ │ │ Fo(void)h(ZVaxpy12)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h │ │ │ │ (alpha[],)e(double)h(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ @@ -5798,17 +5786,17 @@ │ │ │ │ b Fl(\003)i Fo(x)p Fp([)p Fo(i)p Fp(].)66 5138 y(22.)46 │ │ │ │ b Fo(int)h(ZVdotU33)f(\()h(int)g(n,)g(double)f(row0[],)g(double)g │ │ │ │ (row1[],)g(double)g(row2[],)895 5251 y(double)h(col0[],)e(double)h │ │ │ │ (col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ 5407 y Fp(This)30 b(metho)s(d)g(computes)g(nine)g(dot)h(pro)s(ducts.)p │ │ │ │ eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 277 462 a Fo(sums)p Fp([)p Fo(0)p │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 277 462 a Fo(sums)p Fp([)p Fo(0)p │ │ │ │ Fp(;)15 b Fo(1)p Fp(])25 b(=)776 356 y Fe(n)p Fd(\000)p │ │ │ │ Fe(1)778 381 y Ff(X)776 560 y Fe(i)p Fc(=)p Fe(0)916 │ │ │ │ 462 y Fo(row0)p Fp([)p Fo(i)p Fp(])20 b Fl(\003)g Fo(col0)p │ │ │ │ Fp([)p Fo(i)p Fp(])230 b Fo(sums)p Fp([)p Fo(2)24 b Fp(:)h │ │ │ │ Fo(3)p Fp(])h(=)2345 356 y Fe(n)p Fd(\000)p Fe(1)2347 │ │ │ │ 381 y Ff(X)2345 560 y Fe(i)p Fc(=)p Fe(0)2485 462 y Fo(row0)p │ │ │ │ Fp([)p Fo(i)p Fp(])20 b Fl(\003)g Fo(col1)p Fp([)p Fo(i)p │ │ │ │ @@ -5909,17 +5897,17 @@ │ │ │ │ Fp(])19 b Fl(\003)i Fo(col1)p Fp([)p Fo(i)p Fp(])98 b │ │ │ │ Fo(sums)p Fp([)p Fo(10)24 b Fp(:)i Fo(11)p Fp(])f(=)2345 │ │ │ │ 5241 y Fe(n)p Fd(\000)p Fe(1)2347 5266 y Ff(X)2345 5445 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)2485 5346 y Fo(row1)p Fp([)p Fo(i)p │ │ │ │ Fp(])20 b Fl(\003)g Fo(col2)p Fp([)p Fo(i)p Fp(])p eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(13)66 399 y(26.)46 b Fo(int)h(ZVdotU22)f(\()h(int)g │ │ │ │ +TeXDict begin 13 12 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(13)66 399 y(26.)46 b Fo(int)h(ZVdotU22)f(\()h(int)g │ │ │ │ (n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(sums[])g(\))i(;)227 681 │ │ │ │ y Fp(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ 918 y Fo(sums)p Fp([)p Fo(0)24 b Fp(:)i Fo(1)p Fp(])f(=)811 │ │ │ │ 813 y Fe(n)p Fd(\000)p Fe(1)814 838 y Ff(X)811 1017 y │ │ │ │ Fe(i)p Fc(=)p Fe(0)952 918 y Fo(row0)p Fp([)p Fo(i)p │ │ │ │ Fp(])19 b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p Fp(])98 b │ │ │ │ @@ -5982,17 +5970,17 @@ │ │ │ │ Fp(])19 b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p Fp(])66 5125 │ │ │ │ y(31.)46 b Fo(int)h(ZVdotC33)f(\()h(int)g(n,)g(double)f(row0[],)g │ │ │ │ (double)g(row1[],)g(double)g(row2[],)895 5238 y(double)h(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ 5407 y Fp(This)30 b(metho)s(d)g(computes)g(nine)g(dot)h(pro)s(ducts.)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 277 462 a Fo(sums)p Fp([)p Fo(0)p │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 277 462 a Fo(sums)p Fp([)p Fo(0)p │ │ │ │ Fp(;)15 b Fo(1)p Fp(])25 b(=)776 356 y Fe(n)p Fd(\000)p │ │ │ │ Fe(1)778 381 y Ff(X)776 560 y Fe(i)p Fc(=)p Fe(0)p 916 │ │ │ │ 384 290 4 v 916 462 a Fo(row0)p Fp([)p Fo(i)p Fp(])20 │ │ │ │ b Fl(\003)g Fo(col0)p Fp([)p Fo(i)p Fp(])230 b Fo(sums)p │ │ │ │ Fp([)p Fo(2)24 b Fp(:)h Fo(3)p Fp(])h(=)2345 356 y Fe(n)p │ │ │ │ Fd(\000)p Fe(1)2347 381 y Ff(X)2345 560 y Fe(i)p Fc(=)p │ │ │ │ Fe(0)p 2485 384 V 2485 462 a Fo(row0)p Fp([)p Fo(i)p │ │ │ │ @@ -6098,17 +6086,17 @@ │ │ │ │ b Fl(\003)i Fo(col1)p Fp([)p Fo(i)p Fp(])98 b Fo(sums)p │ │ │ │ Fp([)p Fo(10)24 b Fp(:)i Fo(11)p Fp(])f(=)2345 5241 y │ │ │ │ Fe(n)p Fd(\000)p Fe(1)2347 5266 y Ff(X)2345 5445 y Fe(i)p │ │ │ │ Fc(=)p Fe(0)p 2485 5268 V 2485 5346 a Fo(row1)p Fp([)p │ │ │ │ Fo(i)p Fp(])20 b Fl(\003)g Fo(col2)p Fp([)p Fo(i)p Fp(])p │ │ │ │ eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(15)66 399 y(35.)46 b Fo(int)h(ZVdotC22)f(\()h(int)g │ │ │ │ +TeXDict begin 15 14 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(15)66 399 y(35.)46 b Fo(int)h(ZVdotC22)f(\()h(int)g │ │ │ │ (n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(sums[])g(\))i(;)227 669 │ │ │ │ y Fp(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ 895 y Fo(sums)p Fp([)p Fo(0)24 b Fp(:)i Fo(1)p Fp(])f(=)811 │ │ │ │ 789 y Fe(n)p Fd(\000)p Fe(1)814 814 y Ff(X)811 993 y │ │ │ │ Fe(i)p Fc(=)p Fe(0)p 952 817 290 4 v 952 895 a Fo(row0)p │ │ │ │ Fp([)p Fo(i)p Fp(])19 b Fl(\003)i Fo(col0)p Fp([)p Fo(i)p │ │ │ │ @@ -6176,18 +6164,18 @@ │ │ │ │ (y[],)h(double)f(x[],)g(int)h(index[])f(\))i(;)227 5047 │ │ │ │ y(y[i])f(=)g(x[index[i]])28 b Fp(for)i Fo(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fp(.)66 5249 y(41.)f Fo(double)g(ZVmaxabs)g(\()h(int)g(n,)g(double)g │ │ │ │ (y[])f(\))i(;)227 5407 y Fp(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ (maxim)m(um)h(magnitude)f(of)h(en)m(tries)g(in)f Fo(y[0:n-1])p │ │ │ │ Fp(.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fp(16)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 66 399 a Fp(42.)46 b Fo(double)g(ZVminabs)g │ │ │ │ -(\()h(int)g(n,)g(double)g(y[])f(\))i(;)227 560 y Fp(This)30 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fp(16)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 66 399 a Fp(42.)46 b Fo(double)g(ZVminabs)g(\()h │ │ │ │ +(int)g(n,)g(double)g(y[])f(\))i(;)227 560 y Fp(This)30 │ │ │ │ b(metho)s(d)g(returns)f(the)h(minim)m(um)g(magnitude)g(of)h(en)m(tries) │ │ │ │ g(in)f Fo(y[0:n-1])p Fp(.)66 771 y(43.)46 b Fo(void)h(ZVscale)f(\()h │ │ │ │ (int)g(n,)g(double)f(y[],)h(double)f(areal,)g(double)g(aimag)h(\))g(;) │ │ │ │ 227 933 y Fp(This)29 b(metho)s(d)f(scales)i(a)g(v)m(ector)g │ │ │ │ Fo(y[])e Fp(b)m(y)h Fo(\(areal,aimag\))p Fp(,)d(i.e.,)31 │ │ │ │ b Fo(y[i])46 b(*=)i(\(areal,aimag\))p Fp(.)36 b(for)29 │ │ │ │ b Fo(0)48 b(<=)227 1046 y(i)g(<)f(n)p Fp(.)66 1257 y(44.)f │ │ │ │ @@ -6243,17 +6231,17 @@ │ │ │ │ y(4.)46 b Fo(void)h(IVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,)g(int)g │ │ │ │ (y[])g(\))g(;)227 5294 y Fp(This)27 b(metho)s(d)g(prin)m(ts)g │ │ │ │ Fo(n)g Fp(en)m(tries)i(in)e Fo(y[])g Fp(to)h(\014le)g │ │ │ │ Fo(fp)p Fp(.)39 b(The)27 b(format)h(is)f(new)h(line)f(follo)m(w)m(ed)j │ │ │ │ (b)m(y)d(lines)h(of)g(\014v)m(e)227 5407 y Fo(int)p Fp('s)i(in)g │ │ │ │ Fo(")47 b(\0454d")30 b Fp(format.)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(17)111 399 y(5.)46 b Fo(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ +TeXDict begin 17 16 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(17)111 399 y(5.)46 b Fo(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ (*fp,)h(int)g(n,)g(int)g(y[],)g(int)g(column,)e(int)i(*pierr)f(\))i(;) │ │ │ │ 227 549 y Fp(This)21 b(metho)s(d)g(prin)m(ts)g Fo(n)g │ │ │ │ Fp(en)m(tries)h(in)g Fo(y[])e Fp(to)i(\014le)g Fo(fp)p │ │ │ │ Fp(.)37 b(The)21 b(metho)s(d)g(splices)h(v)m(ectors)h(together)g(or)f │ │ │ │ (naturally)227 662 y(breaks)33 b(the)h(large)g(v)m(ectors)h(in)m(to)f │ │ │ │ (lines.)49 b(The)33 b Fo(column)f Fp(v)-5 b(alue)33 b(is)h(the)f │ │ │ │ (presen)m(t)g(lo)s(cation.)51 b(If)33 b(the)g(prin)m(ted)227 │ │ │ │ @@ -6317,19 +6305,19 @@ │ │ │ │ Fo(ploc)p Fp(.)66 5144 y(15.)46 b Fo(int)h(IVmaxabs)f(\()h(int)g(n,)g │ │ │ │ (int)g(y[],)g(int)g(*ploc)f(\))i(;)227 5294 y Fp(This)c(metho)s(d)g │ │ │ │ (returns)f(the)i(maxim)m(um)f(magnitude)h(of)g(en)m(tries)g(in)f │ │ │ │ Fo(y[0:n-1])e Fp(and)i(puts)g(the)h(\014rst)227 5407 │ │ │ │ y(lo)s(cation)32 b(where)e(it)h(w)m(as)g(found)e(in)m(to)i(the)g │ │ │ │ (address)e Fo(ploc)p Fp(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fp(18)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 66 399 a Fp(16.)46 b Fo(int)h(IVmin)g(\()g │ │ │ │ -(int)g(n,)g(int)g(y[],)g(int)g(*ploc)f(\))h(;)227 554 │ │ │ │ -y Fp(This)25 b(metho)s(d)h(returns)f(the)h(minim)m(um)f(en)m(try)h(in)g │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fp(18)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 66 399 a Fp(16.)46 b Fo(int)h(IVmin)g(\()g(int)g │ │ │ │ +(n,)g(int)g(y[],)g(int)g(*ploc)f(\))h(;)227 554 y Fp(This)25 │ │ │ │ +b(metho)s(d)h(returns)f(the)h(minim)m(um)f(en)m(try)h(in)g │ │ │ │ Fo(y[0:n-1])d Fp(and)j(puts)f(the)h(\014rst)f(lo)s(cation)j(where)d(it) │ │ │ │ i(w)m(as)227 667 y(found)i(in)m(to)j(the)e(address)g │ │ │ │ Fo(ploc)p Fp(.)66 866 y(17.)46 b Fo(int)h(IVminabs)f(\()h(int)g(n,)g │ │ │ │ (int)g(y[],)g(int)g(*ploc)f(\))i(;)227 1022 y Fp(This)29 │ │ │ │ b(metho)s(d)f(returns)g(the)h(minim)m(um)f(magnitude)i(of)f(en)m(tries) │ │ │ │ h(in)e Fo(y[0:n-1])f Fp(and)i(puts)f(the)h(\014rst)g(lo)s(ca-)227 │ │ │ │ 1135 y(tion)i(where)f(it)h(w)m(as)g(found)e(in)m(to)i(the)g(address)e │ │ │ │ @@ -6383,17 +6371,17 @@ │ │ │ │ 5294 y Fp(This)30 b(is)g(the)g(allo)s(cator)i(and)e(initializer)i │ │ │ │ (metho)s(d)d(for)h Fo(float)f Fp(v)m(ectors.)42 b(Storage)31 │ │ │ │ b(for)f(an)g(arra)m(y)g(with)g(size)227 5407 y Fo(n)g │ │ │ │ Fp(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)g(with)g │ │ │ │ Fo(val)p Fp(.)40 b(A)31 b(p)s(oin)m(ter)f(to)h(the)g(arra)m(y)g(is)f │ │ │ │ (returned.)p eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(19)111 399 y(2.)46 b Fo(float)h(*)g(FVinit2)f(\()h │ │ │ │ +TeXDict begin 19 18 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(19)111 399 y(2.)46 b Fo(float)h(*)g(FVinit2)f(\()h │ │ │ │ (int)g(n)h(\))f(;)227 549 y Fp(This)32 b(is)h(an)f(allo)s(cator)j │ │ │ │ (metho)s(d)d(for)h Fo(float)e Fp(v)m(ectors.)49 b(Storage)34 │ │ │ │ b(for)f(an)f(arra)m(y)h(with)g(size)g Fo(n)g Fp(is)f(found.)47 │ │ │ │ b(A)227 662 y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.) │ │ │ │ 39 b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e │ │ │ │ (garbage)h(in)g(the)f(arra)m(y)-8 b(.)111 850 y(3.)46 │ │ │ │ b Fo(void)h(FVfree)f(\()h(int)g(vec[])g(\))g(;)227 1001 │ │ │ │ @@ -6453,19 +6441,19 @@ │ │ │ │ g(index[])f(\))h(;)227 5068 y(y[i])g(=)g(x[index[i]])28 │ │ │ │ b Fp(for)i Fo(0)47 b(<=)g(i)h(<)f(n)p Fp(.)66 5257 y(14.)f │ │ │ │ Fo(void)h(FVgatherAddZero)d(\()j(int)g(n,)g(float)f(y[],)h(float)f │ │ │ │ (x[],)h(int)g(index[])f(\))h(;)227 5407 y(y[i])g(+=)g(x[index[i]])27 │ │ │ │ b Fp(and)j Fo(x[index[i]])45 b(=)i(0)30 b Fp(for)g Fo(0)48 │ │ │ │ b(<=)f(i)h(<)f(n)p Fp(.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fp(20)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 66 399 a Fp(15.)46 b Fo(void)h(FVgatherZero)d │ │ │ │ -(\()k(int)f(n,)g(float)f(y[],)h(float)f(x[],)h(int)g(index[])f(\))h(;) │ │ │ │ -227 549 y(y[i])g(=)g(x[index[i]])28 b Fp(and)h Fo(x[index[i]])45 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fp(20)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 66 399 a Fp(15.)46 b Fo(void)h(FVgatherZero)d(\()k │ │ │ │ +(int)f(n,)g(float)f(y[],)h(float)f(x[],)h(int)g(index[])f(\))h(;)227 │ │ │ │ +549 y(y[i])g(=)g(x[index[i]])28 b Fp(and)h Fo(x[index[i]])45 │ │ │ │ b(=)j(0)66 738 y Fp(16.)e Fo(void)h(FVinvPerm)e(\()j(int)f(n,)g(float)f │ │ │ │ (y[],)h(int)g(index[])e(\))j(;)227 888 y Fp(This)26 b(metho)s(d)g(p)s │ │ │ │ (erm)m(utes)g(the)g(v)m(ector)j(y)d(as)h(follo)m(ws.)40 │ │ │ │ b(i.e.,)29 b Fo(y[index[i]])45 b(:=)i(y[i])p Fp(.)38 │ │ │ │ b(See)27 b Fo(FVperm\(\))d Fp(for)227 1001 y(a)31 b(similar)g │ │ │ │ (function.)66 1189 y(17.)46 b Fo(float)h(FVmax)f(\()h(int)g(n,)h(float) │ │ │ │ e(y[],)h(int)f(*ploc)h(\))g(;)227 1340 y Fp(This)36 b(metho)s(d)h │ │ │ │ @@ -6518,17 +6506,17 @@ │ │ │ │ (int)g(index[],)e(float)h(x[])h(\))h(;)227 5294 y Fp(This)27 │ │ │ │ b(metho)s(d)g(scatters)i Fo(n)f Fp(en)m(tries)g(of)g │ │ │ │ Fo(x[])f Fp(in)m(to)i Fo(y[])e Fp(as)h(follo)m(ws,)i │ │ │ │ Fo(y[index[i]])44 b(=)k(x[i])26 b Fp(and)i Fo(x[i])e │ │ │ │ Fp(for)227 5407 y Fo(0)48 b(<=)f(i)g(<)h(n)p Fp(.)p eop │ │ │ │ end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(21)66 399 y(27.)46 b Fo(void)h(FVsub)f(\()i(int)f │ │ │ │ +TeXDict begin 21 20 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(21)66 399 y(27.)46 b Fo(void)h(FVsub)f(\()i(int)f │ │ │ │ (n,)g(float)f(y[],)h(float)f(x[])h(\))h(;)227 546 y Fp(This)30 │ │ │ │ b(metho)s(d)g(subtracts)g Fo(n)g Fp(en)m(tries)h(from)f │ │ │ │ Fo(x[])f Fp(to)j Fo(y[])p Fp(,)d(i.e.,)j Fo(y[i])47 b(-=)g(x[i])29 │ │ │ │ b Fp(for)h Fo(0)48 b(<=)f(i)g(<)h(n)p Fp(.)66 729 y(28.)e │ │ │ │ Fo(float)h(FVsum)f(\()h(int)g(n,)h(float)e(y[])h(\))g(;)227 │ │ │ │ 877 y Fp(This)30 b(metho)s(d)g(returns)f(the)h(sum)g(of)g(the)h │ │ │ │ (\014rst)f Fo(n)g Fp(en)m(tries)h(in)f(the)g(v)m(ector)i │ │ │ │ @@ -6591,18 +6579,18 @@ │ │ │ │ Fp(is)f(found)f(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)h(with)f │ │ │ │ Fo(NULL)p Fp(.)f(A)i(p)s(oin)m(ter)f(to)h(the)g(arra)m(y)g(is)f │ │ │ │ (returned.)111 5259 y(2.)46 b Fo(void)h(PDVfree)f(\()h(double)f │ │ │ │ (**p_vec)g(\))i(;)227 5407 y Fp(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ (storage)h(tak)m(en)f(b)m(y)f Fo(p)p 1993 5407 V 34 w(vec[])p │ │ │ │ Fp(.)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fp(22)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 111 399 a Fp(3.)46 b Fo(void)h(PDVcopy)f(\()h │ │ │ │ -(int)g(n,)g(double)f(*p_y[],)g(double)g(*p_x[])g(\))i(;)227 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fp(22)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 111 399 a Fp(3.)46 b Fo(void)h(PDVcopy)f(\()h(int)g │ │ │ │ +(n,)g(double)f(*p_y[],)g(double)g(*p_x[])g(\))i(;)227 │ │ │ │ 571 y Fp(This)30 b(metho)s(d)g(copies)h Fo(n)f Fp(en)m(tries)h(from)f │ │ │ │ Fo(p)p 1672 571 29 4 v 34 w(x[])g Fp(to)h Fo(p)p 2039 │ │ │ │ 571 V 34 w(y[])p Fp(,)e(i.e.,)j Fo(p)p 2491 571 V 34 │ │ │ │ w(y[i])47 b(=)g(p)p 2907 571 V 34 w(x[i])30 b Fp(for)g │ │ │ │ Fo(0)47 b(<=)g(i)h(<)f(n)p Fp(.)111 803 y(4.)f Fo(void)h(PDVsetup)e(\() │ │ │ │ j(int)f(n,)g(int)g(sizes[],)e(double)i(vec[],)f(double)g(*p_vec[])f(\)) │ │ │ │ j(;)227 975 y Fp(This)29 b(metho)s(d)g(sets)h(the)g(en)m(tries)g(of)g │ │ │ │ @@ -6659,17 +6647,17 @@ │ │ │ │ Fo(p)p 1544 5294 V 34 w(vec[])e Fp(as)i(p)s(oin)m(ters)f(in)m(to)i │ │ │ │ Fo(vec[])d Fp(giv)m(en)i(b)m(y)g(the)g Fo(sizes[])d Fp(v)m(ector,)227 │ │ │ │ 5407 y(i.e.,)32 b Fo(p)p 453 5407 V 34 w(vec[0])46 b(=)i(vec)p │ │ │ │ Fp(,)29 b(and)h Fo(p)p 1340 5407 V 34 w(vec[i])46 b(=)i(p)p │ │ │ │ 1852 5407 V 34 w(vec[i-1])d(+)j(sizes[i-1])27 b Fp(for)k │ │ │ │ Fo(0)47 b(<)g(i)h(<)f(n)p Fp(.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(23)0 399 y Fh(1.2.9)112 b(Sorting)38 │ │ │ │ +TeXDict begin 23 22 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(23)0 399 y Fh(1.2.9)112 b(Sorting)38 │ │ │ │ b(routines)0 591 y Fn(V)-9 b(alidation)35 b(routines)111 │ │ │ │ 784 y Fp(1.)46 b Fo(int)h(IVisascending)d(\()k(int)f(n,)g(int)g(ivec[]) │ │ │ │ f(\))h(;)227 897 y(int)g(IVisdescending)d(\()k(int)e(n,)i(int)f(ivec[]) │ │ │ │ f(\))h(;)227 1044 y Fp(These)29 b(metho)s(ds)f(returns)f │ │ │ │ Fo(1)h Fp(if)h(the)g(arra)m(y)g Fo(ivec[])e Fp(is)i(in)f(ascending)h │ │ │ │ (or)g(descending)f(order)g(and)g(returns)227 1156 y Fo(0)i │ │ │ │ Fp(otherwise.)111 1337 y(2.)46 b Fo(int)h(DVisascending)d(\()k(int)f │ │ │ │ @@ -6719,19 +6707,19 @@ │ │ │ │ b(metho)s(ds)g(sort)g(the)h(arra)m(y)f Fo(ivec1[])e Fp(in)m(to)k │ │ │ │ (ascending)e(or)g(descending)g(order)g(using)g(an)g(insertion)227 │ │ │ │ 5294 y(sort)43 b(and)e(p)s(erm)m(utes)h(the)g(companion)h(arra)m(ys)f │ │ │ │ Fo(ivec2[])e Fp(and)i Fo(dvec[])f Fp(in)g(the)i(same)f(fashion.)76 │ │ │ │ b(The)227 5407 y Fo(dvec[])29 b Fp(arra)m(y)i(is)f(double)g(precision)h │ │ │ │ (complex.)p eop end │ │ │ │ %%Page: 24 24 │ │ │ │ -TeXDict begin 24 23 bop 0 100 a Fp(24)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 111 399 a Fp(7.)46 b Fo(void)h(DVisortUp)e(\() │ │ │ │ -j(int)f(n,)g(double)f(dvec[])g(\))h(;)227 511 y(void)g(DVisortDown)e │ │ │ │ -(\()i(int)g(n,)g(double)f(dvec[])g(\))i(;)227 656 y Fp(These)39 │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fp(24)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 111 399 a Fp(7.)46 b Fo(void)h(DVisortUp)e(\()j │ │ │ │ +(int)f(n,)g(double)f(dvec[])g(\))h(;)227 511 y(void)g(DVisortDown)e(\() │ │ │ │ +i(int)g(n,)g(double)f(dvec[])g(\))i(;)227 656 y Fp(These)39 │ │ │ │ b(metho)s(ds)g(sort)g(a)g Fo(double)f Fp(arra)m(y)h(in)m(to)h │ │ │ │ (ascending)g(or)f(descending)g(order)f(using)h(an)g(insertion)227 │ │ │ │ 769 y(sort.)111 945 y(8.)46 b Fo(void)h(DV2isortUp)e(\()i(int)g(n,)g │ │ │ │ (double)g(dvec1[],)e(double)h(dvec2[])g(\))h(;)227 1058 │ │ │ │ y(void)g(DV2isortDown)d(\()k(int)f(n,)g(double)f(dvec1[],)g(double)g │ │ │ │ (dvec2[])f(\))j(;)227 1202 y Fp(These)29 b(metho)s(ds)g(sort)g(the)h │ │ │ │ (arra)m(y)f Fo(dvec1[])e Fp(in)m(to)k(ascending)e(or)g(descending)g │ │ │ │ @@ -6785,17 +6773,17 @@ │ │ │ │ 5181 y Fp(These)30 b(metho)s(ds)e(sort)i(the)g(arra)m(y)g │ │ │ │ Fo(ivec1[])d Fp(in)m(to)k(ascending)e(or)h(descending)f(order)g(using)g │ │ │ │ (a)h(quic)m(k)g(sort)227 5294 y(and)j(p)s(erm)m(utes)g(the)g(companion) │ │ │ │ g(arra)m(ys)h Fo(ivec2[])d Fp(and)i Fo(dvec[])f Fp(in)h(the)g(same)h │ │ │ │ (fashion.)49 b(The)33 b Fo(dvec[])227 5407 y Fp(arra)m(y)e(is)g(double) │ │ │ │ e(precision)i(complex.)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(25)111 399 y(7.)46 b Fo(void)h(DVqsortUp)e(\()j │ │ │ │ +TeXDict begin 25 24 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(25)111 399 y(7.)46 b Fo(void)h(DVqsortUp)e(\()j │ │ │ │ (int)f(n,)g(double)f(dvec[])g(\))h(;)227 511 y(void)g(DVqsortDown)e(\() │ │ │ │ i(int)g(n,)g(double)f(dvec[])g(\))i(;)227 658 y Fp(Thes)30 │ │ │ │ b(metho)s(ds)g(sort)g(a)h Fo(double)e Fp(arra)m(y)i(in)m(to)g │ │ │ │ (ascending)g(or)f(descending)g(order)g(using)g(a)h(quic)m(k)f(sort.)111 │ │ │ │ 839 y(8.)46 b Fo(void)h(DV2qsortUp)e(\()i(int)g(n,)g(double)g(dvec1[],) │ │ │ │ e(double)h(dvec2[])g(\))h(;)227 952 y(void)g(DV2qsortDown)d(\()k(int)f │ │ │ │ (n,)g(double)f(dvec1[],)g(double)g(dvec2[])f(\))j(;)227 │ │ │ │ @@ -6861,17 +6849,17 @@ │ │ │ │ (stored)g(in)g(the)g(leading)h(lo)s(cations)g(of)f(the)g(v)m(ectors)h │ │ │ │ Fo(ivec1[])d Fp(and)i Fo(ivec2[])p Fp(.)227 5294 y Fj(Err)-5 │ │ │ │ b(or)37 b(che)-5 b(cking:)45 b Fp(If)33 b Fo(n)47 b(<)h(0)p │ │ │ │ Fp(,)33 b(or)g(if)g Fo(ivec1)f Fp(or)h Fo(ivec2)e Fp(is)i │ │ │ │ Fo(NULL)p Fp(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)227 │ │ │ │ 5407 y(program)d(exits.)p eop end │ │ │ │ %%Page: 26 26 │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fp(26)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 111 399 a Fp(5.)46 b Fo(int)h │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fp(26)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 111 399 a Fp(5.)46 b Fo(int)h │ │ │ │ (IV2DVsortUpAndCompress)42 b(\()47 b(int)g(n,)g(int)g(ivec1[],)f(int)h │ │ │ │ (ivec2[],)e(double)h(dvec[])h(\))g(;)227 549 y Fp(This)39 │ │ │ │ b(metho)s(d)g(sorts)g Fo(ivec1[])f Fp(in)m(to)i(ascending)g(order)f │ │ │ │ (with)g Fo(ivec2[])e Fp(and)i Fo(dvec[])f Fp(as)i(companion)227 │ │ │ │ 662 y(v)m(ectors.)56 b(It)35 b(then)f(compresses)h(the)g(pairs,)h │ │ │ │ (summing)e(the)h Fo(dvec[])e Fp(en)m(tries)i(for)g(iden)m(tical)h │ │ │ │ Fo(\(ivec1[],)227 775 y(ivec2[]\))42 b Fp(pairs.)80 b(The)44 │ │ │ │ @@ -6932,17 +6920,17 @@ │ │ │ │ 5144 y(4.)46 b Fo(int)h(IP_fp80)f(\()h(FILE)g(*fp,)g(int)g(n,)g(int)g │ │ │ │ (y[],)f(int)h(column,)f(int)h(*pierr)f(\))i(;)227 5294 │ │ │ │ y Fp(This)29 b(metho)s(d)h(prin)m(ts)f(the)h(singly)h(link)m(ed)f(list) │ │ │ │ g(that)h(starts)f(with)g Fo(ip)p Fp(.)40 b(See)30 b Fo(IVfp80\(\))e │ │ │ │ Fp(for)i(a)g(description)227 5407 y(of)h(ho)m(w)f(the)h(en)m(tries)g │ │ │ │ (are)g(placed)g(on)f(a)h(line.)p eop end │ │ │ │ %%Page: 27 27 │ │ │ │ -TeXDict begin 27 26 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(27)111 399 y(5.)46 b Fo(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ +TeXDict begin 27 26 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(27)111 399 y(5.)46 b Fo(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ (IP)h(*ip1,)e(IP)h(*ip2)g(\))g(;)227 547 y Fp(This)32 │ │ │ │ b(metho)s(d)h(merges)g(t)m(w)m(o)h(singly)f(link)m(ed)g(lists)g(in)m │ │ │ │ (to)h(one.)49 b(If)32 b(the)h(t)m(w)m(o)h(lists)f(are)h(in)e(ascending) │ │ │ │ h(order,)227 660 y(the)e(new)f(list)h(is)f(also)h(in)g(ascending)f │ │ │ │ (order.)40 b(The)30 b(head)g(of)h(the)g(new)e(list)i(is)g(returned.)111 │ │ │ │ 845 y(6.)46 b Fo(IP)h(*)h(IP_mergeSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ 993 y Fp(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g(ascending)g │ │ │ │ @@ -7000,18 +6988,18 @@ │ │ │ │ b(=)j(NULL)p Fp(.)336 5294 y Fl(\017)f Fp(If)20 b Fo(flag)47 │ │ │ │ b(=)g(I2OP)p 1040 5294 V 33 w(BACKWARD)p Fp(,)19 b(the)h(elemen)m(ts)i │ │ │ │ (are)e(link)m(ed)h(in)f(a)h(bac)m(kw)m(ard)f(manner,)i(i.e.,)i │ │ │ │ Fo(ips[i].next)427 5407 y(=)48 b(&ips[i-1])28 b Fp(for)i │ │ │ │ Fo(0)47 b(<)h(i)f(<)h(n)30 b Fp(and)f Fo(ips[0].next)45 │ │ │ │ b(=)i(NULL)p Fp(.)p eop end │ │ │ │ %%Page: 28 28 │ │ │ │ -TeXDict begin 28 27 bop 0 100 a Fp(28)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 111 399 a Fp(3.)46 b Fo(void)h(I2OP_free)e(\() │ │ │ │ -j(I2OP)e(*i2op)h(\))g(;)227 546 y Fp(This)30 b(metho)s(d)g(releases)h │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fp(28)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 111 399 a Fp(3.)46 b Fo(void)h(I2OP_free)e(\()j │ │ │ │ +(I2OP)e(*i2op)h(\))g(;)227 546 y Fp(This)30 b(metho)s(d)g(releases)h │ │ │ │ (the)g(storage)h(based)e(at)h Fo(*i2op)p Fp(.)111 729 │ │ │ │ y(4.)46 b Fo(void)h(I2OP_fprintf)d(\()k(FILE)e(*fp,)h(I2OP)g(*i2op)f │ │ │ │ (\))i(;)227 876 y Fp(This)30 b(metho)s(d)g(prin)m(ts)g(the)g(singly)h │ │ │ │ (link)m(ed)f(list)h(that)g(starts)g(with)f Fo(i2op)p │ │ │ │ Fp(.)0 1183 y Fm(1.3)135 b(Driv)l(er)46 b(programs)111 │ │ │ │ 1408 y Fp(1.)g Fo(test_sort)g(msglvl)g(msgFile)f(target)i(sortType)e(n) │ │ │ │ j(range)e(mod)h(seed)227 1556 y Fp(This)30 b(driv)m(er)g(program)g │ │ │ │ @@ -7060,17 +7048,17 @@ │ │ │ │ (and)f(compress")h(metho)s(ds.)38 b(Use)24 b(the)g(script)227 │ │ │ │ 5089 y(\014le)31 b Fo(do)p 476 5089 V 34 w(test)p 702 │ │ │ │ 5089 V 33 w(sortUpAndCompress)25 b Fp(for)31 b(testing.)336 │ │ │ │ 5294 y Fl(\017)46 b Fp(The)e Fo(msglvl)e Fp(parameter)j(determines)f │ │ │ │ (the)g(amoun)m(t)h(of)f(output.)82 b(Use)44 b Fo(msglvl)i(=)i(1)c │ │ │ │ Fp(for)g(just)427 5407 y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 29 29 │ │ │ │ -TeXDict begin 29 28 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(29)336 399 y Fl(\017)46 b Fp(The)33 │ │ │ │ +TeXDict begin 29 28 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(29)336 399 y Fl(\017)46 b Fp(The)33 │ │ │ │ b Fo(msgFile)e Fp(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fo(msgFile)e Fp(is)i Fo(stdout)p Fp(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fj(stdout)p Fp(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ b Fp(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)336 770 y Fl(\017)46 b Fp(The)30 b Fo(target)f │ │ │ │ Fp(parameter)i(denotes)f(the)h(t)m(yp)s(e)g(of)f(v)m(ector\(s\))j(to)e │ │ │ │ @@ -7135,17 +7123,17 @@ │ │ │ │ y Fo(DVzero\(\))p Fp(,)g(7)1992 4720 y Fo(FVadd\(\))p │ │ │ │ Fp(,)g(16)1992 4835 y Fo(FVaxpy\(\))p Fp(,)g(16)1992 │ │ │ │ 4949 y Fo(FVaxpyi\(\))p Fp(,)g(16)1992 5064 y Fo(FVcompress\(\))p │ │ │ │ Fp(,)f(16)1992 5178 y Fo(FVcopy\(\))p Fp(,)h(17)1992 │ │ │ │ 5293 y Fo(FVdot\(\))p Fp(,)g(17)1992 5407 y Fo(FVfill\(\))p │ │ │ │ Fp(,)g(17)1905 5656 y(30)p eop end │ │ │ │ %%Page: 31 31 │ │ │ │ -TeXDict begin 31 30 bop 91 100 952 4 v 1133 100 a Fo(Utilities)28 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(Decem)m(b)s(er)31 b(20,)g(2018)p │ │ │ │ -2856 100 V 952 w Fp(31)0 399 y Fo(FVfprintf\(\))p Fp(,)d(16)0 │ │ │ │ +TeXDict begin 31 30 bop 91 100 988 4 v 1169 100 a Fo(Utilities)28 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(11,)g(2021)p │ │ │ │ +2820 100 V 988 w Fp(31)0 399 y Fo(FVfprintf\(\))p Fp(,)d(16)0 │ │ │ │ 513 y Fo(FVfree\(\))p Fp(,)g(16)0 627 y Fo(FVfscanf\(\))p │ │ │ │ Fp(,)g(16)0 741 y Fo(FVgather\(\))p Fp(,)g(17)0 855 y │ │ │ │ Fo(FVgatherAddZero\(\))p Fp(,)e(17)0 969 y Fo(FVgatherZero\(\))p │ │ │ │ Fp(,)h(17)0 1083 y Fo(FVinit\(\))p Fp(,)h(16)0 1197 y │ │ │ │ Fo(FVinit2\(\))p Fp(,)g(16)0 1311 y Fo(FVinvPerm\(\))p │ │ │ │ Fp(,)g(17)0 1425 y Fo(FVmax\(\))p Fp(,)h(17)0 1539 y │ │ │ │ Fo(FVmaxabs\(\))p Fp(,)f(17)0 1654 y Fo(FVmin\(\))p Fp(,)h(17)0 │ │ │ │ @@ -7204,19 +7192,19 @@ │ │ │ │ Fp(,)h(15)1992 4724 y Fo(IVscatter\(\))p Fp(,)f(15)1992 │ │ │ │ 4838 y Fo(IVshuffle\(\))p Fp(,)g(16)1992 4952 y Fo │ │ │ │ (IVsortUpAndCompress\(\))p Fp(,)d(22)1992 5066 y Fo(IVsum\(\))p │ │ │ │ Fp(,)k(15)1992 5180 y Fo(IVsumabs\(\))p Fp(,)f(15)1992 │ │ │ │ 5293 y Fo(IVswap\(\))p Fp(,)h(15)1992 5407 y Fo(IVzero\(\))p │ │ │ │ Fp(,)g(16)p eop end │ │ │ │ %%Page: 32 32 │ │ │ │ -TeXDict begin 32 31 bop 0 100 a Fp(32)p 182 100 952 4 │ │ │ │ -v 1134 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)31 b Fk(Decem)m(b)s(er)g │ │ │ │ -(20,)g(2018)p 2949 100 V 0 399 a Fo(IVZVisortDown\(\))p │ │ │ │ -Fp(,)26 b(21)0 511 y Fo(IVZVisortUp\(\))p Fp(,)h(21)0 │ │ │ │ -624 y Fo(IVZVqsortDown\(\))p Fp(,)f(22)0 737 y Fo(IVZVqsortUp\(\))p │ │ │ │ +TeXDict begin 32 31 bop 0 100 a Fp(32)p 182 100 988 4 │ │ │ │ +v 1170 w Fo(Utilities)28 b Fk(:)40 b Fj(DRAFT)30 b Fk(Octob)s(er)h(11,) │ │ │ │ +g(2021)p 2913 100 V 0 399 a Fo(IVZVisortDown\(\))p Fp(,)26 │ │ │ │ +b(21)0 511 y Fo(IVZVisortUp\(\))p Fp(,)h(21)0 624 y Fo │ │ │ │ +(IVZVqsortDown\(\))p Fp(,)f(22)0 737 y Fo(IVZVqsortUp\(\))p │ │ │ │ Fp(,)h(22)0 850 y Fo(IVZVsortUpAndCompress\(\))p Fp(,)d(23)0 │ │ │ │ 1040 y Fo(PCVcopy\(\))p Fp(,)k(19)0 1153 y Fo(PCVfree\(\))p │ │ │ │ Fp(,)g(18)0 1266 y Fo(PCVinit\(\))p Fp(,)g(18)0 1379 │ │ │ │ y Fo(PCVsetup\(\))p Fp(,)g(19)0 1491 y Fo(PDVcopy\(\))p │ │ │ │ Fp(,)g(19)0 1604 y Fo(PDVfree\(\))p Fp(,)g(19)0 1717 │ │ │ │ y Fo(PDVinit\(\))p Fp(,)g(19)0 1830 y Fo(PDVsetup\(\))p │ │ │ │ Fp(,)g(19)0 1943 y Fo(PFVcopy\(\))p Fp(,)g(20)0 2056 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ struct _I2OP { │ │ │ │ │ int value0 ; │ │ │ │ │ int value1 ; │ │ │ │ │ void *value2 ; │ │ │ │ │ I2OP *next ; │ │ │ │ │ } ; │ │ │ │ │ 1 │ │ │ │ │ - 2 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 2 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 1.2 Prototypes and descriptions of Utilities methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ Utilities directory. │ │ │ │ │ 1.2.1 CV : char vector methods │ │ │ │ │ 1. char * CVinit ( int n, char c ) ; │ │ │ │ │ This is the allocator and initializer method for char vectors. Storage for an array with size │ │ │ │ │ n is found and each entry is filled with character c. A pointer to the array is returned. │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ 8. int CVfscanf ( FILE *fp, int n, char y[] ) ; │ │ │ │ │ This method scans in characters from file fp and places them in the array y[]. It tries to │ │ │ │ │ read in n characters, and returns the number that were actually read. │ │ │ │ │ 1.2.2 DV : double vector methods │ │ │ │ │ 1. double * DVinit ( int n, double val ) ; │ │ │ │ │ This is the allocator and initializer method for double vectors. Storage for an array with size │ │ │ │ │ n is found and each entry is filled with val. A pointer to the array is returned. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 3 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 3 │ │ │ │ │ 2. double * DVinit2 ( int n ) ; │ │ │ │ │ This is an allocator method for double vectors. Storage for an array with size n is found. A │ │ │ │ │ pointer to the array is returned. Note, on return, there will likely be garbage in the array. │ │ │ │ │ 3. void DVfree ( int vec[] ) ; │ │ │ │ │ This method releases the storage taken by vec[]. │ │ │ │ │ 4. void DVfprintf ( FILE *fp, int n, double y[] ) ; │ │ │ │ │ This method prints n entries in y[] to file fp. The format is new line followed by lines of six │ │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ │ This method computes this computation. │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] + alpha[1] * x1[] │ │ │ │ │ y1[] = y1[] + alpha[2] * x0[] + alpha[3] * x1[] │ │ │ │ │ y2[] = y2[] + alpha[4] * x0[] + alpha[5] * x1[] │ │ │ │ │ 11. void DVaxpy31 ( int n, double y0[], double y1[], double y2[], │ │ │ │ │ double alpha, double x0[], double x1[] ) ; │ │ │ │ │ This method computes this computation. │ │ │ │ │ - 4 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 4 Utilities : DRAFT October 11, 2021 │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] │ │ │ │ │ y1[] = y1[] + alpha[1] * x0[] │ │ │ │ │ y2[] = y2[] + alpha[2] * x0[] │ │ │ │ │ 12. void DVaxpy23 ( int n, double y0[], double y1[], │ │ │ │ │ double alpha, double x0[], double x1[], double x2[] ) ; │ │ │ │ │ This method computes this computation. │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] + alpha[1] * x1[] + alpha[2] * x2[] │ │ │ │ │ @@ -121,15 +121,15 @@ │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] + alpha[1] * x1[] │ │ │ │ │ 17. void DVaxpy11 ( int n, double y0[], double alpha, double x0[] ) ; │ │ │ │ │ This method computes this computation. │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] │ │ │ │ │ 18. void DVaxpyi ( int n, double y[], int index[], double alpha, double x[] ) ; │ │ │ │ │ This method scatteradds a scaled multiple of n entries from x[] into y[], i.e., y[index[i]] │ │ │ │ │ += alpha * x[i] for 0 <= i < n. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 5 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 5 │ │ │ │ │ 19. void DVcompress ( int n1, double x1[], double y1[], │ │ │ │ │ int n2, double x2[], double y2[] ) ; │ │ │ │ │ Given a pair of arrays x1[n1] and y1[n1], fill x2[n2] and y2[n2] with a subset of the │ │ │ │ │ (x1[j],y1[j] entries whose distribution is an approximation. │ │ │ │ │ 20. void DVcopy ( int n, double y[], double x[] ) ; │ │ │ │ │ This method copies n entries from x[] to y[], i.e., y[i] = x[i] for 0 <= i < n. │ │ │ │ │ 21. int DVdot ( int n, double y[], double x[] ) ; │ │ │ │ │ @@ -167,15 +167,15 @@ │ │ │ │ │ i=0 │ │ │ │ │ n−1 │ │ │ │ │ sums[1] = Xrow1[i]∗col0[i] │ │ │ │ │ i=0 │ │ │ │ │ n−1 │ │ │ │ │ sums[2] = Xrow2[i]∗col0[i] │ │ │ │ │ i=0 │ │ │ │ │ - 6 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 6 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 25. int DVdot23 ( int n, double row0[], double row1[], │ │ │ │ │ double col0[], double col1[], double col2[], double sums[] ) ; │ │ │ │ │ This method computes six dot products. │ │ │ │ │ n−1 n−1 n−1 │ │ │ │ │ sums[0] = Xrow0[i]∗col0[i] sums[1] = Xrow0[i]∗col1[i] sums[2] = Xrow0[i]∗col2[i] │ │ │ │ │ i=0 i=0 i=0 │ │ │ │ │ n−1 n−1 n−1 │ │ │ │ │ @@ -212,15 +212,15 @@ │ │ │ │ │ sums[0] = Xrow0[i]∗col0[i] sums[1] = Xrow0[i]∗col1[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ 30. int DVdot11 ( int n, double row0[], double col0[], double sums[] ) ; │ │ │ │ │ This method computes one dot product. │ │ │ │ │ n−1 │ │ │ │ │ sums[0] = Xrow0[i]∗col0[i] │ │ │ │ │ i=0 │ │ │ │ │ - Utilities : DRAFT December 20, 2018 7 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 7 │ │ │ │ │ 31. int DVdoti ( int n, double y[], int index[], double x[] ) ; │ │ │ │ │ n−1 │ │ │ │ │ This method returns the indexed dot product Xy[index[i]]∗x[i]. │ │ │ │ │ i=0 │ │ │ │ │ 32. void DVfill ( int n, double y[], double val ) ; │ │ │ │ │ This method fills n entries in y[] with val, i.e., y[i] = val for 0 <= i < n. │ │ │ │ │ 33. void DVgather ( int n, double y[], double x[], int index[] ) ; │ │ │ │ │ @@ -248,15 +248,15 @@ │ │ │ │ │ This method permutes the vector y as follows. i.e., y[i] := y[index[i]]. See DVinvPerm() │ │ │ │ │ for a similar function. │ │ │ │ │ 42. void DVramp ( int n, double y[], double start, double inc ) ; │ │ │ │ │ This method fills n entries in y[] with values start, start + inc, start + 2*inc, start │ │ │ │ │ + 3*inc, etc. │ │ │ │ │ 43. void DVscale ( int n, double y[], double alpha ) ; │ │ │ │ │ This method scales a vector y[] by alpha, i.e., y[i] *= alpha. for 0 <= i < n. │ │ │ │ │ - 8 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 8 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 44. void DVscale2 ( int n, double x[], double y[], │ │ │ │ │ double a, double b, double c, double d ) ; │ │ │ │ │ This method scales two vectors y[] by a 2 ×2 matrix, i.e., │ │ │ │ │ " x[0] . . . x[n−1] # := " a b #" x[0] ... x[n−1] #. │ │ │ │ │ y[0] . . . y[n−1] c d y[0] . . . y[n−1] │ │ │ │ │ 45. void DVscatter ( int n, double y[], int index[], double x[] ) ; │ │ │ │ │ This method scatters n entries of x[] into y[] as follows, y[index[i]] = x[i] for 0 <= i │ │ │ │ │ @@ -284,15 +284,15 @@ │ │ │ │ │ This method swaps the x[] and y[] vectors as follows. i.e., y[i] := x[i] and x[i] := │ │ │ │ │ y[i] for 0 <= i < n. │ │ │ │ │ 53. void DVzero ( int n, double y[] ) ; │ │ │ │ │ This method zeroes n entries in y[], i.e., y[i] = 0 for 0 <= i < n. │ │ │ │ │ 54. void DVshuffle ( int n, double y[], int seed ) ; │ │ │ │ │ This method shuffles the first n entries in y[]. The value seed is the seed to a random number │ │ │ │ │ generator, and one can get repeatable behavior by repeating seed. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 9 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 9 │ │ │ │ │ 1.2.3 ZV : double complex vector methods │ │ │ │ │ Adoubleprecisioncomplexvector oflengthnissimplya doubleprecisionvector oflength2n. There │ │ │ │ │ is a separate ZVinit() allocator and initializer method, since it requires a real and imaginary part │ │ │ │ │ to fill the vector. However, there is no ZVinit2() method (which allocates without initializing the │ │ │ │ │ entries) nor a ZVfree() method to free the entries; the DVinit2() and DVfree() methods can be │ │ │ │ │ used. Similarly, there is no ZVfscanf() method, instead the DVfscanf() method can be used. │ │ │ │ │ 1. double * ZVinit ( int n, double real, double imag ) ; │ │ │ │ │ @@ -320,15 +320,15 @@ │ │ │ │ │ 6. void ZVaxpy ( int n, double y[], double areal, double aimag, double x[] ) ; │ │ │ │ │ Thismethodaddsascaledmultipleofnentriesfromx[]intoy[],i.e., y[i] += (areal,aimag) │ │ │ │ │ * x[i] for 0 <= i < n. │ │ │ │ │ 7. void ZVaxpy2 ( int n, double z[], double areal, double aimag, │ │ │ │ │ double x[], double breal, double bimag, double y[] ) ; │ │ │ │ │ This method adds a scaled multiple of two vectors x[] and y[] to another vector z[], i.e., │ │ │ │ │ i.e., z[i] += (areal,aimag) * x[i] + (breal,bimag) * y[i] for 0 <= i < n. │ │ │ │ │ - 10 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 10 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 8. void ZVaxpy33 ( int n, double y0[], double y1[], double y2[], │ │ │ │ │ double alpha[], double x0[], double x1[], double x2[] ) ; │ │ │ │ │ This method computes the following. │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] + alpha[4:5] * x2[] │ │ │ │ │ y1[] = y1[] + alpha[6:7] * x0[] + alpha[8:9] * x1[] + alpha[10:11] * x2[] │ │ │ │ │ y2[] = y2[] + alpha[12:13] * x0[] + alpha[14:15] * x1[] + alpha[16:17] * x2[] │ │ │ │ │ 9. void ZVaxpy32 ( int n, double y0[], double y1[], double y2[], │ │ │ │ │ @@ -354,15 +354,15 @@ │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] │ │ │ │ │ y1[] = y1[] + alpha[4:5] * x0[] + alpha[6:7] * x1[] │ │ │ │ │ 13. void ZVaxpy21 ( int n, double y0[], double y1[], │ │ │ │ │ double alpha[], double x0[] ) ; │ │ │ │ │ This method computes the following. │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] │ │ │ │ │ y1[] = y1[] + alpha[2:3] * x0[] │ │ │ │ │ - Utilities : DRAFT December 20, 2018 11 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 11 │ │ │ │ │ 14. void ZVaxpy13 ( int n, double y0[], │ │ │ │ │ double alpha[], double x0[], double x1[], double x2[] ) ; │ │ │ │ │ This method computes the following. │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] + alpha[4:5] * x2[] │ │ │ │ │ 15. void ZVaxpy12 ( int n, double y0[], double alpha[], double x0[], double x1[] ) ; │ │ │ │ │ This method computes the following. │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] │ │ │ │ │ @@ -389,15 +389,15 @@ │ │ │ │ │ This method fills *prdot and *pidot with the real and imaginary parts of the indexed dot │ │ │ │ │ n−1 │ │ │ │ │ product Xy[index[i]]∗x[i]. │ │ │ │ │ i=0 │ │ │ │ │ 22. int ZVdotU33 ( int n, double row0[], double row1[], double row2[], │ │ │ │ │ double col0[], double col1[], double col2[], double sums[] ) ; │ │ │ │ │ This method computes nine dot products. │ │ │ │ │ - 12 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 12 Utilities : DRAFT October 11, 2021 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[0;1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ @@ -441,15 +441,15 @@ │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[8 : 9] = Xrow1[i]∗col1[i] sums[10 : 11] = Xrow1[i]∗col2[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ - Utilities : DRAFT December 20, 2018 13 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 13 │ │ │ │ │ 26. int ZVdotU22 ( int n, double row0[], double row1[], │ │ │ │ │ double col0[], double col1[], double sums[] ) ; │ │ │ │ │ This method computes four dot products. │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ @@ -483,15 +483,15 @@ │ │ │ │ │ This method computes one dot product. │ │ │ │ │ n−1 │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] │ │ │ │ │ i=0 │ │ │ │ │ 31. int ZVdotC33 ( int n, double row0[], double row1[], double row2[], │ │ │ │ │ double col0[], double col1[], double col2[], double sums[] ) ; │ │ │ │ │ This method computes nine dot products. │ │ │ │ │ - 14 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 14 Utilities : DRAFT October 11, 2021 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[0;1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ @@ -535,15 +535,15 @@ │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[8 : 9] = Xrow1[i]∗col1[i] sums[10 : 11] = Xrow1[i]∗col2[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ - Utilities : DRAFT December 20, 2018 15 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 15 │ │ │ │ │ 35. int ZVdotC22 ( int n, double row0[], double row1[], │ │ │ │ │ double col0[], double col1[], double sums[] ) ; │ │ │ │ │ This method computes four dot products. │ │ │ │ │ n−1 n−1 │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ i=0 i=0 │ │ │ │ │ n−1 n−1 │ │ │ │ │ @@ -578,15 +578,15 @@ │ │ │ │ │ n−1 │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] │ │ │ │ │ i=0 │ │ │ │ │ 40. void ZVgather ( int n, double y[], double x[], int index[] ) ; │ │ │ │ │ y[i] = x[index[i]] for 0 <= i < n. │ │ │ │ │ 41. double ZVmaxabs ( int n, double y[] ) ; │ │ │ │ │ This method returns the maximum magnitude of entries in y[0:n-1]. │ │ │ │ │ - 16 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 16 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 42. double ZVminabs ( int n, double y[] ) ; │ │ │ │ │ This method returns the minimum magnitude of entries in y[0:n-1]. │ │ │ │ │ 43. void ZVscale ( int n, double y[], double areal, double aimag ) ; │ │ │ │ │ This method scales a vector y[] by (areal,aimag), i.e., y[i] *= (areal,aimag). for 0 <= │ │ │ │ │ i < n. │ │ │ │ │ 44. void ZVscale2 ( int n, double x[], double y[], │ │ │ │ │ double areal, double aimag, double breal, double bimag, │ │ │ │ │ @@ -609,15 +609,15 @@ │ │ │ │ │ This is an allocator method for int vectors. Storage for an array with size n is found. A │ │ │ │ │ pointer to the array is returned. Note, on return, there will likely be garbage in the array. │ │ │ │ │ 3. void IVfree ( int vec[] ) ; │ │ │ │ │ This method releases the storage taken by vec[]. │ │ │ │ │ 4. void IVfprintf ( FILE *fp, int n, int y[] ) ; │ │ │ │ │ This method prints n entries in y[] to file fp. The format is new line followed by lines of five │ │ │ │ │ int’s in " %4d" format. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 17 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 17 │ │ │ │ │ 5. int IVfp80 ( FILE *fp, int n, int y[], int column, int *pierr ) ; │ │ │ │ │ Thismethodprintsnentriesiny[]tofilefp. Themethodsplicesvectorstogetherornaturally │ │ │ │ │ breaks the large vectors into lines. The column value is the present location. If the printed │ │ │ │ │ value of an array entry will not fit within the eighty columns of the present line, a newline │ │ │ │ │ character is written and the value starts a new line. The number of the present column in │ │ │ │ │ the line is returned. If *pierr < 0, an IO error has occured. │ │ │ │ │ 6. int IVfscanf ( FILE *fp, int n, int y[] ) ; │ │ │ │ │ @@ -645,15 +645,15 @@ │ │ │ │ │ returns a location where target is found. If target is not in y[], -1 is returned. │ │ │ │ │ 14. int IVmax ( int n, int y[], int *ploc ) ; │ │ │ │ │ This method returns the maximum entry in y[0:n-1] and puts the first location where it │ │ │ │ │ was found into the address ploc. │ │ │ │ │ 15. int IVmaxabs ( int n, int y[], int *ploc ) ; │ │ │ │ │ This method returns the maximum magnitude of entries in y[0:n-1] and puts the first │ │ │ │ │ location where it was found into the address ploc. │ │ │ │ │ - 18 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 18 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 16. int IVmin ( int n, int y[], int *ploc ) ; │ │ │ │ │ This method returns the minimum entry in y[0:n-1] and puts the first location where it was │ │ │ │ │ found into the address ploc. │ │ │ │ │ 17. int IVminabs ( int n, int y[], int *ploc ) ; │ │ │ │ │ This method returns the minimum magnitude of entries in y[0:n-1] and puts the first loca- │ │ │ │ │ tion where it was found into the address ploc. │ │ │ │ │ 18. void IVperm ( int n, int y[], int index[] ) ; │ │ │ │ │ @@ -681,15 +681,15 @@ │ │ │ │ │ 25. void IVshuffle ( int n, int y[], int seed ) ; │ │ │ │ │ This method shuffles the first n entries in y[]. The value seed is the seed to a random number │ │ │ │ │ generator, and one can get repeatable behavior by repeating seed. │ │ │ │ │ 1.2.5 FV : float vector methods │ │ │ │ │ 1. float * FVinit ( int n, float val ) ; │ │ │ │ │ This is the allocator and initializer method for float vectors. Storage for an array with size │ │ │ │ │ n is found and each entry is filled with val. A pointer to the array is returned. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 19 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 19 │ │ │ │ │ 2. float * FVinit2 ( int n ) ; │ │ │ │ │ This is an allocator method for float vectors. Storage for an array with size n is found. A │ │ │ │ │ pointer to the array is returned. Note, on return, there will likely be garbage in the array. │ │ │ │ │ 3. void FVfree ( int vec[] ) ; │ │ │ │ │ This method releases the storage taken by vec[]. │ │ │ │ │ 4. void FVfprintf ( FILE *fp, int n, float y[] ) ; │ │ │ │ │ This method prints n entries in y[] to file fp. The format is new line followed by lines of six │ │ │ │ │ @@ -716,15 +716,15 @@ │ │ │ │ │ i=0 │ │ │ │ │ 12. void FVfill ( int n, float y[], float val ) ; │ │ │ │ │ This method fills n entries in y[] with val, i.e., y[i] = val for 0 <= i < n. │ │ │ │ │ 13. void FVgather ( int n, float y[], float x[], int index[] ) ; │ │ │ │ │ y[i] = x[index[i]] for 0 <= i < n. │ │ │ │ │ 14. void FVgatherAddZero ( int n, float y[], float x[], int index[] ) ; │ │ │ │ │ y[i] += x[index[i]] and x[index[i]] = 0 for 0 <= i < n. │ │ │ │ │ - 20 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 20 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 15. void FVgatherZero ( int n, float y[], float x[], int index[] ) ; │ │ │ │ │ y[i] = x[index[i]] and x[index[i]] = 0 │ │ │ │ │ 16. void FVinvPerm ( int n, float y[], int index[] ) ; │ │ │ │ │ This method permutes the vector y as follows. i.e., y[index[i]] := y[i]. See FVperm() for │ │ │ │ │ a similar function. │ │ │ │ │ 17. float FVmax ( int n, float y[], int *ploc ) ; │ │ │ │ │ This method returns the maximum entry in y[0:n-1] and puts the first location where it │ │ │ │ │ @@ -751,15 +751,15 @@ │ │ │ │ │ < n. │ │ │ │ │ 25. void FVscatterAddZero ( int n, float y[], int index[], float x[] ) ; │ │ │ │ │ This method scatters/adds n entries of x[] into y[] as follows, y[index[i]] += x[i] and │ │ │ │ │ x[i] for 0 <= i < n. │ │ │ │ │ 26. void FVscatterZero ( int n, float y[], int index[], float x[] ) ; │ │ │ │ │ This method scatters n entries of x[] into y[] as follows, y[index[i]] = x[i] and x[i] for │ │ │ │ │ 0 <= i < n. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 21 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 21 │ │ │ │ │ 27. void FVsub ( int n, float y[], float x[] ) ; │ │ │ │ │ This method subtracts n entries from x[] to y[], i.e., y[i] -= x[i] for 0 <= i < n. │ │ │ │ │ 28. float FVsum ( int n, float y[] ) ; │ │ │ │ │ P │ │ │ │ │ This method returns the sum of the first n entries in the vector x[], i.e., return n−1x[i]. │ │ │ │ │ i=0 │ │ │ │ │ 29. float FVsumabs ( int n, float y[] ) ; │ │ │ │ │ @@ -787,15 +787,15 @@ │ │ │ │ │ i.e., p vec[0] = vec, and p vec[i] = p vec[i-1] + sizes[i-1] for 0 < i < n. │ │ │ │ │ 1.2.7 PDV : double * vector methods │ │ │ │ │ 1. double ** PDVinit ( int n ) ; │ │ │ │ │ This is the allocator and initializer method for double* vectors. Storage for an array with │ │ │ │ │ size n is found and each entry is filled with NULL. A pointer to the array is returned. │ │ │ │ │ 2. void PDVfree ( double **p_vec ) ; │ │ │ │ │ This method releases the storage taken by p vec[]. │ │ │ │ │ - 22 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 22 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 3. void PDVcopy ( int n, double *p_y[], double *p_x[] ) ; │ │ │ │ │ This method copies n entries from p x[] to p y[], i.e., p y[i] = p x[i] for 0 <= i < n. │ │ │ │ │ 4. void PDVsetup ( int n, int sizes[], double vec[], double *p_vec[] ) ; │ │ │ │ │ This method sets the entries of p vec[] as pointers into vec[] given by the sizes[] vector, │ │ │ │ │ i.e., p vec[0] = vec, and p vec[i] = p vec[i-1] + sizes[i-1] for 0 < i < n. │ │ │ │ │ PIV : int * vector methods │ │ │ │ │ 1. int ** PIVinit ( int n ) ; │ │ │ │ │ @@ -815,15 +815,15 @@ │ │ │ │ │ 2. void PFVfree ( float **p_vec ) ; │ │ │ │ │ This method releases the storage taken by p vec[]. │ │ │ │ │ 3. void PFVcopy ( int n, float *p_y[], float *p_x[] ) ; │ │ │ │ │ This method copies n entries from p x[] to p y[], i.e., p y[i] = p x[i] for 0 <= i < n. │ │ │ │ │ 4. void PFVsetup ( int n, int sizes[], float vec[], float *p_vec[] ) ; │ │ │ │ │ This method sets the entries of p vec[] as pointers into vec[] given by the sizes[] vector, │ │ │ │ │ i.e., p vec[0] = vec, and p vec[i] = p vec[i-1] + sizes[i-1] for 0 < i < n. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 23 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 23 │ │ │ │ │ 1.2.9 Sorting routines │ │ │ │ │ Validation routines │ │ │ │ │ 1. int IVisascending ( int n, int ivec[] ) ; │ │ │ │ │ int IVisdescending ( int n, int ivec[] ) ; │ │ │ │ │ These methods returns 1 if the array ivec[] is in ascending or descending order and returns │ │ │ │ │ 0 otherwise. │ │ │ │ │ 2. int DVisascending ( int n, double dvec[] ) ; │ │ │ │ │ @@ -852,15 +852,15 @@ │ │ │ │ │ This sorts the array ivec[] into ascending or descending order using an insertion sort and │ │ │ │ │ permutes the double precision complex companion array dvec[] in the same fashion. │ │ │ │ │ 6. void IV2ZVisortUp ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ void IV2ZVisortDown ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ These methods sort the array ivec1[] into ascending or descending order using an insertion │ │ │ │ │ sort and permutes the companion arrays ivec2[] and dvec[] in the same fashion. The │ │ │ │ │ dvec[] array is double precision complex. │ │ │ │ │ - 24 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 24 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 7. void DVisortUp ( int n, double dvec[] ) ; │ │ │ │ │ void DVisortDown ( int n, double dvec[] ) ; │ │ │ │ │ These methods sort a double array into ascending or descending order using an insertion │ │ │ │ │ sort. │ │ │ │ │ 8. void DV2isortUp ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ void DV2isortDown ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ These methods sort the array dvec1[] into ascending or descending order using an insertion │ │ │ │ │ @@ -890,15 +890,15 @@ │ │ │ │ │ These methods sort the array ivec[] into ascending or descending order using a quick sort │ │ │ │ │ and permutes the double precision complex companion array dvec[] in the same fashion. │ │ │ │ │ 6. void IV2ZVqsortUp ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ void IV2ZVqsortDown ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ These methods sort the array ivec1[] into ascending or descending order using a quick sort │ │ │ │ │ and permutes the companion arrays ivec2[] and dvec[] in the same fashion. The dvec[] │ │ │ │ │ array is double precision complex. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 25 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 25 │ │ │ │ │ 7. void DVqsortUp ( int n, double dvec[] ) ; │ │ │ │ │ void DVqsortDown ( int n, double dvec[] ) ; │ │ │ │ │ Thes methods sort a double array into ascending or descending order using a quick sort. │ │ │ │ │ 8. void DV2qsortUp ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ void DV2qsortDown ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ These methods sort the array dvec1[] into ascending or descending order using a quick sort │ │ │ │ │ and permutes the companion array dvec2[] in the same fashion. │ │ │ │ │ @@ -928,15 +928,15 @@ │ │ │ │ │ program exits. │ │ │ │ │ 4. int IV2sortUpAndCompress ( int n, int ivec1[], int ivec2[] ) ; │ │ │ │ │ This method sorts ivec1[] into ascending order with ivec2[] as a companion vector. It │ │ │ │ │ then compresses the pairs, dropping all but one of identical pairs. The return value is the │ │ │ │ │ number of unique entries stored in the leading locations of the vectors ivec1[] and ivec2[]. │ │ │ │ │ Error checking: If n < 0, or if ivec1 or ivec2 is NULL, an error message is printed and the │ │ │ │ │ program exits. │ │ │ │ │ - 26 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 26 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 5. int IV2DVsortUpAndCompress ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ This method sorts ivec1[] into ascending order with ivec2[] and dvec[] as companion │ │ │ │ │ vectors. It then compresses the pairs, summing the dvec[] entries for identical (ivec1[], │ │ │ │ │ ivec2[]) pairs. The return value is the number of unique entries stored in the leading │ │ │ │ │ locations of the vectors ivec1[], ivec2[] and dvec[]. │ │ │ │ │ Error checking: If n < 0, or if ivec1, ivec2 or dvec is NULL, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ @@ -965,15 +965,15 @@ │ │ │ │ │ 2. void IP_free ( IP *ip ) ; │ │ │ │ │ This method releases the storage based at *ip. │ │ │ │ │ 3. void IP_fprintf ( FILE *fp, IP *ip ) ; │ │ │ │ │ This method prints the singly linked list that starts with ip. │ │ │ │ │ 4. int IP_fp80 ( FILE *fp, int n, int y[], int column, int *pierr ) ; │ │ │ │ │ This method prints the singly linked list that starts with ip. See IVfp80() for a description │ │ │ │ │ of how the entries are placed on a line. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 27 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 27 │ │ │ │ │ 5. IP * IP_mergeUp ( IP *ip1, IP *ip2 ) ; │ │ │ │ │ This method merges two singly linked lists into one. If the two lists are in ascending order, │ │ │ │ │ the new list is also in ascending order. The head of the new list is returned. │ │ │ │ │ 6. IP * IP_mergeSortUp ( IP *ip ) ; │ │ │ │ │ This method sorts a list into ascending order using a merge sort. │ │ │ │ │ 7. IP * IP_radixSortUp ( IP *ip ) ; │ │ │ │ │ This method sorts a list into ascending order using a radix sort. │ │ │ │ │ @@ -1002,15 +1002,15 @@ │ │ │ │ │ base[i].value1 = -1. The flag parameter determines how the next field is filled. │ │ │ │ │ • If flag = I2OP NULL, the elements are not linked, i.e., ips[i].next = NULL for 0 <= │ │ │ │ │ i < n. │ │ │ │ │ • If flag = I2OP FORWARD,the elements are linked in a forward manner, i.e., ips[i].next │ │ │ │ │ = &ips[i+1] for 0 <= i < n-1 and ips[n-1].next = NULL. │ │ │ │ │ • If flag = I2OP BACKWARD,theelementsarelinkedinabackwardmanner,i.e., ips[i].next │ │ │ │ │ = &ips[i-1] for 0 < i < n and ips[0].next = NULL. │ │ │ │ │ - 28 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 28 Utilities : DRAFT October 11, 2021 │ │ │ │ │ 3. void I2OP_free ( I2OP *i2op ) ; │ │ │ │ │ This method releases the storage based at *i2op. │ │ │ │ │ 4. void I2OP_fprintf ( FILE *fp, I2OP *i2op ) ; │ │ │ │ │ This method prints the singly linked list that starts with i2op. │ │ │ │ │ 1.3 Driver programs │ │ │ │ │ 1. test_sort msglvl msgFile target sortType n range mod seed │ │ │ │ │ This driver program tests the sort methods. Use the script file do test sort for testing. │ │ │ │ │ @@ -1038,15 +1038,15 @@ │ │ │ │ │ • Integer entries are of the form k mod mod, where k in [0,range]. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 2. test_sortUpAndCompress msglvl msgFile target n range mod seed │ │ │ │ │ This driver program tests the “sort in ascending order and compress” methods. Use the script │ │ │ │ │ file do test sortUpAndCompress for testing. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ - Utilities : DRAFT December 20, 2018 29 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 29 │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The target parameter denotes the type of vector(s) to be sorted. │ │ │ │ │ – IV — int vector sort │ │ │ │ │ – IV2 — (int, int) vector sort │ │ │ │ │ – IVDV — (int, double) vector sort │ │ │ │ │ @@ -1091,15 +1091,15 @@ │ │ │ │ │ DVfree(), 3 FVaxpy(), 16 │ │ │ │ │ DVfscanf(), 3 FVaxpyi(), 16 │ │ │ │ │ DVgather(), 5 FVcompress(), 16 │ │ │ │ │ DVgatherAddZero(), 5 FVcopy(), 17 │ │ │ │ │ DVgatherZero(), 6 FVdot(), 17 │ │ │ │ │ DVinit(), 2 FVfill(), 17 │ │ │ │ │ 30 │ │ │ │ │ - Utilities : DRAFT December 20, 2018 31 │ │ │ │ │ + Utilities : DRAFT October 11, 2021 31 │ │ │ │ │ FVfprintf(), 16 IV2qsortDown(), 21 │ │ │ │ │ FVfree(), 16 IV2qsortUp(), 21 │ │ │ │ │ FVfscanf(), 16 IV2sortUpAndCompress(), 23 │ │ │ │ │ FVgather(), 17 IV2ZVisortDown(), 21 │ │ │ │ │ FVgatherAddZero(), 17 IV2ZVisortUp(), 21 │ │ │ │ │ FVgatherZero(), 17 IV2ZVqsortDown(), 22 │ │ │ │ │ FVinit(), 16 IV2ZVqsortUp(), 22 │ │ │ │ │ @@ -1137,15 +1137,15 @@ │ │ │ │ │ IV2DVisortDown(), 21 IVscatter(), 15 │ │ │ │ │ IV2DVisortUp(), 21 IVshuffle(), 16 │ │ │ │ │ IV2DVqsortDown(), 22 IVsortUpAndCompress(), 22 │ │ │ │ │ IV2DVqsortUp(), 22 IVsum(), 15 │ │ │ │ │ IV2DVsortUpAndCompress(), 23 IVsumabs(), 15 │ │ │ │ │ IV2isortDown(), 20 IVswap(), 15 │ │ │ │ │ IV2isortUp(), 20 IVzero(), 16 │ │ │ │ │ - 32 Utilities : DRAFT December 20, 2018 │ │ │ │ │ + 32 Utilities : DRAFT October 11, 2021 │ │ │ │ │ IVZVisortDown(), 21 ZVdotU23(), 10 │ │ │ │ │ IVZVisortUp(), 21 ZVdotU31(), 9 │ │ │ │ │ IVZVqsortDown(), 22 ZVdotU32(), 9 │ │ │ │ │ IVZVqsortUp(), 22 ZVdotU33(), 9 │ │ │ │ │ IVZVsortUpAndCompress(), 23 ZVfprintf(), 8 │ │ │ │ │ ZVgather(), 13 │ │ │ │ │ PCVcopy(), 19 ZVinit(), 7 │ │ ├── ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ ├── ZV.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMTT10 CMSY10 CMSL10 CMTI10 CMMI10 │ │ │ │ %%+ CMR8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ZV.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1654,22 +1654,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1843,88 +1843,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3551,16 +3540,16 @@ │ │ │ │ @start /Fa 206[35 35 48[{}2 66.4176 /CMR8 rf /Fb 128[25 │ │ │ │ 64[71 1[71 1[25 58[{}4 90.9091 /CMMI10 rf /Fc 133[50 │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ 5[84 5[42 6[80 12[56 56 56 56 56 2[31 46[{}25 99.6264 │ │ │ │ /CMBX12 rf /Fd 139[62 4[62 4[62 4[62 1[62 62 7[62 3[62 │ │ │ │ 86[{}8 119.552 /CMTT12 rf /Fe 138[49 30 37 38 1[46 46 │ │ │ │ 51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 1[66 11[59 │ │ │ │ -62 69 2[68 6[28 58[{}25 90.9091 /CMTI10 rf /Ff 141[36 │ │ │ │ -4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 │ │ │ │ +62 69 2[68 6[28 58[{}25 90.9091 /CMTI10 rf /Ff 139[35 │ │ │ │ +1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 │ │ │ │ 90.9091 /CMSL10 rf /Fg 134[71 2[71 75 52 53 55 1[75 67 │ │ │ │ 75 112 3[37 75 67 41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ 16[67 67 67 2[37 46[{}25 119.552 /CMBX12 rf /Fh 235[71 │ │ │ │ 4[45 15[{}2 90.9091 /CMSY10 rf /Fi 133[48 48 48 48 48 │ │ │ │ 48 48 48 48 1[48 48 48 48 48 2[48 48 48 48 48 48 48 48 │ │ │ │ 48 1[48 1[48 1[48 48 3[48 48 48 48 48 2[48 48 48 48 2[48 │ │ │ │ 48 1[48 48 48 1[48 48 2[48 48 48 48 1[48 48 48 48 48 │ │ │ │ @@ -3643,17 +3632,17 @@ │ │ │ │ (oin)m(ter)g(to)h(the)g(base)f(arra)m(y)h(from)f(the)g │ │ │ │ Fi(ZV)g Fj(ob)5 b(ject.)41 b(On)29 b(the)g(other)h(hand,)e(the)i(con)m │ │ │ │ (v)m(enience)0 4867 y(mak)m(es)h(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ b(ject.)0 5179 y Fg(1.1)135 b(Data)46 b(Structure)0 5407 │ │ │ │ y Fj(The)30 b Fi(ZV)g Fj(structure)g(has)g(three)g(\014elds.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1146 4 v │ │ │ │ -1328 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 136 399 a Fh(\017)46 b Fi(int)h(size)29 b │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1182 4 v │ │ │ │ +1364 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 136 399 a Fh(\017)46 b Fi(int)h(size)29 b │ │ │ │ Fj(:)41 b(presen)m(t)30 b(size)i(of)e(the)h(v)m(ector.)136 │ │ │ │ 595 y Fh(\017)46 b Fi(int)h(maxsize)29 b Fj(:)40 b(maxim)m(um)30 │ │ │ │ b(size)i(of)e(the)h(v)m(ector.)136 791 y Fh(\017)46 b │ │ │ │ Fi(int)h(owned)27 b Fj(:)40 b(o)m(wner)28 b(\015ag)h(for)f(the)h(data.) │ │ │ │ 41 b(When)28 b Fi(owned)46 b(=)i(1)p Fj(,)28 b(storage)i(for)f │ │ │ │ Fi(owned)e(double)p Fj('s)f(has)j(b)s(een)227 904 y(allo)s(cated)k(b)m │ │ │ │ (y)d(this)h(ob)5 b(ject)31 b(and)f(can)h(b)s(e)f(free'd)g(b)m(y)h(the)f │ │ │ │ @@ -3708,17 +3697,17 @@ │ │ │ │ (storage)i(b)m(y)d(a)i(call)g(to)f Fi(ZV)p 2148 5140 │ │ │ │ V 34 w(clearData\(\))d Fj(then)i(free's)h(the)g(storage)h(for)f(the)227 │ │ │ │ 5253 y(structure)h(with)g(a)h(call)h(to)f Fi(free\(\))p │ │ │ │ Fj(.)227 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fj(If)30 b Fi(zv)g Fj(is)h Fi(NULL)e Fj(an)h(error)g(message)h(is)g │ │ │ │ (prin)m(ted)f(and)g(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1146 4 v 1328 100 a Fi(ZV)29 │ │ │ │ -b Ff(:)i Fe(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fj(3)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1182 4 v 1364 100 a Fi(ZV)29 │ │ │ │ +b Ff(:)i Fe(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fj(3)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)0 591 y Fj(These)33 b(metho)s(d)f(allo)m(w)j(access)g(to)e │ │ │ │ (information)h(in)f(the)g(data)h(\014elds)e(without)i(explicitly)g │ │ │ │ (follo)m(wing)h(p)s(oin)m(ters.)0 704 y(There)g(is)h(o)m(v)m(erhead)h │ │ │ │ (in)m(v)m(olv)m(ed)h(with)d(these)h(metho)s(d)g(due)f(to)h(the)g │ │ │ │ (function)g(call)h(and)e(error)h(c)m(hec)m(king)h(inside)0 │ │ │ │ 817 y(the)31 b(metho)s(ds.)111 1029 y(1.)46 b Fi(int)h(ZV_owned)f(\()h │ │ │ │ (ZV)g(*zv)g(\))h(;)227 1176 y Fj(This)24 b(metho)s(d)g(returns)g(the)g │ │ │ │ @@ -3782,17 +3771,17 @@ │ │ │ │ Fj(with)i(the)g(size)h(of)f(the)g(v)m(ector)h(and)e Fi(**pentries)e │ │ │ │ Fj(with)j(the)g(base)g(address)227 5148 y(of)e(the)f(v)m(ector.)227 │ │ │ │ 5294 y Fe(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fj(If)22 │ │ │ │ b Fi(zv)p Fj(,)i Fi(psize)d Fj(or)h Fi(pentries)e Fj(is)i │ │ │ │ Fi(NULL)p Fj(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ (program)227 5407 y(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1146 4 v │ │ │ │ -1328 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 111 399 a Fj(8.)46 b Fi(void)h(ZV_setEntry)e(\()i(ZV)g(*zv,) │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1182 4 v │ │ │ │ +1364 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 111 399 a Fj(8.)46 b Fi(void)h(ZV_setEntry)e(\()i(ZV)g(*zv,) │ │ │ │ g(int)g(loc,)f(double)h(real,)f(double)g(imag)h(\))g(;)227 │ │ │ │ 551 y Fj(This)30 b(metho)s(d)g(sets)g(the)h Fi(loc)p │ │ │ │ Fj('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f Fi(\(real,imag\))p │ │ │ │ Fj(.)227 704 y Fe(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ b Fj(If)28 b Fi(zv)h Fj(is)g Fi(NULL)e Fj(or)j Fi(loc)46 │ │ │ │ b(<)i(0)p Fj(,)29 b(an)g(error)g(message)h(is)f(prin)m(ted)f(and)h(the) │ │ │ │ g(program)g(exits.)0 978 y Fc(1.2.3)112 b(Initializer)38 │ │ │ │ @@ -3868,17 +3857,17 @@ │ │ │ │ 5294 y Fe(Err)-5 b(or)37 b(che)-5 b(cking:)46 b Fj(If)33 │ │ │ │ b Fi(zv)g Fj(is)g Fi(NULL)p Fj(,)f(or)i Fi(newsize)46 │ │ │ │ b(<)h(0)p Fj(,)34 b(or)f(if)h Fi(0)47 b(<)h(maxsize)d(<)j(newsize)31 │ │ │ │ b Fj(and)i Fi(owned)46 b(=)227 5407 y(0)p Fj(,)31 b(an)f(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1146 4 v 1328 100 a Fi(ZV)29 │ │ │ │ -b Ff(:)i Fe(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fj(5)0 399 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1182 4 v 1364 100 a Fi(ZV)29 │ │ │ │ +b Ff(:)i Fe(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fj(5)0 399 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 607 y Fj(1.)46 b Fi(void)h(ZV_shiftBase)d(\()k(ZV)f │ │ │ │ (*zv,)g(int)g(offset)f(\))h(;)227 770 y Fj(This)32 b(metho)s(d)h │ │ │ │ (shifts)f(the)i(base)f(en)m(tries)g(of)h(the)f(v)m(ector)h(and)f │ │ │ │ (decremen)m(ts)g(the)g(presen)m(t)g(size)h(and)f(max-)227 │ │ │ │ 883 y(im)m(um)g(size)g(of)g(the)f(v)m(ector)j(b)m(y)d │ │ │ │ Fi(offset)p Fj(.)46 b(This)31 b(is)i(a)g(dangerous)f(metho)s(d)g(to)h │ │ │ │ (use)g(b)s(ecause)f(the)h(state)h(of)227 996 y(the)j(v)m(ector)h(is)e │ │ │ │ @@ -3938,17 +3927,17 @@ │ │ │ │ b(The)24 b(n)m(um)m(b)s(er)f(of)i(en)m(tries)g(that)g(are)g(copied)g │ │ │ │ (is)g(the)f(smaller)227 5244 y(of)31 b(the)f(t)m(w)m(o)i(sizes.)227 │ │ │ │ 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(zv1)g Fj(or)g Fi(zv2)g Fj(is)g Fi(NULL)p Fj(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1146 4 v │ │ │ │ -1328 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 111 399 a Fj(8.)46 b Fi(void)h(ZV_log10profile)d(\()j(ZV)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1182 4 v │ │ │ │ +1364 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 111 399 a Fj(8.)46 b Fi(void)h(ZV_log10profile)d(\()j(ZV)g │ │ │ │ (*zv,)g(int)g(npts,)f(DV)h(*xDV,)g(DV)g(*yDV,)f(double)g(tausmall,)1325 │ │ │ │ 511 y(double)g(taubig,)g(int)h(*pnzero,)e(int)i(*pnsmall,)f(int)g │ │ │ │ (*pnbig)h(\))g(;)227 660 y Fj(This)34 b(metho)s(d)f(scans)i(the)f(en)m │ │ │ │ (tries)h(in)f(the)g Fi(ZV)g Fj(ob)5 b(ject)35 b(and)f(\014lls)g │ │ │ │ Fi(xDV)f Fj(and)h Fi(yDV)f Fj(with)h(data)h(that)g(allo)m(ws)227 │ │ │ │ 773 y(a)c(simple)f(log)703 795 y Fa(10)808 773 y Fj(distribution)f │ │ │ │ (plot.)41 b(Only)29 b(en)m(tries)i(whose)f(magnitudes)g(lie)h(in)e(the) │ │ │ │ @@ -4030,17 +4019,17 @@ │ │ │ │ 5259 y(the)j(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fi(fprintf)p Fj(,)e(zero)k(is)e(returned.)227 5407 y │ │ │ │ Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(zv)g │ │ │ │ Fj(or)g Fi(fp)g Fj(are)h Fi(NULL)p Fj(,)e(an)i(error)f(message)h(is)g │ │ │ │ (prin)m(ted)f(and)f(zero)i(is)g(returned.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1146 4 v 1328 100 a Fi(ZV)29 │ │ │ │ -b Ff(:)i Fe(DRAFT)121 b Ff(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2707 100 V 1146 w Fj(7)111 399 y(6.)46 b Fi(int)h(ZV_writeToBinaryFile) │ │ │ │ +TeXDict begin 7 6 bop 91 100 1182 4 v 1364 100 a Fi(ZV)29 │ │ │ │ +b Ff(:)i Fe(DRAFT)121 b Ff(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2671 100 V 1182 w Fj(7)111 399 y(6.)46 b Fi(int)h(ZV_writeToBinaryFile) │ │ │ │ 42 b(\()48 b(ZV)f(*zv,)g(FILE)f(*fp)h(\))h(;)227 557 │ │ │ │ y Fj(This)27 b(metho)s(d)f(writes)h(a)h Fi(ZV)e Fj(ob)5 │ │ │ │ b(ject)28 b(to)g(a)f(binary)g(\014le.)39 b(If)27 b(there)g(are)h(no)e │ │ │ │ (errors)h(in)g(writing)g(the)g(data,)i(the)227 670 y(v)-5 │ │ │ │ b(alue)31 b Fi(1)f Fj(is)h(returned.)39 b(If)30 b(an)g(IO)g(error)g(is) │ │ │ │ h(encoun)m(tered)f(from)g Fi(fwrite)p Fj(,)f(zero)i(is)g(returned.)227 │ │ │ │ 829 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ @@ -4096,17 +4085,17 @@ │ │ │ │ 5140 y(data.)336 5294 y Fh(\017)46 b Fj(The)29 b Fi(inFile)f │ │ │ │ Fj(parameter)j(is)e(the)h(name)g(of)g(the)g(\014le)f(from)h(whic)m(h)f │ │ │ │ (to)h(read)g(in)f(the)h(ob)5 b(ject.)42 b Fi(inFile)427 │ │ │ │ 5407 y Fj(m)m(ust)31 b(b)s(e)e(of)i(the)f(form)g Fi(*.zvf)f │ │ │ │ Fj(for)h(a)h(formatted)g(\014le)g(or)f Fi(*.zvb)f Fj(for)h(a)h(binary)e │ │ │ │ (\014le.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1146 4 v │ │ │ │ -1328 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Decem)m(b)s(er)g(20,)g(2018)p │ │ │ │ -2754 100 V 336 399 a Fh(\017)46 b Fj(The)40 b Fi(outFile)f │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1182 4 v │ │ │ │ +1364 w Fi(ZV)30 b Ff(:)g Fe(DRAFT)h Ff(Octob)s(er)f(11,)h(2021)p │ │ │ │ +2718 100 V 336 399 a Fh(\017)46 b Fj(The)40 b Fi(outFile)f │ │ │ │ Fj(parameter)i(is)g(the)g(name)g(of)f(the)h(\014le)g(to)g(whic)m(h)g │ │ │ │ (to)g(write)g(out)g(the)g(ob)5 b(ject.)72 b(If)427 511 │ │ │ │ y Fi(outfile)28 b Fj(is)j(of)f(the)g(form)g Fi(*.zvf)p │ │ │ │ Fj(,)f(the)h(ob)5 b(ject)31 b(is)f(written)g(to)h(a)f(formatted)h │ │ │ │ (\014le.)41 b(If)30 b Fi(outfile)e Fj(is)i(of)427 624 │ │ │ │ y(the)e(form)g Fi(*.zvb)p Fj(,)f(the)h(ob)5 b(ject)29 │ │ │ │ b(is)f(written)g(to)h(a)f(binary)f(\014le.)40 b(When)28 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ Onemustchoose where to use this object. There is a substantial performance penalty for doing the │ │ │ │ │ simplest operations, and so when we need to manipulate an double vector inside a loop, we extract │ │ │ │ │ out the size and pointer to the base array from the ZV object. On the other hand, the convenience │ │ │ │ │ makes it a widely used object. │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ The ZV structure has three fields. │ │ │ │ │ 1 │ │ │ │ │ - 2 ZV : DRAFT December 20, 2018 │ │ │ │ │ + 2 ZV : DRAFT October 11, 2021 │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ • int maxsize : maximum size of the vector. │ │ │ │ │ • int owned : owner flag for the data. When owned = 1, storage for owned double’s has been │ │ │ │ │ allocated by this object and can be free’d by the object. When owned == 0 but size > 0 , │ │ │ │ │ this object points to entries that have been allocated elsewhere, and these entries will not be │ │ │ │ │ free’d by this object. │ │ │ │ │ • double *vec : pointer to the base address of the double vector │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ the storage for vec is free’d by a call to ZVfree(). The structure’s default fields are then set │ │ │ │ │ with a call to ZV setDefaultFields(). │ │ │ │ │ Error checking: If zv is NULL an error message is printed and the program exits. │ │ │ │ │ 4. void ZV_free ( ZV *zv ) ; │ │ │ │ │ This method releases any storage by a call to ZV clearData() then free’s the storage for the │ │ │ │ │ structure with a call to free(). │ │ │ │ │ Error checking: If zv is NULL an error message is printed and the program exits. │ │ │ │ │ - ZV : DRAFT December 20, 2018 3 │ │ │ │ │ + ZV : DRAFT October 11, 2021 3 │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ These method allow access to information in the data fields without explicitly following pointers. │ │ │ │ │ There is overhead involved with these method due to the function call and error checking inside │ │ │ │ │ the methods. │ │ │ │ │ 1. int ZV_owned ( ZV *zv ) ; │ │ │ │ │ This method returns the value of owned. If owned > 0, then the object owns the data pointed │ │ │ │ │ to by vec and will free this data with a call to ZVfree() when its data is cleared by a call to │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ This method returns vec, a pointer to the base address of the vector. │ │ │ │ │ Error checking: If zv is NULL, an error message is printed and the program exits. │ │ │ │ │ 7. void ZV_sizeAndEntries ( ZV *zv, int *psize, double **pentries ) ; │ │ │ │ │ This method fills *psize with the size of the vector and **pentries with the base address │ │ │ │ │ of the vector. │ │ │ │ │ Error checking: If zv, psize or pentriesis NULL, an error message is printed and the program │ │ │ │ │ exits. │ │ │ │ │ - 4 ZV : DRAFT December 20, 2018 │ │ │ │ │ + 4 ZV : DRAFT October 11, 2021 │ │ │ │ │ 8. void ZV_setEntry ( ZV *zv, int loc, double real, double imag ) ; │ │ │ │ │ This method sets the loc’th entry of the vector to (real,imag). │ │ │ │ │ Error checking: If zv is NULL or loc < 0, an error message is printed and the program exits. │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ There are three initializer methods. │ │ │ │ │ 1. void ZV_init ( ZV *zv, int size, double *entries ) ; │ │ │ │ │ This method initializes the object given a size for the vector and a possible pointer to the │ │ │ │ │ @@ -128,15 +128,15 @@ │ │ │ │ │ Error checking: If zv is NULL or newmaxsize < 0, or if 0 < maxsize and owned == 0, an │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ 5. void ZV_setSize ( ZV *zv, int newsize ) ; │ │ │ │ │ This method sets the size of the vector. If newsize > maxsize, the length of the vector is │ │ │ │ │ increased with a call to ZV setMaxsize(). The size field is set to newsize. │ │ │ │ │ Error checking: If zv is NULL, or newsize < 0, or if 0 < maxsize < newsize and owned = │ │ │ │ │ 0, an error message is printed and the program exits. │ │ │ │ │ - ZV : DRAFT December 20, 2018 5 │ │ │ │ │ + ZV : DRAFT October 11, 2021 5 │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ 1. void ZV_shiftBase ( ZV *zv, int offset ) ; │ │ │ │ │ This method shifts the base entries of the vector and decrements the present size and max- │ │ │ │ │ imum size of the vector by offset. This is a dangerous method to use because the state of │ │ │ │ │ the vector is lost, namely vec, the base of the entries, is corrupted. If the object owns its │ │ │ │ │ entries and ZV free(), ZV setSize() or ZV setMaxsize() is called before the base has been │ │ │ │ │ shifted back to its original position, a segmentation violation will likely result. This is a very │ │ │ │ │ @@ -162,15 +162,15 @@ │ │ │ │ │ This method fills the vector with zeros. │ │ │ │ │ Error checking: If zv is NULL, an error message is printed and the program exits. │ │ │ │ │ 7. void ZV_copy ( ZV *zv1, ZV *zv2 ) ; │ │ │ │ │ This method fills the zv1 object with entries in the iv2 object. Note, this is a mapped copy, │ │ │ │ │ zv1 and zv2 need not have the same size. The number of entries that are copied is the smaller │ │ │ │ │ of the two sizes. │ │ │ │ │ Error checking: If zv1 or zv2 is NULL, an error message is printed and the program exits. │ │ │ │ │ - 6 ZV : DRAFT December 20, 2018 │ │ │ │ │ + 6 ZV : DRAFT October 11, 2021 │ │ │ │ │ 8. void ZV_log10profile ( ZV *zv, int npts, DV *xDV, DV *yDV, double tausmall, │ │ │ │ │ double taubig, int *pnzero, int *pnsmall, int *pnbig ) ; │ │ │ │ │ This method scans the entries in the ZV object and fills xDV and yDV with data that allows │ │ │ │ │ a simple log10 distribution plot. Only entries whose magnitudes lie in the range [tausmall, │ │ │ │ │ taubig] contribute to the distribution. The number of entries whose magnitudes are zero, │ │ │ │ │ smaller than tausmall, or larger than taubig are placed into pnzero, *pnsmall and *pnbig, │ │ │ │ │ respectively. On return, the size of the xDV and yDV objects is npts. │ │ │ │ │ @@ -199,15 +199,15 @@ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ Error checking: If zv or fn are NULL, or if fn is not of the form *.zvf (for a formatted file) │ │ │ │ │ or *.zvb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ 5. int ZV_writeToFormattedFile ( ZV *zv, FILE *fp ) ; │ │ │ │ │ This method writes a ZV object to a formatted file. If there are no errors in writing the data, │ │ │ │ │ the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ Error checking: If zv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ - ZV : DRAFT December 20, 2018 7 │ │ │ │ │ + ZV : DRAFT October 11, 2021 7 │ │ │ │ │ 6. int ZV_writeToBinaryFile ( ZV *zv, FILE *fp ) ; │ │ │ │ │ This method writes a ZV object to a binary file. If there are no errors in writing the data, the │ │ │ │ │ value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ Error checking: If zv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ 7. int ZV_writeForHumanEye ( ZV *zv, FILE *fp ) ; │ │ │ │ │ This method writes a ZV object to a file in a human readable format. is called to write out │ │ │ │ │ the header and statistics. The entries of the vector then follow in eighty column format using │ │ │ │ │ @@ -232,15 +232,15 @@ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ timing output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The inFile parameter is the name of the file from which to read in the object. inFile │ │ │ │ │ must be of the form *.zvf for a formatted file or *.zvb for a binary file. │ │ │ │ │ - 8 ZV : DRAFT December 20, 2018 │ │ │ │ │ + 8 ZV : DRAFT October 11, 2021 │ │ │ │ │ • The outFile parameter is the name of the file to which to write out the object. If │ │ │ │ │ outfile is of the form *.zvf, the object is written to a formatted file. If outfile is of │ │ │ │ │ the form *.zvb, the object is written to a binary file. When outFile is not "none", the │ │ │ │ │ object is written to the file in a human readable format. When outFile is "none", the │ │ │ │ │ object is not written out. │ │ │ │ │ Index │ │ │ │ │ ZV clearData(), 2 │ │ ├── ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ ├── misc.ps │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMBX12 CMTT12 CMR10 CMBX10 CMTT10 CMTI10 CMSY10 CMSL10 │ │ │ │ %%+ CMMI10 CMEX10 CMR8 CMMI8 CMCSC10 CMSY8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o misc.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2018.12.20:0002 │ │ │ │ +%DVIPSSource: TeX output 2021.10.11:0526 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}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 │ │ │ │ @@ -1841,22 +1841,22 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 68 /D put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ -dup 109 /m put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2030,88 +2030,77 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ -AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ -E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ -46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ -FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ -389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ -7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ -2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ -C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ -B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ -AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ -E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ -F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ -0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ -2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ -29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ -CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ -6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ -5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ -36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0CB12E0722F884E5AC84A70 │ │ │ │ -F9961A02B350606AF918566BA9691D0398A2CC361690BE73EF4925A0D2ECB1F4 │ │ │ │ -0E13460AB1F1BA0785EABD3EE51E33F59C4BD9D1D571D3FB31BB1FBD8720F938 │ │ │ │ -446C0E11F20EEF5E1CA90D7D40477822A6A42F4FEC2022E693FE22C5A1AF9630 │ │ │ │ -776C0DFF0FEC2B784C11B06C369ECFB87D0203CFDBB68B5B1A4094214CAEB9E3 │ │ │ │ -4A7C3E79FDC3280803DF51FB7F4330BE7052B10C85968490AECA5538F235AD47 │ │ │ │ -53CA5F9388C6203816370B9995C7949061F1368E93BBC988533B8921DC796A77 │ │ │ │ -7ACAC88B353664EDA7A603F88D3BECDB05B0EE3E540D9E36FEBA536B65A04440 │ │ │ │ -364615F0777F737FED2D7F1152241399ABB9EE0EC08AB9D436B979F0B6CA01C6 │ │ │ │ -DDC90C8F753BC4303A87CCB907FC361991E48B8921C749BF8636CA03FABCD324 │ │ │ │ -C655974B4E0EB2F6CD5CB72823DACF9816B5B2D194A4F12078CBAAAB0CF3B079 │ │ │ │ -6987828F659D9E41441A900666D0FB044F931440EB3279ECE3682C48BD24EF2D │ │ │ │ -76BA3D90BF97D616BBB9D48495D1A671F5EE5F6C73B47C98A95D9C335293DE87 │ │ │ │ -3AB3377E2F51389C988772B5D5946F08C9D8BAC353FAB6C9476B990C9F83E167 │ │ │ │ -910B41B334528AC9EA6DB9576651CE637146F48B7D0DE3D2A78EA76DD9EFE01C │ │ │ │ -6BFA31C84030A7F68288BA14B16EC0775C6BCE3B291AA381ACC3E24F8361A331 │ │ │ │ -B163D714C285BEB6444C616B45D52F6F3F922EC1CDF7591AD95838E049F31313 │ │ │ │ -78BC618378DF01B12CF3F1ECA8455F39C9EDC14AB93AFE5AD701B2D71AE9FAFA │ │ │ │ -01CFE20B58766FCC45624ADF1AE072478758C2A94653BEC240E08068659E3401 │ │ │ │ -859036B571D95091DBE429F920C964494801264F5A2317F0665DFE4B9BDC265B │ │ │ │ -99DA63E2FBA4B3138FBFCB2423963967A807CD957C423FB047A73624985E4557 │ │ │ │ -369E873A831183F9B3E90014F16379916F87F38868815C93E9A0A9E0FEDED80A │ │ │ │ -8F77F70B14471CCDDDF8BEEC53B2332EDAF8B0C64AF4F07D4347D6ADEBF1C69E │ │ │ │ -25E83804980CB5D70B3D15304BFE9FDF3760FA140486B6FB188771D52B1BB638 │ │ │ │ -486E988C0633D4DE6977A46E836FF614F5177D0C2584BCD5B92925AAA487BAEC │ │ │ │ -70D6AB6242CC83DC41D2FC3F4CA6E4DED787170A6F3D44B03C395AB20C66589D │ │ │ │ -94D2F79F1FFFFF5E02810780C19CC333C77BDFF6C0FC593487742F254772159D │ │ │ │ -5ECF261D6F08C80159E9F624639A63A7EABE1E4B6D00CE2482FF707A764DB48E │ │ │ │ -80128EBA350E34C901FF939A9BC92EFADFBEF0C81214EA1AECBF4AB24BF5CB3D │ │ │ │ -464EB7A6D95B05233036238ACD32E051600923466405EB2933C6352634075312 │ │ │ │ -5393BFA7111FEE7606EBC35DE814023275158BB0447E400C1DE6A42EE8EB1BB8 │ │ │ │ -5E38E3FA5264ACF42DDDD30DFCD6C329A43B91A55CBA08A53FB100F1C9A980C2 │ │ │ │ -44A326633EA099054DF2AEE1951036E70CB0C1ABBBBCC00A0C134213AA00A917 │ │ │ │ -A32C39DE0B7E5F96228DFAB0E543DFE92D484E95B95027DD90FE4342BD7B8FE3 │ │ │ │ -A9C83F4BEE220259D17E02FF4F5BEEA7EECA8B564D301E2F5F3EC820377F79FC │ │ │ │ -3B16F2839403F9E77E29FF0CCDFFB61E391317656A333D9618BA46E324349EC4 │ │ │ │ -FE21CB3E51AFF1A5EC3B878263BB9F6B8B9B2A7106A3A50DD425419BFAE37CE8 │ │ │ │ -202837D304D291EFBA116736CC4E59D455CEC0F1F0B3AEA64EFC70FDA2D21C14 │ │ │ │ -C7603AACC8A6238672BF16086A247AA714369768657E2A14EE113A6798E7206F │ │ │ │ -5B689B9103528A718329AC698EDB7FE83A67CAC15E30AD4779B82B5B2F04791D │ │ │ │ -A735A1DF3ECA3E211356FB4EFB612D84759283541AC863E9E0E8026217F6B0A3 │ │ │ │ -3B04FAD1E11E35A645404F66B83184ABB722AE843B8B2A02B665BC0C685FD567 │ │ │ │ -2767A235EE584DC7A1542F2158F1E8D2F7C9397E6D1C4A4F6D6B630E5291E18D │ │ │ │ -8D3C804EB7A6AC2B8ECD9A760D48DE65314409E8B6320E0658E45256ABF44B48 │ │ │ │ -52082B328787D097C8C696561AF42F112DFEE7EE0C4134BD4BFD2F9BDF38CEFC │ │ │ │ -7BF9E81C422B9316E249A2EDC21BA4F6750C994B91831CC4ECCC942071B9AD14 │ │ │ │ -9071E8875D6E9B66C97C96AAEC41C384ADFC077ADB9BF6C5DB63557CF938902B │ │ │ │ -DA89A794156582884DD47A661ACC4DB433C2A5632E │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFA6014763893B61C2FBC20D0DC6145B29D11EA63441A34EFDED1CB07E484 │ │ │ │ +57134BD4E48F1DD4B30ECCF7CDDAEAEEF6B9D5A8EE807145E7DDE2364F6392B9 │ │ │ │ +804A4E8641548A4D31CCEF78628227C39B91F51222C23E975F226B5779D082A9 │ │ │ │ +61D734005C550B18B41017EC2303079F65DA9EA150CA150C96D78222D0C3BD2F │ │ │ │ +965663A7499AEC46661528D583B61926B0DA27604A975C2DB62D56541A96A7A9 │ │ │ │ +F4BC65B6125B075D4C42FEC2CCB43C05CD1F859EAEFDAB60B51DB0C7A898A9BD │ │ │ │ +2893F7D02B2E780860C53104FE4874FF5CED67B93F032B2C7C4DA3107A331E29 │ │ │ │ +A928CD854045B7C3484965F73EF5C68F33A2DB1A1CF87F9D960FE5300E2868B0 │ │ │ │ +AED771B431B7FA0D159297CB7F6797E6CE2AD94D32735080AC516B367C95D2EC │ │ │ │ +B82FBED648C29230B6652507DEF7C3B32E3689F7DE43EDFA90CB3BB5B4A5BFA4 │ │ │ │ +2E1C809B4B0D313FF50DC89D047A660EBFED63467D43520113F949DC49C3C88E │ │ │ │ +E063361BCB42E29E3DB1C77EE5596110EAFE8FE9FBB3570315013CBFF11559F8 │ │ │ │ +113911ED79B4389BD664023B1D6335AB9A69DFEA89365C0578AD1C87EA487A57 │ │ │ │ +6F8BB71B3180494CA3D0AF0B8900A9859DC53CE82C02030BA78EA8301B1FD567 │ │ │ │ +53291395C141525C95E7D0E2E52958D0AFCAF74B192DC3E67E1B94E3C78C8696 │ │ │ │ +E793DCDA8887F7738C46BB1ABA3C67F4EC7F2DAB8DDC3A5913D4A5C17F665878 │ │ │ │ +9FA2D4545F25475767F43A789828B5F2CD21E6CCCB81783E82B5D4F07FB4F1E0 │ │ │ │ +E2F0865C1615BF9E5D964D885CAD735BDE8F48EE4A75EC20659A1453E6AC839C │ │ │ │ +3217147E8A65AB44DE19A2673FCF7C64A49F450C89915FA74129D76289A830EF │ │ │ │ +30BBF15DA63402166F691C7D1EE1468E2322D484F98E6AA148AA8C0BC06F5AF2 │ │ │ │ +34467A854E1D97D2C741F51EC5031E0359376FB1AEB72D08146920A7296C0B57 │ │ │ │ +F88A1E4DB173B69F18EF357FEE45E6F04FD0C6214DD2CAF6FFEF3B9A163ECBC2 │ │ │ │ +524F1A375EA70069FF950AD9567C402827F256FF1C96BA2C62C44850B158F91B │ │ │ │ +72255A46C338CEC8122DED133A838D6763946166B368DEFE7325E08C86F51622 │ │ │ │ +69936DC11501C051C80ED9F75C60577A92924D8E558C07174534566D0334D030 │ │ │ │ +B61896184802A1DE6F45F43D7DABADE5BA8649E3DEE7C1140DF3493A50C41489 │ │ │ │ +5D7608A975346334F95AB3A2CC83907A36213725B5DC1622A90AC6F6CA6B3D92 │ │ │ │ +6DF9DAACD3F7A153BB4B644602E45464B1F0876EBC859C832760B544C3A77607 │ │ │ │ +83EAFA9EEBF47EF13943381CAAE76A04BEA6CDBE00DB4E04BE163B9E964F67A7 │ │ │ │ +B9E1529E1D06EBC78B8E065B20BE92584886D7511EA8DE55537E383E1D364EC2 │ │ │ │ +EBD47D726E8231DD649325400A4D61D5C02562D8F9EF244DD30047180F208FB8 │ │ │ │ +51AB25D5CC0C705546EE46DF22D53C0BED0B374897BD2C97F5488A1C4C5E3ABF │ │ │ │ +474CDA3AAB557E2F2808B4BED80276376A4CFEC4AFF0DF23EBCDB978DDBFA299 │ │ │ │ +B6B2F35D86103CD22F3F36F34ABB3D383343B78DDED901F54FCC407701FBBFCF │ │ │ │ +C1A320D044675262AA78ED04278CB68D66AA47BB3C14216B1FDC7F097BC8CDE3 │ │ │ │ +5003B9015F460F49508864DC9FE6891CEDF64B74E7E0B4B0BEC272E5811CA07C │ │ │ │ +E8875C8C811123D9A98CBE324E5541ABCAD7D2133ED9FFD229F86DE2F570A7D6 │ │ │ │ +547426DEE0764283F345B91BFB72FA938A89AC0AA85FD9075023259E5CEDBBCD │ │ │ │ +966588EF9F583767FE212C62CBAB704E51B4DB207EBB064FBC71ACB56E4B72C1 │ │ │ │ +5FC887713EF4005492FEF89CB11F44007A032787C58D7472957FA981B8FB9CC3 │ │ │ │ +0C7DA0D6C4FE9CDEE5DC1B2CC4DD0BD9DAF60F2491426AE23985EBD22BDA9293 │ │ │ │ +BB909F1F8AA7A9BE8E9EA76DB1F5272EEA34CF1DC240E4E3BEE6C8AA8F15D5B6 │ │ │ │ +E76DF81CF9E90D3AF24D29476293CB30989613A54B35AD3D0F63AB712D0C9547 │ │ │ │ +86BBB2261E5667A29A8FBD38483E389D04057E27F6228ACFF8FDE41AD663A1CB │ │ │ │ +125AACC44A2D94D9E1BC528F41D5DFAD884ADB8D8D5FF9F94849CAD07A7158EE │ │ │ │ +33C870141837D913AC51BB30437C6CBECC3A026A435619DDF588222E34ED0EA5 │ │ │ │ +63755FE09F2C2542BE773C2D223BBBFD7F2001DEAA1A49078CBF224F779553D3 │ │ │ │ +7E5BE906D08D88EFBCBE60B4A8697E0B85ED7342FB4C1A59C001F381108B8A0C │ │ │ │ +DA967C1961F6D127533BD0F19A78FB4496E47AEED2A8F76464E7C8BD7B4977A1 │ │ │ │ +E13BA2820C2DFEBB95D7A48C409AD9D9EA2B2B3D4EC39DD2E0EBF3EE5AB6DFCB │ │ │ │ +AC26FFE6812388E38C5C7B8C59ABFA4EE61B323B01ECBA0F6BB016FF6F6E7D03 │ │ │ │ +E3B440C00BA0E73A2D0DC86F87CD4F4448FD2F726AAF9FE78063E5AB6A1C69E7 │ │ │ │ +371602ACE2DACC69200B8AC796CEE0E26DED6FFBE05D7D6E8D157B5033C7F00C │ │ │ │ +A888E449C0F80228747EA7329FA33DA8BA02E6F9ADCAB859E0947F5E │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5185,16 +5174,16 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 255[55{}1 66.4176 /CMSY8 rf /Fb 139[54 42 │ │ │ │ 2[51 58 56 68 3[27 56 1[49 51 57 54 1[56 14[73 13[75 │ │ │ │ 9[29 7[50 50 50 48[{}19 90.9091 /CMCSC10 rf /Fc 171[41 │ │ │ │ 11[58 12[20 59[{}3 66.4176 /CMMI8 rf /Fd 206[35 35 48[{}2 │ │ │ │ 66.4176 /CMR8 rf /Fe 220[48 48 34[{}2 83.022 /CMEX10 │ │ │ │ rf /Ff 134[45 52 29[62 53 75 2[62 2[69 72 4[62 7[75 1[69 │ │ │ │ -68 2[71 2[25 25 58[{}15 90.9091 /CMMI10 rf /Fg 141[36 │ │ │ │ -4[76 7[40 1[40 51 29[69 9[25 1[45 5[45 45 45 3[25 44[{}12 │ │ │ │ +68 2[71 2[25 25 58[{}15 90.9091 /CMMI10 rf /Fg 139[35 │ │ │ │ +1[36 2[45 9[40 1[40 51 18[71 20[25 7[45 45 45 3[25 44[{}12 │ │ │ │ 90.9091 /CMSL10 rf /Fh 234[71 71 4[45 12[71 1[71{}5 90.9091 │ │ │ │ /CMSY10 rf /Fi 136[60 42 49 30 37 38 1[46 46 51 74 23 │ │ │ │ 42 1[28 46 42 1[42 46 42 42 46 12[65 1[66 3[68 7[59 62 │ │ │ │ 69 2[68 6[28 12[33 45[{}29 90.9091 /CMTI10 rf /Fj 134[59 │ │ │ │ 1[81 1[62 44 44 46 1[62 56 62 93 31 2[31 62 56 1[51 62 │ │ │ │ 50 1[54 12[78 5[88 106 67 4[88 18[56 56 56 56 2[31 1[31 │ │ │ │ 44[{}29 99.6264 /CMBX12 rf /Fk 130[48 1[48 48 48 48 48 │ │ │ │ @@ -5270,18 +5259,18 @@ │ │ │ │ Fo(,)30 b Fk(south)g Fo(or)h Fk(bottom)e Fo(are)i(less)g(than)g(or)g │ │ │ │ (equal)g(to)h(zero,)g(of)f(if)g Fk(east)25 b Fh(\025)h │ │ │ │ Fk(n1)o Fo(,)32 b(of)f(if)g Fk(north)24 b Fh(\025)i Fk(n2)p │ │ │ │ Fo(,)31 b(of)g(if)227 5407 y Fk(top)25 b Fh(\025)g Fk(n3)o │ │ │ │ Fo(,)31 b(an)f(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program) │ │ │ │ g(exits.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1094 4 v │ │ │ │ -1275 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 111 399 a Fo(2.)46 b Fk(void)h(mkNDperm2)e(\()j(int) │ │ │ │ -f(n1,)f(int)h(n2,)g(int)g(n3,)g(int)g(newToOld[],)e(int)i(west,)1039 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1130 4 v │ │ │ │ +1311 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 111 399 a Fo(2.)46 b Fk(void)h(mkNDperm2)e(\()j(int)f(n1,) │ │ │ │ +f(int)h(n2,)g(int)g(n3,)g(int)g(newToOld[],)e(int)i(west,)1039 │ │ │ │ 511 y(int)g(east,)f(int)h(south,)f(int)h(north,)f(int)h(bottom,)f(int)h │ │ │ │ (top)f(\))i(;)227 655 y Fo(This)c(metho)s(d)f(this)i(v)m(ector)g │ │ │ │ (\014lls)f(a)h(p)s(erm)m(utation)f(v)m(ector)i(with)e(the)h(nested)f │ │ │ │ (dissection)h(new-to-old)227 768 y(ordering)30 b(of)h(the)f(v)m │ │ │ │ (ertices)j(for)d(the)g(subgrid)f(de\014ned)g(b)m(y)i(no)s(des)e(whose)h │ │ │ │ (co)s(ordinates)h(lie)h(in)227 955 y Fk([west,)46 b(east])h(x)g │ │ │ │ ([south,)f(north])g(x)i([bottom,)d(top].)227 1142 y Fo(There)31 │ │ │ │ @@ -5367,17 +5356,17 @@ │ │ │ │ Fo(,)26 b(en)m(tries)h(in)f Fk(dsizes2[])d Fo(m)m(ust)227 │ │ │ │ 5294 y(sum)28 b(to)h Fk(n2)47 b(-)h(p2)f(+)g(1)p Fo(,)29 │ │ │ │ b(and)f(en)m(tries)i(in)e Fk(dsizes3[])e Fo(m)m(ust)i(sum)g(to)h │ │ │ │ Fk(n3)47 b(-)h(p3)f(+)g(1)p Fo(,)29 b(an)g(error)f(message)227 │ │ │ │ 5407 y(is)j(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1094 4 v 1275 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fo(3)111 399 y(5.)46 b Fk(void)h(fp2DGrid)e(\()j(int) │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1311 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fo(3)111 399 y(5.)46 b Fk(void)h(fp2DGrid)e(\()j(int) │ │ │ │ f(n1,)g(int)g(n2,)g(int)f(ivec[],)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ 562 y Fo(This)40 b(metho)s(d)f(writes)i(the)f Fk(ivec[])f │ │ │ │ Fo(v)m(ector)j(on)m(to)f(an)f Fk(n1)48 b(x)f(n2)40 b │ │ │ │ Fo(grid)g(to)h(\014le)f Fk(fp)p Fo(.)70 b(This)39 b(is)i(useful)e(to) │ │ │ │ 227 675 y(visualize)32 b(an)e(ordering)g(or)h(a)f(metric)h(on)g(a)g │ │ │ │ (grid.)227 838 y Fi(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fo(If)29 b Fk(n1)g Fo(or)h Fk(n2)f Fo(are)h(less)g(than)g(or)g(equal) │ │ │ │ @@ -5449,18 +5438,18 @@ │ │ │ │ (amoun)m(ts)227 5131 y(of)31 b(output.)227 5294 y Fi(Err)-5 │ │ │ │ b(or)33 b(che)-5 b(cking:)40 b Fo(If)29 b Fk(graph)f │ │ │ │ Fo(is)h Fk(NULL)p Fo(,)g(or)g(if)h Fk(msglvl)46 b(>)h(0)29 │ │ │ │ b Fo(and)g Fk(msgFile)e Fo(is)j Fk(NULL)p Fo(,)e(an)h(error)g(message)i │ │ │ │ (is)227 5407 y(prin)m(ted)f(and)g(the)h(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1094 4 v │ │ │ │ -1275 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 111 399 a Fo(2.)46 b Fk(ETree)h(*)g(orderViaND)e(\() │ │ │ │ -j(Graph)e(*graph,)g(int)h(maxdomainsize,)d(int)i(seed,)1230 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1130 4 v │ │ │ │ +1311 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 111 399 a Fo(2.)46 b Fk(ETree)h(*)g(orderViaND)e(\()j │ │ │ │ +(Graph)e(*graph,)g(int)h(maxdomainsize,)d(int)i(seed,)1230 │ │ │ │ 511 y(int)g(msglvl,)g(FILE)h(*msgFile)e(\))j(;)227 664 │ │ │ │ y Fo(This)32 b(metho)s(d)g(returns)g(a)h(fron)m(t)g(tree)g │ │ │ │ Fk(ETree)f Fo(ob)5 b(ject)33 b(for)g(a)g(nested)g(dissection)g │ │ │ │ (ordering)g(of)g(the)f(graph)227 777 y Fk(graph)p Fo(.)45 │ │ │ │ b(If)32 b(a)g(subgraph)e(has)i(more)h(v)m(ertices)g(than)f(the)h │ │ │ │ Fk(maxdomainsize)28 b Fo(parameter,)33 b(it)g(is)f(split.)46 │ │ │ │ b(The)227 889 y Fk(seed)c Fo(parameter)i(is)f(a)g(random)f(n)m(um)m(b)s │ │ │ │ @@ -5537,17 +5526,17 @@ │ │ │ │ 5294 y(The)40 b Fk(graph)f Fo(ob)5 b(ject)41 b(de\014nes)e(the)h │ │ │ │ (connectivit)m(y)i(of)f(the)f(v)m(ertices.)72 b(The)39 │ │ │ │ b Fk(coords)g Fo(ob)5 b(ject)41 b(de\014nes)e(the)227 │ │ │ │ 5407 y(lo)s(cations)k(of)f(the)f(v)m(ertices.)76 b(The)41 │ │ │ │ b Fk(tagsIV)e Fo(ob)5 b(ject)43 b(is)e(used)g(to)h(de\014ne)f(whether)f │ │ │ │ (or)i(not)f(an)h(edge)g(is)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1094 4 v 1275 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fo(5)227 399 y(dra)m(wn)g(b)s(et)m(w)m(een)h(t)m(w)m │ │ │ │ +TeXDict begin 5 4 bop 91 100 1130 4 v 1311 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fo(5)227 399 y(dra)m(wn)g(b)s(et)m(w)m(een)h(t)m(w)m │ │ │ │ (o)h(v)m(ertices)h(adjacen)m(t)f(in)e(the)h(graph.)47 │ │ │ │ b(When)32 b Fk(tagsIV)f Fo(is)i(not)g Fk(NULL)p Fo(,)f(if)g(there)h(is) │ │ │ │ g(an)227 511 y(edge)g Fk(\(u,v\))f Fo(in)g(the)h(graph)f(and)f │ │ │ │ Fk(tags[u])46 b(=)i(tags[v])p Fo(,)31 b(then)h(the)h(edge)g(with)f │ │ │ │ (width)g Fk(linewidth1)e Fo(is)227 624 y(dra)m(wn.)54 │ │ │ │ b(F)-8 b(or)36 b(edges)f Fk(\(u,v\))f Fo(in)g(the)h(graph)g(and)f │ │ │ │ Fk(tags[u])46 b(!=)h(tags[v])p Fo(,)35 b(then)f(the)h(edge)h(with)f │ │ │ │ @@ -5630,17 +5619,17 @@ │ │ │ │ Fo(is)31 b(computed)g(as)g(the)g(pro)s(duct)f(of)i Ff(A)f │ │ │ │ Fo(with)f Ff(X)7 b Fo(.)44 b Ff(A)31 b Fo(can)g(b)s(e)g(real)g(\()p │ │ │ │ Fk(type)47 b(=)227 5407 y(1)p Fo(\))28 b(or)f(complex)i(\()p │ │ │ │ Fk(type)47 b(=)g(2)p Fo(\).)40 b(The)27 b(n)m(um)m(b)s(er)f(of)i │ │ │ │ (columns)g(of)f Ff(X)35 b Fo(is)28 b(giv)m(en)h(b)m(y)e │ │ │ │ Fk(nrhs)p Fo(.)39 b(The)27 b(linear)h(system)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1094 4 v │ │ │ │ -1275 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 227 399 a Fo(is)41 b(ordered)f(using)h(theoretical)i │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1130 4 v │ │ │ │ +1311 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 227 399 a Fo(is)41 b(ordered)f(using)h(theoretical)i │ │ │ │ (nested)e(dissection,)j(and)d(the)g(fron)m(t)g(tree)g(is)g(transformed) │ │ │ │ f(using)h(the)227 511 y Fk(maxzeros)31 b Fo(and)i Fk(maxsize)e │ │ │ │ Fo(parameters.)49 b(The)33 b(addresses)f(of)h(the)h(fron)m(t)f(tree,)i │ │ │ │ (sym)m(b)s(olic)e(factorization,)227 624 y(and)d(three)h(matrix)f(ob)5 │ │ │ │ b(jects)31 b(are)g(returned)e(in)h(the)h(last)g(\014v)m(e)g(argumen)m │ │ │ │ (ts)g(of)f(the)h(calling)h(sequence.)227 769 y Fi(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(None)31 b(presen)m(tly)-8 │ │ │ │ @@ -5707,17 +5696,17 @@ │ │ │ │ b(Otherwise,)41 b(the)e Fk(ETree)p 3253 5181 V 33 w(writeToFile\(\))427 │ │ │ │ 5294 y Fo(metho)s(d)g(is)h(called)h(to)f(write)g(the)g(ob)5 │ │ │ │ b(ject)40 b(to)g(a)g(formatted)h(\014le)e(\(if)h Fk(ETreeFile)d │ │ │ │ Fo(is)j(of)g(the)f(form)427 5407 y Fk(*.etreef)p Fo(\),)29 │ │ │ │ b(or)h(a)h(binary)f(\014le)g(\(if)h Fk(ETreeFile)d Fo(is)i(of)h(the)f │ │ │ │ (form)g Fk(*.etreeb)p Fo(\).)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1094 4 v 1275 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fo(7)111 399 y(3.)46 b Fk(testOrderViaND)e(msglvl)i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1130 4 v 1311 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fo(7)111 399 y(3.)46 b Fk(testOrderViaND)e(msglvl)i │ │ │ │ (msgFile)g(GraphFile)f(maxdomainsize)g(seed)h(ETreeFile)227 │ │ │ │ 550 y Fo(This)23 b(program)h(reads)g(in)g(a)g Fk(Graph)f │ │ │ │ Fo(ob)5 b(ject)25 b(from)e(a)i(\014le)f(and)f(computes)h(a)h │ │ │ │ (generalized)g(nested)f(dissection)227 663 y(ordering)30 │ │ │ │ b(of)h(the)f(graph.)336 878 y Fh(\017)46 b Fo(The)28 │ │ │ │ b Fk(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ (output)h(|)f(taking)i Fk(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ @@ -5787,35 +5776,34 @@ │ │ │ │ Fo(is)j(of)g(the)f(form)427 5079 y Fk(*.etreef)p Fo(\),)29 │ │ │ │ b(or)h(a)h(binary)f(\014le)g(\(if)h Fk(ETreeFile)d Fo(is)i(of)h(the)f │ │ │ │ (form)g Fk(*.etreeb)p Fo(\).)111 5294 y(5.)46 b Fk(drawGraph)g(msglvl)g │ │ │ │ (msgFile)f(inGraphFile)g(inCoordsFile)g(inTagsIVfile)705 │ │ │ │ 5407 y(outEPSfile)g(linewidth1)g(linewidth2)g(bbox[4])g(rect[4])h │ │ │ │ (radius)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1094 4 v │ │ │ │ -1275 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)i(20,)f │ │ │ │ -(2018)p 2807 100 V 227 399 a Fo(This)41 b(driv)m(er)g(program)h │ │ │ │ -(generates)h(a)f(Encapsulated)f(P)m(ostscript)i(\014le)e │ │ │ │ -Fk(outEPSfile)e Fo(of)j(a)g(2-D)g(graph)227 511 y(using)29 │ │ │ │ -b(a)i Fk(Graph)d Fo(ob)5 b(ject,)31 b(a)f Fk(Coords)e │ │ │ │ -Fo(ob)5 b(ject)31 b(and)e(a)h(tags)h Fk(IV)e Fo(ob)5 │ │ │ │ -b(ject)30 b(that)h(con)m(tains)f(the)g(comp)s(onen)m(t)g(ids)227 │ │ │ │ -624 y(of)h(the)f(v)m(ertices.)227 780 y(See)h(the)f Fk(doDraw)f │ │ │ │ -Fo(script)h(\014le)h(in)f(this)g(directory)h(for)f(an)g(example)i │ │ │ │ -(calling)f(sequence.)336 978 y Fh(\017)46 b Fo(The)28 │ │ │ │ -b Fk(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ -(output)h(|)f(taking)i Fk(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ -1091 y(that)j(all)h(ob)5 b(jects)31 b(are)f(written)h(to)g(the)f │ │ │ │ -(output)g(\014le.)336 1243 y Fh(\017)46 b Fo(The)33 b │ │ │ │ -Fk(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fk(msgFile)e Fo(is)i Fk(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ -1356 y(message)27 b(\014le)f(is)g Fi(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ -b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1469 │ │ │ │ -y(data.)336 1620 y Fh(\017)46 b Fo(The)23 b Fk(inGraphFile)d │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1130 4 v │ │ │ │ +1311 w Fk(Misc)30 b Fg(:)40 b Fi(DRAFT)30 b Fg(Octob)s(er)h(11,)g(2021) │ │ │ │ +p 2771 100 V 227 399 a Fo(This)41 b(driv)m(er)g(program)h(generates)h │ │ │ │ +(a)f(Encapsulated)f(P)m(ostscript)i(\014le)e Fk(outEPSfile)e │ │ │ │ +Fo(of)j(a)g(2-D)g(graph)227 511 y(using)29 b(a)i Fk(Graph)d │ │ │ │ +Fo(ob)5 b(ject,)31 b(a)f Fk(Coords)e Fo(ob)5 b(ject)31 │ │ │ │ +b(and)e(a)h(tags)h Fk(IV)e Fo(ob)5 b(ject)30 b(that)h(con)m(tains)f │ │ │ │ +(the)g(comp)s(onen)m(t)g(ids)227 624 y(of)h(the)f(v)m(ertices.)227 │ │ │ │ +780 y(See)h(the)f Fk(doDraw)f Fo(script)h(\014le)h(in)f(this)g │ │ │ │ +(directory)h(for)f(an)g(example)i(calling)f(sequence.)336 │ │ │ │ +978 y Fh(\017)46 b Fo(The)28 b Fk(msglvl)f Fo(parameter)i(determines)g │ │ │ │ +(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fk(msglvl)46 │ │ │ │ +b(>=)h(3)28 b Fo(means)427 1091 y(that)j(all)h(ob)5 b(jects)31 │ │ │ │ +b(are)f(written)h(to)g(the)f(output)g(\014le.)336 1243 │ │ │ │ +y Fh(\017)46 b Fo(The)33 b Fk(msgFile)e Fo(parameter)j(determines)f │ │ │ │ +(the)h(message)g(\014le)f(|)h(if)f Fk(msgFile)e Fo(is)i │ │ │ │ +Fk(stdout)p Fo(,)g(then)g(the)427 1356 y(message)27 b(\014le)f(is)g │ │ │ │ +Fi(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ +Fi(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ +1469 y(data.)336 1620 y Fh(\017)46 b Fo(The)23 b Fk(inGraphFile)d │ │ │ │ Fo(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ Fk(Graph)f Fo(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f │ │ │ │ (form)427 1733 y Fk(*.graphf)18 b Fo(or)j Fk(*.graphb)p │ │ │ │ Fo(.)35 b(The)19 b Fk(Graph)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fk(Graph)p 3368 1733 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 1846 y Fo(metho)s(d.)336 │ │ │ │ 1997 y Fh(\017)46 b Fo(The)41 b Fk(inCoordsFile)c Fo(parameter)k(is)g │ │ │ │ @@ -5874,17 +5862,17 @@ │ │ │ │ y Fd(1)p Fc(;)p Fd(1)1975 5207 y Fe(#)16 b(")2129 5294 │ │ │ │ y Ff(X)2204 5308 y Fd(0)2129 5407 y Ff(X)2204 5421 y │ │ │ │ Fd(1)2285 5207 y Fe(#)2359 5351 y Fo(=)2455 5207 y Fe(")2545 │ │ │ │ 5294 y Ff(B)2614 5308 y Fd(0)2545 5407 y Ff(B)2614 5421 │ │ │ │ y Fd(1)2695 5207 y Fe(#)2768 5351 y Fo(=)25 b Ff(B)5 │ │ │ │ b(:)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1094 4 v 1275 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2760 100 V 1094 w Fo(9)1541 1617 y(Figure)f(1.1:)42 b │ │ │ │ +TeXDict begin 9 8 bop 91 100 1130 4 v 1311 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2724 100 V 1130 w Fo(9)1541 1617 y(Figure)f(1.1:)42 b │ │ │ │ Fb(R2D100)750 4143 y @beginspecial 0 @llx 0 @lly 600 │ │ │ │ @urx 600 @ury 2880 @rwi 2880 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../misc/doc/R2D100notags.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ /radius 10.000 def │ │ │ │ /Helvetica findfont 12.500 scalefont setfont │ │ │ │ @@ -6289,17 +6277,17 @@ │ │ │ │ 348.123 444.374 () radius drawLabel │ │ │ │ grestore │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1071 4 │ │ │ │ -v 1253 w Fk(Misc)29 b Fg(:)41 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)h(20,)h │ │ │ │ -(2018)p 2830 100 V 813 1617 a Fo(Figure)e(1.2:)42 b Fb(R2D100:)k │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1107 4 │ │ │ │ +v 1289 w Fk(Misc)29 b Fg(:)41 b Fi(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2794 100 V 813 1617 a Fo(Figure)e(1.2:)42 b Fb(R2D100:)k │ │ │ │ (fishnet)33 b(domain)h(decomposition)750 4143 y @beginspecial │ │ │ │ 0 @llx 0 @lly 600 @urx 600 @ury 2880 @rwi 2880 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../misc/doc/R2D100fishnet.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ /radius 10.000 def │ │ │ │ /Helvetica findfont 12.500 scalefont setfont │ │ │ │ @@ -6708,17 +6696,17 @@ │ │ │ │ 348.123 444.374 (0) radius drawLabel │ │ │ │ grestore │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1071 4 v 1252 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2737 100 V 1071 w Fo(11)227 399 y Ff(A)f Fo(is)f(factored)h(as)1106 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1107 4 v 1288 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2701 100 V 1107 w Fo(11)227 399 y Ff(A)f Fo(is)f(factored)h(as)1106 │ │ │ │ 410 y Fe(")1196 497 y Ff(A)1264 511 y Fd(0)p Fc(;)p Fd(0)1441 │ │ │ │ 497 y Ff(A)1509 511 y Fd(0)p Fc(;)p Fd(1)1196 610 y Ff(A)1264 │ │ │ │ 624 y Fd(1)p Fc(;)p Fd(0)1441 610 y Ff(A)1509 624 y Fd(1)p │ │ │ │ Fc(;)p Fd(1)1645 410 y Fe(#)1719 554 y Fo(=)1815 410 │ │ │ │ y Fe(")1905 497 y Ff(L)1967 511 y Fd(0)p Fc(;)p Fd(0)2199 │ │ │ │ 497 y Fo(0)1905 610 y Ff(L)1967 624 y Fd(1)p Fc(;)p Fd(0)2144 │ │ │ │ 610 y Ff(L)2206 624 y Fd(1)p Fc(;)p Fd(1)2342 410 y Fe(#)15 │ │ │ │ @@ -6827,18 +6815,18 @@ │ │ │ │ Fo(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ Fk(Graph)e Fo(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g(of)h(the)f │ │ │ │ (form)427 5294 y Fk(*.graphf)18 b Fo(or)j Fk(*.graphb)p │ │ │ │ Fo(.)35 b(The)19 b Fk(Graph)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fk(Graph)p 3368 5294 V 33 │ │ │ │ w(readFromFile\(\))427 5407 y Fo(metho)s(d.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1071 │ │ │ │ -4 v 1253 w Fk(Misc)29 b Fg(:)41 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2830 100 V 336 399 a Fh(\017)46 b Fo(The)29 │ │ │ │ -b Fk(ETreeFile)e Fo(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1107 │ │ │ │ +4 v 1289 w Fk(Misc)29 b Fg(:)41 b Fi(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2794 100 V 336 399 a Fh(\017)46 b Fo(The)29 b │ │ │ │ +Fk(ETreeFile)e Fo(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ Fk(ETree)e Fo(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g(of)h(the)f │ │ │ │ (form)427 511 y Fk(*.etreef)18 b Fo(or)j Fk(*.etreeb)p │ │ │ │ Fo(.)35 b(The)19 b Fk(ETree)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fk(ETree)p 3368 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fo(metho)s(d.)336 769 │ │ │ │ y Fh(\017)46 b Fo(The)31 b Fk(mapFile)f Fo(parameter)i(is)g(the)g │ │ │ │ (input)e(\014le)i(for)f(the)h(map)f Fk(IV)g Fo(ob)5 b(ject.)46 │ │ │ │ @@ -6905,17 +6893,17 @@ │ │ │ │ Fk(nrow)f Fo(m)m(ust)h(b)s(e)g(equal)h(to)g Fk(ncol)e │ │ │ │ Fo(since)h(w)m(e)h(are)g(factoring)g(a)g(square)f(matrix.\))50 │ │ │ │ b(Eac)m(h)34 b(of)427 5294 y(the)h Fk(nent)e Fo(follo)m(wing)i(lines)g │ │ │ │ (con)m(tain)g(one)f(nonzero)h(en)m(try)-8 b(.)53 b(F)-8 │ │ │ │ b(or)35 b(a)f(complex)h(matrix,)h(the)e(\014le)g(has)427 │ │ │ │ 5407 y(this)d(structure.)p eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1071 4 v 1252 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2737 100 V 1071 w Fo(13)427 399 y Fk(nrow)47 b(ncol)g(nent)427 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1107 4 v 1288 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2701 100 V 1107 w Fo(13)427 399 y Fk(nrow)47 b(ncol)g(nent)427 │ │ │ │ 511 y(...)427 624 y(irow)g(jcol)g(real_value)e(imag_value)427 │ │ │ │ 737 y(...)427 904 y Fo(F)-8 b(or)30 b(b)s(oth)e(real)i(and)e(complex)h │ │ │ │ (en)m(tries,)i(the)e(en)m(tries)g(need)g(not)g(b)s(e)f(disjoin)m(t,)i │ │ │ │ (i.e.,)h(en)m(tries)e(with)g(the)427 1017 y(same)i Fk(irow)e │ │ │ │ Fo(and)h Fk(jcol)f Fo(v)-5 b(alues)31 b(are)g Fi(summe)-5 │ │ │ │ b(d)p Fo(.)336 1163 y Fh(\017)46 b Fo(The)26 b Fk(rhsFileName)d │ │ │ │ Fo(parameter)k(is)g(the)f(name)h(of)f(the)h(input)e(\014le)i(for)f(the) │ │ │ │ @@ -6971,20 +6959,20 @@ │ │ │ │ (\(SPOOLES)p 1417 5148 V 32 w(SYMMETRIC\))28 b Fo(for)i │ │ │ │ Ff(A)g Fo(real)h(or)g(complex)g(symmetric,)500 5278 y │ │ │ │ Fn({)45 b Fk(type)i(=)g(1)h(\(SPOOLES)p 1417 5278 V 32 │ │ │ │ w(HERMITIAN\))28 b Fo(for)i Ff(A)g Fo(complex)h(Hermitian,)500 │ │ │ │ 5407 y Fn({)45 b Fk(type)i(=)g(2)h(\(SPOOLES)p 1417 5407 │ │ │ │ V 32 w(NONSYMMETRIC\))p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1071 │ │ │ │ -4 v 1253 w Fk(Misc)29 b Fg(:)41 b Fi(DRAFT)30 b Fg(Decem)m(b)s(er)h │ │ │ │ -(20,)h(2018)p 2830 100 V 427 399 a Fo(for)e Ff(A)h Fo(real)g(or)f │ │ │ │ -(complex)h(nonsymmetric.)336 539 y Fh(\017)46 b Fo(The)30 │ │ │ │ -b Fk(patchAndGoFlag)d Fo(sp)s(eci\014es)j(the)g(\\patc)m(h-and-go")j │ │ │ │ -(strategy)-8 b(.)500 680 y Fn({)45 b Fk(patchAndGoFlag)f(=)k(0)21 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1107 │ │ │ │ +4 v 1289 w Fk(Misc)29 b Fg(:)41 b Fi(DRAFT)30 b Fg(Octob)s(er)g(11,)i │ │ │ │ +(2021)p 2794 100 V 427 399 a Fo(for)e Ff(A)h Fo(real)g(or)f(complex)h │ │ │ │ +(nonsymmetric.)336 539 y Fh(\017)46 b Fo(The)30 b Fk(patchAndGoFlag)d │ │ │ │ +Fo(sp)s(eci\014es)j(the)g(\\patc)m(h-and-go")j(strategy)-8 │ │ │ │ +b(.)500 680 y Fn({)45 b Fk(patchAndGoFlag)f(=)k(0)21 │ │ │ │ b Fo(|)g(if)g(a)h(zero)g(piv)m(ot)g(is)f(detected,)k(stop)c(computing)h │ │ │ │ (the)f(factorization,)597 793 y(set)31 b(the)g(error)f(\015ag)g(and)g │ │ │ │ (return.)500 920 y Fn({)45 b Fk(patchAndGoFlag)f(=)k(1)30 │ │ │ │ b Fo(|)h(if)g(a)h(small)f(or)h(zero)f(piv)m(ot)h(is)g(detected,)g(set)g │ │ │ │ (the)f(diagonal)i(en)m(try)597 1033 y(to)e(1)g(and)f(the)g │ │ │ │ (o\013diagonal)j(en)m(tries)e(to)g(zero.)500 1159 y Fn({)45 │ │ │ │ b Fk(patchAndGoFlag)f(=)k(2)34 b Fo(|)h(if)g(a)h(small)f(or)h(zero)f │ │ │ │ @@ -7042,17 +7030,17 @@ │ │ │ │ 5181 y Fh(\017)46 b Fo(The)33 b Fk(msgFile)e Fo(parameter)j(determines) │ │ │ │ f(the)h(message)g(\014le)f(|)h(if)f Fk(msgFile)e Fo(is)i │ │ │ │ Fk(stdout)p Fo(,)g(then)g(the)427 5294 y(message)27 b(\014le)f(is)g │ │ │ │ Fi(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ Fi(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ 5407 y(data.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1071 4 v 1252 100 a Fk(Misc)29 │ │ │ │ -b Fg(:)41 b Fi(DRAFT)121 b Fg(Decem)m(b)s(er)31 b(20,)h(2018)p │ │ │ │ -2737 100 V 1071 w Fo(15)336 399 y Fh(\017)46 b Fk(type)29 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1107 4 v 1288 100 a Fk(Misc)29 │ │ │ │ +b Fg(:)41 b Fi(DRAFT)121 b Fg(Octob)s(er)30 b(11,)i(2021)p │ │ │ │ +2701 100 V 1107 w Fo(15)336 399 y Fh(\017)46 b Fk(type)29 │ │ │ │ b Fo(is)i(the)f(t)m(yp)s(e)h(of)g(en)m(tries)500 545 │ │ │ │ y Fn({)45 b Fk(1)30 b Fo(|)h(\()p Fk(SPOOLES)p 1174 545 │ │ │ │ 29 4 v 32 w(REAL)p Fo(\))f(for)g(real)h(en)m(tries)500 │ │ │ │ 674 y Fn({)45 b Fk(2)30 b Fo(|)h(\()p Fk(SPOOLES)p 1174 │ │ │ │ 674 V 32 w(COMPLEX)p Fo(\))e(for)h(complex)h(en)m(tries)336 │ │ │ │ 820 y Fh(\017)46 b Fo(The)27 b Fk(matrixFileName)d Fo(parameter)k(is)g │ │ │ │ (the)f(name)h(of)g(the)f(input)g(\014le)h(for)f(the)h(matrix)g(en)m │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -17,15 +17,15 @@ │ │ │ │ │ The method calls itself recursively. To find the permutation for an n1 x n2 x n3 grid, call │ │ │ │ │ mkNDperm(n1, n2, n3, newToOld, 0, n1-1, 0, n2-1, 0, n3-1) ; │ │ │ │ │ from a driver program. │ │ │ │ │ Error checking: If n1, n2 or n3 are less than or equal to zero, or if newToOld is NULL, or if │ │ │ │ │ west, south or bottom are less than or equal to zero, of if east ≥ n1, of if north ≥ n2, of if │ │ │ │ │ top ≥ n3, an error message is printed and the program exits. │ │ │ │ │ 1 │ │ │ │ │ - 2 Misc : DRAFT December 20, 2018 │ │ │ │ │ + 2 Misc : DRAFT October 11, 2021 │ │ │ │ │ 2. void mkNDperm2 ( int n1, int n2, int n3, int newToOld[], int west, │ │ │ │ │ int east, int south, int north, int bottom, int top ) ; │ │ │ │ │ This method this vector fills a permutation vector with the nested dissection new-to-old │ │ │ │ │ ordering of the vertices for the subgrid defined by nodes whose coordinates lie in │ │ │ │ │ [west, east] x [south, north] x [bottom, top]. │ │ │ │ │ There is one important difference between this method and mkNDperm() above; this method │ │ │ │ │ finds double-wide separators, necessary for an operator with more than nearest neighbor grid │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ tains a dsizes1[q1] x dsizes2[q2] x disizes3[q3] subgrid of points. │ │ │ │ │ Error checking: If n1, n2 or n3 are less than or equal to zero, or if p1, p2 or p3 are less than or │ │ │ │ │ equal to zero, or if 2p1−1 > n1, or if 2p2−1 > n2, or if 2p3−1 > n3, or if oldToNew is NULL, │ │ │ │ │ or if dsizes1[], disizes2[] and dsizes3[] are not NULL but have invalid entries (all entries │ │ │ │ │ must be positive, entries in dsizes1[] must sum to n1 - p1 + 1, entries in dsizes2[] must │ │ │ │ │ sum to n2 - p2 + 1, and entries in dsizes3[] must sum to n3 - p3 + 1, an error message │ │ │ │ │ is printed and the program exits. │ │ │ │ │ - Misc : DRAFT December 20, 2018 3 │ │ │ │ │ + Misc : DRAFT October 11, 2021 3 │ │ │ │ │ 5. void fp2DGrid ( int n1, int n2, int ivec[], FILE *fp ) ; │ │ │ │ │ This method writes the ivec[] vector onto an n1 x n2 grid to file fp. This is useful to │ │ │ │ │ visualize an ordering or a metric on a grid. │ │ │ │ │ Error checking: If n1 or n2 are less than or equal to zero, or if ivec or fp are NULL, an error │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ 6. void fp3DGrid ( int n1, int n2, int n3, int ivec[], FILE *fp ) ; │ │ │ │ │ This method writes the ivec[] vector onto an n1 x n2 x n3 grid to file fp. This is useful │ │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ │ This method returns a front tree ETree object for a multiple minimum degree ordering of │ │ │ │ │ the graph graph. The seed parameter is a random number seed. The msglvl and msgFile │ │ │ │ │ parameters govern the diagnostics output. Use msglvl = 0 for no output, msglvl = 1 for │ │ │ │ │ timings and scalar statistics, and use msglvl > 1 with care, for it can generate huge amounts │ │ │ │ │ of output. │ │ │ │ │ Error checking: If graph is NULL, or if msglvl > 0 and msgFile is NULL, an error message is │ │ │ │ │ printed and the program exits. │ │ │ │ │ - 4 Misc : DRAFT December 20, 2018 │ │ │ │ │ + 4 Misc : DRAFT October 11, 2021 │ │ │ │ │ 2. ETree * orderViaND ( Graph *graph, int maxdomainsize, int seed, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method returns a front tree ETree object for a nested dissection ordering of the graph │ │ │ │ │ graph. If a subgraph has more vertices than the maxdomainsize parameter, it is split. The │ │ │ │ │ seed parameter is a random number seed. The msglvl and msgFile parameters govern │ │ │ │ │ the diagnostics output. Use msglvl = 0 for no output, msglvl = 1 for timings and scalar │ │ │ │ │ statistics, and use msglvl > 1 with care, for it can generate huge amounts of output. │ │ │ │ │ @@ -136,15 +136,15 @@ │ │ │ │ │ double linewidth2, double radius, char *epsFileName, │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method is used to create an EPS (Encapsulated Postscript) file that contains a picture │ │ │ │ │ of a graph in two dimensions. We use this to visualize separators and domain decompositions, │ │ │ │ │ mostly of regular grids and triangulations of a planar region. │ │ │ │ │ The graph object defines the connectivity of the vertices. The coords object defines the │ │ │ │ │ locations of the vertices. The tagsIV object is used to define whether or not an edge is │ │ │ │ │ - Misc : DRAFT December 20, 2018 5 │ │ │ │ │ + Misc : DRAFT October 11, 2021 5 │ │ │ │ │ drawn between two vertices adjacent in the graph. When tagsIV is not NULL, if there is an │ │ │ │ │ edge (u,v) in the graph and tags[u] = tags[v], then the edge with width linewidth1 is │ │ │ │ │ drawn. For edges (u,v) in the graph and tags[u] != tags[v], then the edge with width │ │ │ │ │ linewidth2is drawn, assuming linewidth2> 0. If tagsIV is NULL, than all edges are drawn │ │ │ │ │ with width linewidth1. Each vertex is draw with a filled circle with radius radius. │ │ │ │ │ The graph and its Coords object occupy a certain area in 2-D space. We try to plot the │ │ │ │ │ graph inside the area defined by the rect[] array in such a manner that the relative scales │ │ │ │ │ @@ -177,15 +177,15 @@ │ │ │ │ │ InpMtx **pmtxA, DenseMtx **pmtxX, DenseMtx **pmtxB ) ; │ │ │ │ │ This method creates a linear system AX = B for a natural factor formulation of a n1×n2×n3 │ │ │ │ │ grid. If n1, n2 and n3 are all greater than 1, the grid is formed of linear hexahedral elements │ │ │ │ │ andthematrixAhas8*n1*n2*n3rows. Ifoneofn1,n2andn3isequalto1,thegridisformed │ │ │ │ │ of linear quadrilateral elements and the matrix A has 4*n1*n2*n3 rows. The entries in A and │ │ │ │ │ X are random numbers, B is computed as the product of A with X. A can be real (type = │ │ │ │ │ 1) or complex (type = 2). The number of columns of X is given by nrhs. The linear system │ │ │ │ │ - 6 Misc : DRAFT December 20, 2018 │ │ │ │ │ + 6 Misc : DRAFT October 11, 2021 │ │ │ │ │ is ordered using theoretical nested dissection, and the front tree is transformed using the │ │ │ │ │ maxzeros and maxsize parameters. The addresses of the front tree, symbolic factorization, │ │ │ │ │ and three matrix objects are returned in the last five arguments of the calling sequence. │ │ │ │ │ Error checking: None presently. │ │ │ │ │ 1.2 Driver programs found in the Misc directory │ │ │ │ │ This section contains brief descriptions of the driver programs. │ │ │ │ │ 1. testNDperm msglvl msgFile n1 n2 n3 outPermFile │ │ │ │ │ @@ -215,15 +215,15 @@ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The ETreeFile parameter is the output file for the ETree object. If ETreeFile is none │ │ │ │ │ then the ETree object is not written to a file. Otherwise, the ETree writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if ETreeFile is of the form │ │ │ │ │ *.etreef), or a binary file (if ETreeFile is of the form *.etreeb). │ │ │ │ │ - Misc : DRAFT December 20, 2018 7 │ │ │ │ │ + Misc : DRAFT October 11, 2021 7 │ │ │ │ │ 3. testOrderViaND msglvl msgFile GraphFile maxdomainsize seed ETreeFile │ │ │ │ │ This program reads in a Graph object from a file and computes a generalized nested dissection │ │ │ │ │ ordering of the graph. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the Perm object is written to the output file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ @@ -254,15 +254,15 @@ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The ETreeFile parameter is the output file for the ETree object. If ETreeFile is none │ │ │ │ │ then the ETree object is not written to a file. Otherwise, the ETree writeToFile() │ │ │ │ │ method is called to write the object to a formatted file (if ETreeFile is of the form │ │ │ │ │ *.etreef), or a binary file (if ETreeFile is of the form *.etreeb). │ │ │ │ │ 5. drawGraph msglvl msgFile inGraphFile inCoordsFile inTagsIVfile │ │ │ │ │ outEPSfile linewidth1 linewidth2 bbox[4] rect[4] radius │ │ │ │ │ - 8 Misc : DRAFT December 20, 2018 │ │ │ │ │ + 8 Misc : DRAFT October 11, 2021 │ │ │ │ │ This driver program generates a Encapsulated Postscript file outEPSfile of a 2-D graph │ │ │ │ │ using a Graph object, a Coords object and a tags IV object that contains the component ids │ │ │ │ │ of the vertices. │ │ │ │ │ See the doDraw script file in this directory for an example calling sequence. │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ that all objects are written to the output file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ @@ -293,48 +293,48 @@ │ │ │ │ │ See Figure 1.1 for a plot of the graph of R2D100, a randomly triangulated grid with 100 │ │ │ │ │ vertices with linewidth1 = 3. Figure 1.2 illustrates a domain decomposition obtained from │ │ │ │ │ the fishnet algorithm of Chapter ?? with linewidth1 = 3 and linewidth2 = 0.1. │ │ │ │ │ 6. testSemi msglvl msgFile GraphFile ETreeFile mapFile │ │ │ │ │ This program is used to compute the effect of using a semi-implicit factorization to solve │ │ │ │ │ AX=" A0,0 A0,1 #" X0 #=" B0 #=B. │ │ │ │ │ A1,0 A1,1 X1 B1 │ │ │ │ │ - Misc : DRAFT December 20, 2018 9 │ │ │ │ │ + Misc : DRAFT October 11, 2021 9 │ │ │ │ │ Figure 1.1: R2D100 │ │ │ │ │ - 10 Misc : DRAFT December 20, 2018 │ │ │ │ │ - Figure 1.2: R2D100: fishnet domain decomposition │ │ │ │ │ - 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ - 3 │ │ │ │ │ - 3 3 3 0 0 │ │ │ │ │ - 3 3 │ │ │ │ │ - 3 1 │ │ │ │ │ - 0 0 1 1 │ │ │ │ │ - 3 0 1 │ │ │ │ │ - 3 1 │ │ │ │ │ - 0 1 │ │ │ │ │ - 2 0 1 1 │ │ │ │ │ - 0 1 1 │ │ │ │ │ - 0 1 │ │ │ │ │ - 2 2 1 1 1 │ │ │ │ │ - 2 1 │ │ │ │ │ - 0 11 │ │ │ │ │ - 2 1 │ │ │ │ │ - 2 2 0 1 1 │ │ │ │ │ - 1 1 │ │ │ │ │ - 2 1 │ │ │ │ │ - 2 2 0 1 0 │ │ │ │ │ - 0 1 │ │ │ │ │ - 2 2 0 │ │ │ │ │ - 2 2 0 4 │ │ │ │ │ - 4 0 0 │ │ │ │ │ - 0 4 │ │ │ │ │ - 2 2 4 │ │ │ │ │ - 2 2 4 4 │ │ │ │ │ - 0 4 4 │ │ │ │ │ - 2 2 0 4 4 4 4 4 4 4 │ │ │ │ │ - Misc : DRAFT December 20, 2018 11 │ │ │ │ │ + 10 Misc : DRAFT October 11, 2021 │ │ │ │ │ + Figure 1.2: R2D100: fishnet domain decomposition │ │ │ │ │ + 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ + 3 │ │ │ │ │ + 3 3 3 0 0 │ │ │ │ │ + 3 3 │ │ │ │ │ + 3 1 │ │ │ │ │ + 0 0 1 1 │ │ │ │ │ + 3 0 1 │ │ │ │ │ + 3 1 │ │ │ │ │ + 0 1 │ │ │ │ │ + 2 0 1 1 │ │ │ │ │ + 0 1 1 │ │ │ │ │ + 0 1 │ │ │ │ │ + 2 2 1 1 1 │ │ │ │ │ + 2 1 │ │ │ │ │ + 0 11 │ │ │ │ │ + 2 1 │ │ │ │ │ + 2 2 0 1 1 │ │ │ │ │ + 1 1 │ │ │ │ │ + 2 1 │ │ │ │ │ + 2 2 0 1 0 │ │ │ │ │ + 0 1 │ │ │ │ │ + 2 2 0 │ │ │ │ │ + 2 2 0 4 │ │ │ │ │ + 4 0 0 │ │ │ │ │ + 0 4 │ │ │ │ │ + 2 2 4 │ │ │ │ │ + 2 2 4 4 │ │ │ │ │ + 0 4 4 │ │ │ │ │ + 2 2 0 4 4 4 4 4 4 4 │ │ │ │ │ + Misc : DRAFT October 11, 2021 11 │ │ │ │ │ Ais factored as " # " #" # │ │ │ │ │ A A L 0 U U │ │ │ │ │ 0,0 0,1 = 0,0 0,0 0,1 , │ │ │ │ │ A A L L 0 U │ │ │ │ │ 1,0 1,1 1,0 1,1 1,1 │ │ │ │ │ and to solve AX = B, we do the following steps. │ │ │ │ │ • solve L Y =B │ │ │ │ │ @@ -378,15 +378,15 @@ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ • The GraphFile parameter is the input file for the Graph object. It must be of the form │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ method. │ │ │ │ │ - 12 Misc : DRAFT December 20, 2018 │ │ │ │ │ + 12 Misc : DRAFT October 11, 2021 │ │ │ │ │ • The ETreeFile parameter is the input file for the ETree object. It must be of the form │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ method. │ │ │ │ │ • The mapFile parameter is the input file for the map IV object. It must be of the form │ │ │ │ │ *.ivfor *.ivb. The IV object is read from the file via the IV readFromFile() method. │ │ │ │ │ 7. allInOne msglvl msgFile type symmetryflag pivotingflag │ │ │ │ │ matrixFileName rhsFileName seed │ │ │ │ │ @@ -418,15 +418,15 @@ │ │ │ │ │ ... │ │ │ │ │ irow jcol value │ │ │ │ │ ... │ │ │ │ │ where the first line has the number of rows, columns and entries. (Note, for this driver │ │ │ │ │ program nrow must be equal to ncol since we are factoring a square matrix.) Each of │ │ │ │ │ the nent following lines contain one nonzero entry. For a complex matrix, the file has │ │ │ │ │ this structure. │ │ │ │ │ - Misc : DRAFT December 20, 2018 13 │ │ │ │ │ + Misc : DRAFT October 11, 2021 13 │ │ │ │ │ nrow ncol nent │ │ │ │ │ ... │ │ │ │ │ irow jcol real_value imag_value │ │ │ │ │ ... │ │ │ │ │ For both real and complex entries, the entries need not be disjoint, i.e., entries with the │ │ │ │ │ same irow and jcol values are summed. │ │ │ │ │ • The rhsFileNameparameter is the name of the input file for the right hand side matrix. │ │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ – type = 1 (SPOOLES HERMITIAN) for A complex Hermitian, │ │ │ │ │ – type = 2 (SPOOLES NONSYMMETRIC) │ │ │ │ │ - 14 Misc : DRAFT December 20, 2018 │ │ │ │ │ + 14 Misc : DRAFT October 11, 2021 │ │ │ │ │ for A real or complex nonsymmetric. │ │ │ │ │ • The patchAndGoFlag specifies the “patch-and-go” strategy. │ │ │ │ │ – patchAndGoFlag = 0—ifazeropivotisdetected, stopcomputingthefactorization, │ │ │ │ │ set the error flag and return. │ │ │ │ │ – patchAndGoFlag = 1 — if a small or zero pivot is detected, set the diagonal entry │ │ │ │ │ to 1 and the offdiagonal entries to zero. │ │ │ │ │ – patchAndGoFlag = 2 — if a small or zero pivot is detected, perturb the diagonal │ │ │ │ │ @@ -497,15 +497,15 @@ │ │ │ │ │ right hand side entries are read in from a file, and the system is solved. One input parameter │ │ │ │ │ specifies the type of system (real or complex). │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ the Perm object is written to the output file. │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ data. │ │ │ │ │ - Misc : DRAFT December 20, 2018 15 │ │ │ │ │ + Misc : DRAFT October 11, 2021 15 │ │ │ │ │ • type is the type of entries │ │ │ │ │ – 1 — (SPOOLES REAL) for real entries │ │ │ │ │ – 2 — (SPOOLES COMPLEX) for complex entries │ │ │ │ │ • The matrixFileName parameter is the name of the input file for the matrix entries. For │ │ │ │ │ a real matrix, this file must have the following form. │ │ │ │ │ nrow ncol nent │ │ │ │ │ ...