--- /srv/rebuilderd/tmp/rebuilderd99P77z/inputs/spooles-doc_2.2-14.3_all.deb +++ /srv/rebuilderd/tmp/rebuilderd99P77z/out/spooles-doc_2.2-14.3_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2025-10-18 17:12:38.000000 debian-binary │ --rw-r--r-- 0 0 0 1944 2025-10-18 17:12:38.000000 control.tar.xz │ --rw-r--r-- 0 0 0 8099788 2025-10-18 17:12:38.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1952 2025-10-18 17:12:38.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 8118308 2025-10-18 17:12:38.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: spooles-doc │ │ │ Source: spooles │ │ │ Version: 2.2-14.3 │ │ │ Architecture: all │ │ │ Maintainer: Debian Science Maintainers │ │ │ -Installed-Size: 8178 │ │ │ +Installed-Size: 8192 │ │ │ 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 2025-10-18 17:12:38.000000 ./ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-10-18 17:12:38.000000 ./usr/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-10-18 17:12:38.000000 ./usr/share/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-10-18 17:12:38.000000 ./usr/share/doc/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ │ │ │ --rw-r--r-- 0 root (0) root (0) 151788 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 152117 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 596035 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ASHCRAFC.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 312562 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127678 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 155903 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 190152 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 100755 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 94478 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 120724 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 115776 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 133884 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117594 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 107380 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121423 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 220804 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 254385 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 179485 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 275466 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 184342 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 189968 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 131813 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 109753 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121536 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124486 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 95466 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 204826 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 283291 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 89246 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 176307 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 168483 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 163251 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 146319 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 143389 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124501 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 107045 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 911089 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 152874 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 134476 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 175554 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 101437 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117635 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 120743 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 167803 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 190030 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127761 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 312196 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 128010 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 156229 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 190561 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 101069 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 94840 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121091 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 116180 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 134245 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 118027 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 107664 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121771 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 221185 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 254231 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 179777 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 276217 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 184692 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 190344 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 132075 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 110149 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121916 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124854 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 95807 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 205100 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 283885 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 89555 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 176613 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 168663 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 163597 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 146693 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 143720 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124851 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 107404 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 911743 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 153196 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 134750 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 175855 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 101751 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117997 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121094 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 168088 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 190337 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 128112 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 537 2025-10-18 17:12:38.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) 188889 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 189217 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 9600 2025-10-18 17:12:38.000000 ./usr/share/doc/spooles-doc/spooles.2.2.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-10-18 17:12:38.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-doc.spooles │ │ ├── ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ ├── A2.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o A2.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2063,23 +2063,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2253,90 +2252,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4624,21 +4632,21 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 205[33 33 49[{}2 58.1154 /CMR7 rf /Fb 255[65{}1 │ │ │ │ 83.022 /CMSY10 rf /Fc 149[27 21[39 11[54 72[{}3 58.1154 │ │ │ │ /CMMI7 rf /Fd 173[74 77 81[{}2 99.6264 /CMMI12 rf /Fe │ │ │ │ 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 /Ff 139[32 │ │ │ │ -1[33 2[42 9[37 1[37 46 18[65 20[23 1[42 2[42 2[42 42 │ │ │ │ -42 3[23 44[{}14 83.022 /CMSL10 rf /Fg 139[62 4[62 4[62 │ │ │ │ -4[62 1[62 62 32[62 14[62 50[{}8 119.552 /CMTT12 rf /Fh │ │ │ │ -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 │ │ │ │ +56 56 56 56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Ff 137[44 │ │ │ │ +3[33 2[42 1[69 7[37 2[46 19[62 19[23 4[42 2[42 42 42 │ │ │ │ +3[23 44[{}13 83.022 /CMSL10 rf /Fg 139[62 4[62 4[62 4[62 │ │ │ │ +1[62 62 32[62 14[62 50[{}8 119.552 /CMTT12 rf /Fh 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 │ │ │ │ %DVIPSBitmapFont: Fi tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4759,41 +4767,42 @@ │ │ │ │ 2397 4912 V 31 w(BY)p 2516 4912 V 31 w(COLUMNS)p Fm(.)0 │ │ │ │ 5204 y Fj(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fg(A2)f Fj(metho)t(ds)0 5407 y Fm(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 Fl(A2)f Fm(ob)5 │ │ │ │ b(ject.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1244 4 v │ │ │ │ -1409 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2656 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -573 y Fm(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 Fl(A2)g(*)h(A2_new)f(\()h(void)f(\))h(;)208 1027 y │ │ │ │ -Fm(This)28 b(metho)r(d)g(simply)h(allo)r(cates)e(storage)f(for)h(the)i │ │ │ │ -Fl(A2)e Fm(structure)h(and)g(then)h(sets)f(the)g(default)h(\014elds)f │ │ │ │ -(b)n(y)g(a)f(call)h(to)208 1127 y Fl(A2)p 301 1127 27 │ │ │ │ -4 v 30 w(setDefaultFields)o(\(\))p Fm(.)101 1302 y(2.)42 │ │ │ │ -b Fl(void)f(A2_setDefaultFiel)o(ds)c(\()43 b(A2)g(*mtx)f(\))h(;)208 │ │ │ │ -1440 y Fm(The)34 b(structure's)h(\014elds)g(are)e(set)i(to)g(default)g │ │ │ │ -(v)-5 b(alues:)51 b Fl(type)34 b Fm(=)g Fl(SPOOLES)p │ │ │ │ -2618 1440 V 29 w(REAL)p Fm(,)f Fl(n1)h Fm(=)h Fl(inc1)e │ │ │ │ -Fm(=)h Fl(n2)h Fm(=)f Fl(inc2)f Fm(=)208 1539 y Fl(nowned)25 │ │ │ │ -b Fm(=)i(0)g(and)h Fl(entries)c Fm(=)k Fl(NULL)e Fm(.)208 │ │ │ │ -1677 y Fh(Err)l(or)k(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ -Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ -(the)h(program)e(exits.)101 1852 y(3.)42 b Fl(void)f(A2_clearData)e(\() │ │ │ │ -k(A2)g(*mtx)f(\))h(;)208 1990 y Fm(This)32 b(metho)r(d)i(clears)d(the)j │ │ │ │ -(ob)5 b(ject)32 b(and)h(free's)f(an)n(y)h(o)n(wned)f(data.)52 │ │ │ │ -b(If)33 b Fl(nowned)41 b(>)j(0)32 b Fm(and)h Fl(entries)d │ │ │ │ -Fm(is)j(not)g Fl(NULL)p Fm(,)208 2090 y(then)28 b Fl(DVfree\(entries\)) │ │ │ │ -21 b Fm(is)28 b(called)f(to)g(free)h(the)g(storage.)35 │ │ │ │ -b(It)28 b(calls)e Fl(A2)p 2487 2090 V 31 w(setDefaultFields)o(\(\))p │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1209 4 v │ │ │ │ +1374 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2692 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 573 y Fm(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 Fl(A2)g(*)h(A2_new)f(\()h(void)f(\))h(;)208 │ │ │ │ +1027 y Fm(This)28 b(metho)r(d)g(simply)h(allo)r(cates)e(storage)f(for)h │ │ │ │ +(the)i Fl(A2)e Fm(structure)h(and)g(then)h(sets)f(the)g(default)h │ │ │ │ +(\014elds)f(b)n(y)g(a)f(call)h(to)208 1127 y Fl(A2)p │ │ │ │ +301 1127 27 4 v 30 w(setDefaultFields)o(\(\))p Fm(.)101 │ │ │ │ +1302 y(2.)42 b Fl(void)f(A2_setDefaultFiel)o(ds)c(\()43 │ │ │ │ +b(A2)g(*mtx)f(\))h(;)208 1440 y Fm(The)34 b(structure's)h(\014elds)g │ │ │ │ +(are)e(set)i(to)g(default)g(v)-5 b(alues:)51 b Fl(type)34 │ │ │ │ +b Fm(=)g Fl(SPOOLES)p 2618 1440 V 29 w(REAL)p Fm(,)f │ │ │ │ +Fl(n1)h Fm(=)h Fl(inc1)e Fm(=)h Fl(n2)h Fm(=)f Fl(inc2)f │ │ │ │ +Fm(=)208 1539 y Fl(nowned)25 b Fm(=)i(0)g(and)h Fl(entries)c │ │ │ │ +Fm(=)k Fl(NULL)e Fm(.)208 1677 y Fh(Err)l(or)k(che)l(cking:)38 │ │ │ │ +b Fm(If)28 b Fl(mtx)f Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i │ │ │ │ +(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 1852 │ │ │ │ +y(3.)42 b Fl(void)f(A2_clearData)e(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ +1990 y Fm(This)32 b(metho)r(d)i(clears)d(the)j(ob)5 b(ject)32 │ │ │ │ +b(and)h(free's)f(an)n(y)h(o)n(wned)f(data.)52 b(If)33 │ │ │ │ +b Fl(nowned)41 b(>)j(0)32 b Fm(and)h Fl(entries)d Fm(is)j(not)g │ │ │ │ +Fl(NULL)p Fm(,)208 2090 y(then)28 b Fl(DVfree\(entries\))21 │ │ │ │ +b Fm(is)28 b(called)f(to)g(free)h(the)g(storage.)35 b(It)28 │ │ │ │ +b(calls)e Fl(A2)p 2487 2090 V 31 w(setDefaultFields)o(\(\))p │ │ │ │ Fm(.)208 2227 y Fh(Err)l(or)k(che)l(cking:)38 b Fm(If)28 │ │ │ │ b Fl(mtx)f Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n │ │ │ │ (ted)h(and)f(the)h(program)e(exits.)101 2403 y(4.)42 │ │ │ │ b Fl(void)f(A2_free)g(\()i(A2)g(*mtx)f(\))h(;)208 2540 │ │ │ │ y Fm(This)27 b(metho)r(d)h(releases)e(an)n(y)h(storage)f(b)n(y)h(a)g │ │ │ │ (call)g(to)h Fl(A2)p 1975 2540 V 30 w(clearData\(\))c │ │ │ │ Fm(and)j(then)h(free)f(the)h(space)f(for)g Fl(mtx)p Fm(.)208 │ │ │ │ @@ -4828,24 +4837,24 @@ │ │ │ │ b Fl(double)f(*)i(A2_entries)c(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ 5270 y Fm(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 │ │ │ │ Fh(Err)l(or)i(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f Fm(is)g │ │ │ │ Fl(NULL)p Fm(,)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 1244 4 v 1410 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2617 100 V 1244 w Fm(3)101 390 y(6.)42 b Fl(double)f(*)i(A2_row)e(\()i │ │ │ │ -(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 541 y Fm(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 Fl(irow)p Fm(.)208 691 y │ │ │ │ -Fh(Err)l(or)k(che)l(cking:)41 b Fm(If)29 b Fl(mtx)f Fm(or)g │ │ │ │ -Fl(entries)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)i Fl(irow)d │ │ │ │ -Fm(is)i(not)f(in)i Fl([0,n1-1])p Fm(,)c(an)i(error)f(message)g(is)i │ │ │ │ -(prin)n(ted)208 791 y(and)e(the)h(program)e(exits.)101 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1209 4 v 1374 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2652 100 V 1209 w Fm(3)101 390 y(6.)42 │ │ │ │ +b Fl(double)f(*)i(A2_row)e(\()i(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 │ │ │ │ +541 y Fm(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 Fl(irow)p Fm(.)208 │ │ │ │ +691 y Fh(Err)l(or)k(che)l(cking:)41 b Fm(If)29 b Fl(mtx)f │ │ │ │ +Fm(or)g Fl(entries)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)i │ │ │ │ +Fl(irow)d Fm(is)i(not)f(in)i Fl([0,n1-1])p Fm(,)c(an)i(error)f(message) │ │ │ │ +g(is)i(prin)n(ted)208 791 y(and)e(the)h(program)e(exits.)101 │ │ │ │ 993 y(7.)42 b Fl(double)f(*)i(A2_column)d(\()j(A2)g(*mtx,)e(int)h(jcol) │ │ │ │ g(\))i(;)208 1143 y Fm(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(column)h │ │ │ │ Fl(jcol)p Fm(.)208 1294 y Fh(Err)l(or)j(che)l(cking:)41 │ │ │ │ b Fm(If)29 b Fl(mtx)f Fm(or)g Fl(entries)e Fm(is)j Fl(NULL)p │ │ │ │ Fm(,)e(or)h(if)i Fl(jcol)d Fm(is)i(not)f(in)i Fl([0,n2-1])p │ │ │ │ Fm(,)c(an)i(error)f(message)g(is)i(prin)n(ted)208 1394 │ │ │ │ @@ -4909,51 +4918,51 @@ │ │ │ │ Fm(,)e Fl(ppReal)f Fm(or)i Fl(ppImag)e Fm(is)i Fl(NULL)p │ │ │ │ Fm(,)f(or)h(if)g(the)h(matrix)f(is)g(not)h(complex,)f(or)f(if)i │ │ │ │ Fl(irow)e Fm(is)h(not)h(in)208 5407 y Fl([0,n1-1])p Fm(,)c(or)j(if)h │ │ │ │ Fl(jcol)e Fm(is)h(not)h(in)g Fl([0,n2-1])p Fm(,)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 Fm(4)p 125 100 1244 4 v │ │ │ │ -1409 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2656 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 b(metho)s(ds)101 │ │ │ │ -574 y Fm(1.)k Fl(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 Fm(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 │ │ │ │ -Fl(mtx)f Fm(not)h(b)r(e)g Fl(NULL)p Fm(,)e Fl(type)g │ │ │ │ -Fm(b)r(e)j(either)e Fl(SPOOLES)p 3702 812 27 4 v 29 w(REAL)208 │ │ │ │ -912 y Fm(or)d Fl(SPOOLES)p 623 912 V 29 w(COMPLEX)p Fm(,)e │ │ │ │ -Fl(n1)j Fm(and)g Fl(n2)g Fm(b)r(oth)h(b)r(e)g(p)r(ositiv)n(e,)f(and)h │ │ │ │ -(b)r(oth)f Fl(inc1)f Fm(and)i Fl(inc2)e Fm(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 Fl(inc1)42 b(=)h(1)30 b │ │ │ │ -Fm(and)f Fl(inc2)42 b(=)208 1111 y(nrow)26 b Fm(or)g │ │ │ │ -Fl(inc1)42 b(=)h(ncol)26 b Fm(and)i Fl(inc2)42 b(=)h(1)27 │ │ │ │ -b Fm(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 Fl(A2)p │ │ │ │ -1780 1250 V 31 w(clearData\(\))p Fm(.)35 b(If)29 b Fl(entries)d │ │ │ │ -Fm(is)i Fl(NULL)f Fm(then)i Fl(n1*n2)e Fm(new)i(en)n(tries)208 │ │ │ │ -1350 y(are)h(found,)k Fl(mtx->entries)27 b Fm(is)32 b(set)f(to)h(this)g │ │ │ │ -(address)f(and)h Fl(nowned)d Fm(is)j(set)g(to)g Fl(n1*n2)p │ │ │ │ -Fm(.)48 b(If)32 b Fl(entries)d Fm(is)j(not)g Fl(NULL)p │ │ │ │ -Fm(,)208 1449 y(then)c Fl(mtx->entries)22 b Fm(is)28 │ │ │ │ -b(set)f(to)h Fl(entries)d Fm(and)i Fl(nowned)e Fm(is)j(set)f(to)h │ │ │ │ -(zero.)208 1588 y Fh(Err)l(or)e(che)l(cking:)37 b Fm(If)25 │ │ │ │ -b Fl(mtx)d Fm(is)i Fl(NULL)p Fm(,)f(or)g(if)h Fl(n1)p │ │ │ │ -Fm(,)g Fl(n2)p Fm(,)g Fl(inc1)f Fm(or)g Fl(inc2)f Fm(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 Fl(inc1)d │ │ │ │ -Fm(m)n(ust)i(b)r(e)g Fl(1)f Fm(and)h Fl(inc2)e Fm(m)n(ust)i(b)r(e)g │ │ │ │ -Fl(n1)p Fm(,)g Fh(or)g Fl(inc1)f Fm(m)n(ust)h(b)r(e)g │ │ │ │ -Fl(n2)f Fm(and)h Fl(inc2)e Fm(m)n(ust)i(b)r(e)208 1787 │ │ │ │ -y Fl(1)p Fm(\),)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 Fl(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 Fm(4)p 125 100 1209 4 v │ │ │ │ +1374 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2692 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 │ │ │ │ +b(metho)s(ds)101 574 y Fm(1.)k Fl(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 Fm(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 Fl(mtx)f Fm(not)h(b)r(e)g Fl(NULL)p │ │ │ │ +Fm(,)e Fl(type)g Fm(b)r(e)j(either)e Fl(SPOOLES)p 3702 │ │ │ │ +812 27 4 v 29 w(REAL)208 912 y Fm(or)d Fl(SPOOLES)p 623 │ │ │ │ +912 V 29 w(COMPLEX)p Fm(,)e Fl(n1)j Fm(and)g Fl(n2)g │ │ │ │ +Fm(b)r(oth)h(b)r(e)g(p)r(ositiv)n(e,)f(and)h(b)r(oth)f │ │ │ │ +Fl(inc1)f Fm(and)i Fl(inc2)e Fm(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 Fl(inc1)42 b(=)h(1)30 b Fm(and)f Fl(inc2)42 │ │ │ │ +b(=)208 1111 y(nrow)26 b Fm(or)g Fl(inc1)42 b(=)h(ncol)26 │ │ │ │ +b Fm(and)i Fl(inc2)42 b(=)h(1)27 b Fm(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 Fl(A2)p 1780 1250 V 31 w(clearData\(\))p Fm(.)35 │ │ │ │ +b(If)29 b Fl(entries)d Fm(is)i Fl(NULL)f Fm(then)i Fl(n1*n2)e │ │ │ │ +Fm(new)i(en)n(tries)208 1350 y(are)h(found,)k Fl(mtx->entries)27 │ │ │ │ +b Fm(is)32 b(set)f(to)h(this)g(address)f(and)h Fl(nowned)d │ │ │ │ +Fm(is)j(set)g(to)g Fl(n1*n2)p Fm(.)48 b(If)32 b Fl(entries)d │ │ │ │ +Fm(is)j(not)g Fl(NULL)p Fm(,)208 1449 y(then)c Fl(mtx->entries)22 │ │ │ │ +b Fm(is)28 b(set)f(to)h Fl(entries)d Fm(and)i Fl(nowned)e │ │ │ │ +Fm(is)j(set)f(to)h(zero.)208 1588 y Fh(Err)l(or)e(che)l(cking:)37 │ │ │ │ +b Fm(If)25 b Fl(mtx)d Fm(is)i Fl(NULL)p Fm(,)f(or)g(if)h │ │ │ │ +Fl(n1)p Fm(,)g Fl(n2)p Fm(,)g Fl(inc1)f Fm(or)g Fl(inc2)f │ │ │ │ +Fm(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 │ │ │ │ +Fl(inc1)d Fm(m)n(ust)i(b)r(e)g Fl(1)f Fm(and)h Fl(inc2)e │ │ │ │ +Fm(m)n(ust)i(b)r(e)g Fl(n1)p Fm(,)g Fh(or)g Fl(inc1)f │ │ │ │ +Fm(m)n(ust)h(b)r(e)g Fl(n2)f Fm(and)h Fl(inc2)e Fm(m)n(ust)i(b)r(e)208 │ │ │ │ +1787 y Fl(1)p Fm(\),)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 Fl(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 │ │ │ │ Fm(This)27 b(initializer)g(metho)r(d)h(mak)n(es)f(the)h(ob)5 │ │ │ │ b(ject)27 b Fl(mtxA)f Fm(p)r(oin)n(t)i(in)n(to)f(a)h(submatrix)f(of)g │ │ │ │ (ob)5 b(ject)28 b Fl(mtxB)p Fm(,)e(as)208 2415 y Fl(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 Fm(Note,)20 b Fl(firstrow)p Fm(,)d Fl(lastrow)p │ │ │ │ @@ -5003,24 +5012,25 @@ │ │ │ │ b(jor.)208 5308 y Fh(Err)l(or)31 b(che)l(cking:)40 b │ │ │ │ Fm(If)30 b Fl(Q)p Fm(,)e Fl(A)g Fm(or)g Fl(workDV)e Fm(is)j │ │ │ │ Fl(NULL)p Fm(,)e(or)h(if)h Fl(msglvl)41 b(>)i(0)28 b │ │ │ │ Fm(and)h Fl(msgFile)d Fm(if)j Fl(NULL)p Fm(,)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 1244 4 v 1410 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2617 100 V 1244 w Fm(5)101 390 y(4.)42 b Fl(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 Fm(This)22 b(metho)r(d)h(computes)f │ │ │ │ -Fk(Y)42 b Fm(=)22 b Fk(Q)1296 491 y Fc(T)1348 522 y Fk(X)29 │ │ │ │ -b Fm(\(if)23 b(real\))f(or)f Fk(Y)42 b Fm(=)22 b Fk(Q)2077 │ │ │ │ -491 y Fc(H)2140 522 y Fk(X)29 b Fm(\(if)23 b(complex\),)g(where)f │ │ │ │ -Fk(Q)g Fm(is)g(stored)g(in)g(Householder)208 621 y(v)n(ectors)d(inside) │ │ │ │ -j Fk(A)p Fm(.)35 b(W)-7 b(e)21 b(assume)g(that)h Fk(A)p │ │ │ │ +TeXDict begin 5 4 bop 83 100 1209 4 v 1374 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2652 100 V 1209 w Fm(5)101 390 y(4.)42 │ │ │ │ +b Fl(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 Fm(This)22 b(metho)r(d)h(computes)f Fk(Y)42 b Fm(=)22 │ │ │ │ +b Fk(Q)1296 491 y Fc(T)1348 522 y Fk(X)29 b Fm(\(if)23 │ │ │ │ +b(real\))f(or)f Fk(Y)42 b Fm(=)22 b Fk(Q)2077 491 y Fc(H)2140 │ │ │ │ +522 y Fk(X)29 b Fm(\(if)23 b(complex\),)g(where)f Fk(Q)g │ │ │ │ +Fm(is)g(stored)g(in)g(Householder)208 621 y(v)n(ectors)d(inside)j │ │ │ │ +Fk(A)p Fm(.)35 b(W)-7 b(e)21 b(assume)g(that)h Fk(A)p │ │ │ │ Fm(2)p 1533 621 25 4 v 29 w Fk(r)r(educe)p Fm(\(\))g(has)f(b)r(een)g │ │ │ │ (previously)f(called)h(with)h Fk(A)g Fm(as)e(an)h(argumen)n(t.)34 │ │ │ │ b(Since)208 721 y Fk(Y)46 b Fm(is)27 b(computed)h(column-b)n(y-column,) │ │ │ │ e Fk(X)34 b Fm(and)28 b Fk(Y)46 b Fm(can)27 b(b)r(e)h(the)g(same)f │ │ │ │ Fl(A2)g Fm(ob)5 b(ject.)36 b(The)28 b Fl(workDV)d Fm(ob)5 │ │ │ │ b(ject)27 b(is)h(resized)208 820 y(as)e(necessary)-7 │ │ │ │ b(.)36 b(Note:)h Fl(Y)p Fm(,)27 b Fl(A)g Fm(and)h Fl(X)f │ │ │ │ @@ -5081,23 +5091,23 @@ │ │ │ │ 5176 y Fm(This)27 b(metho)r(d)h(returns)f(the)h(one-norm)e(of)i(ro)n(w) │ │ │ │ e Fl(irow)g Fm(of)i(the)g(matrix.)208 5308 y Fh(Err)l(or)d(che)l │ │ │ │ (cking:)36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)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 Fm(6)p 125 100 1244 4 v │ │ │ │ -1409 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2656 100 V 101 390 a Fm(9.)42 b Fl(double)f(A2_twoNormOfRow)c(\()43 │ │ │ │ -b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 521 y Fm(This)27 │ │ │ │ -b(metho)r(d)h(returns)f(the)h(t)n(w)n(o-norm)e(of)h(ro)n(w)g │ │ │ │ -Fl(irow)f Fm(of)h(the)h(matrix.)208 652 y Fh(Err)l(or)d(che)l(cking:)36 │ │ │ │ -b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i Fl(irow)e │ │ │ │ -Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message)h(is)h │ │ │ │ -(prin)n(ted)g(and)g(the)g(program)208 751 y(exits.)60 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1209 4 v │ │ │ │ +1374 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2692 100 V 101 390 a Fm(9.)42 b Fl(double)f │ │ │ │ +(A2_twoNormOfRow)c(\()43 b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 │ │ │ │ +521 y Fm(This)27 b(metho)r(d)h(returns)f(the)h(t)n(w)n(o-norm)e(of)h │ │ │ │ +(ro)n(w)g Fl(irow)f Fm(of)h(the)h(matrix.)208 652 y Fh(Err)l(or)d(che)l │ │ │ │ +(cking:)36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ +Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)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 Fl(double)g(A2_infinityNorm)o(OfR)o(ow)c(\()43 │ │ │ │ b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 1044 y Fm(This)27 │ │ │ │ b(metho)r(d)h(returns)f(the)h(in\014nit)n(y-norm)f(of)h(ro)n(w)e │ │ │ │ Fl(irow)g Fm(of)i(the)g(matrix.)208 1175 y Fh(Err)l(or)d(che)l(cking:) │ │ │ │ 36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message) │ │ │ │ h(is)h(prin)n(ted)g(and)g(the)g(program)208 1275 y(exits.)0 │ │ │ │ @@ -5164,20 +5174,20 @@ │ │ │ │ (coloff)f(\))i(;)208 5218 y Fm(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 Fl(A2)f Fm(ob)5 b(ject.)208 │ │ │ │ 5407 y Fl(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 1244 4 v 1410 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2617 100 V 1244 w Fm(7)208 390 y Fh(Err)l(or)j(che)l(cking:)38 │ │ │ │ -b Fm(If)28 b Fl(mtx)f Fm(is)g Fl(NULL)f Fm(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 Fl(int)g(A2_rowMajor)d(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1209 4 v 1374 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2652 100 V 1209 w Fm(7)208 390 y Fh(Err)l(or)k(che)l │ │ │ │ +(cking:)38 b Fm(If)28 b Fl(mtx)f Fm(is)g Fl(NULL)f Fm(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 Fl(int)g(A2_rowMajor)d(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ 682 y Fm(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 Fh(Err)l(or)j(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ (the)h(program)e(exits.)101 973 y(4.)42 b Fl(int)g(A2_columnMajor)c(\() │ │ │ │ 43 b(A2)g(*mtx)f(\))h(;)208 1104 y Fm(This)27 b(metho)r(d)h(returns)f │ │ │ │ (1)g(if)h(the)g(storage)e(is)i(column)f(ma)5 b(jor,)27 │ │ │ │ @@ -5248,19 +5258,19 @@ │ │ │ │ Fm(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ Fl(row[])d Fm(v)n(ector.)208 5308 y Fh(Err)l(or)k(che)l(cking:)39 │ │ │ │ b Fm(If)27 b Fl(mtx)p Fm(,)f Fl(entries)e Fm(or)j Fl(row[])e │ │ │ │ Fm(are)h Fl(NULL)p Fm(,)f(or)h(if)i Fl(irow)d Fm(is)i(not)g(in)h │ │ │ │ Fl([0,n1-1])p Fm(,)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 Fm(8)p 125 100 1244 4 v │ │ │ │ -1409 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2656 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f(\()j(A2)f │ │ │ │ -(*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 520 y │ │ │ │ -Fm(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fl(irow)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1209 4 v │ │ │ │ +1374 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2692 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f │ │ │ │ +(\()j(A2)f(*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 │ │ │ │ +520 y Fm(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fl(irow)g │ │ │ │ Fm(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ Fl(rowDV)d Fm(ob)5 b(ject.)208 649 y Fh(Err)l(or)32 b(che)l(cking:)44 │ │ │ │ b Fm(If)31 b Fl(mtx)e Fm(or)h Fl(rowDV)e Fm(are)i Fl(NULL)p │ │ │ │ Fm(,)e(or)i(if)h(the)f(matrix)g(is)g(not)h(real,)f(or)f(if)i │ │ │ │ Fl(irow)e Fm(is)h(not)h(in)f Fl([0,n1-1])p Fm(,)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 Fl(void)g(A2_setRowZV)f(\()j(A2)f(*mtx,)g(ZV) │ │ │ │ @@ -5333,24 +5343,25 @@ │ │ │ │ (n2)o(\))19 b Fm(columns)24 b(are)208 5178 y(copied.)208 │ │ │ │ 5308 y Fh(Err)l(or)30 b(che)l(cking:)38 b Fm(If)28 b │ │ │ │ Fl(mtxA)e Fm(or)g Fl(mtxB)g Fm(is)i Fl(NULL)p Fm(,)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 1244 4 v 1410 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2617 100 V 1244 w Fm(9)60 390 y(23.)41 b Fl(void)g(A2_sub)h(\()h(A2)g │ │ │ │ -(*mtxA,)e(A2)h(*mtxB)g(\))h(;)208 523 y Fm(This)27 b(metho)r(d)h │ │ │ │ -(subtracts)e(en)n(tries)h(in)h(matrix)e Fl(mtxB)g Fm(from)h(en)n(tries) │ │ │ │ -g(in)g(matrix)g Fl(mtxA)p Fm(.)f(Note,)h Fl(mtxA)f Fm(and)h │ │ │ │ -Fl(mtxB)f Fm(need)208 622 y(not)34 b(b)r(e)h(of)g(the)f(same)g(size,)i │ │ │ │ -(the)f(leading)f Fl(min\(mtxA->n1,mtxB)o(->)o(n1\))28 │ │ │ │ -b Fm(ro)n(ws)33 b(and)h Fl(min\(mtxA->n2,mtx)o(B->)o(n2)o(\))208 │ │ │ │ -722 y Fm(columns)27 b(are)f(subtracted.)208 855 y Fh(Err)l(or)k(che)l │ │ │ │ +TeXDict begin 9 8 bop 83 100 1209 4 v 1374 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2652 100 V 1209 w Fm(9)60 390 y(23.)41 │ │ │ │ +b Fl(void)g(A2_sub)h(\()h(A2)g(*mtxA,)e(A2)h(*mtxB)g(\))h(;)208 │ │ │ │ +523 y Fm(This)27 b(metho)r(d)h(subtracts)e(en)n(tries)h(in)h(matrix)e │ │ │ │ +Fl(mtxB)g Fm(from)h(en)n(tries)g(in)g(matrix)g Fl(mtxA)p │ │ │ │ +Fm(.)f(Note,)h Fl(mtxA)f Fm(and)h Fl(mtxB)f Fm(need)208 │ │ │ │ +622 y(not)34 b(b)r(e)h(of)g(the)f(same)g(size,)i(the)f(leading)f │ │ │ │ +Fl(min\(mtxA->n1,mtxB)o(->)o(n1\))28 b Fm(ro)n(ws)33 │ │ │ │ +b(and)h Fl(min\(mtxA->n2,mtx)o(B->)o(n2)o(\))208 722 │ │ │ │ +y Fm(columns)27 b(are)f(subtracted.)208 855 y Fh(Err)l(or)k(che)l │ │ │ │ (cking:)38 b Fm(If)28 b Fl(mtxA)e Fm(or)g Fl(mtxB)g Fm(is)i │ │ │ │ Fl(NULL)p Fm(,)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 954 y(is)h(prin)n(ted)h │ │ │ │ (and)f(the)h(program)e(exits.)60 1120 y(24.)41 b Fl(void)g(A2_swapRows) │ │ │ │ f(\()j(A2)f(*mtx,)g(int)g(irow1,)f(int)i(irow2)e(\))i(;)208 │ │ │ │ 1252 y Fm(This)27 b(metho)r(d)h(sw)n(aps)f(ro)n(ws)f │ │ │ │ Fl(irow1)f Fm(and)j Fl(irow2)d Fm(of)j(the)g(matrix.)208 │ │ │ │ @@ -5430,18 +5441,18 @@ │ │ │ │ (in)i(reading)208 5275 y(the)i(data,)f(the)h(v)-5 b(alue)27 │ │ │ │ b Fl(1)g Fm(is)h(returned.)36 b(If)28 b(an)g(IO)f(error)f(is)h(encoun)n │ │ │ │ (tered)g(from)g Fl(fread)p Fm(,)f(zero)g(is)i(returned.)208 │ │ │ │ 5407 y Fh(Err)l(or)i(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ Fm(or)g Fl(fp)f Fm(are)h Fl(NULL)p Fm(,)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 Fm(10)p 166 100 1224 4 │ │ │ │ -v 1388 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(18,)g(2025) │ │ │ │ -p 2677 100 V 101 390 a Fm(4.)42 b Fl(int)g(A2_writeToFile)c(\()43 │ │ │ │ -b(A2)g(*mtx,)e(char)h(*fn)g(\))i(;)208 522 y Fm(This)31 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1188 4 │ │ │ │ +v 1352 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(No)n(v)n(em)n(b)r(er)g │ │ │ │ +(15,)g(2025)p 2713 100 V 101 390 a Fm(4.)42 b Fl(int)g(A2_writeToFile)c │ │ │ │ +(\()43 b(A2)g(*mtx,)e(char)h(*fn)g(\))i(;)208 522 y Fm(This)31 │ │ │ │ b(metho)r(d)h(writes)f(a)g Fl(A2)g Fm(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 Fl(A2)p 301 622 27 4 v 30 w(writeFromFormatt)o(edF)o(il)o(e\(\)) │ │ │ │ 24 b Fm(or)29 b Fl(A2)p 1600 622 V 31 w(writeFromBinaryF)o(ile)o(\(\))o │ │ │ │ Fm(,)d(closes)j(the)i(\014le)g(and)f(returns)g(the)h(v)-5 │ │ │ │ b(alue)208 722 y(returned)27 b(from)g(the)h(called)f(routine.)208 │ │ │ │ @@ -5517,31 +5528,31 @@ │ │ │ │ Fm(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of)f(ro)n(ws.)307 │ │ │ │ 5144 y Fi(\210)42 b Fm(The)28 b Fl(ncol)e Fm(parameter)g(is)h(the)h(n)n │ │ │ │ (um)n(b)r(er)g(of)f(ro)n(ws.)307 5275 y Fi(\210)42 b │ │ │ │ Fm(The)28 b Fl(inc1)e Fm(parameter)g(is)h(the)h(ro)n(w)f(incremen)n(t.) │ │ │ │ 307 5407 y Fi(\210)42 b Fm(The)28 b Fl(inc2)e Fm(parameter)g(is)h(the)h │ │ │ │ (column)g(incremen)n(t.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 83 100 1224 4 v 1389 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2596 100 V 1224 w Fm(11)307 390 y Fi(\210)42 b Fm(The)28 │ │ │ │ -b Fl(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.) │ │ │ │ -101 573 y(2.)42 b Fl(test_QR)e(msglvl)h(msgFile)g(type)h(nrow)g(ncol)g │ │ │ │ -(inc1)g(inc2)g(seed)208 706 y Fm(This)22 b(driv)n(er)g(program)e(tests) │ │ │ │ -j(the)g Fl(A2)p 1376 706 27 4 v 30 w(QRreduce\(\))c Fm(and)k │ │ │ │ -Fl(A2)p 2110 706 V 30 w(QRreduce2\(\))18 b Fm(metho)r(ds)23 │ │ │ │ -b(whic)n(h)g(reduce)f Fk(A)h Fm(to)g Fk(QR)g Fm(via)208 │ │ │ │ -805 y(rank-1)g(and)i(rank-2)f(up)r(dates.)36 b(Use)25 │ │ │ │ -b(the)h(script)f(\014le)h Fl(do)p 1979 805 V 30 w(QR)f │ │ │ │ -Fm(for)f(testing.)37 b(When)25 b Fl(msglvl)41 b(>)j(1)p │ │ │ │ -Fm(,)25 b(the)h(matrix)f Fk(A)g Fm(and)208 905 y(matrices)d │ │ │ │ -Fk(R)q Fm(1)g(and)g Fk(R)q Fm(2)g(\(computed)h(from)g │ │ │ │ -Fl(A2)p 1643 905 V 30 w(QRreduce\(\))c Fm(and)k Fl(A2)p │ │ │ │ -2377 905 V 30 w(QRreduce2\(\))p Fm(,)d(resp)r(ectiv)n(ely\))i(are)g │ │ │ │ -(prin)n(ted)g(to)208 1005 y(the)h(message)e(\014le.)36 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1188 4 v 1353 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)g(2025)p 2632 100 V 1188 w Fm(11)307 390 y Fi(\210)42 │ │ │ │ +b Fm(The)28 b Fl(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ +(er)i(seed.)101 573 y(2.)42 b Fl(test_QR)e(msglvl)h(msgFile)g(type)h │ │ │ │ +(nrow)g(ncol)g(inc1)g(inc2)g(seed)208 706 y Fm(This)22 │ │ │ │ +b(driv)n(er)g(program)e(tests)j(the)g Fl(A2)p 1376 706 │ │ │ │ +27 4 v 30 w(QRreduce\(\))c Fm(and)k Fl(A2)p 2110 706 │ │ │ │ +V 30 w(QRreduce2\(\))18 b Fm(metho)r(ds)23 b(whic)n(h)g(reduce)f │ │ │ │ +Fk(A)h Fm(to)g Fk(QR)g Fm(via)208 805 y(rank-1)g(and)i(rank-2)f(up)r │ │ │ │ +(dates.)36 b(Use)25 b(the)h(script)f(\014le)h Fl(do)p │ │ │ │ +1979 805 V 30 w(QR)f Fm(for)f(testing.)37 b(When)25 b │ │ │ │ +Fl(msglvl)41 b(>)j(1)p Fm(,)25 b(the)h(matrix)f Fk(A)g │ │ │ │ +Fm(and)208 905 y(matrices)d Fk(R)q Fm(1)g(and)g Fk(R)q │ │ │ │ +Fm(2)g(\(computed)h(from)g Fl(A2)p 1643 905 V 30 w(QRreduce\(\))c │ │ │ │ +Fm(and)k Fl(A2)p 2377 905 V 30 w(QRreduce2\(\))p Fm(,)d(resp)r(ectiv)n │ │ │ │ +(ely\))i(are)g(prin)n(ted)g(to)208 1005 y(the)h(message)e(\014le.)36 │ │ │ │ b(When)23 b(the)h(output)f(\014le)g(is)g(loaded)f(in)n(to)h(matlab,)h │ │ │ │ (the)f(errors)e Fk(A)2831 974 y Fc(T)2883 1005 y Fk(A)9 │ │ │ │ b Fb(\000)g Fk(R)3092 974 y Fc(T)3091 1025 y Fa(1)3144 │ │ │ │ 1005 y Fk(R)3207 1017 y Fa(1)3267 1005 y Fm(and)23 b │ │ │ │ Fk(A)3486 974 y Fc(T)3539 1005 y Fk(A)9 b Fb(\000)g Fk(R)3748 │ │ │ │ 974 y Fc(T)3747 1025 y Fa(2)3800 1005 y Fk(R)3863 1017 │ │ │ │ y Fa(2)208 1104 y Fm(\(if)28 b Fk(A)g Fm(is)f(real\))g(or)g(the)h │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 A2 : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + A2 : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 A2 : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + A2 : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 A2 : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + A2 : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 A2 : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + A2 : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 A2 : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + A2 : DRAFT November 15, 2025 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 │ │ │ │ @@ -12,15 +12,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o AllInOne.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2707,24 +2707,23 @@ │ │ │ │ 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 53 /five 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 78 /N 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 │ │ │ │ @@ -2735,14 +2734,15 @@ │ │ │ │ dup 107 /k 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 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ @@ -2917,213 +2917,217 @@ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BAD47EE10B9AECC871B76227228CA161EA7B61DABB252EF91E607AC8D3F85774 │ │ │ │ DF0B1507B60BF52E4E9BC0FD04400A548D553D4A6EDB247875E0A2E013685C51 │ │ │ │ D23EE8A56AF57025AD67D929CE8BE791BE91A4C4D9F00DB8B4F16252C04F7BC2 │ │ │ │ 02236296A9052306639F4672E90E3B9DDE466EAC17E200523B2AECD6C05A0A83 │ │ │ │ 66D4EBC86C0DF27B789D5597FE88BCDAD2925CFF60F5A8EA618FE867857D585A │ │ │ │ -CE25A158AED63B8FE391030C518692F2EF74DC514FD192BCC93C02373CE75137 │ │ │ │ -334A9C960EFF02B687E7B8F18FE2D9EAD2EBBEA3A459D8476AF51AF6C85E1166 │ │ │ │ -08A0A6190D8FA8252F5D38820C6950A8B323B1B8648E3AFEB827678CDE87C535 │ │ │ │ -EBB201D3A169CD9DCC4C3C256A0960D963F3C6659BBF4D2971663D0AB84621F1 │ │ │ │ -5C186C0550483EA00066C08F2E907B838F2863B986BBD637B6F56676655CD30C │ │ │ │ -3EDEEAF952BDF9914D3AED6D1A55395BCAB30DB575B37DD1D9B0D4C10D271EAE │ │ │ │ -A248414EE7723314B838B57BE9F0C73CF62AF0D75DF2671311BE7799F05E418C │ │ │ │ -4F35990248F427F070142CB26352246E6DA832A2EC9BB5203728D93B66D9F1C0 │ │ │ │ -DFCA15F1985FD959F5F979B61EC08E9F58EBD803A2B70582D3912A65E9802A40 │ │ │ │ -4B979FC03B366C41216FC6BC6F510323F4AD1A29CDA6A8014520B4E705569755 │ │ │ │ -7EC4E55D4438D8F630BA83107BD2ADA5E8DF1D1ADB0ACEED0F3F0E509AA0435C │ │ │ │ -32930C938E6993DF163688A56199376F59FA3BC063BC60F6007FA4EE17DDCC46 │ │ │ │ -2F448ECC5CB4EFF937AFAC4B4E72EE284C44A92B809DECF6D028ED6A6FBC2B24 │ │ │ │ -BE5C2A4BE0A8105900CEAF3C9155F86BD2CEDE02799D369ABEF2C0CEE3F76052 │ │ │ │ -BDC4974AAC613CE93DB193AC0DE0803DA514A732415AE14395CD77D0E0AB4FB0 │ │ │ │ -A5D45E9DF2B23A54896A369E689E0BC204A137ABB64CE36C6A0008C8AA466CC4 │ │ │ │ -C5FF87F0D4EF0DD17B9B0C553C58F695CF12542AD51C109E413D3F843852C47B │ │ │ │ -2E17C2D80AEBEB4D687BE2B4D907BD7D04677A4F09CC10FDD2107931ACD34599 │ │ │ │ -F1C21912E2E71563089F07E3E47AE0964E8B3D94B8E1A67CB21D5890C62C37FF │ │ │ │ -A57F5C0397213E0247C7B2D328EA3F6ECA99BB782756D596236CFBDFDB7BC080 │ │ │ │ -E23055AFBE6BF6A4A06E36C3F7AB68B4F0491FDE392C9193B9119E343BCF8B4E │ │ │ │ -872AD612D041A745C53E374F79D781EA47A126EDFB985D6E81F48AC85A14E956 │ │ │ │ -30DADC1717A6782634E1993326CC83B2901D9C1AA0DFF308436555FD030246AC │ │ │ │ -6878334EA6408EDBBC9566B808584B3283272EDBE3ECDC5A7A952160588DB168 │ │ │ │ -63A806DD922A8B77EEDFB07F13001802DFE72A21FD97D60F364B48EF64E5D5E7 │ │ │ │ -166A3DE6E5D755DFA658D2A5F5B3E40543D71DEBBCC1289C37AEC02040480922 │ │ │ │ -CB262EF7DACA4FE1A96494080EB9EC06920C67A323E14CEECB9CB5ADC6440F31 │ │ │ │ -A938513C1D0A565A3942EB68EC5AAB0C440A6FDC9D19E85397F6250C60DD0EFC │ │ │ │ -7487630E12AB34C0E2C0377DB81A0BFFAC5AAB5223F713AD9C7BE361375395EE │ │ │ │ -5D6D18E9F2BD227EB579926D7426E9CEC9EE58A0F3DDD05BEEE40F010002F4D7 │ │ │ │ -1C07D6EB6290301A09A75010C5DF49DBF71BB07AE06312CF477B3855CAF98DBE │ │ │ │ -B78A482301A5AB0EE6E9D98FB64FB5CCC1E6394A473B8118FECBA6DAFE170D8D │ │ │ │ -4FF6DB95AB3BC66FA484C4E637205C8C2E954CD4D85129ECA1BCFA31546E9BA2 │ │ │ │ -AAEE4423157C222F1B831B9C5D56E54D469FBB89A4125F3778B1881C05CB7E1D │ │ │ │ -B8A0BE575E5BAE73131662CFFFE1EC825489B819EB7B54CA1A9F63C8C24E4B53 │ │ │ │ -C274C20395004C2ADF52706FFE9EDEC1E613147459117275E8152C8709424AC5 │ │ │ │ -8CAA360623309FAAFA5D4E40DCF83801EB4EA5852513F97297EF782CD79A5579 │ │ │ │ -8B7AFBA34AC3E22AA1A832507E6842E4375C55A107B2CB6F8CF56B9BE4EC7F5A │ │ │ │ -EA389FE8EE9AE0A8AA75DEEC58E6EA2C404BC272657E9F45EB6B3D089F196142 │ │ │ │ -01D90985762717F5426F7148BB8FA70965CF1BDB223EE1DBC7F510581ABDCC3D │ │ │ │ -527217F69D454E05E0E71CB29F326395853BD839BA57416D36058B06F3AABB12 │ │ │ │ -1C00CCC1507D3657AE3A398AA7045C087251D87EA0A4F098278CB5BE5CF3D2D4 │ │ │ │ -3FB4FB29CD4796D95E95AD6309E0D77C8EAFA9C56B22D504BD50A05AFA0DFD0B │ │ │ │ -143085B634968BD896E982E834F748D2DCF08DFB56B3DB6A0862842729BB8BA5 │ │ │ │ -1D35D2F38725D6B68B37F6E518B03B4144135028C2CFF9AF42D9C3090D3C6899 │ │ │ │ -ECCF19241CF389D8650002C19836AC3EED45C0310C87CD8E403C3A8D5774E825 │ │ │ │ -74783C8E950082DEE9D8E5E6036EE84D3028DAB33432E777312EB3EA76BF9D32 │ │ │ │ -8BDF0D25AA998D6948465732D234D10CC35AAE73105DFA58305BFB1B3EC13250 │ │ │ │ -60E81F43529410D6EF14AF9C8BB929D28504F41C0E5AD878C973F71413B76CB1 │ │ │ │ -16CC1C2FC66C920D4B6AA53C388F590620840098E68B231324672B3E38A5B229 │ │ │ │ -27B9BA72072A6C72991072DB267DA1913F3282929E3E687C444776F13ADB1638 │ │ │ │ -3F54D5DD19AB3A07B64CBAE87CA09A0F5F0A066A36F0C8548E959F4527CB608C │ │ │ │ -6102128D55CCDEEF321AB964E824A7C9994B9C142E6FFA720507F328C0150223 │ │ │ │ -539BA0FCEC43945055E45410B2865C74995FD7537949A871F36E39C8CB3F0EC5 │ │ │ │ -E467E76128408F68F252348AEF081BB6F8F39B3F20FCFDE7ED4F629A33BA77B4 │ │ │ │ -1FD23AB170FB8BBD6BACC849D7E3DE9755152C093ECD46FF20439E657BD02177 │ │ │ │ -B30494A6C60D5DF598FEA637E09776A95803769D9AD69367D38B8A2B8F010172 │ │ │ │ -B9CB92B3C488ECEBE64885855E833BB4348ECCA17B9993C6860975B0806009B7 │ │ │ │ -EC36CE5DC555CE532EB50ECC70A8CEBC1C9EB20DA7A8D10244D666AFE99B5E81 │ │ │ │ -0D76D7DEC7DF5BA3483AF8765AC1258B478403061F74CB39CEDAD0F4C817FADA │ │ │ │ -B9EFA1415E9686B6B691ECBE5AEEFD822D6A22918B90ABC6DB04AA895ECB823C │ │ │ │ -AC45513B2A99DB32572C267E085C36939B5764C8A93CF0D306F7BA6BB4E4D885 │ │ │ │ -8FBD00FBE85BD7A2889040791EDF9ED2E4D4BB802BD4B29DB2A2EDE241DCA421 │ │ │ │ -0DF0C59520B0F33103DC65EFB382D8D126E81AD7FF799AA0D1ADAD97E1E502B2 │ │ │ │ -08BE152CB3AA71ADE9BC2B027443533ECF7497CD08B3DE67E4F21A52A9CC4EBF │ │ │ │ -AAE8F0BFDB326E2AAA1B07AC3364B5E0D8C0FD9327D78FEB9ED1D4560F112A6D │ │ │ │ -1BF3DF8E5AC4F5517B2D994B0F82C23A913D51E2607C0BE0C11C8905611E63AE │ │ │ │ -5741B1D9CB38B059968AE21F48CC1AE0E457E7FB350EEE8077AB14165486A583 │ │ │ │ -56B141A31117E1578EE36F2260445FC318537A2EFE42C3243C9314918909405D │ │ │ │ -C51FD3D924FCF7410017498DBFEB43149DF180F17CD773814CE7F32531521D98 │ │ │ │ -A9D8B1899AA84BCB46DCC563A66B9D13D613EE6EE8C3EF1B600FCF467D15FAB3 │ │ │ │ -B9F8213D1E0E0F8D85A70AAFD43B465D2092C86D5BA23CC0073FA6B1E770C860 │ │ │ │ -7A1EA761124D05CF3D87F24F9D209D78E01D77260FA813389F8E81641F1F21E7 │ │ │ │ -2CC837C674547F8A325A5B2F2EC53CA8A0C6CCD0435EED629D7A4B90FEE27C20 │ │ │ │ -839AB30E9CEB3F4C42F48DBBC564F137216AC66C5391260D028F2B5A3B38BAAB │ │ │ │ -6310444D39D5D82798028478B2F95DE874CBD58437978EA4ADF6FF1EA1A20D1B │ │ │ │ -D76166BC0EA652FF4489ED2D85E750CF620EBDBA1C511DDF789030533654B0BC │ │ │ │ -50CFCC64B976E4655A183566AB0D40A534E1AD3A8B9E011072187D56ED1D8307 │ │ │ │ -4F34A71ABDFCE5446F044E3AB75052D033536997D324EFE2A47048E6E5164BA4 │ │ │ │ -F58B896E330CCEF7CF0AE9FBFAD22E586C2A7474998016239DB46593AD8DAE94 │ │ │ │ -A199EBC1FA02ACB5A49805AE19BA3770B7B7D844A4F43867388DE020E61C2377 │ │ │ │ -A1CBD577C157BB5901E82F990EAE0A97E17103562428E96AFBE276B949C61AF3 │ │ │ │ -0AA1784CE461B626F19FC0571FA5A7BC4EBF7E18974878C02328BD3084EEC08A │ │ │ │ -5E29A95DA21E08F507515F88C60E23450B594CDBE1FF247F257DC66FCFC42A93 │ │ │ │ -E61C470D4AFE46231FE39CA4AE61B87C8FB35C66EA232D80D140A1A525BFE890 │ │ │ │ -59BF3854294DA62F57F8C06E6699E36F9299B26BAB883F8A2777F9366E260832 │ │ │ │ -4741889F690765864F5C577E7CC93FBEA77E6FDB140B79FB6E481B78E65131A0 │ │ │ │ -2CA5F449544AD736D10D46A5BEE417E4AE6F8C876DC0543F332DEDF228451D7F │ │ │ │ -B0E8A8D3AA0E793A7B53F3B6689AC526E3416034B812B5EF7D65367637405AD6 │ │ │ │ -4818D973F81D9F2A88FCF455F1993C7E7E617ADC94481A6AEF54D401D6BA8B10 │ │ │ │ -662C0597AB16CB3B9518D1A9482E452E3B9297ED8842890F182CE72EBFD3337D │ │ │ │ -5B78D30B26586F0168BA33A25707C2F3809B9AA1D62B0CF65FB0CF7412DBA543 │ │ │ │ -926161E6FA242CC1BE5ABDAA876CDCAB7E093A1A346B0DA8BFC3688D9C9FD49A │ │ │ │ -40E338526846A6D1FEA75FAF86939F2521B59C09852D460AFB29A7B31E9E83F2 │ │ │ │ -B948943D774E1B98C9DCF047494198677712106D4B22986B3EC1D6CB765F6D34 │ │ │ │ -B62639CF0E9CA3AFC41C9715E852D868EAABB61DD905B1C059AD7886EDDDCB8C │ │ │ │ -F4D2F2C044AA5A3234B4D5F27687838E47F71B378DEB09A30541B0FF58D2E3A8 │ │ │ │ -46375C300B4C57D5209B1D771E7E582946907BD38BE514BB5EAEE9BF47D16B66 │ │ │ │ -BF3731A2606B09131148991AFBFE1B4096D5F5461A8F02D2021E3C83667441D2 │ │ │ │ -CC0A54A2F70504CD045D41E9D0EE8372C2229859EBF2A5412CDB91F1833DDEFB │ │ │ │ -1BC4994FD6F05AF5D88C428505F61309E79F5F03CFBE81F725EAADA9C4803BBD │ │ │ │ -D63BD487B9FF053FEA27804249BEE8FF0C2507FD239C696CB39EB5EE84A2E360 │ │ │ │ -8F446545A0F03F2FDC08AA640EA503F83B21AE16CD939CF7AF4120016D08B772 │ │ │ │ -F15D96245CAD533B09D802EAC0D8EE0AD2D4776273200030D47889CC55750E44 │ │ │ │ -AC67EC17C844AD2173FC01171BD825AF9AA39D7611BF0B021C2D813DA16EFDB2 │ │ │ │ -3DA3CE82976D159AAD78E8FD3D3E76D8A14BC70B22B08A0ED3BF59C04A5062F3 │ │ │ │ -EE7937BD183E4E4BCF994A48E722148C2CF28774EFC7E377B832FFA7C858354A │ │ │ │ -2CCCACBFDB84044066ABA0349902D565C7A71D2D9CDF491958B550863EF8734D │ │ │ │ -C456E6A5A7C60620836BD40FF2576EAD786931152E7A950505550B380DBCCB39 │ │ │ │ -D4D122F83E62C2F4E716BDDCFCA4E89F9AB633A019D4322C0C4D4ADACBE9B85D │ │ │ │ -957662ECE105BBE6EAC36D582FADF7F380F3F8B02294B893745C68592BFD1149 │ │ │ │ -F6784DA9DBEEE2760068D9B93299BABA33DB1D480CAD6B0E12B9100E715D9ACC │ │ │ │ -6F35C39DA56871561F277EC617A90921E378F9308218CF02AE4665E76A7FE431 │ │ │ │ -B53633B393DEA1E0BF38AFB7836916B5206E0B38196C5E3823DB7F888E55D101 │ │ │ │ -88609614131EEA9A4BF8362D276F316C9667C5416E66B1550B90D9E0CA0E5CB7 │ │ │ │ -FE645A564EBF21BFBFE2FC6F31EBA1766CB8E63D0E41B0A7408CE3D974A8D67B │ │ │ │ -16416812F2D6D36F246249B09E80402B169985802A6937381D8A92E5B582399B │ │ │ │ -61DAA33B7E4A47093ACB2D3EC5EDCBE61202D7C3EF839D6FC4B9BDEF71F37225 │ │ │ │ -748663C615FCAB2290BD9AAA5F4E54670BFB6C43106880D800FF2403F3A9C605 │ │ │ │ -39323CCF27439C5F3C6BEE582086533D4A08B9DB4E553DCCF1DFC815613095E4 │ │ │ │ -EAECAF56E1D359B378BE546BAEF71A5A6DAD2A1047458E48E4D2961FE7F3A3E8 │ │ │ │ -6C96555042ADFEB7A5A0F81D0FF9D6C7346BA5910F57331C9A3A6543CBE76495 │ │ │ │ -98B03FCDBA618B358467B288EB71320C3D4B838F8CDEA29E0041821CAA67EAD8 │ │ │ │ -7F6E3C5D6C2C34F865CA02D8AE55BE4F495230FFD4F1E647BE73F40E0DCA1771 │ │ │ │ -BCA92E5B1680CF275063CB236996174904B2D83C294C9B071DFF708EC1ED4D15 │ │ │ │ -DDC38E8B22C19ECBBAB4CFB7322925CBE78DE3F28A6CE8DC632A2F1A67BE7C3D │ │ │ │ -60AAC510C15E3349B87A1640D97AFB7204BBA6C7C24CE1C6C08D07DCCD1F3624 │ │ │ │ -A980F6903DA5B13BB715CC9737D407BB857D79B2BBE06EA2E9219B5C980413F7 │ │ │ │ -DD1F423685764608C9F2C8C6B950157DAEA0987392F5B09FDA2E50B445D26686 │ │ │ │ -A8CA9945B39280BF7EAAFE62EFDDFC25112AFA729A55E2D8417E5187970B8137 │ │ │ │ -0E3D1DCBB4047199CD75492E53A13D713E158F759364A59BD732A178948A095B │ │ │ │ -FA4A26ED19FBF165B7770650CF260A3894D45EE8F0F34C3FE1AC8FD280DF588D │ │ │ │ -F93B6925BD0FF069FF299B1277F8138C4EDE992854DA173FF6C66C4A38E57D63 │ │ │ │ -17235A0970596612EFDD8D65E20E209B565D5C8828B4097D234DC5D4F617E289 │ │ │ │ -0F0B1777B1D5F6FD87FCCCB76748AD4D226BF337C097CDC22FD29E21D73E88FD │ │ │ │ -3DF5ECB6F32D6D78E15A668B881D78772B88A7A3D32AC1348AB37DB3FEC0172F │ │ │ │ -D848A92E3F5D2AA544D082BE6D41FF94B47ED0A27D365FD58B9667AB29E123D2 │ │ │ │ -9A6C582F38B61D8C85E15B9D5254AC3361364A61F5285E1B586ABC7F53D687DF │ │ │ │ -403D97233FA4C8F2AAFF4834773772155A2E016C5583361761D9EC304DA89D72 │ │ │ │ -0BB67160F43C2DD04FC035146A4A1D071A94D66926BDD453FF14C5E84265B1CB │ │ │ │ -AE0BC08543C13800E3D74A9B545FBB0D749F1C3C8296350CA4382200B2F539CF │ │ │ │ -F39410FC948ECB29991FD4B110F3EB0900BB0B1E2782CB95D4A2A0ADD6ED6C62 │ │ │ │ -60263034B4E32F57AEC14EA3E281D69B3F020317B7DBA5260292047DB0A1CF4B │ │ │ │ -5BC52CDC85A385F7AAEAF6E8791FB324C22ABD16F3390904708B98B11438C130 │ │ │ │ -730A6D7EE8EEC05CB7D585A58DFDE1A8954DFD64981AB12B1AFBA252FD0088BC │ │ │ │ -A81E63BA59B9200891BFFB0B74F51F57D143E47AB3F40AF4CF686ACE0604E26B │ │ │ │ -B9FD34D93BA5CA1284685B79B209BB5C68BEA19F706D6F247B1662DD851832E8 │ │ │ │ -372ABADED51F3BDAFEC2577E4119AD559F700980BA6F10E8B5955CCA5F8D0D7F │ │ │ │ -CB01F01350516D615C683C0ABAFD2AEF1A14A0185CEF6C7F2380188383098B4C │ │ │ │ -5A06CA75AE20A751E32EB8C7D77B40714703B364BF515FCD997783EF0A83BCA0 │ │ │ │ -E28E839521DAF911DBD4744572B9FA43E2AF6EF28C646C4D1FEFA4CC6AE1BC1D │ │ │ │ -C7342B17A12E59FA4EC0735F69A3744EA471FE52AF35F1331D85FF70AB81A3D6 │ │ │ │ -CC3E039B7C2B4D117D869ADF10ED38732E4A3268D68683BDD0283258B9C9E455 │ │ │ │ -C295C55F9CA56724818EFABC508498CBACC22453FBC48F515C83C04B8AF0A9A7 │ │ │ │ -A90B4AE2B96A5A32A5DA16F5D73B78D4F43590C9C9FC18A765C18B73EE90D8F0 │ │ │ │ -4F700BB975DFF63EE467E7C3CBC344C5CF46C043F4AD5EBBE7B2FDE702FFDAA5 │ │ │ │ -72DAA53368025F1A840D5FCC243D7C6A015953D80BB07A06BB6DF926A8C81ECD │ │ │ │ -1019996AACF1BFA196C37126A4583700582F822E4A342F2CD979BBF08C2849BD │ │ │ │ -DF73E95F6672118808B46637229630D3FFE0885EC788C5BAA6905A96840245A4 │ │ │ │ -052747EE69B016711182B7CDF17A1DB54D8998827962DC00087BE749A170C811 │ │ │ │ -EFD547DD9C41849CA6A6A0A70F3B1573E7CA97B1FCB791BCA86C202C1018A7EC │ │ │ │ -98B99B8EB46996323022F92CC72ADD744DADCB1FCE72C848952B89EBBC4CD616 │ │ │ │ -552A8B7CEBA660B7E0D303C1AB9EBA0E3A0B55E8D215C52445B713DF3FDEEA49 │ │ │ │ -E3208A926C5362CAD8A40B648351AF48064EDC8E0DCDFB38E4C63D912C7CFB5C │ │ │ │ -70824C189E6E613F14EE34744C2027323A969D9870732BEDAABEA9F739118AB4 │ │ │ │ -944A71CDF79CD930594750126BD582DD762D6096D85409CC9A82BF45211E87D4 │ │ │ │ -507538D858574DED7DC4205BA452600036AD7B9FC2A697D2AC3CEB4E2BD3A72E │ │ │ │ -BBB50A82F97FD9DB72720E8DB7D3ED127239FF7DC73DB02D9509A9BCBF91CBFE │ │ │ │ -B9C1BE6523AC5F46E99A59130B99E140EC3236FA167B371EBF6880E5E3ADB8F7 │ │ │ │ -4F076599DDF3983FE4C3EB1F02D7E938E216F5BE5B63EDB7F175027A24B54288 │ │ │ │ -B65971756BA49D0F9A5A63AA4C34928E524F9438AF0CA310FD076830EBE0DD65 │ │ │ │ -A1F0283CEFDEC541ADE1B87AC7C8504F2C62F96B293715A41FD179F484A70C26 │ │ │ │ -9B649356EBF838CE1E19A6F691D8ABF081CB531457C011D2E87789209E7DA0C2 │ │ │ │ -7B1950FC863ED6284D662180A4D11B3AC9A08FD78AE1036C86BE31573C1E1386 │ │ │ │ -F2791BBB3AF7254922731C2B3F2B93AB8BB7AC3247ED2E24833F239624F42D53 │ │ │ │ -CA81650212F8BDB9C44E7C18C32CD1EA1D0D34F6E639860D1D06AF0C100B19F0 │ │ │ │ -3FA740023D9AE9E3BA22C5E96496E83D327A07A8C7AD8234C5FC5A90AF988F74 │ │ │ │ -C13F38BA264FF127AF2A829656E49E045AB0EE68020C6B71C09C3CD91A1CB1D0 │ │ │ │ -2B9DCC329EA07305BA375A7663320221BDDF950C85A35319C491A0FA8993E8F2 │ │ │ │ -3A53A40F35A8B515416C5D4CDCA5488C09E3A80103EF300CC1241112BEFD8979 │ │ │ │ -155F7ECC22530CF399F3C89BD5AFFA5405D04B05AA2487A4D1E28019B278143F │ │ │ │ -C498C0C332A009D7C515BF2320868F19C698002E0FF3F41AB1455C1E91BCA11D │ │ │ │ -3389DBC3B59272E5A32D4B9FE2F4D74C1997CD509B53D263AE1FF4E684F130A1 │ │ │ │ -D64E0CE6C19D2E5CF49E1A68CCEA65A70F23806CEAFC05CBF03793F63937FC7E │ │ │ │ -ECC93B1EE85BFA7AB0856E914FCAFFA9D72FEDFD6458472A18D20409D831EC5D │ │ │ │ -53B41F467DFD386D47B84B02F8995F47350AD7C417385EF7C0782CA03AF6D297 │ │ │ │ -B4C16E01313DAC87127E1D17F8A3903FA857F5EA2EDB2B3806A85E6311CB246F │ │ │ │ -7F283EE1DEF5A7E4880893B23C7FD61373B0445F5DEF232EC01F4991D79AE67C │ │ │ │ -1B415C581C979389C508111BB13C77CA635F34313988E0301BF1A4C43DBDF6C9 │ │ │ │ -D3B8E8424289053EA1C3A5A1511E771A1FA8DEA40CCA88017FB29FAE09D68DA9 │ │ │ │ -3250095B19CAAF15D70EA981334A1B2AC6B409F3B5446A061A8D57716E6B043F │ │ │ │ -5F47D96D1FD5E91EE2DAEBF3B4859351D3AF76F4754E5A401250C0C454CBDF09 │ │ │ │ -8CBCC341B48B2710A7C7010C80983E0E03B9FE479350B20DC2EB1D3520A739E7 │ │ │ │ -2431308B382C90493C0E571D89219BEE7F9C98268C833461CFBA900E69B80B9B │ │ │ │ -FA24DDEAFC2C7A5B9558E6448822B96D321BA78A3B0D69DEC10DD3E0C5090B24 │ │ │ │ -E91210BD2CBB00CE627FE0A519BA4AC9706F8CEBBA3ACF80A7F862C038B03822 │ │ │ │ -412021EFB2489F67D09B2D389770A304020B2707E248DCA2DD381518E8475E70 │ │ │ │ -2B850D341F1AE35BA7E704BFE1549710146DFB9034DFBD52161A0B2B6F5E8254 │ │ │ │ -9B3DDAD3854C97C2C5A6B0 │ │ │ │ +CE25A158AED63B8FE391030C518693AEC75AC0AADD0C11B0065E2ABCF51132F3 │ │ │ │ +82E3718B9A9FAAF727F2D8286177EE27BAD040C66D0D2D7C092B45D9330265B5 │ │ │ │ +6B5C8E29F71C9EF548BFA4BAFAB242B26455E4B7FC1882D68E408D25E6F58EC3 │ │ │ │ +046AAFC52C182BDCD36034FD58E8B379C9F2BD16FA6FBB8C455E36A1BEA8F803 │ │ │ │ +2AC069379392D74A6E8DD64AAC6FB5E7EE151EE99AF33B1D9E55C5C8D601EEB7 │ │ │ │ +2C194E090D261E86199D6576EC00044C87B3E79C39B4CBCBF391B78C1E9D17AE │ │ │ │ +FC99092341499E3160303A87A89B1F985B02FEB3B0BAAD5ED495A3B8B334DBBC │ │ │ │ +A87630CAAABE2BFF3FA494F5FBFAB85753E5B6C430EA5F5D8C90040EB8D91851 │ │ │ │ +599BA20E77F7249C9CE03A308B27C5CC10BDF184AE3320EF27D31A0DF50FF760 │ │ │ │ +85239CF12ED6991B592040DF6C95B10B135B2606D3B806C55735FF440E4F6ECC │ │ │ │ +76EF3B9D8882361FBD2C836112BFB24C65232A6BAE92A541F2754CA510217AAB │ │ │ │ +F7721459A6489F03F9BA2DF35D09829DEAF45D79EEE241D51557FD67E5AFE84A │ │ │ │ +9292AFCC6BBE93F29B3AFDFBE812757E453AE37596BABB3633E62E0A50303A25 │ │ │ │ +F4DA7A23B1046ABE0E4D1719D1952F27328097BEC6E87277E0CF3B276CE74D6D │ │ │ │ +FA5AED42A8556B0053554A8B04A8C40BB4E5D84E3C799E77329DE91D888A7002 │ │ │ │ +80CC0094D3D26961FB3A1AFF4303B27818BC3F174E267B3A9859FA22171C0972 │ │ │ │ +2EB0EA61EF5A4F53DCE91086F440B6AAC5D6FB789BE654220714456CC76F00D4 │ │ │ │ +AD4224A3FBF01CF114079E14842A6372697E79A5F4F65FDCDC55AB5CCF597F40 │ │ │ │ +D097FF0CFD1CEA7448415862FD64271E9B81519DEDEE36DC052BA5130418482C │ │ │ │ +B94E05B920CDA7DE3D3762B8C94852AAF99273219A224C7F7B6E5A1670D33871 │ │ │ │ +53AE8AF719AC73B71CCAF440368CF0719A0C45DA0869F54B18B3F924619DF704 │ │ │ │ +20F3763D7F0298B27ED413B3AC6C9A55FBB56F523C55AA3402337C6C2CD98429 │ │ │ │ +8C461E01B0039299C2854103711641A1CBA967CD2B3DEAAA1F0B303D8E54732B │ │ │ │ +C2CED3227CA6101809534408C22044B0345E87674CD86183F0BD3ABE516D9042 │ │ │ │ +D2F7115D943836604E1EE394E6F31B07E58599A2ABD1D73CDAA102E14302BEA1 │ │ │ │ +D9D653ABC586F46ED3290C0142E0547AB6275B7436095B079D0FF4E86A7B66E6 │ │ │ │ +BBF3FCFEC59D9FAC6A927F6D6DF2BA37162EBD56A66574211BE4A65D3DF81727 │ │ │ │ +9FF7CAC6B94D6779FA2C9276096C51C59E723E0C41686170719C345F50FEA6A1 │ │ │ │ +5BC8248475614C23D4DA420A685F58D7727F5B806023F60536F3848E9952C3BE │ │ │ │ +D49935F70A50CFF8C78A241C4178274DF310B53BB9949EA4A171755CB19EB4E9 │ │ │ │ +AA341CCE230026355F4909EB6FD933A8A22539117852BB8B6FB1107C38E37695 │ │ │ │ +A110062955BA3282402C08AEC382E40A2CD44D3E79DD40F1BCD75B3F406B8346 │ │ │ │ +D641D020085D29144EB5F0A4E4B060CEAFCD988D04A18FD02C4BFD743D3C709E │ │ │ │ +9102C9FC4C6836117A021280BEE8ADE9CB004E1C973D11D86E8C84BC90ACF21E │ │ │ │ +F4F341A2079F888C406D1EF981DD14388C7164E96AF3E7BA9B616D22F8CD5C8F │ │ │ │ +DF528D4587F6FF6A81D16E8FF7715CC99FDBA59FE85CFDDE632A2845543EFDC4 │ │ │ │ +0E158C5610DF26061F9798F0CA71F41F834E41DB1D257A2BCF3456BE58808DEF │ │ │ │ +1B9095AE6967D8B8B3FD30C7D61F86AAC32EA34C777600EEB9864D7B66B7C1DD │ │ │ │ +5FC47D62ACEB0ABA22D3804898B75B54D5B3966BECC36CD3CB857AA3A29A4E98 │ │ │ │ +5B59433573A663880BA2209A36C2E2CDEB5614075B679F60073D91A772AAE570 │ │ │ │ +8BFA5049DB3911A690F36F8F21568B26B861C389FB14F4FA3B62DDC2A198E22A │ │ │ │ +098D2FE738C30E768491C6D2AC9F10D14EC13EEC933885A6B9B85A7960F24F32 │ │ │ │ +14F5B5D76495EB2C9CE3FB03BD522A956E3EBB80FB2B04FBD7BE591AA88F55D5 │ │ │ │ +99543F64E3B8D2FB8AE9B8570143AA73E169081F8006D96D7AA63262D4845B06 │ │ │ │ +4C013CE6CA8DD3B87A37D1B43BD85C8BE10C5814421BF3BDBB9A331D58486BF8 │ │ │ │ +631E00FBA72629D196CE2745ECD7C2D1E31737DC5B18F1D7B67C605B09919FC6 │ │ │ │ +18224D07AF1DDC3575E36D9EB1E372BF9FFA6C6459B80B70AEDD00930E0BF10B │ │ │ │ +72F1FD5E9098D67DCE41E26C161A7628B712BC81D25576CAEC62028AC97344DF │ │ │ │ +89762379DC0BF87D24F9A5D04E058AB4C5506181ED2BDAE0ECF6FED528FD8780 │ │ │ │ +336D9039AE8D1B72347BF3505398D182E7CDAAE290777A17702972665E6D39C4 │ │ │ │ +70EAAAC3B718195EC3968B9075A416647DC1D8A79CCD7AAC3F891DEDB910EB29 │ │ │ │ +A208030D16D34628EAAB2EBFD38610630FEA9603436BA2BE5FFB325CF3A2CE1A │ │ │ │ +90023D9DF0682ED67ABCF0F7CD955115E61FB25E50B97552D993920963490161 │ │ │ │ +2CA5E6B79476398948B0FD856F38962491E21B22CC888CFF32E0CE19A98A04F6 │ │ │ │ +39D06C6F006EE2758624F721392261C4841681EAD246D604E27CC4277EEDD336 │ │ │ │ +E69C294C2D5DADCD0BDBF24F5F86EDAC53E5C2B00F33821DEB335EA236A92DE7 │ │ │ │ +A25F9AEF5EEA3BD01F357CE903C691EC1E2C9E952A129CCAFBB7BAB2E860A60C │ │ │ │ +EA54FD92EB57A97C0CA4834422D06036DB81A6E4D72FC449E53DA8E17639BE61 │ │ │ │ +B00AD78B9DB346D661FA884C1130C139CBF382296750C3BE62169D97EA2C4B1C │ │ │ │ +64AB421CF192C951EC1BA8BD5DA06B18FE1A01B27E86CBAA3A31B0866C024B06 │ │ │ │ +6A86338D4730726131CDA3B6EA806C6E9D266704B93BEA9887D3D467961F7E5F │ │ │ │ +9A446D0979181D98BE2EAD945FC6ABCF3E7805071EF6BDEBA6EC27013D14E6A2 │ │ │ │ +D34ADDE9988A9CAECB98F726C5EC09221699E020C201DA86B6542215DDD6E2C3 │ │ │ │ +813F88C5297F25C3E5BEFECE272E668EEECF5A85B8C37E52B3026956BDC0F374 │ │ │ │ +03F3EEA6D1C8FF38FCF17ADA06264038FA236373A625AFCE40EC53F602B95ACE │ │ │ │ +DB2A8E2DA80F4ED4FBA2C0A3584057011D09A063CEBE4EF3CB2BFE9571563C63 │ │ │ │ +2D452BC8A23D1215FCC970A8F2F93B5136C288D4DD290F5540B45FA309335C2A │ │ │ │ +C1AB7D8C572FE9A0B3EAF0E4AB82E8E0F1DC10EE1980FE696E7FA6FB542E2EB6 │ │ │ │ +18E863819144EAB95A47866792BE566A28E6A6D1D334445CEBE73A1FCC1FF2D7 │ │ │ │ +70298BEA63163302A3DF50B98B0D56FA74B3091D09641D7999D05F93029BF3D0 │ │ │ │ +E05D218EBE19D8D183DFF706EAF3470FE139DD525304134A0E9B68E41AD61109 │ │ │ │ +59FAB55C0B8E6BEEC46D8BDDBE2AACDA9FD4BADE82546A58EB7D129139DB5A6D │ │ │ │ +EC9AABFE0EDE563DC49303F85C9F6CB1FF30140DCE2139E506767B47907C6BDC │ │ │ │ +6769E528729845EB1790BA8DE87D1E3833F84FE96CE86CFF30738106C2FF3DE0 │ │ │ │ +004099EF49567C2D484E21603C75E113C25C7A2DDBAD66DD9D4B8657242695ED │ │ │ │ +889B9FB1C12D2D344ED7567067507EB1DFD084D5B1875CEACAB9DC8AF7A6F5EE │ │ │ │ +9E75712F9501B411F265A71A377352CD4B970C809897FF9818056FC539F61C8D │ │ │ │ +BB7C82B87166E32B39B4A94B073D5DDBD17EFECDD78E98653429DD1352D8CB98 │ │ │ │ +E01162485A3C4BBE1D92EC92D597EE529272203A17FFD3748C01EA6480C6A99C │ │ │ │ +C893C16F94C3A3E373B5976EADD11B972EF1AFAC181E1CF2A4C03164E496729C │ │ │ │ +8E6185ABB1EA76890375BCA5B39E04B383D322FBD8A2A42319CB48859FDA9FCB │ │ │ │ +B242D3761C625E08BB50E3320AEB42A182D80CD348515787103C95E6ADBBA1EC │ │ │ │ +94A95DB0D64D8FBB9448AC95DF92EE5903FFE66C3B6948E888C72D44E040D945 │ │ │ │ +E18327D0ACEBB7C4599E0805C47FAF4175693EF3921DBE95ECB4E022D571E067 │ │ │ │ +31799DCD3D9C7DB7473B3CB482BC90D62A51A9067890D3327B2740D7EC613411 │ │ │ │ +BA34065ABDF215672AE9004128D53B65D6A3BAD6D1768E8B9B845E4BD544ECF7 │ │ │ │ +AC2D6850EFA07193D0A42169A3116DD89F70F8E275D6D3E732B8EE3AD87EF4B1 │ │ │ │ +1F48492979ADCC0A9B45E509381800E7C7BCF8D20DF3AD46309B47E1D4473E1C │ │ │ │ +195D3C2EECDBB80AE644F008B581D7F48C1526E3D9D6E236B7E55F4C1AFBEDDF │ │ │ │ +5910150257188BDC1AB3EE6177F6847779416BD78D4D0BF45CF61F9FD7B4C951 │ │ │ │ +6DDEC92B9DCC006F65BDE4EDA3F32AE5D93C0BE5BD25F8BA45E855E9B925C2DC │ │ │ │ +E0953C3F4C0EA11201427B50827A582EADEE4483891E2D0BB4A959324C75CD90 │ │ │ │ +FD1563069ACA2A9F242042E126251789055233531EDDBD3253539094A8BA395E │ │ │ │ +612330B562FC405D79F4159E837AD03AD41BBD5E957A0E31C5FA477DA6A1EC98 │ │ │ │ +04C52F653D6C74B17D52CE574794DC2AEE255CC0C42A1795E2DF53F4AB3CABED │ │ │ │ +60F574E2FC683E9FA7298548DBD3D346E7AAB8B361A4AE991D811BC3DEFF433B │ │ │ │ +AFC5E6F58D0F9EE6AB9A11685315C8112CB95122F2DA1FBDD8C4E736CCA22A08 │ │ │ │ +C5A333493C58572BD3F758B3F315780DC3A5ACFE0A47DEB912FDFE98850DD5D3 │ │ │ │ +1E3393205384D0E26B9B6FB918E217A6FCBEC1C090F3F97ECB7365E185AF2AC8 │ │ │ │ +F60EA91AD02848A47D8E1329883446981B40A995EB850A654DB591840A4F3587 │ │ │ │ +379A4DAA984C1132560996351E1E60A64544D1A270B2B79B4B314D6905296F29 │ │ │ │ +10495EDA058A5E68571E60DC2A3EE6368126715A0357E4EFBB5203E38FA92F7B │ │ │ │ +0D824DF762EBE20092E92012A4A75E11AF94898A1A7B972DC9709383CAA4AF13 │ │ │ │ +5DE1E396EB89546E2442FEA6F11CF2C41607CDE289B04FB94706818CC99EBE71 │ │ │ │ +F3BF1124FBBF522AB824AF871D650ED185E8B4BBB0B42BA995EF0F1ADCCEF41D │ │ │ │ +330F7178D9FC771A92080C35CDF8E84956F49BC7E3E1D6CE45B44585314515BC │ │ │ │ +9159FB8AA368E01F4F32EB41B392EAEB6D1DF5C0172F32136BC107D7AE83741A │ │ │ │ +6DDA4DBF306E2F67FD63A1AC7073374113A742687CF41F304448E1D06DDF54D4 │ │ │ │ +3E5DF2A7850F06427068133A20ABC2268E496E4EAE3E82EEE4DBE19B5D344B51 │ │ │ │ +27B8A6A1D790338BADAE60E5A2E42472C64E7A295778AA71BBBD517A00982F32 │ │ │ │ +6AB52EBC4C124A1003B789BDC17EF1DD7E8B63534EBCF810AC61BED35F2D6B45 │ │ │ │ +772EAC8A1749A2C0F2B102E9AF016D780A1592A77E2149787A274ABCBE351071 │ │ │ │ +B5C088FE4F9FB5369266AA6E79E9585247D1F85745BB20C40B5DF9CE668F0520 │ │ │ │ +2919398601AE9DED8660E7C64ED05F9554A9DE92CA166269DE90FB473726AE18 │ │ │ │ +75477089E401DFA569242041BCA3F264F29149F42EEAEE1C6EB7EB2B46EED458 │ │ │ │ +7E30F4FC024A295B4211390B100434DD704244510D1A3AABF66643E2834AED28 │ │ │ │ +3F9C6F9BF52867C6359152737FFD9F00E3D8A7CB6C517F05A0CED7C26E24B03F │ │ │ │ +29B2FBC8848C2910BAE704D9ADFE392684EA0BD19BA2B269263BFF31E174910B │ │ │ │ +53B7A85D0DFD31FBFE0303B30C5D1B45DB7DB2A570B25E3641DF61C8D0F2F987 │ │ │ │ +A8957E809C61D2D00979A69FAEC401E4E6D8476B029E4D996FB77187E0640382 │ │ │ │ +17BA5D61820E443AF890A1C678A07D214F93090AF503CAB41F0E6C48E1D2730A │ │ │ │ +CBE50CCE808F4E801B2DC85FE9F7478EAEE286168E3E59121BC4316771AC48C0 │ │ │ │ +6C3E34995DD6F12879049EBC19E64B39D55C8AC00AC3F858C8444ADF55C4DA07 │ │ │ │ +79FF63BA94DC4E19670B2F12455EE4B48217581402659B7202F458D54C76A645 │ │ │ │ +D279D8A9BAB15FA5D22B87BDE9B75666B00E2F1E4A5E4F1019C1673DBC6BFFD2 │ │ │ │ +B42C3CB4D34F1649944368AABD8F6D74570A6CF2FC28995FD7410019B85F6283 │ │ │ │ +E894D3D80EBF6C8D733D443AC85EAB0EEFA4C152ED5CF211A3E2072A00F51FFB │ │ │ │ +969122FE8F69058075789531A059054DD2420A487411D243DBDECEA4B0E35A79 │ │ │ │ +C9C055344AE1722BB6C9327224E5051EE76AAD6493CD3E85E2190E393AA76609 │ │ │ │ +34917355871A4B4970925E8DDF090B8C65F31CD54FCA8171502C55379C3A72C5 │ │ │ │ +F7B479788108954F9441164026CA5256F91FFB4A2C8F63FD57D0FCDFF1829EDE │ │ │ │ +3B1065770EEAB7EC8708BABFD413D1A70E3A6A7D8163DD2009D5DD148669B8E7 │ │ │ │ +A26C266B088958E3A656FC3818D5F9A16EE61364333F0BF56D62FF614D46DBC6 │ │ │ │ +48FB2510568EC9171045731630ACDEF7FA9C049819675530FD635D71EFEE54ED │ │ │ │ +54625723DB6434DACFAFAA4FDC53595DB0F4A4934B047797781567500398B7EE │ │ │ │ +23453865AF0FF17EA92AD5647A3CAFB577ABB00AB86FD49BBD6F4ABD44E44D89 │ │ │ │ +7BA6493BF788C3E400895794D6BB51BA46D91F0F49415C1D268FEB1486CE20A8 │ │ │ │ +F903D860B2B2AD2F40658631A01E2043256B5C487E6BF30171BB342D741E684A │ │ │ │ +1A995049CD556D97470139D6B55180AA7508D3CD3FD58DD84C1D2B529CF5E701 │ │ │ │ +6BC83093FD65092EA496D6F39C9E9CFC1299A7A1D54B6018292BC2934F3E5187 │ │ │ │ +850B5B45FB5357B8B29173E46F2D556CD1A25A3CB65A54B929254CD3CAC6D261 │ │ │ │ +D43529F94C282383F6CB6C33C26E19CB86814A8E300A0ECEA2EBF9BA732A22D8 │ │ │ │ +464C9B9862DE174083AA175DCCB2B7716F58D5DCE0FA08D7BFE9E96AF73D2AAC │ │ │ │ +B2CC7040CC71953A401743A6EB1EC16981D97C6C89DC9C846EB4684A73F3C223 │ │ │ │ +F455B14E751902B216EFD25EE23DBB4CC956218CDBF9FBA34788BC2AC8E384FA │ │ │ │ +5447EA395624F6403D5EE92EC950C0E4F7F0127C5A92A54E9D296237F32180BE │ │ │ │ +F6A558797FD4460F1081777EECF5CE70EF212C56312C9F9A1BB70ADD45802080 │ │ │ │ +0BFBD9D3397A797955EE6ADB458E8ABCD78A78207C0304BDC161D8EB8E71FB81 │ │ │ │ +36D88278D3D305F3926583C8DCBBF64533199207A2C2046BF6D9A7CA536D9287 │ │ │ │ +A65C8D38E22A74152F133A1C3DE5F4BB20BCA232066BF711A2325C91C7B904D6 │ │ │ │ +4166FF0A2B58A39B0F9959BDA97269B5376E91F9FC70757979D8A39110EC83B6 │ │ │ │ +E646EEA91A123AD004332618C639FA4432541ECBE1C64871336F3AC868E87FC9 │ │ │ │ +10EB0AB679E053E6EA284D8FC51A268210686B5AD951341B40C3880CF8D04D92 │ │ │ │ +CCBFF61324D4B26D1A04562322C15F42F3EB44484FC2224EB49F754D6DD5C40B │ │ │ │ +848B1FB8F4993F8A5936DB54BDBEB103A363D4C397427BE38FE1FEB13226D36E │ │ │ │ +949590ED2E76F6B11E86906A45C20CA90F01F3536F4F27114562A992DE4E41B6 │ │ │ │ +F20D3306DD7E1A5A86C1739033B92B84BCA49DB7DF0AE1EF6A9FF3B9D0E3190A │ │ │ │ +146528B3372EE31D73ED40C868555F34C01A21F997208AF58DDA6EB45F69ACCF │ │ │ │ +8FBF408E51CC0C0DD8BE843FC16D5E4D0619A6A6591592422DBD3925AC8B63E5 │ │ │ │ +4EE95CF63C9CCC9AE13199F0DC014D48F643A42C86140C546306F822FDA2C630 │ │ │ │ +8D0B43086241C4DD77CB43830474D64A2556789E17C849B92BE0D1DE4419A34E │ │ │ │ +65311C7821DFE29E8A3D52030C6B46ADE97674352794D0DBAB3253277F5372C0 │ │ │ │ +6629602A8002114220FAB5879A0A2A4E855A68CE3B4746EA49FF8658DB603E21 │ │ │ │ +1BA7388B0D271D1C9903E679B81F47D10735C8FACC186B6BDDE47673234368A0 │ │ │ │ +7991DAF47F31CC93C979BBA509617371FBCBF412B77DE0CF2CC74C399EECBA33 │ │ │ │ +9884F6390C9A6A753FDBEE71354053E5D6B2E8C2B09BE342A1957E16301BD66D │ │ │ │ +139A64D2E240E4D6596215B6E38D8FDFDD1B129F781B56B7D7433961D5EDDA0C │ │ │ │ +BC17518F745523FDD8653E52F12C38F61810A1E392562DB25C1B37EAF9923844 │ │ │ │ +C6F882E48995A285BE2D0678B02BF61B4B6983FB9954FA5802BB46329EAFEA21 │ │ │ │ +2994EA8D4284378FD64C328566643DEA51CF4B9847267B09D70D63B80E0AB6FA │ │ │ │ +ACA2D090282361B083D7C0E8B529030084D0070CEA2FBBACEE0005A4F514B86E │ │ │ │ +80156486A7C8E7E240DE5B21AD8E5E4D4D96CB788F1966B8AFC2F7D7C1270B15 │ │ │ │ +2C1ED8C3A247569AE2E86F8A57613BDF9F908415653A53119C419517FC111A5A │ │ │ │ +1391D0B073EDA9C32DF724B5F1D18BBA1F618D2FD62996083F2B7DC7D2CE1235 │ │ │ │ +B9D7F5844A2DD2013A9304B41FEC76F4B16309612E491F08563B08BA79FDE54B │ │ │ │ +E1956BF9A8BF557F67ABE0E41D68F8FE60D6C746600BC0E372EB8E69F2A2821F │ │ │ │ +9937DFC18E75B58FBEC8DA902DBD93CCFB86E569269F098AF857D9AD004B7484 │ │ │ │ +87CFD2174A9372B6FDEF940A9CD69134396105CBEE14525AC626991CBDCBFB30 │ │ │ │ +9E7356CE7171B3544B9EA9A3319617662E596142EBE84B7AC1863E7A32EDC47F │ │ │ │ +A24FB26DD53D90D01583235B36F702C9325D64AE4A22896B08662DE5501FD916 │ │ │ │ +74DC982824F07632B17F5D07C3C76AC2D34F3D8E29F2CDA3DB4E8C4CE82094F2 │ │ │ │ +9033024334D9A22393C13BF13B5534EC37EA34128C3EB61F179C58719F14AF1E │ │ │ │ +92C2CFFC848586EDA82543FCAFB390B1EC8F49FFBE8D5B9C23B9B2E7DE2F5C48 │ │ │ │ +0806F13C22F0C8D6F72FB743AB4776D641A153072A83FF7D808E7B70F179BDDE │ │ │ │ +1C0F676033A8448523E4FB61528C3AD6F62F75ABA36DB04F40FBAD1C0230D412 │ │ │ │ +B5AC0E12978B2098A2A8680C5E33A87759F5405FEDBBAF63F3B1BB38898913AF │ │ │ │ +80C0D97329C184F418C7AE3E41A4F9EAEAAA2FE8FD65969F5999145F6028E590 │ │ │ │ +CC09EA8E97E489CFE213221CC9C8EA9C93C8A82E59330C79B583CA1846E6FBF3 │ │ │ │ +0C05D62ED657C2460EEB7E8038333A92971CB10549E1D99A1BEDD018BB61ED09 │ │ │ │ +3168885CBE3A8E1028DCAC198F6D663D775844644856EC3AB72CCDB929058147 │ │ │ │ +3877C0A0FCF5B0629B4F3DB828AF3813BCAA07C482B190C7FEB04E85118A65FE │ │ │ │ +0A85E3516BA1F23B4C86CCF499FE44660BE75E2E42E9506A4515EF420AF26212 │ │ │ │ +8998AD726D9B63B372F339BEFF5840B11DDBAA9DBED3052172A0C7E8F0531D38 │ │ │ │ +A256CE41BED2C752752C427D2C9AE91EB6A08CC4B93B6CFFCEFCE0977B68BBEF │ │ │ │ +223AB9AFB913727EE3E1969BD0673EE65217222034C101978D7CCEF6DF5EF1F2 │ │ │ │ +D3AA4521019FAEDDEE2F2142B373B240A5F3897B1F31D9A0DBEC23C8980E703C │ │ │ │ +C8430DCD4CAAF8895C605FD1049C7D7EDE735D8587A76FCA97C757F13116CA38 │ │ │ │ +6ACCE992BE614AFA86C5A2C54D5A2156BB86DDB99A27EA14B25069FF3A4E8CEB │ │ │ │ +8DB3660EEE3B8DC13DC4971AE630C145EEB8D39650AB6CDC5A38AC93CFA92B21 │ │ │ │ +9F73A34D014E3B6F5EE4D362447A57FC0F8C7C62F11727CC2E493B56608ED76D │ │ │ │ +2EBD537F0170EC5630AA7807084F0624EA309FAAE959C28E4085DF6FCDAB1DD1 │ │ │ │ +DF6D328506AA5E72016BDFBA46957544D6696C3CAABEA43CEA414116320DE5A9 │ │ │ │ +D7BE045517045829CCADA3ACA57771320F9C18E61FBF │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5900,21 +5904,19 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 76 /L put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ dup 108 /l put │ │ │ │ dup 109 /m put │ │ │ │ dup 110 /n put │ │ │ │ dup 111 /o put │ │ │ │ @@ -6096,168 +6098,160 @@ │ │ │ │ F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 │ │ │ │ 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 │ │ │ │ 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 │ │ │ │ 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C │ │ │ │ AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ -AB7916D44EC2210CB941B83BC0F1C097792CFFE7112D039CF77EAE73CB4E02BF │ │ │ │ -60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 │ │ │ │ -1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 │ │ │ │ -F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 │ │ │ │ -1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C │ │ │ │ -C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 │ │ │ │ -73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B │ │ │ │ -E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 │ │ │ │ -2F2CF265A1746F4CA4BCDE2B5A6A0581B5048E525632BD98773C51234C74C9E4 │ │ │ │ -3FFE8183B78BB6491565243F75C44DEB866762A77F5FF33D9DE3CBACE7032FA4 │ │ │ │ -941B2C01D19A90916C527C7397A60033D80ACC4DBAF3D9D5E711ED7637FACA48 │ │ │ │ -A8A003C2362DC0527FE2B1DE9354E29F3F6FF87048D6CD383655CEAE33DC8C95 │ │ │ │ -F9947B900002DC5B6AA24D688435EC168CEF7FEC5F16F1CEEDFE02901C86D798 │ │ │ │ -8D5059731AB103D10ED79FBD6FC88EF2EEE37B615DC1FDD5E4C24263F17BA4C4 │ │ │ │ -DC5F170E85DE1E17BED08AE9E0FE2F9EFCF3BC182B250B7C1551A0E6A61D359D │ │ │ │ -FA5F83216227D0E0D1B82C4AF54AE5F63BC2FFD9FA654C744F747BFCD3F239A5 │ │ │ │ -C3A9B80274907213D06E31BB5859EFF5CC5A49B2F3FAF41A77E3B6176FAC016B │ │ │ │ -A372D5CF659CB8BCC343AB75D77A006245582EA57F8941D9550870D53C810674 │ │ │ │ -5B4DF9328D248F1F5A5F0A4478E2D002AD3D463CB3F6CC19B1DB4C00C1C960F1 │ │ │ │ -1ACD7A0D9C7334EBA770808728C3FD074EE2EF28FCC75C95D0064CB5989764A3 │ │ │ │ -9FDEF9735212D74B315D1475ADA9534360AE5F7A4B968EA165B9916F9919AD95 │ │ │ │ -E355CDBD25186ADCC432DB7B59143C3D1C182D66B5DDB3D859C941D1F73D5251 │ │ │ │ -634B8213B032991B4970F3772FB838AB5CB56A9F7318107B18E3E5E2FF8C53D6 │ │ │ │ -5DAE352E92649491C1266807C4C8124933067D9E820B695ACC07A222D7407C45 │ │ │ │ -CF5021447E682A932A9034F8EBBDB892B5D80598BD7F27C8C4D9044D67420370 │ │ │ │ -9F05A701A74EF53D4B061E65BB237CB38E166A0C306D264F47FBF7C9AD1AC058 │ │ │ │ -42BEE87D6A6A8AD3A2470F9C899566B653B86D3A883B61AA4E6E72C128BB1DB4 │ │ │ │ -CD608BBCDFD3D8FE7A74E85A688E8C4E0CE69E8F486CE33DCBDD93E5605C631F │ │ │ │ -7D59FA051F9EB8564F42E8F10CF4E8377730BA0221660BE7404F6C802D42FD1A │ │ │ │ -C44922ED7AD3AE7B424E0F5FD2D03BD8BD344AD011CD6C19C41A802D9FD190BB │ │ │ │ -F5A741F606ED9D5AFBD56CD31B41B8732DE69EFBD55CDE0A667309A1D17F19A8 │ │ │ │ -6706C3D32CDDE9BF96D78CE88C36F6B88EA2AD408EF11B4D27BF740568D56FE7 │ │ │ │ -03F27E720F24720AF8625559FA20E3728F859CB4D2719DF19A0A6D24D18BE4ED │ │ │ │ -6BD1D8502EE0C7655A7F8D01097CED6DF99D00E2F47D7E32919995319ECA09CA │ │ │ │ -A830479D9CC04FAE908B94B1C7DC49724FF9148D9481301B5008C88CD19385DB │ │ │ │ -C1B9D91665297258C70BFECD374226B6AA60E6F0218244CF935951AB08ED8A4E │ │ │ │ -39B4887C000F6F7CC933B2D3C29D49B3F285568A07DD7D678E4D0A6D6674B2C1 │ │ │ │ -7C4459A0F6BB62EB8E00C5D2C35BB9F074CE990EAB74B14D4B10EF067F323C42 │ │ │ │ -68222473C31A44ACBF2E8C69CA38F027378101354E704B9E9594473205945013 │ │ │ │ -E50A38CABE21B166246FEED926836406E9CB90D31471B70BFB8723A5FEDC8944 │ │ │ │ -0A5BAEAA9DC3D0AB4E73FFB5CEBAC80037BD780BAD8A2F409D23A31F1AEB036A │ │ │ │ -4D4C7A71B1CDC81EE40A205F43EF968A26E1AB2F0231E2D361BFAA7BB17295E5 │ │ │ │ -2B0D6506012EBD587E7D73A2D4478A0399C08BF39461BADF1A1A4D6B029615BA │ │ │ │ -B4FB9A4C921144DBB4B5066DA5854184271024FD3CBA2665106F0E16275C9F53 │ │ │ │ -DC5832FCCCA08279EB8372B0762F624C97307BEF4179E719D6674DBB486C393D │ │ │ │ -039FE67B9B2780D9167951EE77160E31BA2C0631E3CED32453F1E21EAEE4E948 │ │ │ │ -D8AE4B627A5492964F618048FF2CC591D60D66532D7EBE7E9AE719AA2AFED67B │ │ │ │ -6339F2909B18FBC29FB79440ED4D3ABB847B733BB64AF5591B6A2E43422F156F │ │ │ │ -50BF567FE84D05F393D90EC686444509C38F628C9AC719D51331C50966043501 │ │ │ │ -EF11ACF4BFAD643705C35E573C6AAA83ED1BA71E6D096D90E34A6FD3A56FA823 │ │ │ │ -63A3023D4F0E8BE3C9DFD3E32580AF5BC2C7D5E06F2567C21CA804F6FE05615E │ │ │ │ -D8773A890EFB2AF1DB37E85CFF4D2DB7FDE90F1AB20160B2A918BEF7EA5EBA6A │ │ │ │ -7081C00F8A6857E67718E45A8D22FC0C5DF8C4D3D7A3713FE3D95C46A3A988D3 │ │ │ │ -78581E052EA85FBF1BC63B04CE55EF8B2E06EC76E27C6E9AECA84C73BDE07CCF │ │ │ │ -2FA01A47B658E745A246E543C85962B6E451344558C25A96919B0623C47B6143 │ │ │ │ -0F31398A3CC501630719A2C0AFCAC422353557673B557FC7FE38046A216538CA │ │ │ │ -428AEFA5299FD10CDBB944E92057710DD31C8D4818184CE252F5FA1DF1202444 │ │ │ │ -BF4E57649EB1C7934E3BFD2772E7200FC12B603B5ACBBFF321DA18BF678CCF14 │ │ │ │ -F1795291ABBC5FB88AEE43E24DFC90AEC33C28A17A5D8B379B6574C1E9DB13DC │ │ │ │ -2FE761CF4CF0DA2579A48330F43D36E5CB9DAE9855C7FFC445F70DAFFD307DC2 │ │ │ │ -FF59771240C451B9682291FB4FA982FA740636B7D9CF9A6210C860CBC31DB3EA │ │ │ │ -0DE8D8FD214955FAA891C7AE3F61DD775CFAFA0EB005BA3145F5C7F5182147C4 │ │ │ │ -C232E1A136D46ACA36F4EDEE1E1E0E65AB30546671C2E19288E297835DD57A09 │ │ │ │ -63DD46A9575506D6DA81ADF86F67AE74305577A0E7584E333524890B254ADADF │ │ │ │ -127D1F3BEED93AE7C9E21C5E567C4E990FF918A505E9DA18E7DBDA0F0145F8BA │ │ │ │ -204867CC956C4ACFD94FC84549D264EC63995867B337122E3A461135C45CF4BB │ │ │ │ -746F7F1A0C3B12E01D9D227667228C4D4CD7BEBA74BE1098BCAAC1BC092435B6 │ │ │ │ -70838B3F5DC4845F50E06D57DB7B3D453FDAB880831507F3A725AB213AE57A91 │ │ │ │ -2338636076E68625142D14A493491E8C477B0A856ED01BB93F94D3D0363AAEE2 │ │ │ │ -3010503BB4EA01B6D188315DCEC9543C7484849D3271114EABDCAF83B341F07A │ │ │ │ -5884B5C4D0B921FDD8E55D79B07769059DB32D4D817D360A07F9A72E037A8E61 │ │ │ │ -072641DF2698558709F86E2328F0DCF5A724C41A10B4A3B2A2242FAB33950DCA │ │ │ │ -3A697EC4BADB4C5918A6939E2385384C63D0362A99D03D0251C33229998032D0 │ │ │ │ -ACD5F48CC0647F70D42A90E9FA49EB53087519133677ADEBB514A78CAD4A021A │ │ │ │ -953B5F512BF47A2C335682F9E22EB7BEC778C8DCBF6A258CE01C59113D791480 │ │ │ │ -2D6D64A6930EF0F1FA09267F240360CCA93B75B3A5223B8EB531F25459F574F2 │ │ │ │ -3DA6370963DEB374E1A88C820A475C9EC0D3D78CD570F3C793B20262381949C8 │ │ │ │ -E95ED522BFE0A939548003EDE588B422627F5650110A2773707ABE121DD20689 │ │ │ │ -C29632CCD9A6D04FD8A6E9B0F01577531D2232F53B974FCCA83941CCD0835AC8 │ │ │ │ -287FE13B782476834B4B996D7B9F5FE5E880C3491DC61E5C3C87B101EFAA0FC1 │ │ │ │ -ADB659278A49B7A577424EC978D546F7E70DC8A0610043BEC2987DC34C91D7FA │ │ │ │ -72359D156E46D85903BE6E806CC7B9D6A0504D9B2D6BFDDF7E71963EAF9A529C │ │ │ │ -2FD69DAB6606110139FFAD27B82F4493A07BCE00A34C7D334B45073408104726 │ │ │ │ -29BE67E312A3CDCBD04EE116E79C08908A0030F9EDA6A08B69F48D0B2DD2E357 │ │ │ │ -CAEA6D1F2C6199B654375CBD8831CF092C05584F95507D009CC50E166C6C262D │ │ │ │ -E9D4F3AD7BE6CEDDF340D54674BC03878C88BF23EAF99219F850DA149F60CD41 │ │ │ │ -6CBB90EE64B0515C016FCAABD1D085E8EF2DDE3BD33BD618633EF796FE7C9207 │ │ │ │ -4BB4EF481B1659257C1EF21C3F8883161D95D746B86E041D16F4C618B509A6E0 │ │ │ │ -98DF383FBB0FF5140841E005C2647CDB4448601AF3C2AF45BC1625993D487544 │ │ │ │ -21E644ECC682A31DBC03DF78AFDAAAEE30187049CA2CC85ED2AC7326C418F70A │ │ │ │ -67A3ACE0BFD050296E6C4C612F85611A7C4E1BF459238A3839F50825B4CB8DFA │ │ │ │ -D52266E96E571B7BA7C97BB6BCD4739188A9430A275F6EA9DB090041CC5B0873 │ │ │ │ -CBF8F07320ADEDA099B17C23218F6E173955EBC4820DB0F49DFDB188F085C13F │ │ │ │ -EC93FD10653EDAFE8E4D3AFED3D7586D95E7DFE7AF3AD4062BC3223B262D98CB │ │ │ │ -99F0DB0CA217D0F40EA7BB363607EF322BA32FFCA8A34018802E69F8EAAD02A2 │ │ │ │ -B9FF28B7251A553D4E9C14AF0827C824FC54FE20C91852E8EC2F483B8F1BF811 │ │ │ │ -D944745E070A6EE6C57D1B2B1411192094D5842C66B1B81341CCD3807567367B │ │ │ │ -29749CBACA5C1950EB22783BB837C2EF2E109384C2139F3CB783298522F56935 │ │ │ │ -ADBCA5488668398FA8FE3940F506F6185C602BDF7D1EFCC72BAB9387A7FBACE2 │ │ │ │ -894DAFBA61E80D924E8B7E8758642853EF017C12C5045C3BE8D759753F3BB7CF │ │ │ │ -4974EBD7F94EAB58A33FCABE80C14C2086AD4DEA54A54B189763584613521E1E │ │ │ │ -D03972C18AC775554BABCAAEF8D264674CB669E3CB1F48CFC6407D6244603109 │ │ │ │ -3CF9A75FE2530E08CA87F84E52869FD2CFC1963D1E2A0EFA1CE29D2A4D0546B4 │ │ │ │ -745CDDC2C9C8A28654529371FD07CEEC5AFA8DD85CFFA4C20DCFCD9655BB3DB0 │ │ │ │ -C41EF67D86BA21D9B5D959BC48122FEE2B614BF519AA694A271FD4C717711D93 │ │ │ │ -9E488E57AFBCB3E69DA209518B5D1B791CDC37343156F4FA277CD589E6C56C20 │ │ │ │ -62C0AAB992C9F415DDBCC7DEDA7EEDD99FCC2D8EC61DCDB0AF19681BFA7F8DF8 │ │ │ │ -588A741409D0D232DC7606C490199CE2F0330CFB71A4A3AE343D1115F5FB5353 │ │ │ │ -F0240325EC066CDFDC83069E61801AE473CEEAF138B27E317E1F2DDFE25E7E44 │ │ │ │ -7C6594B791F9381B5CDB09D58BE012B03811F46F308AEFD2F2F74F73EC3BA4A4 │ │ │ │ -A825E31588AE5CBA8D297F212C594A426F5EB660C346FF2FA42613DDD8DB2BC2 │ │ │ │ -B009B47EB85167B42D2A0A9877025F4227D3C339AFFAE366B651FAE24289CF31 │ │ │ │ -36CA1D8337EE5880C9CFDB5E57B487CB611ABE0CD968BC4DE196D8C4551ED1FB │ │ │ │ -5E1A9067DFC61D629A6C927018AB9338798281F64FE79C7B69937398FA5D9B58 │ │ │ │ -1FFF70879676AD2D13551FC49C9344C40329A7BE9E1796F49BA7EB9417EE3CBE │ │ │ │ -976EB865BA42ED164BDE64F682E7494F2F1DE7D635CAA58D13F130C5641C52A6 │ │ │ │ -40892FE386BF56DD2C746A3590106B46754437858C54F2A9DA9FD1F232E2BA6F │ │ │ │ -57CC269EBB416275B3B0AA50BF39B878AC5842AA0C1E370B89F6942CF3F7D23D │ │ │ │ -337E64ABAFDAB5F42BA266480EF3B4478EE32E4CE084C58439B65AF8F2E4690F │ │ │ │ -10E1FE7F4849DE4835913C945BDB65F817330A303C1CF80911245AF53931A00A │ │ │ │ -DFC9D9BD4F0F93378113FBC09EAAABBE57D4C9CF0AFE37A8CA3F31F2720D6A4A │ │ │ │ -C0541BC7C8D0022F81A945D41C31278E46B7FD950F24B5E04E0C97C18D39DA2B │ │ │ │ -A9E11957137B249CEC5762448320225B801DA6D9931F7A75EC347A47CE7FC3D7 │ │ │ │ -CCA40DE3F81AD94DBC71C4F8063ACEC72E90DD74607652EA71775D0397AA537D │ │ │ │ -F8B0E5EF775D62175B64AE002C0D714FB7CC79095A16E21100BF4A0387C5D009 │ │ │ │ -6CF38D69265910628FEA7773507740CBD3CCA047AB43866488E63574903150D6 │ │ │ │ -791F6807B0926A6C4D370F914B557C3D218C0A9D472EE523B5FC2CC04EDEC804 │ │ │ │ -663ECE03AFF08C79EFB1F236F072BD5AD3C3D79C44575C73EA6B964754E830BC │ │ │ │ -E74BFC72330925C94395CA22F117E60B4ACAEA9669007661B12966AE5163A541 │ │ │ │ -306E5AF7B5DA213CDD1BD6F324FFB906BD3F74B79B59A5171E3FC8F17B02784B │ │ │ │ -91777B43843DA6151811EB3109CBE5C205A4BDA888A3800DC704A0DAC462336B │ │ │ │ -3F9AEF73BFFD5E41E8AB81864EA9EB6A739D5A4FDD4ACBF25E531F4AAC3D83FE │ │ │ │ -F8CDC182EE53DFD5C502B535A55A0DD8013D164C8EF36DB2207937EBF1340BE2 │ │ │ │ -48EF5E373251E9556C6A143809FBFE4074D25268D5EBF3DE95A0FED254811166 │ │ │ │ -406830EC69696DC01AC8DDEF2AAA52CAAD5F8BB6548FBF89F9BFC15550811ADC │ │ │ │ -3349302F6780FDB79FB0CA9553B1854A3656266F0718600C6FF583CE2063E15D │ │ │ │ -B402E39AE35B85078A214D7A6077BDE9EE34431D5D22EAFCF2534EBA144A37FE │ │ │ │ -12E242ECF19BEF99131165B31815A7987B365636C90A4F8A5C1B9ED1B0DF673D │ │ │ │ -954E66824D42021C3DAA54F2C2141DD60D03C4578621CEF0D7328BE628A57EED │ │ │ │ -EF50BA56FEA45E6E9090F3ADCD5B2CB2991006F0D9E26F258FFCA05D613D4258 │ │ │ │ -441D5661D93D31F817CEE4B9378F29E0E633B8DA57E0A76842F3D3445E400B82 │ │ │ │ -28D2D760D3BD91F7CE615BA041C33A6428BA5B106944AA5DB103C3AE717023D3 │ │ │ │ -9E3AFAF10CF89E9F3CE967670DACD69CE6AC86B42BA7977511742AFC8F4AFCC0 │ │ │ │ -E1543F576CE63BF6E27A898CDB9C88C4DB40261C590370326A351232FF108D84 │ │ │ │ -53046CF1300B5BF764EBF203530EF1286B9D61A79340EABB23805834A6FFE457 │ │ │ │ -0D4E92A78A9597735B10D77BBC3C5929FE0665FD7909A63CF7EFA374FBFC5DE3 │ │ │ │ -24C64D794F74B26A020C685C80DD99E9434BC3705A600C22B667224FF5AEAF48 │ │ │ │ -C8F4C6CAB516A095CCB0460E44AF08C60335EB4D6F1A039453F526C20C732212 │ │ │ │ -D03EFDB794EBF84FA8B7D0023DC0FF1150BA12F5CB93ECB3AA1268D316F77E76 │ │ │ │ -856915E041172C4913C1839ABE4852DE380420CC047F5B73DD46A2C464936AAB │ │ │ │ -018CB8A1AAC124FA74B0A3AC1112B303F456D0C4E2A73173B3F9A0A6BA7AEBD2 │ │ │ │ -03CB699984EB7601DA79412A49D8016DDB828AF999F16E2E3CEE4A1AD69D833D │ │ │ │ -A1EAB6CDDB21AA2C1CFE62AE2185E101D67C918F78BA96F5E82DB08422A5F457 │ │ │ │ -401E11E8740A30A27848F89075760E075A4F6388C018CFA5 │ │ │ │ +AB7916D44EC2210CB941B4C12515E844F0D26CDF0AEAD63BF1491BB50ED4D6D2 │ │ │ │ +739930E80E26E9B425C25033121899AD22102AE6868648BABB7D5985611C95E3 │ │ │ │ +5B8D365C7D034BA22E904A0ADB0132CE38288C127BBEA0825E600D18383A6854 │ │ │ │ +EE28FD1B2F57AF704854AEECF985EEFAE0521DB38B0A7511C803CE8AE0D0BC02 │ │ │ │ +50744F806B8D771AEA2192F982AF14237CC79ED90C155ABFD082CD9FC67DED21 │ │ │ │ +DB9584A87F8D8B306E67503CD64DB373B7ABFC4ECD49AD636AF40414A47C5A02 │ │ │ │ +3BDEB8FA7D935A4FD76D7A45322654577BEDD2DF0F059DA2FC1B48F0D3CEC68D │ │ │ │ +2C1DA99B022B1B5122032A1BCD94A589903BF6EE1D32343C355554FFA0569198 │ │ │ │ +1B6BF9765C19EAF83D82F6ECCA25A5A3D94DD56B8FB4F5A10BF71AB1AB10D6F9 │ │ │ │ +F78F44E628999F187006E4958533AF73E4179DAB513B1B6E0C87D5285AA383D9 │ │ │ │ +4896522C164A8282CDA375421331AF337C572225850780F4BE914537D7F0A0C9 │ │ │ │ +874FB2298F39B3D02C2BEFAD99FDCDC5AB0B66BC77807CE02EDA15503F66B8E7 │ │ │ │ +A5A3D7BF202300EA1AFA758989F57334105EC8B58C4CDA2F1CCB99482E880710 │ │ │ │ +A665B3ED67247F498E45233CBF49B756D42FA02A24CCD3ACB11419146735CF58 │ │ │ │ +6B319531755B8F9562D0A68D7C1BC0C5D1C132D5C8CB6C17CA622971D3A20EFC │ │ │ │ +52B63E44039E53D3699062883C3FD8039AE3114E64C22EE761A17119D87541CD │ │ │ │ +56F1159431E1FD7BACD0A8FD0BF07D15F8245A71D870806335040ECBCEEB0A5B │ │ │ │ +30E16B910F14DAD7D76311D116BC5EC13BDCF557EAA2A4B32DA6F1D682717AE6 │ │ │ │ +D5CC4C121EE7A8E2D4D224CB387BC8E9C7F623986F85CE3FB23D5EE7709CEAF5 │ │ │ │ +F7F883962005658B5969C482F7082FC480B50A3296C8337F148EFE59433041B4 │ │ │ │ +82F865CAC341E3E0F74A60AA20E70636349A91ABD044DD6D604FCE3E27BD179D │ │ │ │ +5FBDBABBFC2157B0C4199A061FC6761DED9972568DBF79D560EE4DB175014945 │ │ │ │ +C161CF006EE356581A9A124B6E6306A84743018EE8F9F63CA940BFB8CE20A924 │ │ │ │ +EDB65CDB76F7683D3A99A13AC1AA7AAE21A24A0AC52337C0FE46F4FE273CE031 │ │ │ │ +9AD32220C93DC68DC2C40CA20A14F35586834D2364363B109ECA63D84096386F │ │ │ │ +F44F66C2B338DFE863750965B52C7BFD6A5E5DF97381ECE1608B22B481658634 │ │ │ │ +214971A693EBABC7B6DC20B2491DFABA1C8A0936A17681497A325463C2715DAA │ │ │ │ +6CEC5F47CF987AD01813D7C2F24C858427873EF2BCDB7C3A58797689B3DDB4A5 │ │ │ │ +C6A95E62E2DD26CF03DF076B716E6C6177A72AA0EEDBB62737D1C31FBB9D15D9 │ │ │ │ +D643500A769885EBE3BF6ED79B4EFC869297309E8E7A61ACDD549CF6184D27C9 │ │ │ │ +0B9552D5B675B261FCE9455E3252031BFFDB146752F18D9377F4EF8FC375F8C8 │ │ │ │ +AD65B5EEF946C73E7EF9529F463C470C63CA6017524DDE77349797D2D4ECA287 │ │ │ │ +D87007F282CFA1A6010AE3B070AA330EB006DD5085A667090AB9718C01B5A2A0 │ │ │ │ +50774F52673857E19AC4062FB668CA3D208FA1B4424B06BDAA12C2D72036BFA7 │ │ │ │ +2803D09A95EFB0C8215ECC1CB31BE5573DF745E0A053C76EB2499260CBB74337 │ │ │ │ +2BBBEBBEF32586F0DC59854E429B2A83B1C32432485155F98AE4E2D128D12D63 │ │ │ │ +050511C92E154719813E20B033ADA96097B8BA04EE8AEF58C7551B8C14ABD0C8 │ │ │ │ +BA364FC02BE48B508E6EA454A9B69842CC320216BF0AB27EDF100AE1CC619465 │ │ │ │ +8BA19FC05929570968BF5F4ADB5B8DE3AF3A21C0B7AE3D12A5C80DE3D4E98F09 │ │ │ │ +0C0C65ACA6F02CE5E3CF45BB1FB0377E3F5896708A1A7CB2EA366C584DE1DD07 │ │ │ │ +EAD34B4F99687DE6ADFA4B337C776576AC3302753B46EC3D5575948156755E8F │ │ │ │ +DD10DB507607C7265A912554AF9C8A6F39F29FAD7FB57236C42AB96F920C9151 │ │ │ │ +4CD7173493242B6199C19CDDAEFC0841F7247D925535AC3B84780D6690835301 │ │ │ │ +90885ADF6090931DBA39F6322BAE688DFD73F7DB15B93CF5FDFA7EF40A9655B5 │ │ │ │ +7A080914CF6CEF38D2DEEB90B512344F3BC1850D3FFB10980A50E05362BA0593 │ │ │ │ +B17D2A6F91722806BEC4AC00EFA2C1DDF0E49CD461FCE0190677031677AF55D3 │ │ │ │ +9BC7339E4B4E6F12D61A2D19C74053A0406DF86CE61CB8FB85D1F3D5A151BC4A │ │ │ │ +B79699B9C0C3554B69D1E9B5B965FC4C6FBF0350F4BDD5F276FB00A90CDA829B │ │ │ │ +4DC9745616E96AE7546E76430A4D178E9CD6919E7DC92E9F41CD512B43FAFA9B │ │ │ │ +E4EC6868E9E5194A959A345E04201975674C0B2B53FBAB6759957A28DA1622B3 │ │ │ │ +94B52CAB50BA5B1EA3BD4C72869B14493829A9EF5B253D1520FFECEE23BFF3CD │ │ │ │ +E65E313BDCE4AEF95D4AEBE8D0F083AEBD8413206F5249EAA06F4BCAA9BD0939 │ │ │ │ +2B69A929C7375975A898D1C162A7FBAC89F354CECEF3403C83127AB14FBBACF1 │ │ │ │ +46EE1053E26BE9F11D2BD1EF8DB34B52A32B653613C4602B1359F95F04AA95AE │ │ │ │ +B885FF986D99ED541E64817D9CCF3FDFDBEF9068FD23733BCF55F61D517852EE │ │ │ │ +9BFD33091844A9C8C451C536F9DCE6DD13E799DA11CDA7199C068CBDE9DC5393 │ │ │ │ +B3FC16C44FDA7A0D0773CE5B5358EE236EC85471ED6912D9332218BBF78F6A96 │ │ │ │ +EBFA86A669F68F79BB612C747497B28C918B18BBDC4B6E403955B1EB567DE860 │ │ │ │ +B6462E26A81D73CB145BD32B24C7C02E83B212BE749012FFA8994E60D11362B6 │ │ │ │ +876CF8D0C437D1A73EF5FEA731A92EFDB285518752C812CE2295D4D17EB52F89 │ │ │ │ +588EB6C33E1D8903FECEE839382C7644FB6EA794EEFF74EDDEF22DD2A1C6EAD1 │ │ │ │ +59A527F1A0A6C23C4306CB6D72B63C7898CF35B17FC74165C50B83051D4BEFA9 │ │ │ │ +8BE24F51223607D06502CCC5BE14C164FF7DA663193D2F96A14FED6A2C5D4D08 │ │ │ │ +4371A1BE75C4E304539C22D2D2D1C648D888838D3F1A01D6AFE46D944B250F5F │ │ │ │ +7C1FA0C2226F6281F8D15ACB9C3E4FF8C8E8EA84E0C8E1BE7031E1D6B2255819 │ │ │ │ +EEE6A006A60A85E1761E867EA1AAF9C6D311EBED03D3125B51F817542179C966 │ │ │ │ +46B7E31AB112371D8F326E3CEE4075717C2E9728AD1AA64554E807C0453067C1 │ │ │ │ +05651E6701C11F317C59E6D73D2EDEB70A39279B080DEE32D31C905C143D017D │ │ │ │ +6E508B34A50F44A611043399414CCF27388C70CDECAC0609FDA864B9BEBD8DB3 │ │ │ │ +0A6886C1840207E22EC47C246479184C05DB6B42C82BF3C679A6872CB9A725CC │ │ │ │ +B795636EE0EC32BDA15F7814829C96F889C69D7DAE54B33BB947986CD25311F2 │ │ │ │ +F9C7F033C8386B5C5CC3BEC99507AC9ABCA61446E40FB9082664D63E119825D1 │ │ │ │ +B58AD0316F98C26E4A7F3D6B8B489C81E259ED67E89A24FF68A5FF5F759B2FD8 │ │ │ │ +A37F430DF07C0B236181E396E7C3FECBD9C8B8F00EEAE521862ED6505DAFAF3B │ │ │ │ +F7470338ADD5BD28E20252DCC26C155271BE7189ADE1FC8E83EFF1944F7168ED │ │ │ │ +721D85DC7218C21F110ECD86EC3D6C76D806ACD8A6B3A91C29156F78DA0F1127 │ │ │ │ +CAEE77C01D6EE6186EF2492D883CF10293755E4D5CB130275AB38C37A30C211F │ │ │ │ +957B70C93156BD17C7775FAE2C007BCD479372BCC76436C892E2FD2035063267 │ │ │ │ +B3CCCF95B86F4F689F5D39630C665CB1FFD62474D5657B74D8EF81E3AE57B2D8 │ │ │ │ +FDEF93E3A7355CA119AFBA1022EB8D5EF86B0314266689C24CACBEB69FE0EF3D │ │ │ │ +A8B47B0749FB9B1D713E203922B47A85F3B68D53187801CC5CD18F600B10DDCF │ │ │ │ +A49843EEE9A1EEC88BCB63A61002043E8B2844895571AA616681D996A78E01A4 │ │ │ │ +1254F5479A06BCB3D86903ECF265CC96A6CC0936D0A28A47C6062D10BB177F8C │ │ │ │ +BC77D4792DC21E0AB14EA96265450C4CEBCFC6DC9AAB8F833C073A0C17C41AAD │ │ │ │ +E57AB77F62C84F5F7EC2158533D1E4CA020D9E6497CA54B375B7ECEE7307570A │ │ │ │ +EABEAD1E3D31032AC8A1BB777D64389C087026FDAE03F0002FE70B26D0940A8D │ │ │ │ +C8AC5636783485988679013FF5F405B7CC94D754790B2DD1AD6D4BA4C5D5117E │ │ │ │ +22E5CE1224A5CB4BE56CFBC4758721C408FDD2FEC29555857E248AB72D1E6607 │ │ │ │ +D10E63A43B3B98A467F9DFFA995BB25F2E6B2FF3B528147B9C70A8A32BA2ABA7 │ │ │ │ +70553C734391C512451C414FCCB13B15DB24A55460777AB35627AB2EA69353C9 │ │ │ │ +F16D01FC9DA01442BFC7D8CF529DED10BD6D0DC7D43FE6FB2B3900E25ACE61CB │ │ │ │ +9C09759C0B156DC9FD299ECB10CE17B3CE76FF334798B752987B370B1AEC61C5 │ │ │ │ +AD9E02FDD3F77CF9937FDD75A5CD393154AF519007976F6AC93CF70B0B589161 │ │ │ │ +C76FAEB51946AD5C3C9825749A4AF673797D3C839879C1524B044C5671A38CE9 │ │ │ │ +74845A696F05299EDACDB0B6B842A530C47D313F634FAB1744FD18508738852C │ │ │ │ +C593153A4A8A6629360DFE0146B8B6878F4F32878F4F2C58F30BB968AF75CFEE │ │ │ │ +146594A4DC9296B4602DCD042D3E16FF831C02A684B49E4DDA3A89BAFCC3EBCD │ │ │ │ +F852EB63CFE90E9BFB71B91B0123D7DE9A5B15F0B25A4E52E70E7E761571AFA4 │ │ │ │ +BA3462B787C384BCC5245D14699741050A299A1432700927416972384F62339F │ │ │ │ +BEB638A317315811B2D8608FD22377C9FF86C2294D9F188D4B01BB29C3EB39BC │ │ │ │ +CE4418FAFF8826E03BC8772595378B9B612C6CBA3B31D07C627E68D9BB684DA8 │ │ │ │ +0BDE306D7DDF021BD33791FA6DF6BE7F10339A367EFC8AF6E0AD78247816F142 │ │ │ │ +33A59285E61A82CE9C055724CE505F6BB2E23F54981B164E1E040B3DF9DFEBD5 │ │ │ │ +F6DB1B34DF8FA2FC9FFB9DA7E3D120E6AA596BA18D4FACD35CB463D2FBE44C11 │ │ │ │ +915C48FB2B9EADA2F4D53317BAB8459490431B1A06C4AF4D95BA7739B679A7F9 │ │ │ │ +6B777ABA0C302B162AD82AF66DF89A240422042168C2671A405DFF9E10FD932F │ │ │ │ +821C28ECD4340F20630978F12C0F82ACC655D0BF1C9D442D6ACFB08C679D94E5 │ │ │ │ +1CEA46FE42B86F97AA65EE85600BE7C5A7E7BBD126BDDEC2FE739DBF6E251E4E │ │ │ │ +674C669CB9643C393E0177298337E90B6BC6C478D8D999C3F61E321B80EEF97B │ │ │ │ +63AD431E4404F891C6C52E316EA70125C950DE2AFE8029A8A8D7D31A9F6BE6F1 │ │ │ │ +46788BCAAF408551B4B7D4120062524150F50BE3A16BE2D1AB2B226653C7E94D │ │ │ │ +B14CF55909F003FE48B7BD74D22BCBA5B5A6664CC82F3B99E55FFAA20C25A1CA │ │ │ │ +A150E6E6F986F725B36CB46C7B025047692A1D71E5975E3A31C829FB0395F63C │ │ │ │ +ACC33177A82B3C850F97885F925502480AE2B526C891024592533C69F23552EE │ │ │ │ +0F83D23E1D32F755B2BEEDA2418077CA3E7FE35B38876527F1644A19056C9E8F │ │ │ │ +7AEDB488D008798369D5D01895A83EBAA34B25A3A1BA1D06E2998C0386FC64BD │ │ │ │ +8C6B9A450B71A9301AE9ABCA6F7F4E018172F93E7757E5E1331D5FAF3525A646 │ │ │ │ +5DD4468EA173E561F7F58A282A5939FDA9AFDFD8DE773AB188BBBCD357B1BD9B │ │ │ │ +8D01010D0BB0BF3A53C57C976DD492B2F0CA9CD86DA3298B8CE9D53C67115885 │ │ │ │ +737F633FB7D3CC610B8D8EA2CF5E7ABE97BB1F516BDB38E0B2C67814AFAE1148 │ │ │ │ +95C42FCAF06DD656681898988E03BFC0883BFDE96B9F740EA6E76B08B2D78137 │ │ │ │ +B4F5547CE92754054AE0214F29036BA1F7416165B34B13183F845CD08C2AAE21 │ │ │ │ +92A180BBE505873777C85648930CB65BB7A0C1A5D5A4974E290E5BBE5130AB30 │ │ │ │ +91BBEC38874ED72368DA5D02547B87B6DCFCE2045BB2EAD5AA50F2E5975064C5 │ │ │ │ +4F98CCA77617909A3033BA98DE2EC84025787B7BE154983DE917ED94942C541C │ │ │ │ +FC45A8102D44E5AB48EFDEDEB416915CA00CB6CA8A4BCD7C433F29AA7052A38B │ │ │ │ +8119623E6A4CDE89FAD964097845C230DD25C54638C72F2539187CE37970BF2E │ │ │ │ +49EDA9528B7D65C3CBB4B1F72D9726D670AF1315D26529A851595F6212C30E06 │ │ │ │ +EA2698E0C4268678024A80B34DCCC1EF54255B2F8208CCA55AF89B22371FA07A │ │ │ │ +D188AC3191AF67756FDB6FBB4C881051C7EE64A28A62F43E896CBD96F72EAEC4 │ │ │ │ +846412B587A3A9CDEAE62FD9C6EAC235A73467AB46AF76AE6E97F349922150A9 │ │ │ │ +B8CE0FA383F6E24BC8DDCF12458AF9DB49AE31E78DEB44416D3824D6743B4F4C │ │ │ │ +D1EA26028D3D6E008359C1997C1CFAA9FAD6A8EA8956439130C03A74F91DB234 │ │ │ │ +A7696D225C887B03A0472E4E6188F93984F9BE9D28E0353AF316A69C4F4F2DA6 │ │ │ │ +927FAD587279922C7BBAFC492EFCA4EB557FED180B645D2456800A8D4AE5320A │ │ │ │ +1C2E50EAB2915ECF13A6B8DD1F116CD81D0534B4F437CA76B6BB6AFA98C81EF7 │ │ │ │ +97C70CEF86ED8F15F754F68B63C888950EC20B3FBF33C9E1E7F5C10483B654E3 │ │ │ │ +9030649CC7110C3F1505D38B61F7BFB8A7562B957DEC5ACFC29AD3E4848888D2 │ │ │ │ +8A46E83A90A650EE09E48E4482A7EC6769945A9D8629C0292D31846BEF6006F8 │ │ │ │ +334B3B16564DF8CC85F08D80556455BB8B7353E07ABC8E37771FE5AA52454181 │ │ │ │ +EE8A48FAF7E439CE726F71310A55152898F0B8A967373958FDD9A00D7826419D │ │ │ │ +3C03F43DA0561D49EB5B33CDC7AE8EDD84408EEC483038B7432BD6445AEE1795 │ │ │ │ +4C9FB8273C2B7487A163FEA3160A1B1976F4C24A755B8DDFC76D93E7C1F4472E │ │ │ │ +53E8DA4D272C22FF85E5EAAC266E2ADE7A1DD871DEA2AD6628EFFCC05F41D423 │ │ │ │ +88AA5456207A8CE99E4118DF29477F617D0813E654B1EDF5082641713AFF43C4 │ │ │ │ +CE3DA645823E71D5BEFC4CB4F1F7FE34 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -8602,29 +8596,28 @@ │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 │ │ │ │ 1[44 44 44 33[{}86 83.022 /CMTT10 rf /Fq 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 /Fr 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 /Fs 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 3[65 2[52 19[42 2[42 │ │ │ │ -2[42 42 42 3[23 44[{}25 83.022 /CMSL10 rf /Ft 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 /Fu 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 42 42 42 42 42 42 42 42 42 │ │ │ │ -42 23 28 23 65 1[32 32 23 4[42 20[46 46 48 11[{}73 83.022 │ │ │ │ -/CMR10 rf /Fv 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 │ │ │ │ +23 2[23 1[42 1[37 2[46 42 13[46 4[62 1[52 22[42 2[42 │ │ │ │ +42 42 3[23 44[{}23 83.022 /CMSL10 rf /Ft 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 │ │ │ │ +/Fu 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 42 42 42 42 42 42 42 42 42 42 23 28 23 │ │ │ │ +65 1[32 32 23 4[42 20[46 46 48 11[{}73 83.022 /CMR10 │ │ │ │ +rf /Fv 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 │ │ │ │ %DVIPSBitmapFont: Fw tcrm0600 6 1 │ │ │ │ /EN0 load IEn S/IEn X FBB FMat/FMat[0.02 0 0 -0.02 0 │ │ │ │ 0]N/FBB[-11 -15 87 40]N │ │ │ │ /Fw 1 43 df<006000007000006000006000406020E06070F861F07E67E01FFF8007FE00 │ │ │ │ 00F00007FE001FFF807E67E0F861F0E0607040602000600000600000700000600014157B │ │ │ │ 961E>42 D E │ │ │ │ /Fw load 0 Fw currentfont 50 scalefont put/FMat X/FBB │ │ │ │ @@ -8636,21 +8629,21 @@ │ │ │ │ /Fx 1 43 df<000C0000001E0000001E0000001E0000001E0000001E0000601E0180781E │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ /Fx load 0 Fx currentfont 66.6667 scalefont put/FMat │ │ │ │ X/FBB X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ -/Fy 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 76 3[76 50 2[77 2[75 70 69 73 8[49 │ │ │ │ -2[49 2[49 49 49 1[27 1[27 44[{}33 99.6264 /CMR12 rf /Fz │ │ │ │ -172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 143.462 │ │ │ │ -/CMBX12 rf /FA 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 │ │ │ │ +/Fy 137[51 1[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 1[73 2[76 50 2[77 2[75 70 │ │ │ │ +69 73 11[49 2[49 49 49 1[27 1[27 44[{}33 99.6264 /CMR12 │ │ │ │ +rf /Fz 172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 │ │ │ │ +143.462 /CMBX12 rf /FA 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 │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -8660,31 +8653,31 @@ │ │ │ │ end │ │ │ │ %%EndSetup │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 590 739 a FA(Solving)43 b(Linear)g(Systems)f │ │ │ │ (using)h Fz(SPOOLES)54 b(2.2)778 1005 y Fy(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 Fx(*)1586 1341 y Fy(Octob)s(er)32 b(18,)g(2025)p 0 │ │ │ │ -5173 1560 4 v 92 5226 a Fw(*)127 5249 y Fv(P)-6 b(.)33 │ │ │ │ +y Fx(*)1544 1341 y Fy(No)m(v)m(em)m(b)s(er)34 b(15,)e(2025)p │ │ │ │ +0 5173 1560 4 v 92 5226 a Fw(*)127 5249 y Fv(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 Fu(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ TeXDict begin 2 1 bop 0 100 a Fu(2)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1144 4 v 1336 w(Octob)r(er)g(18,)g(2025)0 390 y Fr(Con)l(ten)l(ts)0 │ │ │ │ -601 y Ft(1)77 b(Ov)m(erview)3335 b(4)0 812 y(2)77 b(Serial)31 │ │ │ │ -b(Solution)g(of)g Fq(AX)f Fu(=)23 b Fq(Y)50 b Ft(using)31 │ │ │ │ -b(an)h Fq(LU)40 b Ft(factorization)1572 b(6)125 938 y │ │ │ │ -Fu(2.1)83 b(Reading)28 b(the)f(input)i(parameters)k(.)42 │ │ │ │ +1072 4 v 1265 w(No)n(v)n(em)n(b)r(er)f(15,)h(2025)0 390 │ │ │ │ +y Fr(Con)l(ten)l(ts)0 601 y Ft(1)77 b(Ov)m(erview)3335 │ │ │ │ +b(4)0 812 y(2)77 b(Serial)31 b(Solution)g(of)g Fq(AX)f │ │ │ │ +Fu(=)23 b Fq(Y)50 b Ft(using)31 b(an)h Fq(LU)40 b Ft(factorization)1572 │ │ │ │ +b(6)125 938 y Fu(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 │ │ │ │ (the)g(problem)77 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(.)134 │ │ │ │ b(6)125 1191 y(2.3)83 b(Reordering)26 b(the)i(linear)f(system)78 │ │ │ │ b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) │ │ │ │ @@ -8780,60 +8773,62 @@ │ │ │ │ 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 Ft(A)53 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f │ │ │ │ Fq(LU)40 b Ft(Driv)m(er)33 b(Program)1941 b(24)0 5407 │ │ │ │ y(B)57 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f Fq(LU)40 │ │ │ │ b Ft(Driv)m(er)33 b(Program)1941 b(31)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 0 100 a Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1171 4 v 1334 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ -(Linear)g(Systems)327 b Fu(3)0 390 y Ft(C)56 b Fp(allInOne.c)27 │ │ │ │ -b Ft({)32 b(A)g(Serial)f Fq(LU)40 b Ft(Driv)m(er)33 b(Program)1941 │ │ │ │ -b(39)0 598 y(D)52 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f │ │ │ │ -Fq(QR)h Ft(Driv)m(er)h(Program)1934 b(49)p eop end │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1100 4 v 1263 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)327 b Fu(3)0 │ │ │ │ +390 y Ft(C)56 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f │ │ │ │ +Fq(LU)40 b Ft(Driv)m(er)33 b(Program)1941 b(39)0 598 │ │ │ │ +y(D)52 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f Fq(QR)h │ │ │ │ +Ft(Driv)m(er)h(Program)1934 b(49)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 100 a Fu(4)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1144 4 v 1336 w(Octob)r(er)g(18,)g(2025)0 390 y Fr(1)135 │ │ │ │ -b(Ov)l(erview)0 598 y Fu(The)34 b Ft(SPOOLES)h Fu(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 Fq(AX)40 b Fu(=)34 b Fq(Y)53 b │ │ │ │ -Fu(for)34 b Fq(X)7 b Fu(,)0 698 y(where)20 b Fq(A)h Fu(is)f(full)h │ │ │ │ -(rank)f(and)g Fq(X)27 b Fu(and)20 b Fq(Y)40 b Fu(are)19 │ │ │ │ -b(dense)h(matrices.)34 b(The)21 b(matrix)f Fq(A)g Fu(can)g(b)r(e)h │ │ │ │ -(either)g(real)e(or)h(complex,)h(symmetric,)0 797 y(Hermitian,)28 │ │ │ │ -b(square)f(nonsymmetric,)h(or)f(o)n(v)n(erdetermined.)36 │ │ │ │ -b(When)29 b Fq(A)f Fu(is)g(square,)f(there)h(are)f(four)h(steps)g(in)g │ │ │ │ -(the)g(pro)r(cess)0 897 y(of)g(solving)e Fq(AX)k Fu(=)22 │ │ │ │ -b Fq(Y)d Fu(.)125 1090 y Fo(\210)42 b Ft(comm)m(unicate)27 │ │ │ │ -b Fu(the)h(data)f(for)g(the)h(problem)f(as)g Fq(A)p Fu(,)h │ │ │ │ -Fq(X)34 b Fu(and)28 b Fq(Y)18 b Fu(.)125 1258 y Fo(\210)42 │ │ │ │ -b Ft(reorder)27 b Fu(as)663 1237 y Fn(e)643 1258 y Fq(A)727 │ │ │ │ -1237 y Fn(e)706 1258 y Fq(X)i Fu(=)902 1237 y Fn(e)892 │ │ │ │ -1258 y Fq(Y)18 b Fu(,)28 b(where)1269 1237 y Fn(e)1249 │ │ │ │ -1258 y Fq(A)23 b Fu(=)g Fq(P)1475 1270 y Fm(1)1513 1258 │ │ │ │ -y Fq(AP)1640 1228 y Fl(T)1628 1279 y Fm(1)1692 1258 y │ │ │ │ -Fu(,)1764 1237 y Fn(e)1743 1258 y Fq(X)29 b Fu(=)23 b │ │ │ │ -Fq(P)1982 1270 y Fm(1)2019 1258 y Fq(X)34 b Fu(and)2294 │ │ │ │ -1237 y Fn(e)2284 1258 y Fq(Y)41 b Fu(=)23 b Fq(P)2514 │ │ │ │ -1270 y Fm(1)2552 1258 y Fq(Y)18 b Fu(,)28 b(and)f Fq(P)2883 │ │ │ │ -1270 y Fm(1)2949 1258 y Fu(is)g(a)g(p)r(erm)n(utation)h(matrix.)125 │ │ │ │ -1437 y Fo(\210)42 b Ft(factor)497 1416 y Fn(e)477 1437 │ │ │ │ -y Fq(A)24 b Fu(=)e Fq(P)703 1449 y Fm(2)741 1437 y Fq(LD)r(U)9 │ │ │ │ -b(Q)1001 1407 y Fl(T)1001 1458 y Fm(2)1052 1437 y Fu(,)28 │ │ │ │ -b(where)f Fq(P)1396 1449 y Fm(2)1461 1437 y Fu(and)h │ │ │ │ -Fq(Q)1689 1449 y Fm(2)1753 1437 y Fu(are)f(p)r(erm)n(utation)g │ │ │ │ -(matrices.)125 1605 y Fo(\210)42 b Ft(solv)m(e)27 b Fq(LD)r(U)9 │ │ │ │ -b Fu(\()p Fq(Q)731 1575 y Fl(T)731 1626 y Fm(2)782 1605 │ │ │ │ -y Fq(P)835 1617 y Fm(1)873 1605 y Fq(X)e Fu(\))22 b(=)h(\()p │ │ │ │ -Fq(P)1188 1575 y Fl(T)1176 1626 y Fm(2)1240 1605 y Fq(P)1293 │ │ │ │ -1617 y Fm(1)1331 1605 y Fq(Y)c Fu(\).)0 1798 y(When)26 │ │ │ │ -b Fq(A)h Fu(is)e(symmetric)h(or)f(Hermitian,)h Fq(L)c │ │ │ │ -Fu(=)h Fq(U)1562 1768 y Fl(T)1640 1798 y Fu(or)i Fq(L)d │ │ │ │ -Fu(=)h Fq(U)1973 1768 y Fl(H)2036 1798 y Fu(,)j(resp)r(ectiv)n(ely)-7 │ │ │ │ +1072 4 v 1265 w(No)n(v)n(em)n(b)r(er)f(15,)h(2025)0 390 │ │ │ │ +y Fr(1)135 b(Ov)l(erview)0 598 y Fu(The)34 b Ft(SPOOLES)h │ │ │ │ +Fu(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 Fq(AX)40 b Fu(=)34 │ │ │ │ +b Fq(Y)53 b Fu(for)34 b Fq(X)7 b Fu(,)0 698 y(where)20 │ │ │ │ +b Fq(A)h Fu(is)f(full)h(rank)f(and)g Fq(X)27 b Fu(and)20 │ │ │ │ +b Fq(Y)40 b Fu(are)19 b(dense)h(matrices.)34 b(The)21 │ │ │ │ +b(matrix)f Fq(A)g Fu(can)g(b)r(e)h(either)g(real)e(or)h(complex,)h │ │ │ │ +(symmetric,)0 797 y(Hermitian,)28 b(square)f(nonsymmetric,)h(or)f(o)n │ │ │ │ +(v)n(erdetermined.)36 b(When)29 b Fq(A)f Fu(is)g(square,)f(there)h(are) │ │ │ │ +f(four)h(steps)g(in)g(the)g(pro)r(cess)0 897 y(of)g(solving)e │ │ │ │ +Fq(AX)k Fu(=)22 b Fq(Y)d Fu(.)125 1090 y Fo(\210)42 b │ │ │ │ +Ft(comm)m(unicate)27 b Fu(the)h(data)f(for)g(the)h(problem)f(as)g │ │ │ │ +Fq(A)p Fu(,)h Fq(X)34 b Fu(and)28 b Fq(Y)18 b Fu(.)125 │ │ │ │ +1258 y Fo(\210)42 b Ft(reorder)27 b Fu(as)663 1237 y │ │ │ │ +Fn(e)643 1258 y Fq(A)727 1237 y Fn(e)706 1258 y Fq(X)i │ │ │ │ +Fu(=)902 1237 y Fn(e)892 1258 y Fq(Y)18 b Fu(,)28 b(where)1269 │ │ │ │ +1237 y Fn(e)1249 1258 y Fq(A)23 b Fu(=)g Fq(P)1475 1270 │ │ │ │ +y Fm(1)1513 1258 y Fq(AP)1640 1228 y Fl(T)1628 1279 y │ │ │ │ +Fm(1)1692 1258 y Fu(,)1764 1237 y Fn(e)1743 1258 y Fq(X)29 │ │ │ │ +b Fu(=)23 b Fq(P)1982 1270 y Fm(1)2019 1258 y Fq(X)34 │ │ │ │ +b Fu(and)2294 1237 y Fn(e)2284 1258 y Fq(Y)41 b Fu(=)23 │ │ │ │ +b Fq(P)2514 1270 y Fm(1)2552 1258 y Fq(Y)18 b Fu(,)28 │ │ │ │ +b(and)f Fq(P)2883 1270 y Fm(1)2949 1258 y Fu(is)g(a)g(p)r(erm)n │ │ │ │ +(utation)h(matrix.)125 1437 y Fo(\210)42 b Ft(factor)497 │ │ │ │ +1416 y Fn(e)477 1437 y Fq(A)24 b Fu(=)e Fq(P)703 1449 │ │ │ │ +y Fm(2)741 1437 y Fq(LD)r(U)9 b(Q)1001 1407 y Fl(T)1001 │ │ │ │ +1458 y Fm(2)1052 1437 y Fu(,)28 b(where)f Fq(P)1396 1449 │ │ │ │ +y Fm(2)1461 1437 y Fu(and)h Fq(Q)1689 1449 y Fm(2)1753 │ │ │ │ +1437 y Fu(are)f(p)r(erm)n(utation)g(matrices.)125 1605 │ │ │ │ +y Fo(\210)42 b Ft(solv)m(e)27 b Fq(LD)r(U)9 b Fu(\()p │ │ │ │ +Fq(Q)731 1575 y Fl(T)731 1626 y Fm(2)782 1605 y Fq(P)835 │ │ │ │ +1617 y Fm(1)873 1605 y Fq(X)e Fu(\))22 b(=)h(\()p Fq(P)1188 │ │ │ │ +1575 y Fl(T)1176 1626 y Fm(2)1240 1605 y Fq(P)1293 1617 │ │ │ │ +y Fm(1)1331 1605 y Fq(Y)c Fu(\).)0 1798 y(When)26 b Fq(A)h │ │ │ │ +Fu(is)e(symmetric)h(or)f(Hermitian,)h Fq(L)c Fu(=)h Fq(U)1562 │ │ │ │ +1768 y Fl(T)1640 1798 y Fu(or)i Fq(L)d Fu(=)h Fq(U)1973 │ │ │ │ +1768 y Fl(H)2036 1798 y Fu(,)j(resp)r(ectiv)n(ely)-7 │ │ │ │ b(,)26 b(and)f Fq(P)2765 1810 y Fm(2)2826 1798 y Fu(=)d │ │ │ │ Fq(Q)2979 1810 y Fm(2)3016 1798 y Fu(.)37 b(F)-7 b(or)25 │ │ │ │ b(a)g Fq(QR)h Fu(factorization)0 1898 y(of)i Fq(A)p Fu(,)g(there)f(are) │ │ │ │ g(also)f(four)h(steps)h(in)g(the)g(pro)r(cess)e(of)i(solving)e │ │ │ │ Fq(AX)k Fu(=)22 b Fq(Y)d Fu(.)125 2091 y Fo(\210)42 b │ │ │ │ Ft(comm)m(unicate)27 b Fu(the)h(data)f(for)g(the)h(problem)f(as)g │ │ │ │ Fq(A)p Fu(,)h Fq(X)34 b Fu(and)28 b Fq(Y)18 b Fu(.)125 │ │ │ │ @@ -8919,45 +8914,46 @@ │ │ │ │ 5308 y(F)-7 b(or)35 b(example,)k(consider)c(the)i Fp(DenseMtx)d │ │ │ │ Fu(ob)5 b(ject)36 b(that)h(mo)r(dels)f(a)h(dense)f(matrix.)63 │ │ │ │ b(The)37 b Fp(DenseMtx/DenseMt)o(x.)o(h)0 5407 y Fu(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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1171 4 v 1334 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ -(Linear)g(Systems)327 b Fu(5)0 390 y(metho)r(ds.)35 b(The)21 │ │ │ │ -b(source)f(\014les)h(are)f(found)i(in)f(the)h Fp(DenseMtx/src)16 │ │ │ │ -b Fu(directory)-7 b(.)33 b(The)21 b(L)2629 373 y Fm(A)2666 │ │ │ │ -390 y Fu(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 Fp(DenseMtx/doc)15 b │ │ │ │ -Fu(directory)-7 b(.)34 b(The)20 b(\014les)g(can)g(b)r(e)g(used)g(to)g │ │ │ │ -(create)g(the)g Fp(DenseMtx)d Fu(ob)5 b(ject's)20 b(c)n(hapter)f(in)i │ │ │ │ -(the)f(Reference)0 589 y(Man)n(ual,)g(or)d(in)i(a)f(standalone)f │ │ │ │ -(manner)h(to)g(generate)g(the)g(ob)5 b(ject's)18 b(do)r(cumen)n │ │ │ │ -(tation.)34 b(The)18 b Fp(DenseMtx/drivers)12 b Fu(directory)0 │ │ │ │ -689 y(con)n(tains)27 b(driv)n(er)f(programs)f(that)j(exercise)f(and)g │ │ │ │ -(v)-5 b(alidate)27 b(the)h(ob)5 b(ject's)27 b(functionalit)n(y)-7 │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1100 4 v 1263 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)327 b Fu(5)0 │ │ │ │ +390 y(metho)r(ds.)35 b(The)21 b(source)f(\014les)h(are)f(found)i(in)f │ │ │ │ +(the)h Fp(DenseMtx/src)16 b Fu(directory)-7 b(.)33 b(The)21 │ │ │ │ +b(L)2629 373 y Fm(A)2666 390 y Fu(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 Fp(DenseMtx/doc)15 b Fu(directory)-7 │ │ │ │ +b(.)34 b(The)20 b(\014les)g(can)g(b)r(e)g(used)g(to)g(create)g(the)g │ │ │ │ +Fp(DenseMtx)d Fu(ob)5 b(ject's)20 b(c)n(hapter)f(in)i(the)f(Reference)0 │ │ │ │ +589 y(Man)n(ual,)g(or)d(in)i(a)f(standalone)f(manner)h(to)g(generate)g │ │ │ │ +(the)g(ob)5 b(ject's)18 b(do)r(cumen)n(tation.)34 b(The)18 │ │ │ │ +b Fp(DenseMtx/drivers)12 b Fu(directory)0 689 y(con)n(tains)27 │ │ │ │ +b(driv)n(er)f(programs)f(that)j(exercise)f(and)g(v)-5 │ │ │ │ +b(alidate)27 b(the)h(ob)5 b(ject's)27 b(functionalit)n(y)-7 │ │ │ │ b(.)125 814 y(Almost)23 b(all)h(the)f(metho)r(ds)h(in)g(the)g(library)e │ │ │ │ (are)h(asso)r(ciated)f(with)i(a)f(particular)g(ob)5 b(ject.)35 │ │ │ │ b(There)23 b(are)g(some)g(exceptions,)0 913 y(mostly)i(found)g(in)g │ │ │ │ (the)g Fp(misc/src)d Fu(directory)-7 b(.)34 b(The)25 │ │ │ │ b Fp(misc/drivers)20 b Fu(directory)k(con)n(tains)f(the)j(serial)d │ │ │ │ Fq(LU)34 b Fu(and)24 b Fq(QR)h Fu(driv)n(er)0 1013 y(programs.)58 │ │ │ │ b(The)36 b Fp(MT/drivers)31 b Fu(and)k Fp(MPI/drivers)c │ │ │ │ Fu(directories)j(con)n(tain)h(the)h(m)n(ultithreaded)f(and)h(MPI)f │ │ │ │ Fq(LU)43 b Fu(driv)n(er)0 1112 y(programs.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ TeXDict begin 6 5 bop 0 100 a Fu(6)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1144 4 v 1336 w(Octob)r(er)g(18,)g(2025)0 390 y Fr(2)135 │ │ │ │ -b(Serial)46 b(Solution)f(of)g Fj(AX)e Fi(=)33 b Fj(Y)71 │ │ │ │ -b Fr(using)45 b(an)g Fj(LU)56 b Fr(factorization)0 599 │ │ │ │ -y Fu(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 │ │ │ │ +1072 4 v 1265 w(No)n(v)n(em)n(b)r(er)f(15,)h(2025)0 390 │ │ │ │ +y Fr(2)135 b(Serial)46 b(Solution)f(of)g Fj(AX)e Fi(=)33 │ │ │ │ +b Fj(Y)71 b Fr(using)45 b(an)g Fj(LU)56 b Fr(factorization)0 │ │ │ │ +599 y Fu(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 │ │ │ │ Fq(AX)j Fu(=)22 b Fq(Y)d Fu(.)37 b(The)27 b(user)g(w)n(an)n(ts)0 │ │ │ │ 699 y(the)h(solution)f Fq(X)7 b Fu(.)36 b(The)28 b Ft(SPOOLES)g │ │ │ │ Fu(library)e(will)i(use)f Fq(A)h Fu(and)g Fq(Y)46 b Fu(and)27 │ │ │ │ b(pro)n(vide)g Fq(X)34 b Fu(bac)n(k)26 b(to)i(the)g(user.)125 │ │ │ │ 825 y(The)f Ft(SPOOLES)g Fu(library)f(is)h(based)g(on)g(an)g(ob)5 │ │ │ │ b(ject)27 b(orien)n(ted)f(design)h(philosoph)n(y)-7 b(.)36 │ │ │ │ b(The)27 b(\014rst)g(ob)5 b(ject)28 b(that)f(the)h(user)0 │ │ │ │ @@ -9049,23 +9045,23 @@ │ │ │ │ b Fu(or)23 b Fp(InpMtx)p 3048 5253 V 29 w(inputComplexEntr)o(y\()o(\))p │ │ │ │ 0 5330 1560 4 v 92 5384 a Fg(1)127 5407 y Ff(InpMtx)i │ │ │ │ Fv(stands)g(for)d Ff(Inp)p Fv(ut)j Ff(M)p Fv(a)p Ff(t)p │ │ │ │ Fv(ri)p Ff(x)p Fv(,)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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1171 4 v 1334 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ -(Linear)g(Systems)327 b Fu(7)0 390 y(to)30 b(place)g(that)g(en)n(try)g │ │ │ │ -(in)n(to)g(the)g Fp(InpMtx)e Fu(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 Fp(InpMtx)23 │ │ │ │ -b Fu(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 │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1100 4 v 1263 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)327 b Fu(7)0 │ │ │ │ +390 y(to)30 b(place)g(that)g(en)n(try)g(in)n(to)g(the)g │ │ │ │ +Fp(InpMtx)e Fu(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 Fp(InpMtx)23 b Fu(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 │ │ │ │ 787 y Fp(inputFile)40 b(=)j(fopen\(matrixFile)o(Nam)o(e,)37 │ │ │ │ b("r"\))42 b(;)0 887 y(fscanf\(inputFile)o(,)c("\045d)k(\045d)h │ │ │ │ (\045d",)f(&nrow,)f(&ncol,)g(&nent\))g(;)0 986 y(neqns)h(=)h(nrow)f(;)0 │ │ │ │ 1086 y(mtxA)g(=)h(InpMtx_new\(\))c(;)0 1185 y(InpMtx_init\(mtxA)o(,)f │ │ │ │ (INPMTX_BY_ROWS,)f(type,)k(nent,)h(neqns\))f(;)0 1285 │ │ │ │ y(if)i(\()g(type)f(==)h(SPOOLES_REAL)38 b(\))43 b({)131 │ │ │ │ 1385 y(double)128 b(value)42 b(;)131 1484 y(for)g(\()h(ient)f(=)h(0)h │ │ │ │ @@ -9130,30 +9126,30 @@ │ │ │ │ (they)h(apply)f(to,)h(or)e(the)i(library)e(name,)h(e.g.,)g │ │ │ │ Ff(SPOOLES)p 3716 5328 V 27 w(REAL)p Fv(.)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 Fu(8)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1144 4 v 1336 w(Octob)r(er)g(18,)g(2025)125 390 y Fu(Ev)n(ery)e(ob)5 │ │ │ │ -b(ject)27 b(in)g Ft(SPOOLES)g Fu(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 Fp(InpMtx)d Fu(ob)5 b(ject,)28 b Fp(mtxA)p Fu(.)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 Fp(msgFile)e Fu(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 Fq(A)g Fu(has)f(b)r(een)i(read)e(in)h(from)g │ │ │ │ -(the)g(\014le)g(and)g(placed)g(in)g(an)f Fp(InpMtx)f │ │ │ │ -Fu(ob)5 b(ject,)26 b(the)g(righ)n(t)g(hand)g(matrix)0 │ │ │ │ -907 y Fq(Y)46 b Fu(is)28 b(read)f(in)g(from)h(a)f(\014le)h(and)f │ │ │ │ +1072 4 v 1265 w(No)n(v)n(em)n(b)r(er)f(15,)h(2025)125 │ │ │ │ +390 y Fu(Ev)n(ery)e(ob)5 b(ject)27 b(in)g Ft(SPOOLES)g │ │ │ │ +Fu(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 Fp(InpMtx)d │ │ │ │ +Fu(ob)5 b(ject,)28 b Fp(mtxA)p Fu(.)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 │ │ │ │ +Fp(msgFile)e Fu(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 Fq(A)g │ │ │ │ +Fu(has)f(b)r(een)i(read)e(in)h(from)g(the)g(\014le)g(and)g(placed)g(in) │ │ │ │ +g(an)f Fp(InpMtx)f Fu(ob)5 b(ject,)26 b(the)g(righ)n(t)g(hand)g(matrix) │ │ │ │ +0 907 y Fq(Y)46 b Fu(is)28 b(read)f(in)g(from)h(a)f(\014le)h(and)f │ │ │ │ (placed)g(in)h(a)f Fp(DenseMtx)e Fu(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 Fp(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 │ │ │ │ b(;)0 1364 y(DenseMtx_init\(mt)o(xB,)f(type,)k(0,)i(0,)g(neqns,)e │ │ │ │ (nrhs,)g(1,)i(neqns\))e(;)0 1464 y(DenseMtx_zero\(mt)o(xB\))c(;)0 │ │ │ │ @@ -9210,30 +9206,30 @@ │ │ │ │ 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1171 4 v 1334 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ -(Linear)g(Systems)327 b Fu(9)0 390 y Fh(2.3)112 b(Reordering)38 │ │ │ │ -b(the)f(linear)h(system)0 564 y Fu(The)30 b(\014rst)g(step)h(is)f(to)g │ │ │ │ -(\014nd)h(the)g(p)r(erm)n(utation)f(matrix)f Fq(P)12 │ │ │ │ -b Fu(,)31 b(and)g(then)f(p)r(erm)n(ute)h Fq(AX)j Fu(=)27 │ │ │ │ -b Fq(Y)49 b Fu(in)n(to)30 b(\()p Fq(P)12 b(AP)3336 534 │ │ │ │ -y Fl(T)3389 564 y Fu(\)\()p Fq(P)g(X)7 b Fu(\))27 b(=)g │ │ │ │ -Fq(P)12 b(Y)19 b Fu(.)0 664 y(The)32 b(result)g(of)g(the)h │ │ │ │ -Ft(SPOOLES)f Fu(ordering)f(step)h(is)g(not)g(just)h Fq(P)44 │ │ │ │ -b Fu(or)31 b(its)i(p)r(erm)n(utation)f(v)n(ector,)g(it)g(is)g(a)g │ │ │ │ -Fk(fr)l(ont)i(tr)l(e)l(e)e Fu(that)0 763 y(de\014nes)g(not)g(just)g │ │ │ │ -(the)g(p)r(erm)n(utation,)h(but)f(the)g(blo)r(c)n(king)f(of)h(the)g │ │ │ │ -(factor)f(matrices,)h(whic)n(h)g(in)g(turn)g(sp)r(eci\014es)f(the)i │ │ │ │ -(data)0 863 y(structures)27 b(and)i(the)f(computations)g(that)g(are)g │ │ │ │ -(p)r(erformed)f(during)h(the)h(factor)e(and)h(solv)n(es.)37 │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1100 4 v 1263 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)327 b Fu(9)0 │ │ │ │ +390 y Fh(2.3)112 b(Reordering)38 b(the)f(linear)h(system)0 │ │ │ │ +564 y Fu(The)30 b(\014rst)g(step)h(is)f(to)g(\014nd)h(the)g(p)r(erm)n │ │ │ │ +(utation)f(matrix)f Fq(P)12 b Fu(,)31 b(and)g(then)f(p)r(erm)n(ute)h │ │ │ │ +Fq(AX)j Fu(=)27 b Fq(Y)49 b Fu(in)n(to)30 b(\()p Fq(P)12 │ │ │ │ +b(AP)3336 534 y Fl(T)3389 564 y Fu(\)\()p Fq(P)g(X)7 │ │ │ │ +b Fu(\))27 b(=)g Fq(P)12 b(Y)19 b Fu(.)0 664 y(The)32 │ │ │ │ +b(result)g(of)g(the)h Ft(SPOOLES)f Fu(ordering)f(step)h(is)g(not)g │ │ │ │ +(just)h Fq(P)44 b Fu(or)31 b(its)i(p)r(erm)n(utation)f(v)n(ector,)g(it) │ │ │ │ +g(is)g(a)g Fk(fr)l(ont)i(tr)l(e)l(e)e Fu(that)0 763 y(de\014nes)g(not)g │ │ │ │ +(just)g(the)g(p)r(erm)n(utation,)h(but)f(the)g(blo)r(c)n(king)f(of)h │ │ │ │ +(the)g(factor)f(matrices,)h(whic)n(h)g(in)g(turn)g(sp)r(eci\014es)f │ │ │ │ +(the)i(data)0 863 y(structures)27 b(and)i(the)f(computations)g(that)g │ │ │ │ +(are)g(p)r(erformed)f(during)h(the)h(factor)e(and)h(solv)n(es.)37 │ │ │ │ b(T)-7 b(o)28 b(determine)h(this)f Fp(ETree)0 962 y Fk(fr)l(ont)i(tr)l │ │ │ │ (e)l(e)d Fu(ob)5 b(ject)27 b(tak)n(es)g(three)g(step,)h(as)f(seen)g(in) │ │ │ │ h(the)g(co)r(de)f(fragmen)n(t)g(b)r(elo)n(w.)0 1131 y │ │ │ │ Fp(adjIVL)41 b(=)i(InpMtx_fullAdjace)o(nc)o(y\(m)o(tx)o(A\))37 │ │ │ │ b(;)0 1231 y(nedges)k(=)i(IVL_tsize\(adjIVL\))37 b(;)0 │ │ │ │ 1331 y(graph)42 b(=)h(Graph_new\(\))c(;)0 1430 y(Graph_init2\(grap)o │ │ │ │ (h,)e(0,)43 b(neqns,)e(0,)i(nedges,)d(neqns,)i(nedges,)e(adjIVL,)523 │ │ │ │ @@ -9306,23 +9302,23 @@ │ │ │ │ b(ject.)p 0 5330 1560 4 v 92 5384 a Fg(3)127 5407 y Ff(IVL)24 │ │ │ │ b Fv(stands)h(for)e Ff(I)p Fv(n)n(teger)i Ff(V)p Fv(ector)f │ │ │ │ Ff(L)p Fv(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 Fu(10)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)125 390 y Fu(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 Fp(ETree)p │ │ │ │ -3135 390 27 4 v 29 w(permuteVertices\()o(\))0 490 y Fu(metho)r(d,)41 │ │ │ │ -b(and)c(then)h(to)g(the)g(matrix)f(with)h(the)g Fp(InpMtx)p │ │ │ │ -1874 490 V 29 w(permute\(\))c Fu(metho)r(d.)67 b(If)38 │ │ │ │ -b(the)g(matrix)f Fq(A)h Fu(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)125 │ │ │ │ +390 y Fu(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 Fp(ETree)p 3135 390 27 4 v 29 w(permuteVertices\()o(\))0 │ │ │ │ +490 y Fu(metho)r(d,)41 b(and)c(then)h(to)g(the)g(matrix)f(with)h(the)g │ │ │ │ +Fp(InpMtx)p 1874 490 V 29 w(permute\(\))c Fu(metho)r(d.)67 │ │ │ │ +b(If)38 b(the)g(matrix)f Fq(A)h Fu(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 Fq(P)12 b(AP)3825 559 y Fl(T)3877 │ │ │ │ 589 y Fu(,)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 Fq(A)f Fu(is)g(symmetric)g(or)f(Hermitian,)j(the)f(call)e(to) │ │ │ │ 0 789 y Fp(InpMtx)p 269 789 V 29 w(mapToUpperTriang)o(le)o(\(\))24 │ │ │ │ b Fu(ensures)29 b(that)i(all)f(en)n(tries)f(of)i Fq(P)12 │ │ │ │ b(AP)2348 759 y Fl(T)2430 789 y Fu(are)29 b(in)i(its)f(upp)r(er)h │ │ │ │ @@ -9402,22 +9398,23 @@ │ │ │ │ Fd(i)p Fv(-th)f(c)n(hevron)i(of)e Fd(A)g Fv(consists)h(of)f(the)i │ │ │ │ (diagonal)f(en)n(try)g Fd(A)1829 5338 y Fc(i;i)1896 5328 │ │ │ │ y Fv(,)g(the)g Fd(i)p Fv(-th)g(ro)n(w)f(of)g(the)h(upp)r(er)g(triangle) │ │ │ │ g(of)f Fd(A)p Fv(,)g(and)h(the)h Fd(i)p Fv(-th)e(column)h(of)0 │ │ │ │ 5407 y(the)f(lo)n(w)n(er)e(triangle)h(of)f Fd(A)p Fv(.)p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(11)0 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(11)0 │ │ │ │ +390 y Fp(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 Fu(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 Fk(chevr)l(ons)p Fu(,)i(in)f(a)f Fp(Chv)f │ │ │ │ Fu(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 │ │ │ │ Fp(SubMtx)e Fu(ob)5 b(ject,)29 b(the)h Fp(FrontMtx)c │ │ │ │ @@ -9496,25 +9493,25 @@ │ │ │ │ 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 Fp(DenseMtx)d │ │ │ │ Fu(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 Fu(12)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fh(2.7)112 │ │ │ │ -b(Sample)39 b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files)0 │ │ │ │ -568 y Fu(Immediately)34 b(b)r(elo)n(w)g(are)f(t)n(w)n(o)g(sample)h │ │ │ │ -(\014les:)50 b Fp(matrix.input)29 b Fu(holds)34 b(the)g(matrix)g(input) │ │ │ │ -h(and)f Fp(rhs.input)c Fu(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 Fb(\002)g Fu(3)21 │ │ │ │ -b(grid.)34 b(Only)21 b(en)n(tries)f(in)h(the)h(upp)r(er)0 │ │ │ │ -768 y(triangle)j(are)h(stored.)35 b(The)27 b(righ)n(t)e(hand)h(side)h │ │ │ │ -(is)f(the)g(9)16 b Fb(\002)f Fu(9)26 b(iden)n(tit)n(y)g(matrix.)36 │ │ │ │ -b(Note)27 b(ho)n(w)e(the)i(indices)f(are)f(zero-based)g(as)0 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fh(2.7)112 b(Sample)39 b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h │ │ │ │ +(Files)0 568 y Fu(Immediately)34 b(b)r(elo)n(w)g(are)f(t)n(w)n(o)g │ │ │ │ +(sample)h(\014les:)50 b Fp(matrix.input)29 b Fu(holds)34 │ │ │ │ +b(the)g(matrix)g(input)h(and)f Fp(rhs.input)c Fu(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 Fb(\002)g Fu(3)21 b(grid.)34 b(Only)21 b(en)n(tries)f(in)h(the)h(upp) │ │ │ │ +r(er)0 768 y(triangle)j(are)h(stored.)35 b(The)27 b(righ)n(t)e(hand)h │ │ │ │ +(side)h(is)f(the)g(9)16 b Fb(\002)f Fu(9)26 b(iden)n(tit)n(y)g(matrix.) │ │ │ │ +36 b(Note)27 b(ho)n(w)e(the)i(indices)f(are)f(zero-based)g(as)0 │ │ │ │ 867 y(for)i(C,)h(instead)f(of)h(one-based)e(as)h(for)g(F)-7 │ │ │ │ b(ortran.)717 1053 y Fp(matrix.input)p 667 1086 623 4 │ │ │ │ v 665 3248 4 2162 v 717 1156 a(9)43 b(9)g(21)717 1255 │ │ │ │ y(0)g(0)87 b(4.0)717 1355 y(1)43 b(1)87 b(4.0)717 1455 │ │ │ │ y(2)43 b(2)87 b(4.0)717 1554 y(3)43 b(3)87 b(4.0)717 │ │ │ │ 1654 y(4)43 b(4)87 b(4.0)717 1753 y(5)43 b(5)87 b(4.0)717 │ │ │ │ 1853 y(6)43 b(6)87 b(4.0)717 1953 y(7)43 b(7)87 b(4.0)717 │ │ │ │ @@ -9533,29 +9530,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(13)0 390 y Fr(3)135 b(Multithreaded)45 │ │ │ │ -b(Solution)h(of)f Fj(AX)e Fi(=)33 b Fj(Y)71 b Fr(using)45 │ │ │ │ -b(an)f Fj(LU)57 b Fr(factorization)0 599 y Fu(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(13)0 │ │ │ │ +390 y Fr(3)135 b(Multithreaded)45 b(Solution)h(of)f Fj(AX)e │ │ │ │ +Fi(=)33 b Fj(Y)71 b Fr(using)45 b(an)f Fj(LU)57 b Fr(factorization)0 │ │ │ │ +599 y Fu(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 │ │ │ │ Ft(SPOOLES)g Fu(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 Ft(SPOOLES)g Fu(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 │ │ │ │ @@ -9621,41 +9618,42 @@ │ │ │ │ 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 Fu(14)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fu(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 Fp(cumopsDV)d Fu(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 │ │ │ │ -(the)h(map)f(call,)g(it)h(con)n(tains)e(the)h(n)n(um)n(b)r(er)0 │ │ │ │ -689 y(of)f(factor)e(op)r(erations)h(that)g(will)h(b)r(e)g(p)r(erformed) │ │ │ │ -f(b)n(y)h(eac)n(h)f(thread)g(when)g(piv)n(oting)g(for)g(stabilit)n(y)h │ │ │ │ -(is)f(not)h(enabled.)0 946 y Fh(3.5)112 b(The)38 b(Matrix)g(F)-9 │ │ │ │ -b(actorization)0 1124 y Fu(During)38 b(the)g(factorization)e(and)i │ │ │ │ -(solv)n(es,)h(the)f(threads)f(access)g(data)g(and)h(mo)r(dify)g(the)g │ │ │ │ -(state)g(of)f(the)i Fp(FrontMtx)34 b Fu(and)0 1223 y │ │ │ │ -Fp(SubMtxManager)20 b Fu(ob)5 b(jects)25 b(in)g(a)g(concurren)n(t)f │ │ │ │ -(fashion,)i(so)e(there)h(m)n(ust)h(b)r(e)f(some)g(w)n(a)n(y)f(to)h(con) │ │ │ │ -n(trol)f(this)i(access)e(for)h(critical)0 1323 y(sections)h(of)g(co)r │ │ │ │ -(de.)36 b(Inside)26 b(eac)n(h)g(of)g(the)h(t)n(w)n(o)e(ob)5 │ │ │ │ -b(jects)26 b(w)n(e)g(ha)n(v)n(e)f(placed)h(a)g Fp(Lock)f │ │ │ │ -Fu(ob)5 b(ject.)36 b(The)26 b Ft(SPOOLES)h Fp(Lock)d │ │ │ │ -Fu(ob)5 b(ject)0 1423 y(is)25 b(little)i(more)d(than)i(a)f(wrapp)r(er)g │ │ │ │ -(around)f(a)h(m)n(utual)h(exclusion)e(lo)r(c)n(k.)36 │ │ │ │ -b(It)26 b(pro)n(vides)e(a)h(simple)h(abstract)e(in)n(terface)h(so)g │ │ │ │ -(that)0 1522 y(other)30 b(ob)5 b(jects)29 b(whic)n(h)h(con)n(tain)g(lo) │ │ │ │ -r(c)n(ks)f(need)h(not)g(kno)n(w)f(ab)r(out)i(the)f(particular)f(thread) │ │ │ │ -g(pac)n(k)-5 b(age)29 b(w)n(e)h(use,)g(b)r(e)h(it)f(Solaris)0 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fu(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 Fp(cumopsDV)d Fu(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(the)h(map)f(call,)g(it)h(con)n │ │ │ │ +(tains)e(the)h(n)n(um)n(b)r(er)0 689 y(of)f(factor)e(op)r(erations)h │ │ │ │ +(that)g(will)h(b)r(e)g(p)r(erformed)f(b)n(y)h(eac)n(h)f(thread)g(when)g │ │ │ │ +(piv)n(oting)g(for)g(stabilit)n(y)h(is)f(not)h(enabled.)0 │ │ │ │ +946 y Fh(3.5)112 b(The)38 b(Matrix)g(F)-9 b(actorization)0 │ │ │ │ +1124 y Fu(During)38 b(the)g(factorization)e(and)i(solv)n(es,)h(the)f │ │ │ │ +(threads)f(access)g(data)g(and)h(mo)r(dify)g(the)g(state)g(of)f(the)i │ │ │ │ +Fp(FrontMtx)34 b Fu(and)0 1223 y Fp(SubMtxManager)20 │ │ │ │ +b Fu(ob)5 b(jects)25 b(in)g(a)g(concurren)n(t)f(fashion,)i(so)e(there)h │ │ │ │ +(m)n(ust)h(b)r(e)f(some)g(w)n(a)n(y)f(to)h(con)n(trol)f(this)i(access)e │ │ │ │ +(for)h(critical)0 1323 y(sections)h(of)g(co)r(de.)36 │ │ │ │ +b(Inside)26 b(eac)n(h)g(of)g(the)h(t)n(w)n(o)e(ob)5 b(jects)26 │ │ │ │ +b(w)n(e)g(ha)n(v)n(e)f(placed)h(a)g Fp(Lock)f Fu(ob)5 │ │ │ │ +b(ject.)36 b(The)26 b Ft(SPOOLES)h Fp(Lock)d Fu(ob)5 │ │ │ │ +b(ject)0 1423 y(is)25 b(little)i(more)d(than)i(a)f(wrapp)r(er)g(around) │ │ │ │ +f(a)h(m)n(utual)h(exclusion)e(lo)r(c)n(k.)36 b(It)26 │ │ │ │ +b(pro)n(vides)e(a)h(simple)h(abstract)e(in)n(terface)h(so)g(that)0 │ │ │ │ +1522 y(other)30 b(ob)5 b(jects)29 b(whic)n(h)h(con)n(tain)g(lo)r(c)n │ │ │ │ +(ks)f(need)h(not)g(kno)n(w)f(ab)r(out)i(the)f(particular)f(thread)g │ │ │ │ +(pac)n(k)-5 b(age)29 b(w)n(e)h(use,)g(b)r(e)h(it)f(Solaris)0 │ │ │ │ 1622 y(threads,)d(or)g(POSIX)g(threads,)g(or)f(another.)125 │ │ │ │ 1746 y(T)-7 b(o)39 b(notify)g(the)h Fp(FrontMtx)d Fu(and)i │ │ │ │ Fp(SubMtxManager)34 b Fu(ob)5 b(jects)39 b(that)h(they)g(m)n(ust)f(ha)n │ │ │ │ (v)n(e)g(a)g(lo)r(c)n(k,)j(their)d(initialization)0 1846 │ │ │ │ y(metho)r(d)31 b(calls)g(di\013er)f(sligh)n(tly)h(from)f(the)h(serial)f │ │ │ │ (v)n(ersion.)45 b(See)31 b(Section)g(2.5)f(for)g(a)g(discussion)h(of)f │ │ │ │ (the)i(similar)e(features.)0 1945 y(The)e(co)r(de)f(fragmen)n(t)g(b)r │ │ │ │ @@ -9710,21 +9708,22 @@ │ │ │ │ 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 Fp(lookahead)d │ │ │ │ Fu(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 Fp(lookahead)d Fu(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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(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 │ │ │ │ Fp(FrontMtx)d Fu(ob)5 b(ject)24 b(con)n(tains)g(the)i │ │ │ │ Fq(L)2539 626 y Fl(J)n(;I)2631 614 y Fu(,)g Fq(D)2749 │ │ │ │ 626 y Fl(I)5 b(;I)2865 614 y Fu(and)25 b Fq(U)3081 626 │ │ │ │ y Fl(I)5 b(;J)3206 614 y Fu(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 │ │ │ │ @@ -9755,18 +9754,18 @@ │ │ │ │ b(in)h(the)g(latter.)0 3167 y Fh(3.7)112 b(Sample)39 │ │ │ │ b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files)0 3345 │ │ │ │ y Fu(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 Fu(16)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fr(4)135 │ │ │ │ -b(MPI)44 b(Solution)i(of)f Fj(AX)d Fi(=)34 b Fj(Y)70 │ │ │ │ -b Fr(using)45 b(an)g Fj(LU)57 b Fr(factorization)0 597 │ │ │ │ -y Fu(Unlik)n(e)30 b(the)h(serial)d(and)i(m)n(ultithreaded)g(en)n │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fr(4)135 b(MPI)44 b(Solution)i(of)f Fj(AX)d Fi(=)34 │ │ │ │ +b Fj(Y)70 b Fr(using)45 b(an)g Fj(LU)57 b Fr(factorization)0 │ │ │ │ +597 y Fu(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 │ │ │ │ 797 y(space.)36 b(The)26 b(MPI)f(step-b)n(y-step)h(pro)r(cess)e(to)i │ │ │ │ (solv)n(e)f(a)h(linear)f(system)h(is)g(exactly)f(the)i(same)e(as)g(the) │ │ │ │ i(m)n(ultithreaded)f(case,)0 896 y(with)g(the)f(additional)g(trouble)f │ │ │ │ @@ -9850,34 +9849,34 @@ │ │ │ │ (cessors,)e(w)n(e)h(use)0 5407 y(the)e(distributed)g │ │ │ │ Fp(InpMtx)p 837 5407 27 4 v 29 w(MPI)p 998 5407 V 30 │ │ │ │ w(fullAdjacency\(\))22 b Fu(metho)r(d)28 b(to)f(construct)g(the)h │ │ │ │ Fp(IVL)f Fu(ob)5 b(ject)27 b(of)h(the)f(graph)g(of)g │ │ │ │ Fq(A)19 b Fu(+)f Fq(A)3819 5377 y Fl(T)3872 5407 y Fu(.)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(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 Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(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 Fp(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 │ │ │ │ Fh(4.4)112 b(Non-n)m(umeric)39 b(w)m(ork)0 2001 y Fu(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 │ │ │ │ @@ -9923,18 +9922,18 @@ │ │ │ │ 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 Fu(18)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(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 Fu(The)27 b Fp(InpMtx)p │ │ │ │ 439 1073 27 4 v 29 w(MPI)p 600 1073 V 30 w(split\(\))e │ │ │ │ Fu(metho)r(d)i(assem)n(bles)f(and)h(redistributes)g(the)h(matrix)e(en)n │ │ │ │ (tries)h(b)n(y)g(the)g(v)n(ectors)f(of)h(the)h(lo)r(cal)0 │ │ │ │ 1173 y(matrix.)58 b(Recall)34 b(ab)r(o)n(v)n(e)g(that)h(the)g(co)r │ │ │ │ @@ -9998,26 +9997,26 @@ │ │ │ │ (addition)f(of)h(the)g Fp(firsttag)c Fu(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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(19)0 390 y Fp(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 Fu(After)f(the)g(p)r(ost-pro)r(cessing)e(step,)j(eac)n(h)e(lo)r(cal)g │ │ │ │ -Fp(FrontMtx)d Fu(ob)5 b(ject)36 b(con)n(tains)e(the)i │ │ │ │ -Fq(L)2759 694 y Fl(J)n(;I)2851 682 y Fu(,)i Fq(D)2981 │ │ │ │ -694 y Fl(I)5 b(;I)3108 682 y Fu(and)36 b Fq(U)3335 694 │ │ │ │ -y Fl(I)5 b(;J)3470 682 y Fu(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(19)0 │ │ │ │ +390 y Fp(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 Fu(After)f(the)g(p)r(ost-pro)r(cessing)e │ │ │ │ +(step,)j(eac)n(h)e(lo)r(cal)g Fp(FrontMtx)d Fu(ob)5 b(ject)36 │ │ │ │ +b(con)n(tains)e(the)i Fq(L)2759 694 y Fl(J)n(;I)2851 │ │ │ │ +682 y Fu(,)i Fq(D)2981 694 y Fl(I)5 b(;I)3108 682 y Fu(and)36 │ │ │ │ +b Fq(U)3335 694 y Fl(I)5 b(;J)3470 682 y Fu(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 │ │ │ │ Fk(\\solve{map")i Fu(ob)5 b(ject,)28 b(as)f(w)n(e)g(see)g(b)r(elo)n(w.) │ │ │ │ @@ -10070,32 +10069,32 @@ │ │ │ │ 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 Fu(20)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(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 Fu(If)25 b Fq(A)h Fu(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 │ │ │ │ -(then)h Fp(mtxX)d Fu(can)i(just)h(b)r(e)f(a)g(p)r(oin)n(ter)g(to)g │ │ │ │ -Fp(mtxY)p Fu(,)e(i.e.,)j Fq(P)12 b(X)0 1179 y Fu(could)27 │ │ │ │ -b(o)n(v)n(erwrite)f Fq(P)12 b(Y)18 b Fu(.)125 1303 y(The)27 │ │ │ │ -b(parallel)g(solv)n(e)f(is)h(remark)-5 b(ably)27 b(similar)f(to)i(the)g │ │ │ │ -(serial)e(solv)n(e,)h(as)g(w)n(e)g(see)g(with)h(the)g(co)r(de)g │ │ │ │ -(fragmen)n(t)e(b)r(elo)n(w.)0 1494 y Fp(solvemanager)39 │ │ │ │ -b(=)k(SubMtxManager_ne)o(w\()o(\))38 b(;)0 1594 y(SubMtxManager_in)o │ │ │ │ -(it\()o(so)o(lv)o(ema)o(na)o(ger)o(,)f(NO_LOCK,)k(0\))h(;)0 │ │ │ │ -1694 y(FrontMtx_MPI_sol)o(ve\()o(fr)o(on)o(tmt)o(x,)37 │ │ │ │ -b(mtxX,)42 b(mtxY,)f(solvemanager,)d(solvemap,)i(cpus,)828 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(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 Fu(If)25 b Fq(A)h │ │ │ │ +Fu(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(then)h Fp(mtxX)d Fu(can)i(just)h(b)r(e)f(a)g(p)r │ │ │ │ +(oin)n(ter)g(to)g Fp(mtxY)p Fu(,)e(i.e.,)j Fq(P)12 b(X)0 │ │ │ │ +1179 y Fu(could)27 b(o)n(v)n(erwrite)f Fq(P)12 b(Y)18 │ │ │ │ +b Fu(.)125 1303 y(The)27 b(parallel)g(solv)n(e)f(is)h(remark)-5 │ │ │ │ +b(ably)27 b(similar)f(to)i(the)g(serial)e(solv)n(e,)h(as)g(w)n(e)g(see) │ │ │ │ +g(with)h(the)g(co)r(de)g(fragmen)n(t)e(b)r(elo)n(w.)0 │ │ │ │ +1494 y Fp(solvemanager)39 b(=)k(SubMtxManager_ne)o(w\()o(\))38 │ │ │ │ +b(;)0 1594 y(SubMtxManager_in)o(it\()o(so)o(lv)o(ema)o(na)o(ger)o(,)f │ │ │ │ +(NO_LOCK,)k(0\))h(;)0 1694 y(FrontMtx_MPI_sol)o(ve\()o(fr)o(on)o(tmt)o │ │ │ │ +(x,)37 b(mtxX,)42 b(mtxY,)f(solvemanager,)d(solvemap,)i(cpus,)828 │ │ │ │ 1793 y(stats,)h(msglvl,)g(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))d(;)0 │ │ │ │ 1893 y(SubMtxManager_fr)o(ee\()o(so)o(lv)o(ema)o(na)o(ger)o(\))g(;)0 │ │ │ │ 2084 y Fu(The)30 b(only)g(di\013erence)f(b)r(et)n(w)n(een)h(the)h(m)n │ │ │ │ (ultithreaded)e(and)h(MPI)g(solv)n(e)f(metho)r(ds)h(is)g(the)g │ │ │ │ (presence)f(of)h(the)g(\014rst)g(tag)f(and)0 2183 y(MPI)e(comm)n │ │ │ │ (unicator)f(in)i(the)g(latter.)125 2308 y(The)i(last)f(step)i(is)f(to)g │ │ │ │ (p)r(erm)n(ute)g(the)g(ro)n(ws)f(of)h(the)g(lo)r(cal)g(solution)f │ │ │ │ @@ -10134,47 +10133,48 @@ │ │ │ │ 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(21)0 390 y Fr(5)135 b(Serial)46 │ │ │ │ -b(Solution)f(of)g Fj(AX)e Fi(=)33 b Fj(Y)71 b Fr(using)45 │ │ │ │ -b(an)g Fj(QR)g Fr(factorization)0 595 y Fu(Let)28 b(us)f(review)g(the)h │ │ │ │ -(steps)g(is)f(solving)g Fq(AX)i Fu(=)23 b Fq(Y)46 b Fu(using)27 │ │ │ │ -b(a)h Fq(QR)g Fu(factorization.)125 777 y Fo(\210)42 │ │ │ │ -b Ft(comm)m(unicate)27 b Fu(the)h(data)f(for)g(the)h(problem)f(as)g │ │ │ │ -Fq(A)p Fu(,)h Fq(X)34 b Fu(and)28 b Fq(Y)18 b Fu(.)125 │ │ │ │ -940 y Fo(\210)42 b Ft(reorder)27 b Fu(as)663 919 y Fn(e)643 │ │ │ │ -940 y Fq(A)727 919 y Fn(e)706 940 y Fq(X)i Fu(=)23 b │ │ │ │ -Fq(Y)18 b Fu(,)28 b(where)1269 919 y Fn(e)1249 940 y │ │ │ │ -Fq(A)23 b Fu(=)g Fq(AP)1549 909 y Fl(T)1629 940 y Fu(and)1812 │ │ │ │ -919 y Fn(e)1791 940 y Fq(X)29 b Fu(=)23 b Fq(P)12 b(X)7 │ │ │ │ -b Fu(.)36 b(and)27 b Fq(P)40 b Fu(is)27 b(a)g(p)r(erm)n(utation)h │ │ │ │ -(matrix.)125 1102 y Fo(\210)42 b Ft(factor)497 1081 y │ │ │ │ -Fn(e)477 1102 y Fq(A)24 b Fu(=)e Fq(QR)q Fu(,)27 b(where)h │ │ │ │ -Fq(Q)f Fu(is)g(orthogonal)f(and)h Fq(R)h Fu(is)g(upp)r(er)g │ │ │ │ -(triangular.)125 1264 y Fo(\210)42 b Ft(solv)m(e)27 b │ │ │ │ -Fq(R)503 1234 y Fl(T)555 1264 y Fq(R)q Fu(\()p Fq(P)12 │ │ │ │ -b(X)7 b Fu(\))22 b(=)h Fq(A)996 1234 y Fl(T)1048 1264 │ │ │ │ -y Fq(Y)47 b Fu(\(if)28 b(real\))f(or)g Ft(solv)m(e)g │ │ │ │ -Fq(R)1842 1234 y Fl(H)1904 1264 y Fq(R)q Fu(\()p Fq(P)12 │ │ │ │ -b(X)7 b Fu(\))23 b(=)f Fq(A)2345 1234 y Fl(H)2409 1264 │ │ │ │ -y Fq(Y)46 b Fu(\(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 Ft(SPOOLES)h Fu(to)f(solv)n(e)g(a)g(system)g(of)h(linear)f │ │ │ │ -(equations.)0 1800 y Fh(5.1)112 b(Reading)39 b(the)e(input)h │ │ │ │ -(parameters)0 1976 y Fu(The)31 b(input)h(parameters)d(are)h(iden)n │ │ │ │ -(tical)h(to)g(those)g(of)g(the)g(serial)f Fq(LU)39 b │ │ │ │ -Fu(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(21)0 │ │ │ │ +390 y Fr(5)135 b(Serial)46 b(Solution)f(of)g Fj(AX)e │ │ │ │ +Fi(=)33 b Fj(Y)71 b Fr(using)45 b(an)g Fj(QR)g Fr(factorization)0 │ │ │ │ +595 y Fu(Let)28 b(us)f(review)g(the)h(steps)g(is)f(solving)g │ │ │ │ +Fq(AX)i Fu(=)23 b Fq(Y)46 b Fu(using)27 b(a)h Fq(QR)g │ │ │ │ +Fu(factorization.)125 777 y Fo(\210)42 b Ft(comm)m(unicate)27 │ │ │ │ +b Fu(the)h(data)f(for)g(the)h(problem)f(as)g Fq(A)p Fu(,)h │ │ │ │ +Fq(X)34 b Fu(and)28 b Fq(Y)18 b Fu(.)125 940 y Fo(\210)42 │ │ │ │ +b Ft(reorder)27 b Fu(as)663 919 y Fn(e)643 940 y Fq(A)727 │ │ │ │ +919 y Fn(e)706 940 y Fq(X)i Fu(=)23 b Fq(Y)18 b Fu(,)28 │ │ │ │ +b(where)1269 919 y Fn(e)1249 940 y Fq(A)23 b Fu(=)g Fq(AP)1549 │ │ │ │ +909 y Fl(T)1629 940 y Fu(and)1812 919 y Fn(e)1791 940 │ │ │ │ +y Fq(X)29 b Fu(=)23 b Fq(P)12 b(X)7 b Fu(.)36 b(and)27 │ │ │ │ +b Fq(P)40 b Fu(is)27 b(a)g(p)r(erm)n(utation)h(matrix.)125 │ │ │ │ +1102 y Fo(\210)42 b Ft(factor)497 1081 y Fn(e)477 1102 │ │ │ │ +y Fq(A)24 b Fu(=)e Fq(QR)q Fu(,)27 b(where)h Fq(Q)f Fu(is)g(orthogonal) │ │ │ │ +f(and)h Fq(R)h Fu(is)g(upp)r(er)g(triangular.)125 1264 │ │ │ │ +y Fo(\210)42 b Ft(solv)m(e)27 b Fq(R)503 1234 y Fl(T)555 │ │ │ │ +1264 y Fq(R)q Fu(\()p Fq(P)12 b(X)7 b Fu(\))22 b(=)h │ │ │ │ +Fq(A)996 1234 y Fl(T)1048 1264 y Fq(Y)47 b Fu(\(if)28 │ │ │ │ +b(real\))f(or)g Ft(solv)m(e)g Fq(R)1842 1234 y Fl(H)1904 │ │ │ │ +1264 y Fq(R)q Fu(\()p Fq(P)12 b(X)7 b Fu(\))23 b(=)f │ │ │ │ +Fq(A)2345 1234 y Fl(H)2409 1264 y Fq(Y)46 b Fu(\(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 │ │ │ │ +Ft(SPOOLES)h Fu(to)f(solv)n(e)g(a)g(system)g(of)h(linear)f(equations.)0 │ │ │ │ +1800 y Fh(5.1)112 b(Reading)39 b(the)e(input)h(parameters)0 │ │ │ │ +1976 y Fu(The)31 b(input)h(parameters)d(are)h(iden)n(tical)h(to)g │ │ │ │ +(those)g(of)g(the)g(serial)f Fq(LU)39 b Fu(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 Fp(symmetryflag)23 │ │ │ │ b Fu(is)k(not)h(presen)n(t.)0 2330 y Fh(5.2)112 b(Comm)m(unicating)39 │ │ │ │ b(the)f(data)g(for)f(the)h(problem)0 2506 y Fu(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 Fh(5.3)112 │ │ │ │ b(Reordering)38 b(the)f(linear)h(system)0 2937 y Fu(F)-7 │ │ │ │ b(or)30 b(the)h Fq(LU)39 b Fu(factorization)30 b(of)g │ │ │ │ @@ -10212,44 +10212,44 @@ │ │ │ │ (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 Fu(22)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fu(The)j │ │ │ │ -Fp(oldToNewIV)25 b Fu(and)k Fp(newToOldIV)d Fu(v)-5 b(ariables)28 │ │ │ │ -b(are)g Fp(IV)h Fu(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 Fp(oldToNew)0 490 y │ │ │ │ -Fu(and)21 b Fp(newToOld)e Fu(v)-5 b(ariables)20 b(are)g(p)r(oin)n(ters) │ │ │ │ -h(to)g Fp(int)p Fu(,)h(whic)n(h)f(p)r(oin)n(t)h(to)f(the)h(base)f │ │ │ │ -(address)f(of)h(the)h Fp(int)f Fu(v)n(ector)f(in)h(an)h │ │ │ │ -Fp(IV)e Fu(ob)5 b(ject.)0 589 y(Once)38 b(w)n(e)g(ha)n(v)n(e)f(the)h(p) │ │ │ │ -r(erm)n(utation)g(v)n(ector,)i(w)n(e)e(apply)g(it)g(to)g(the)h(fron)n │ │ │ │ -(t)f(tree,)i(b)n(y)e(the)h Fp(ETree)p 3135 589 27 4 v │ │ │ │ -29 w(permuteVertices\()o(\))0 689 y Fu(metho)r(d.)55 │ │ │ │ -b(W)-7 b(e)34 b(need)f Fq(AP)827 659 y Fl(T)880 689 y │ │ │ │ -Fu(,)h(so)f(w)n(e)g(p)r(erm)n(ute)h(the)g Fp(InpMtx)d │ │ │ │ -Fu(ob)5 b(ject)33 b(using)g(a)g Fp(NULL)f Fu(p)r(oin)n(ter)h(for)f(the) │ │ │ │ -i(ro)n(w)e(p)r(erm)n(utation)0 789 y(\(whic)n(h)25 b(means)f(do)g(not)g │ │ │ │ -(p)r(erm)n(ute)h(the)g(ro)n(ws\))e(and)h(the)h Fp(oldToNew)c │ │ │ │ -Fu(v)n(ector)j(for)g(the)g(column)h(p)r(erm)n(utation.)35 │ │ │ │ -b(A)n(t)25 b(this)g(p)r(oin)n(t)0 888 y(the)j Fp(InpMtx)d │ │ │ │ -Fu(ob)5 b(ject)28 b(holds)f Fq(AP)1028 858 y Fl(T)1108 │ │ │ │ -888 y Fu(in)h(the)g(form)f(required)g(b)n(y)g(the)h(factorization.)125 │ │ │ │ -1013 y(The)38 b(\014nal)h(steps)f(are)g(to)g(compute)h(the)g(sym)n(b)r │ │ │ │ -(olic)f(factorization,)i(whic)n(h)e(is)h(stored)e(in)i(an)f │ │ │ │ -Fp(IVL)g Fu(ob)5 b(ject,)41 b(and)d(to)0 1112 y(p)r(erm)n(ute)28 │ │ │ │ -b(the)g(v)n(ertices)e(in)i(the)g(fron)n(t)f(tree.)37 │ │ │ │ -b(The)27 b(sym)n(b)r(olic)g(factorization)g(di\013ers)g(sligh)n(tly)g │ │ │ │ -(from)g(the)h Fq(LU)36 b Fu(case.)0 1302 y Fp(symbfacIVL)j(=)44 │ │ │ │ -b(SymbFac_initFro)o(mGr)o(ap)o(h\(f)o(ro)o(nt)o(ETr)o(ee)o(,)38 │ │ │ │ -b(graph\))j(;)0 1401 y(IVL_overwrite\(sy)o(mbf)o(ac)o(IV)o(L,)c │ │ │ │ -(oldToNewIV\))i(;)0 1501 y(IVL_sortUp\(symbf)o(acI)o(VL)o(\))e(;)0 │ │ │ │ -1600 y(ETree_permuteVer)o(tic)o(es)o(\(f)o(ron)o(tE)o(Tre)o(e,)g │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fu(The)j Fp(oldToNewIV)25 b Fu(and)k Fp(newToOldIV)d │ │ │ │ +Fu(v)-5 b(ariables)28 b(are)g Fp(IV)h Fu(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 Fp(oldToNew)0 490 y Fu(and)21 b Fp(newToOld)e │ │ │ │ +Fu(v)-5 b(ariables)20 b(are)g(p)r(oin)n(ters)h(to)g Fp(int)p │ │ │ │ +Fu(,)h(whic)n(h)f(p)r(oin)n(t)h(to)f(the)h(base)f(address)f(of)h(the)h │ │ │ │ +Fp(int)f Fu(v)n(ector)f(in)h(an)h Fp(IV)e Fu(ob)5 b(ject.)0 │ │ │ │ +589 y(Once)38 b(w)n(e)g(ha)n(v)n(e)f(the)h(p)r(erm)n(utation)g(v)n │ │ │ │ +(ector,)i(w)n(e)e(apply)g(it)g(to)g(the)h(fron)n(t)f(tree,)i(b)n(y)e │ │ │ │ +(the)h Fp(ETree)p 3135 589 27 4 v 29 w(permuteVertices\()o(\))0 │ │ │ │ +689 y Fu(metho)r(d.)55 b(W)-7 b(e)34 b(need)f Fq(AP)827 │ │ │ │ +659 y Fl(T)880 689 y Fu(,)h(so)f(w)n(e)g(p)r(erm)n(ute)h(the)g │ │ │ │ +Fp(InpMtx)d Fu(ob)5 b(ject)33 b(using)g(a)g Fp(NULL)f │ │ │ │ +Fu(p)r(oin)n(ter)h(for)f(the)i(ro)n(w)e(p)r(erm)n(utation)0 │ │ │ │ +789 y(\(whic)n(h)25 b(means)f(do)g(not)g(p)r(erm)n(ute)h(the)g(ro)n │ │ │ │ +(ws\))e(and)h(the)h Fp(oldToNew)c Fu(v)n(ector)j(for)g(the)g(column)h │ │ │ │ +(p)r(erm)n(utation.)35 b(A)n(t)25 b(this)g(p)r(oin)n(t)0 │ │ │ │ +888 y(the)j Fp(InpMtx)d Fu(ob)5 b(ject)28 b(holds)f Fq(AP)1028 │ │ │ │ +858 y Fl(T)1108 888 y Fu(in)h(the)g(form)f(required)g(b)n(y)g(the)h │ │ │ │ +(factorization.)125 1013 y(The)38 b(\014nal)h(steps)f(are)g(to)g │ │ │ │ +(compute)h(the)g(sym)n(b)r(olic)f(factorization,)i(whic)n(h)e(is)h │ │ │ │ +(stored)e(in)i(an)f Fp(IVL)g Fu(ob)5 b(ject,)41 b(and)d(to)0 │ │ │ │ +1112 y(p)r(erm)n(ute)28 b(the)g(v)n(ertices)e(in)i(the)g(fron)n(t)f │ │ │ │ +(tree.)37 b(The)27 b(sym)n(b)r(olic)g(factorization)g(di\013ers)g │ │ │ │ +(sligh)n(tly)g(from)g(the)h Fq(LU)36 b Fu(case.)0 1302 │ │ │ │ +y Fp(symbfacIVL)j(=)44 b(SymbFac_initFro)o(mGr)o(ap)o(h\(f)o(ro)o(nt)o │ │ │ │ +(ETr)o(ee)o(,)38 b(graph\))j(;)0 1401 y(IVL_overwrite\(sy)o(mbf)o(ac)o │ │ │ │ +(IV)o(L,)c(oldToNewIV\))i(;)0 1501 y(IVL_sortUp\(symbf)o(acI)o(VL)o(\)) │ │ │ │ +e(;)0 1600 y(ETree_permuteVer)o(tic)o(es)o(\(f)o(ron)o(tE)o(Tre)o(e,)g │ │ │ │ (oldToNewIV\))i(;)0 1790 y Fu(W)-7 b(e)29 b(do)g(not)f(ha)n(v)n(e)g │ │ │ │ (the)h Fq(A)808 1760 y Fl(T)861 1790 y Fq(A)g Fu(matrix)f(ob)5 │ │ │ │ b(ject,)29 b(so)f(w)n(e)g(constuct)h(the)g(sym)n(b)r(olic)g │ │ │ │ (factorization)e(using)h(the)h(fron)n(t)g(tree)f(and)0 │ │ │ │ 1889 y(the)34 b Fp(Graph)d Fu(ob)5 b(ject.)55 b(Note,)35 │ │ │ │ b(at)e(this)h(p)r(oin)n(t)g(in)f(time,)j(b)r(oth)e(the)g(graph)e(and)i │ │ │ │ (fron)n(t)f(tree)g(are)f(in)i(terms)f(of)h(the)g(original)0 │ │ │ │ @@ -10291,137 +10291,139 @@ │ │ │ │ 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(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 Fk(chevr)l(ons)p Fu(,)44 │ │ │ │ -b(in)39 b(a)g Fp(Chv)f Fu(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 Fp(SubMtx)e Fu(ob)5 │ │ │ │ -b(ject,)36 b(the)e Fp(FrontMtx)d Fu(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 Fp(ChvManager)d │ │ │ │ -Fu(ob)5 b(ject)28 b(to)g(manage)0 689 y(the)i Fp(Chv)f │ │ │ │ -Fu(ob)5 b(jects.)43 b(On)30 b(return)f Fp(facops)f Fu(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 Fp(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o(mt)o(x,)37 │ │ │ │ -b(msglvl,)k(msgFile\))f(;)0 1639 y Fh(5.6)112 b(Solving)39 │ │ │ │ -b(the)e(linear)h(system)0 1823 y Fu(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 Fq(R)2013 │ │ │ │ -1793 y Fl(T)2065 1823 y Fq(R)2150 1802 y Fn(b)2129 1823 │ │ │ │ -y Fq(X)h Fu(=)2334 1802 y Fn(b)2314 1823 y Fq(A)2376 │ │ │ │ -1793 y Fl(T)2429 1823 y Fq(Y)46 b Fu(if)28 b(real)f(or)g │ │ │ │ -Fq(R)2927 1793 y Fl(H)2989 1823 y Fq(R)3075 1802 y Fn(b)3053 │ │ │ │ -1823 y Fq(X)i Fu(=)3259 1802 y Fn(b)3239 1823 y Fq(A)3301 │ │ │ │ -1793 y Fl(H)3364 1823 y Fq(Y)47 b Fu(if)28 b(complex.)0 │ │ │ │ -2000 y Fp(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 Fu(Last,)27 b(w)n(e)g(p)r(erm)n(ute)h(the)g(ro) │ │ │ │ -n(ws)e(of)i Fp(widehatX)c Fu(bac)n(k)j(in)n(to)g Fq(X)7 │ │ │ │ -b Fu(.)0 2654 y Fp(DenseMtx_permute)o(Row)o(s\()o(mt)o(xX,)37 │ │ │ │ -b(newToOldIV\))i(;)0 2906 y Fh(5.7)112 b(Sample)39 b(Matrix)f(and)h │ │ │ │ -(Righ)m(t)d(Hand)i(Side)h(Files)0 3081 y Fu(Immediately)26 │ │ │ │ -b(b)r(elo)n(w)g(are)e(t)n(w)n(o)i(sample)f(\014les:)36 │ │ │ │ -b Fp(qr.matrix.input)20 b Fu(holds)25 b(the)i(matrix)e(input)i(and)e │ │ │ │ -Fp(qr.rhs.input)c Fu(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 Fb(\002)f │ │ │ │ -Fu(6)27 b(matrix)g Fq(A)h Fu(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 Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(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 Fk(chevr)l(ons)p │ │ │ │ +Fu(,)44 b(in)39 b(a)g Fp(Chv)f Fu(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 Fp(SubMtx)e │ │ │ │ +Fu(ob)5 b(ject,)36 b(the)e Fp(FrontMtx)d Fu(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 │ │ │ │ +Fp(ChvManager)d Fu(ob)5 b(ject)28 b(to)g(manage)0 689 │ │ │ │ +y(the)i Fp(Chv)f Fu(ob)5 b(jects.)43 b(On)30 b(return)f │ │ │ │ +Fp(facops)f Fu(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 Fp(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o │ │ │ │ +(mt)o(x,)37 b(msglvl,)k(msgFile\))f(;)0 1639 y Fh(5.6)112 │ │ │ │ +b(Solving)39 b(the)e(linear)h(system)0 1823 y Fu(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 Fq(R)2013 1793 y Fl(T)2065 1823 y Fq(R)2150 │ │ │ │ +1802 y Fn(b)2129 1823 y Fq(X)h Fu(=)2334 1802 y Fn(b)2314 │ │ │ │ +1823 y Fq(A)2376 1793 y Fl(T)2429 1823 y Fq(Y)46 b Fu(if)28 │ │ │ │ +b(real)f(or)g Fq(R)2927 1793 y Fl(H)2989 1823 y Fq(R)3075 │ │ │ │ +1802 y Fn(b)3053 1823 y Fq(X)i Fu(=)3259 1802 y Fn(b)3239 │ │ │ │ +1823 y Fq(A)3301 1793 y Fl(H)3364 1823 y Fq(Y)47 b Fu(if)28 │ │ │ │ +b(complex.)0 2000 y Fp(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 Fu(Last,)27 │ │ │ │ +b(w)n(e)g(p)r(erm)n(ute)h(the)g(ro)n(ws)e(of)i Fp(widehatX)c │ │ │ │ +Fu(bac)n(k)j(in)n(to)g Fq(X)7 b Fu(.)0 2654 y Fp(DenseMtx_permute)o │ │ │ │ +(Row)o(s\()o(mt)o(xX,)37 b(newToOldIV\))i(;)0 2906 y │ │ │ │ +Fh(5.7)112 b(Sample)39 b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files) │ │ │ │ +0 3081 y Fu(Immediately)26 b(b)r(elo)n(w)g(are)e(t)n(w)n(o)i(sample)f │ │ │ │ +(\014les:)36 b Fp(qr.matrix.input)20 b Fu(holds)25 b(the)i(matrix)e │ │ │ │ +(input)i(and)e Fp(qr.rhs.input)c Fu(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 Fb(\002)f Fu(6)27 b(matrix)g Fq(A)h Fu(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 Fp(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 Fu(24)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fr(A)134 │ │ │ │ -b Fa(allInOne.c)40 b Fr({)45 b(A)g(Serial)h Fj(LU)56 │ │ │ │ -b Fr(Driv)l(er)46 b(Program)0 625 y Fp(/*)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 │ │ │ │ -(*argv[])f(\))i({)0 1522 y(/*)131 1621 y(----------------)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)131 1721 y(all-in-one)c(program)i(to)i │ │ │ │ -(solve)e(A)i(X)h(=)f(Y)131 1920 y(\(1\))f(read)g(in)h(matrix)e(entries) │ │ │ │ -g(for)h(A)h(and)f(form)g(InpMtx)f(object)131 2020 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 2120 y(\(3\))i(form)g(Graph)g(object,)e(order)i(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(front)g(tree,)f(matrix)305 2319 │ │ │ │ -y(and)h(right)g(hand)g(side)g(and)g(get)h(the)f(symbolic)e │ │ │ │ -(factorization)131 2418 y(\(5\))i(initialize)e(the)i(front)f(matrix)h │ │ │ │ -(object)f(to)h(hold)g(the)h(factor)e(matrices)131 2518 │ │ │ │ -y(\(6\))h(compute)f(the)h(numeric)f(factorization)131 │ │ │ │ -2618 y(\(7\))h(post-process)d(the)j(factor)f(matrices)131 │ │ │ │ -2717 y(\(8\))h(compute)f(the)h(solution)131 2817 y(\(9\))g(permute)f │ │ │ │ -(the)h(solution)e(into)i(the)h(original)d(ordering)131 │ │ │ │ -3016 y(created)g(--)j(98jun04,)d(cca)131 3116 y(----------------)o(--)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(---)o(--)o(--)0 3215 y(*/)0 3315 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fr(A)134 b Fa(allInOne.c)40 b Fr({)45 b(A)g(Serial)h │ │ │ │ +Fj(LU)56 b Fr(Driv)l(er)46 b(Program)0 625 y Fp(/*)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(*argv[])f(\))i({)0 1522 y(/*)131 1621 │ │ │ │ +y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ +1721 y(all-in-one)c(program)i(to)i(solve)e(A)i(X)h(=)f(Y)131 │ │ │ │ +1920 y(\(1\))f(read)g(in)h(matrix)e(entries)g(for)h(A)h(and)f(form)g │ │ │ │ +(InpMtx)f(object)131 2020 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 │ │ │ │ +2120 y(\(3\))i(form)g(Graph)g(object,)e(order)i(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(front)g(tree,)f(matrix)305 2319 y(and)h(right)g(hand) │ │ │ │ +g(side)g(and)g(get)h(the)f(symbolic)e(factorization)131 │ │ │ │ +2418 y(\(5\))i(initialize)e(the)i(front)f(matrix)h(object)f(to)h(hold)g │ │ │ │ +(the)h(factor)e(matrices)131 2518 y(\(6\))h(compute)f(the)h(numeric)f │ │ │ │ +(factorization)131 2618 y(\(7\))h(post-process)d(the)j(factor)f │ │ │ │ +(matrices)131 2717 y(\(8\))h(compute)f(the)h(solution)131 │ │ │ │ +2817 y(\(9\))g(permute)f(the)h(solution)e(into)i(the)h(original)d │ │ │ │ +(ordering)131 3016 y(created)g(--)j(98jun04,)d(cca)131 │ │ │ │ +3116 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)0 │ │ │ │ +3215 y(*/)0 3315 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 3415 y(char)521 b(*matrixFileName,)37 │ │ │ │ +b(*rhsFileName)i(;)0 3514 y(DenseMtx)345 b(*mtxY,)41 │ │ │ │ +b(*mtxX)h(;)0 3614 y(Chv)565 b(*rootchv)41 b(;)0 3714 │ │ │ │ +y(ChvManager)257 b(*chvmanager)83 b(;)0 3813 y(SubMtxManager)125 │ │ │ │ +b(*mtxmanager)83 b(;)0 3913 y(FrontMtx)345 b(*frontmtx)40 │ │ │ │ +b(;)0 4012 y(InpMtx)433 b(*mtxA)42 b(;)0 4112 y(double)433 │ │ │ │ +b(droptol)41 b(=)i(0.0,)f(tau)h(=)g(100.)f(;)0 4212 y(double)433 │ │ │ │ +b(cpus[10])41 b(;)0 4311 y(ETree)477 b(*frontETree)39 │ │ │ │ +b(;)0 4411 y(FILE)521 b(*inputFile,)39 b(*msgFile)i(;)0 │ │ │ │ +4511 y(Graph)477 b(*graph)41 b(;)0 4610 y(int)565 b(error,)41 │ │ │ │ +b(ient,)h(irow,)g(jcol,)f(jrhs,)h(jrow,)f(msglvl,)g(ncol,)697 │ │ │ │ +4710 y(nedges,)g(nent,)h(neqns,)f(nrhs,)g(nrow,)h(pivotingflag,)c │ │ │ │ +(seed,)697 4809 y(symmetryflag,)h(type)j(;)0 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 3415 y(char)521 b(*matrixFileName,)37 b(*rhsFileName)i(;)0 │ │ │ │ -3514 y(DenseMtx)345 b(*mtxY,)41 b(*mtxX)h(;)0 3614 y(Chv)565 │ │ │ │ -b(*rootchv)41 b(;)0 3714 y(ChvManager)257 b(*chvmanager)83 │ │ │ │ -b(;)0 3813 y(SubMtxManager)125 b(*mtxmanager)83 b(;)0 │ │ │ │ -3913 y(FrontMtx)345 b(*frontmtx)40 b(;)0 4012 y(InpMtx)433 │ │ │ │ -b(*mtxA)42 b(;)0 4112 y(double)433 b(droptol)41 b(=)i(0.0,)f(tau)h(=)g │ │ │ │ -(100.)f(;)0 4212 y(double)433 b(cpus[10])41 b(;)0 4311 │ │ │ │ -y(ETree)477 b(*frontETree)39 b(;)0 4411 y(FILE)521 b(*inputFile,)39 │ │ │ │ -b(*msgFile)i(;)0 4511 y(Graph)477 b(*graph)41 b(;)0 4610 │ │ │ │ -y(int)565 b(error,)41 b(ient,)h(irow,)g(jcol,)f(jrhs,)h(jrow,)f │ │ │ │ -(msglvl,)g(ncol,)697 4710 y(nedges,)g(nent,)h(neqns,)f(nrhs,)g(nrow,)h │ │ │ │ -(pivotingflag,)c(seed,)697 4809 y(symmetryflag,)h(type)j(;)0 │ │ │ │ -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 │ │ │ │ +(-*/)0 5407 y(/*)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 0 100 a Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(25)131 390 y Fp(----------------)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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(25)131 │ │ │ │ +390 y Fp(----------------)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 │ │ │ │ @@ -10462,46 +10464,46 @@ │ │ │ │ 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 Fu(26)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)131 390 y Fp(----------------)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(\)) │ │ │ │ -i({)262 1685 y(fscanf\(inputFil)o(e,)37 b("\045d)42 b(\045d)h(\045le",) │ │ │ │ -f(&irow,)f(&jcol,)g(&value\))g(;)262 1785 y(InpMtx_inputRea)o(lE)o(ntr) │ │ │ │ -o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h(value\))f(;)131 1885 │ │ │ │ -y(})0 1984 y(})i(else)f({)131 2084 y(double)128 b(imag,)42 │ │ │ │ -b(real)f(;)131 2183 y(for)h(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f │ │ │ │ -(;)h(ient++)e(\))i({)262 2283 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 2383 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 2482 y(})0 │ │ │ │ -2582 y(})0 2682 y(fclose\(inputFile)o(\))c(;)0 2781 y(InpMtx_changeSto) │ │ │ │ -o(rag)o(eM)o(od)o(e\(m)o(tx)o(A,)f(INPMTX_BY_VECTORS)o(\))g(;)0 │ │ │ │ -2881 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)131 2980 │ │ │ │ -y(fprintf\(msgFile,)37 b("\\n\\n)k(input)h(matrix"\))e(;)131 │ │ │ │ -3080 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(m)o(txA)o(,)d(msgFile\))k │ │ │ │ -(;)131 3180 y(fflush\(msgFile\))c(;)0 3279 y(})0 3379 │ │ │ │ -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 3479 y(/*)131 3578 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ -(---)o(--)o(---)o(--)o(--)o(---)o(-)131 3678 y(STEP)42 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)131 │ │ │ │ +390 y Fp(----------------)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(\))i({)262 1685 y(fscanf\(inputFil)o(e,)37 │ │ │ │ +b("\045d)42 b(\045d)h(\045le",)f(&irow,)f(&jcol,)g(&value\))g(;)262 │ │ │ │ +1785 y(InpMtx_inputRea)o(lE)o(ntr)o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h │ │ │ │ +(value\))f(;)131 1885 y(})0 1984 y(})i(else)f({)131 2084 │ │ │ │ +y(double)128 b(imag,)42 b(real)f(;)131 2183 y(for)h(\()h(ient)f(=)h(0)h │ │ │ │ +(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\))i({)262 2283 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 2383 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 │ │ │ │ +2482 y(})0 2582 y(})0 2682 y(fclose\(inputFile)o(\))c(;)0 │ │ │ │ +2781 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o(tx)o(A,)f │ │ │ │ +(INPMTX_BY_VECTORS)o(\))g(;)0 2881 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h │ │ │ │ +({)131 2980 y(fprintf\(msgFile,)37 b("\\n\\n)k(input)h(matrix"\))e(;) │ │ │ │ +131 3080 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(m)o(txA)o(,)d │ │ │ │ +(msgFile\))k(;)131 3180 y(fflush\(msgFile\))c(;)0 3279 │ │ │ │ +y(})0 3379 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 3479 y(/*)131 3578 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(-)131 3678 y(STEP)42 │ │ │ │ b(2:)g(read)g(the)h(right)e(hand)h(side)g(matrix)f(Y)131 │ │ │ │ 3778 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(-)0 3877 y(*/)0 3977 y(inputFile)f(=)j(fopen\(rhsFileNam)o │ │ │ │ (e,)37 b("r"\))42 b(;)0 4076 y(fscanf\(inputFile)o(,)c("\045d)k │ │ │ │ (\045d",)g(&nrow,)f(&nrhs\))g(;)0 4176 y(mtxY)h(=)h(DenseMtx_new\(\))38 │ │ │ │ b(;)0 4276 y(DenseMtx_init\(mt)o(xY,)f(type,)k(0,)i(0,)g(neqns,)e │ │ │ │ (nrhs,)g(1,)i(neqns\))e(;)0 4375 y(DenseMtx_zero\(mt)o(xY\))c(;)0 │ │ │ │ @@ -10511,33 +10513,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(27)131 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(27)131 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -10566,24 +10568,25 @@ │ │ │ │ (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 Fu(28)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(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 │ │ │ │ @@ -10623,45 +10626,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(29)131 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(29)131 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -10676,47 +10679,47 @@ │ │ │ │ 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 Fu(30)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(})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 │ │ │ │ -(\))h(;)0 1685 y(ETree_free\(front)o(ETr)o(ee)o(\))f(;)0 │ │ │ │ -1785 y(IVL_free\(symbfac)o(IVL)o(\))g(;)0 1885 y(SubMtxManager_fr)o │ │ │ │ -(ee\()o(mt)o(xm)o(ana)o(ge)o(r\))g(;)0 1984 y(Graph_free\(graph)o(\))h │ │ │ │ -(;)0 2084 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(})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 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 │ │ │ │ +(--)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(\))h(;)0 1685 y(ETree_free\(front)o │ │ │ │ +(ETr)o(ee)o(\))f(;)0 1785 y(IVL_free\(symbfac)o(IVL)o(\))g(;)0 │ │ │ │ +1885 y(SubMtxManager_fr)o(ee\()o(mt)o(xm)o(ana)o(ge)o(r\))g(;)0 │ │ │ │ +1984 y(Graph_free\(graph)o(\))h(;)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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(31)0 390 y Fr(B)134 b Fa(allInOne.c)40 │ │ │ │ -b Fr({)45 b(A)g(Serial)h Fj(LU)56 b Fr(Driv)l(er)46 b(Program)0 │ │ │ │ -625 y Fp(/*)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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(31)0 │ │ │ │ +390 y Fr(B)134 b Fa(allInOne.c)40 b Fr({)45 b(A)g(Serial)h │ │ │ │ +Fj(LU)56 b Fr(Driv)l(er)46 b(Program)0 625 y Fp(/*)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 │ │ │ │ @@ -10746,17 +10749,17 @@ │ │ │ │ 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 Fu(32)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(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 │ │ │ │ (--)0 1287 y(*/)0 1386 y(if)h(\()g(argc)f(!=)h(10)f(\))i({)131 │ │ │ │ 1486 y(fprintf\(stdout,)37 b("\\n")262 1586 y("\\n)42 │ │ │ │ @@ -10795,90 +10798,92 @@ │ │ │ │ 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(33)0 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(33)0 │ │ │ │ +390 y Fp(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 Fu(34)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)131 390 y Fp(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 │ │ │ │ -1486 y(for)h(\()h(jrhs)f(=)h(0)g(;)g(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\)) │ │ │ │ -i({)392 1586 y(fscanf\(inputFile,)37 b("\045le)42 b(\045le",)f(&real,)g │ │ │ │ -(&imag\))g(;)392 1685 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 1785 y(})131 │ │ │ │ -1885 y(})0 1984 y(})0 2084 y(fclose\(inputFile)o(\))c(;)0 │ │ │ │ -2183 y(if)43 b(\()g(msglvl)e(>)i(1)g(\))h({)131 2283 │ │ │ │ -y(fprintf\(msgFile,)37 b("\\n\\n)k(rhs)i(matrix)e(in)h(original)f │ │ │ │ -(ordering"\))e(;)131 2383 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o │ │ │ │ -(\(mt)o(xY)o(,)f(msgFile\))i(;)131 2482 y(fflush\(msgFile\))d(;)0 │ │ │ │ -2582 y(})0 2682 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 2781 y(/*)131 2881 y(----------------)o(--)o(--) │ │ │ │ -o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)131 │ │ │ │ +390 y Fp(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 1486 y(for)h(\()h(jrhs)f(=)h(0)g(;)g │ │ │ │ +(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i({)392 1586 y(fscanf\(inputFile,)37 │ │ │ │ +b("\045le)42 b(\045le",)f(&real,)g(&imag\))g(;)392 1685 │ │ │ │ +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 1785 y(})131 1885 y(})0 │ │ │ │ +1984 y(})0 2084 y(fclose\(inputFile)o(\))c(;)0 2183 y(if)43 │ │ │ │ +b(\()g(msglvl)e(>)i(1)g(\))h({)131 2283 y(fprintf\(msgFile,)37 │ │ │ │ +b("\\n\\n)k(rhs)i(matrix)e(in)h(original)f(ordering"\))e(;)131 │ │ │ │ +2383 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xY)o(,)f │ │ │ │ +(msgFile\))i(;)131 2482 y(fflush\(msgFile\))d(;)0 2582 │ │ │ │ +y(})0 2682 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 2781 y(/*)131 2881 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ 2980 y(STEP)42 b(3)h(:)g(find)f(a)h(low-fill)d(ordering)131 │ │ │ │ 3080 y(\(1\))i(create)f(the)i(Graph)e(object)131 3180 │ │ │ │ y(\(2\))h(order)g(the)g(graph)f(using)h(multiple)e(minimum)h(degree)131 │ │ │ │ 3279 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)0 3379 y(*/)0 3479 y(graph)h(=)h │ │ │ │ (Graph_new\(\))c(;)0 3578 y(adjIVL)i(=)i(InpMtx_fullAdjace)o(nc)o(y\(m) │ │ │ │ o(tx)o(A\))37 b(;)0 3678 y(nedges)k(=)i(IVL_tsize\(adjIVL\))37 │ │ │ │ @@ -10896,29 +10901,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(35)479 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(35)479 │ │ │ │ +390 y Fp(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) │ │ │ │ @@ -10957,24 +10962,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 Fu(36)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)131 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)131 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -11008,27 +11013,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(37)131 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(37)131 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -11063,40 +11068,41 @@ │ │ │ │ 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 Fu(38)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(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(-*/)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 │ │ │ │ +(--)o(-*/)p eop end │ │ │ │ %%Page: 39 39 │ │ │ │ -TeXDict begin 39 38 bop 0 100 a Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(39)0 390 y Fr(C)135 b Fa(allInOne.c)40 │ │ │ │ -b Fr({)45 b(A)f(Serial)i Fj(LU)57 b Fr(Driv)l(er)45 b(Program)0 │ │ │ │ -625 y Fp(/*)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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(39)0 │ │ │ │ +390 y Fr(C)135 b Fa(allInOne.c)40 b Fr({)45 b(A)f(Serial)i │ │ │ │ +Fj(LU)57 b Fr(Driv)l(er)45 b(Program)0 625 y Fp(/*)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 │ │ │ │ @@ -11124,20 +11130,20 @@ │ │ │ │ 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 Fu(40)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)697 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)697 │ │ │ │ +390 y Fp(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 │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)131 │ │ │ │ 1386 y(find)i(out)g(the)g(identity)f(of)h(this)g(process)f(and)h(the)h │ │ │ │ (number)e(of)i(process)131 1486 y(----------------)o(--)o(--)o(---)o │ │ │ │ @@ -11177,44 +11183,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(41)131 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(41)131 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -11230,36 +11236,37 @@ │ │ │ │ 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 Fu(42)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)131 390 y Fp(----------------)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 │ │ │ │ -1984 y(})0 2084 y(})i(if)g(\()g(type)f(==)h(SPOOLES_COMPLEX)37 │ │ │ │ -b(\))43 b({)131 2183 y(double)128 b(imag,)42 b(real)f(;)131 │ │ │ │ -2283 y(for)h(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\)) │ │ │ │ -i({)262 2383 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 │ │ │ │ -b(rowind)f(+)i(irow\))e(;)262 2482 y(for)h(\()h(jcol)f(=)h(0)g(;)g │ │ │ │ -(jcol)f(<)i(nrhs)e(;)h(jcol++)e(\))i({)392 2582 y(fscanf\(inputFile,)37 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)131 │ │ │ │ +390 y Fp(----------------)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 1984 y(})0 │ │ │ │ +2084 y(})i(if)g(\()g(type)f(==)h(SPOOLES_COMPLEX)37 b(\))43 │ │ │ │ +b({)131 2183 y(double)128 b(imag,)42 b(real)f(;)131 2283 │ │ │ │ +y(for)h(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\))i({) │ │ │ │ +262 2383 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(rowind)f(+)i │ │ │ │ +(irow\))e(;)262 2482 y(for)h(\()h(jcol)f(=)h(0)g(;)g(jcol)f(<)i(nrhs)e │ │ │ │ +(;)h(jcol++)e(\))i({)392 2582 y(fscanf\(inputFile,)37 │ │ │ │ b("\045le)42 b(\045le",)f(&real,)g(&imag\))g(;)392 2682 │ │ │ │ y(DenseMtx_setCompl)o(ex)o(Ent)o(ry)o(\(mt)o(xY)o(,)c(irow,)42 │ │ │ │ b(jcol,)f(real,)h(imag\))g(;)262 2781 y(})131 2881 y(})0 │ │ │ │ 2980 y(})0 3080 y(fclose\(inputFile)o(\))c(;)0 3180 y(if)43 │ │ │ │ b(\()g(msglvl)e(>)i(2)g(\))h({)131 3279 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(rhs)i(matrix)e(in)h(original)f(ordering"\))e(;)131 │ │ │ │ 3379 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xY)o(,)f │ │ │ │ @@ -11281,19 +11288,20 @@ │ │ │ │ 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(43)131 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(43)131 │ │ │ │ +390 y Fp(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) │ │ │ │ @@ -11340,20 +11348,21 @@ │ │ │ │ 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 Fu(44)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)131 390 y Fp(----------------)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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)131 │ │ │ │ +390 y Fp(----------------)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 │ │ │ │ (owning)f(processes"\))f(;)131 1785 y(IV_writeForHuman)o(Ey)o(e\()o │ │ │ │ @@ -11388,32 +11397,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(45)131 390 y Fp(----------------)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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(45)131 │ │ │ │ +390 y Fp(----------------)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 │ │ │ │ @@ -11443,37 +11452,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 Fu(46)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)131 390 y Fp(----------------)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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)131 │ │ │ │ +390 y Fp(----------------)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 │ │ │ │ @@ -11495,21 +11504,22 @@ │ │ │ │ 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(47)131 390 y Fp(----------------)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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(47)131 │ │ │ │ +390 y Fp(----------------)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 │ │ │ │ @@ -11554,50 +11564,50 @@ │ │ │ │ (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 Fu(48)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(*/)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 │ │ │ │ -b(vtxmapIV,)j(stats,)h(msglvl,)g(msgFile,)1395 1386 y(firsttag,)f │ │ │ │ -(MPI_COMM_WORLD\))d(;)0 1486 y(if)43 b(\()g(myid)f(==)h(0)g(&&)g │ │ │ │ -(msglvl)e(>)i(0)g(\))g({)131 1586 y(fprintf\(msgFile,)37 │ │ │ │ -b("\\n\\n)k(complete)g(solution)f(in)j(old)f(ordering"\))d(;)131 │ │ │ │ -1685 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xX)o(,)f │ │ │ │ -(msgFile\))i(;)131 1785 y(fflush\(msgFile\))d(;)0 1885 │ │ │ │ -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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(*/)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 b(vtxmapIV,)j(stats,)h(msglvl,)g(msgFile,)1395 │ │ │ │ +1386 y(firsttag,)f(MPI_COMM_WORLD\))d(;)0 1486 y(if)43 │ │ │ │ +b(\()g(myid)f(==)h(0)g(&&)g(msglvl)e(>)i(0)g(\))g({)131 │ │ │ │ +1586 y(fprintf\(msgFile,)37 b("\\n\\n)k(complete)g(solution)f(in)j(old) │ │ │ │ +f(ordering"\))d(;)131 1685 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o │ │ │ │ +(\(mt)o(xX)o(,)f(msgFile\))i(;)131 1785 y(fflush\(msgFile\))d(;)0 │ │ │ │ +1885 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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(49)0 390 y Fr(D)135 b Fa(allInOne.c)40 │ │ │ │ -b Fr({)45 b(A)f(Serial)i Fj(QR)g Fr(Driv)l(er)f(Program)0 │ │ │ │ -625 y Fp(/*)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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(49)0 │ │ │ │ +390 y Fr(D)135 b Fa(allInOne.c)40 b Fr({)45 b(A)f(Serial)i │ │ │ │ +Fj(QR)g Fr(Driv)l(er)f(Program)0 625 y Fp(/*)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 │ │ │ │ @@ -11622,23 +11632,24 @@ │ │ │ │ (-*/)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 Fu(50)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)262 390 y Fp("\\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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)262 │ │ │ │ +390 y Fp("\\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 │ │ │ │ @@ -11670,33 +11681,34 @@ │ │ │ │ (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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(51)262 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(51)262 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -11722,36 +11734,37 @@ │ │ │ │ 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 Fu(52)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(*/)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 │ │ │ │ -b(msgFile\))k(;)131 1287 y(fflush\(msgFile\))c(;)0 1386 │ │ │ │ -y(})0 1486 y(frontETree)i(=)44 b(orderViaMMD\(gra)o(ph,)37 │ │ │ │ -b(seed,)k(msglvl,)g(msgFile\))f(;)0 1586 y(if)j(\()g(msglvl)e(>)i(1)g │ │ │ │ -(\))h({)131 1685 y(fprintf\(msgFile,)37 b("\\n\\n)k(front)h(tree)g │ │ │ │ -(from)g(ordering"\))d(;)131 1785 y(ETree_writeForHu)o(ma)o(nE)o(ye\()o │ │ │ │ -(fr)o(ont)o(ET)o(ree)o(,)e(msgFile\))k(;)131 1885 y(fflush\(msgFile\))c │ │ │ │ -(;)0 1984 y(})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(/*)131 2283 y(----------------)o(--) │ │ │ │ -o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)o(-)131 2383 y(STEP)42 b(4:)g(get)h(the)f(permutation,)d(permute)h │ │ │ │ -(the)j(matrix)e(and)479 2482 y(front)h(tree)g(and)g(get)h(the)f │ │ │ │ -(symbolic)e(factorization)131 2582 y(----------------)o(--)o(--)o(---)o │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(-)0 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(*/)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 b(msgFile\))k(;)131 │ │ │ │ +1287 y(fflush\(msgFile\))c(;)0 1386 y(})0 1486 y(frontETree)i(=)44 │ │ │ │ +b(orderViaMMD\(gra)o(ph,)37 b(seed,)k(msglvl,)g(msgFile\))f(;)0 │ │ │ │ +1586 y(if)j(\()g(msglvl)e(>)i(1)g(\))h({)131 1685 y(fprintf\(msgFile,) │ │ │ │ +37 b("\\n\\n)k(front)h(tree)g(from)g(ordering"\))d(;)131 │ │ │ │ +1785 y(ETree_writeForHu)o(ma)o(nE)o(ye\()o(fr)o(ont)o(ET)o(ree)o(,)e │ │ │ │ +(msgFile\))k(;)131 1885 y(fflush\(msgFile\))c(;)0 1984 │ │ │ │ +y(})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(/*)131 2283 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(-) │ │ │ │ +131 2383 y(STEP)42 b(4:)g(get)h(the)f(permutation,)d(permute)h(the)j │ │ │ │ +(matrix)e(and)479 2482 y(front)h(tree)g(and)g(get)h(the)f(symbolic)e │ │ │ │ +(factorization)131 2582 y(----------------)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ +(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(-)0 │ │ │ │ 2682 y(*/)0 2781 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 2881 y(newToOldIV)h(=)44 │ │ │ │ b(ETree_newToOldV)o(txP)o(er)o(m\(f)o(ro)o(nt)o(ETr)o(ee)o(\))38 │ │ │ │ b(;)0 2980 y(InpMtx_permute\(m)o(txA)o(,)f(NULL,)42 b │ │ │ │ (IV_entries\(oldTo)o(Ne)o(wIV)o(\)\))37 b(;)0 3080 y(InpMtx_changeSto)o │ │ │ │ (rag)o(eM)o(od)o(e\(m)o(tx)o(A,)g(INPMTX_BY_VECTORS)o(\))g(;)0 │ │ │ │ 3180 y(symbfacIVL)i(=)44 b(SymbFac_initFro)o(mGr)o(ap)o(h\(f)o(ro)o(nt) │ │ │ │ @@ -11776,36 +11789,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 Fs(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -704 100 1130 4 v 1293 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ -(Linear)f(Systems)328 b Fu(53)0 390 y Fp(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 Fs(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1058 4 v 1222 w Ft(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fs(|)i(Solving)f(Linear)f(Systems)328 b Fu(53)0 │ │ │ │ +390 y Fp(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 │ │ │ │ @@ -11829,22 +11842,23 @@ │ │ │ │ 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 Fu(54)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1102 4 v 1295 w(Octob)r(er)h(18,)g(2025)0 390 y Fp(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 │ │ │ │ +1031 4 v 1224 w(No)n(v)n(em)n(b)r(er)g(15,)h(2025)0 390 │ │ │ │ +y Fp(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 │ │ │ │ 1187 y(})0 1287 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 1386 y(/*)131 1486 y(----------------)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---) │ │ │ │ o(--)o(-)131 1586 y(STEP)42 b(9:)g(permute)f(the)h(solution)f(into)h │ │ │ │ (the)g(original)e(ordering)131 1685 y(----------------)o(--)o(--)o(---) │ │ │ │ o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ ├── 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∗ │ │ │ │ │ - October 18, 2025 │ │ │ │ │ + November 15, 2025 │ │ │ │ │ ∗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 October 18, 2025 │ │ │ │ │ + 2 SPOOLES 2.2 — Solving Linear Systems November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 SPOOLES 2.2 — Solving Linear Systems 3 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SPOOLES 2.2 — Solving Linear Systems November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 SPOOLES 2.2 — Solving Linear Systems 5 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 SPOOLES 2.2 — Solving Linear Systems November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 SPOOLES 2.2 — Solving Linear Systems 7 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 SPOOLES 2.2 — Solving Linear Systems November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 SPOOLES 2.2 — Solving Linear Systems 9 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 11 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 13 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 15 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 17 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 19 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 21 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 22 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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) ; │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 23 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 24 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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 ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 25 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 26 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ -------------------------------------------- │ │ │ │ │ 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 { │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 27 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 28 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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 ) { │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 29 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 30 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ----------- │ │ │ │ │ free memory │ │ │ │ │ ----------- │ │ │ │ │ */ │ │ │ │ │ @@ -1181,15 +1181,15 @@ │ │ │ │ │ ETree_free(frontETree) ; │ │ │ │ │ IVL_free(symbfacIVL) ; │ │ │ │ │ SubMtxManager_free(mtxmanager) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 31 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 32 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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]) ; │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 33 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 34 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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, │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 35 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 36 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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") ; │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 37 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 38 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 39 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 40 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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) ; │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 41 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 42 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ 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") ; │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 43 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 44 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ ------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 45 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 46 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 47 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 48 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ */ │ │ │ │ │ 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) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 49 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 50 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ "\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++ ) { │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 51 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 52 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ */ │ │ │ │ │ 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 │ │ │ │ │ ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ - October 18, 2025 SPOOLES 2.2—Solving Linear Systems 53 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 54 SPOOLES2.2—SolvingLinearSystems November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o BKL.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2556,23 +2556,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2746,90 +2745,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4119,16 +4127,16 @@ │ │ │ │ 2[25 47[58 11[{}6 90.9091 /CMMI10 rf /Fd 149[25 72[91 │ │ │ │ 29[45 2[71{}4 90.9091 /CMSY10 rf /Fe 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 /Ff 179[62 62 8[62 66[{}3 119.552 /CMTT12 rf /Fg 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 /Fh │ │ │ │ -139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 │ │ │ │ -45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 │ │ │ │ +45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4237,17 +4245,17 @@ │ │ │ │ 5294 y Fi(\210)45 b Fk(int)i(*cweights)28 b Fl(:)40 b(p)s(oin)m(ter)30 │ │ │ │ b(to)h(an)f Fk(int)f Fl(v)m(ector)j(of)e(size)h(3,)g │ │ │ │ Fk(cweights[0])c Fl(con)m(tains)32 b(the)e(w)m(eigh)m(t)h(of)g(the)227 │ │ │ │ 5407 y(separator,)h Fk(cweights[1])27 b Fl(and)j Fk(cweights[2])d │ │ │ │ Fl(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 Fl(2)p 136 100 1159 4 v │ │ │ │ -1340 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)h Fh(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2742 100 V 137 399 a Fi(\210)45 b Fk(int)i(*regwghts)39 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1119 4 v │ │ │ │ +1301 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)g Fh(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2781 100 V 137 399 a Fi(\210)45 b Fk(int)i(*regwghts)39 │ │ │ │ b Fl(:)62 b(p)s(oin)m(ter)41 b(to)h(an)f Fk(int)f Fl(v)m(ector)j(of)e │ │ │ │ (size)h Fk(nreg)p Fl(,)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)137 738 │ │ │ │ y Fi(\210)45 b Fk(float)i(alpha)41 b Fl(:)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 Fk(balance)46 b(=)i(max\(cweights[1],)43 │ │ │ │ @@ -4292,17 +4300,17 @@ │ │ │ │ (call)h(to)f Fk(BKL)p 2265 5125 V 34 w(clearData\(\))c │ │ │ │ Fl(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 Fk(free\(\))p Fl(.)227 │ │ │ │ 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fk(bkl)g Fl(is)g Fk(NULL)p Fl(,)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 1159 4 v 1340 100 a Fk(BKL)29 │ │ │ │ -b Fh(:)i Fg(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2695 100 V 1159 w Fl(3)0 399 y Fe(1.3.1)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1119 4 v 1301 100 a Fk(BKL)29 │ │ │ │ +b Fh(:)i Fg(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2734 100 V 1119 w Fl(3)0 399 y Fe(1.3.1)112 b(Initializer)38 │ │ │ │ b(metho)s(ds)111 590 y Fl(1.)46 b Fk(void)h(BKL_init)e(\()j(BKL)f │ │ │ │ (*bkl,)f(BPG)h(*bpg,)f(float)h(alpha)f(\))i(;)227 736 │ │ │ │ y Fl(This)34 b(metho)s(d)g(initializes)j(the)d Fk(BKL)g │ │ │ │ Fl(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 Fk(BKL)p 2868 849 29 4 v 33 w(clearData\(\))p │ │ │ │ @@ -4366,17 +4374,17 @@ │ │ │ │ y(6.)46 b Fk(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 Fl(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 Fk(flag)227 5407 y Fl(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 Fl(4)p 136 100 1159 4 v │ │ │ │ -1340 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)h Fh(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2742 100 V 337 399 a Fi(\210)45 b Fk(flag)i(=)g(1)30 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1119 4 v │ │ │ │ +1301 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)g Fh(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2781 100 V 337 399 a Fi(\210)45 b Fk(flag)i(=)g(1)30 │ │ │ │ b Fd(\000)-15 b(!)30 b Fl(random)g(coloring)h(of)g(the)g(domains)337 │ │ │ │ 558 y Fi(\210)45 b Fk(flag)i(=)g(2)30 b Fd(\000)-15 b(!)30 │ │ │ │ b Fl(one)h(blac)m(k)g(domain,)g(\()p Fk(seed)e Fl(\045)h │ │ │ │ Fk(ndom)p Fl(\),)g(rest)h(are)f(white)337 717 y Fi(\210)45 │ │ │ │ b Fk(flag)i(=)g(3)32 b Fd(\000)-15 b(!)32 b Fl(one)g(blac)m(k)i │ │ │ │ (pseudop)s(eripheral)c(domain,)j(found)e(using)g(domain)h(\()p │ │ │ │ Fk(seed)g Fl(\045)g Fk(ndom)p Fl(\))427 830 y(as)f(ro)s(ot,)g(rest)f │ │ │ │ @@ -4444,17 +4452,17 @@ │ │ │ │ b(it)g(returns)e(\()p Fd(j)p Fc(S)5 b Fd(j)21 b Fl(+)f │ │ │ │ Fd(j)p Fc(B)5 b Fd(j)20 b Fl(+)g Fd(j)p Fc(W)13 b Fd(j)p │ │ │ │ Fl(\))1714 5211 y Fa(2)1754 5244 y Fl(.)227 5407 y Fg(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(bkl)g Fl(is)g │ │ │ │ Fk(NULL)p Fl(,)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 1159 4 v 1340 100 a Fk(BKL)29 │ │ │ │ -b Fh(:)i Fg(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2695 100 V 1159 w Fl(5)111 399 y(3.)46 b Fk(float)h(BKL_eval)e(\()j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1119 4 v 1301 100 a Fk(BKL)29 │ │ │ │ +b Fh(:)i Fg(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2734 100 V 1119 w Fl(5)111 399 y(3.)46 b Fk(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 Fl(The)31 b Fd(j)p Fc(S)5 b Fd(j)p Fl(,)31 │ │ │ │ b Fd(j)p Fc(B)5 b Fd(j)31 b Fl(and)f Fd(j)p Fc(W)13 b │ │ │ │ Fd(j)31 b Fl(v)-5 b(alues)31 b(are)g(tak)m(en)h(from)e(the)h │ │ │ │ Fk(Sweight)p Fl(,)f Fk(Bweight)e Fl(and)j Fk(Wweight)d │ │ │ │ Fl(parameters.)227 662 y(If)i(min\()p Fd(j)p Fc(B)5 b │ │ │ │ Fd(j)p Fc(;)15 b Fd(j)p Fc(W)e Fd(j)p Fl(\))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 October 18, 2025 │ │ │ │ │ + 2 BKL : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + BKL : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 BKL : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 5 │ │ │ │ │ + BKL : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o BPG.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1428,23 +1428,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1618,90 +1617,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4745,19 +4753,18 @@ │ │ │ │ @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 139[32 1[33 2[42 9[37 │ │ │ │ -1[37 46 18[65 20[23 1[42 2[42 2[42 42 42 3[23 44[{}14 │ │ │ │ -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 │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 137[44 3[33 2[42 1[69 │ │ │ │ +7[37 2[46 19[62 19[23 4[42 2[42 42 42 3[23 44[{}13 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 │ │ │ │ %DVIPSBitmapFont: Fh tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4904,29 +4911,30 @@ │ │ │ │ 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(\210)42 b Fm(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 Fm(2)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(BPG)27 b Fe(:)g Fk(DRAFT)h Fe(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 125 390 a Fh(\210)42 b Fm(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 │ │ │ │ -Fj(X)7 b Fm(.)125 564 y Fh(\210)42 b Fm(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 │ │ │ │ -Fj(Y)19 b Fm(.)125 738 y Fh(\210)42 b Fm(Based)24 b(on)h(the)g(t)n(w)n │ │ │ │ -(o)g(previous)f(steps,)h(partition)g Fj(X)32 b Fm(in)n(to)25 │ │ │ │ -b(three)g(pieces)g(and)g Fj(Y)44 b Fm(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 │ │ │ │ -1035 y(\(If)21 b(these)f(terms)g(are)g(not)g(familiar,)h(see)f([)p │ │ │ │ -Fg(?)p Fm(];)j(our)d(presen)n(t)f(purp)r(ose)h(is)g(a)g(discussion)g │ │ │ │ -(of)g(soft)n(w)n(are)e(design,)k(not)e(algorithms.\))0 │ │ │ │ -1134 y(A)29 b(matc)n(hing)f(is)g(a)g(v)n(ery)f(common)h(op)r(eration)f │ │ │ │ -(on)i(a)f(bipartite)g(graph,)f(so)h(it)h(is)f(not)h(unreasonable)d(to)j │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 125 390 a Fh(\210)42 b Fm(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 Fj(X)7 b Fm(.)125 564 y Fh(\210)42 b Fm(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 Fj(Y)19 b Fm(.)125 738 y Fh(\210)42 b Fm(Based)24 │ │ │ │ +b(on)h(the)g(t)n(w)n(o)g(previous)f(steps,)h(partition)g │ │ │ │ +Fj(X)32 b Fm(in)n(to)25 b(three)g(pieces)g(and)g Fj(Y)44 │ │ │ │ +b Fm(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 1035 y(\(If)21 │ │ │ │ +b(these)f(terms)g(are)g(not)g(familiar,)h(see)f([)p Fg(?)p │ │ │ │ +Fm(];)j(our)d(presen)n(t)f(purp)r(ose)h(is)g(a)g(discussion)g(of)g │ │ │ │ +(soft)n(w)n(are)e(design,)k(not)e(algorithms.\))0 1134 │ │ │ │ +y(A)29 b(matc)n(hing)f(is)g(a)g(v)n(ery)f(common)h(op)r(eration)f(on)i │ │ │ │ +(a)f(bipartite)g(graph,)f(so)h(it)h(is)f(not)h(unreasonable)d(to)j │ │ │ │ (expand)f(the)h(data)0 1234 y(ob)5 b(ject)34 b(to)g(include)h(some)e │ │ │ │ (mec)n(hanism)h(for)g(matc)n(hing,)h(e.g.,)h(a)e Fl(mate[])e │ │ │ │ Fm(v)n(ector.)55 b(Finding)35 b(a)e(maxim)n(um)h(matc)n(hing)g(is)0 │ │ │ │ 1334 y(a)d(bit)h(more)f(tric)n(ky)g(for)g(there)g(are)g(a)g(n)n(um)n(b) │ │ │ │ r(er)h(of)f(algorithms)f(to)i(do)f(so,)h(some)f(fast,)i(some)e(slo)n │ │ │ │ (w,)h(some)f(simple,)i(some)0 1433 y(complex.)j(Whic)n(h)28 │ │ │ │ b(to)g(c)n(ho)r(ose?)125 1560 y(If)23 b(w)n(e)h(only)f(w)n(ork)n(ed)f │ │ │ │ @@ -5034,17 +5042,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 Fj(S)17 b Fi([)c Fm(\()p Fj(Ad)-9 b(j)5 │ │ │ │ b Fm(\()p Fj(S)g Fm(\))13 b Fi(\\)g Fj(B)t Fm(\))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 1227 4 v 1393 100 a Fl(BPG)26 │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fm(3)0 390 y(la)n(y)n(ers)e(to)i(the)g(wide)g │ │ │ │ +TeXDict begin 3 2 bop 83 100 1191 4 v 1357 100 a Fl(BPG)26 │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fm(3)0 390 y(la)n(y)n(ers)f(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 │ │ │ │ @@ -5105,55 +5113,55 @@ │ │ │ │ 5162 V 30 w(clearData\(\))c Fm(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 │ │ │ │ Fl(free\(\))p Fm(.)208 5407 y Fk(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fm(If)28 b Fl(bpg)f Fm(is)g Fl(NULL)p Fm(,)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 Fm(4)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(BPG)27 b Fe(:)g Fk(DRAFT)h Fe(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ -562 y Fm(There)27 b(are)g(t)n(w)n(o)f(initializer)i(metho)r(ds.)101 │ │ │ │ -731 y(1.)42 b Fl(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 Fm(This)23 b(metho)r(d)i │ │ │ │ -(initializes)e(the)h Fl(BPG)f Fm(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 Fl(Graph)22 b Fm(ob)5 b(ject)25 b(has)f │ │ │ │ -Fl(nX)42 b(+)i(nY)23 b Fm(v)n(ertices.)35 b(Note,)26 │ │ │ │ -b(the)f Fl(BPG)e Fm(ob)5 b(ject)24 b(no)n(w)g(\\o)n(wns")f(the)i │ │ │ │ -Fl(Graph)e Fm(ob)5 b(ject)24 b(and)h(so)e(will)i(free)208 │ │ │ │ -1057 y(the)31 b Fl(Graph)d Fm(ob)5 b(ject)31 b(when)g(it)g(is)g │ │ │ │ -(free'd.)46 b(The)31 b Fl(Graph)e Fm(ob)5 b(ject)30 b(ma)n(y)g(con)n │ │ │ │ -(tains)g(edges)g(b)r(et)n(w)n(een)h(no)r(des)f(in)h Fl(X)g │ │ │ │ -Fm(and)f Fl(Y)p Fm(,)208 1157 y(but)e(these)f(edges)g(are)g(sw)n(app)r │ │ │ │ -(ed)g(to)g(the)h(end)g(of)g(eac)n(h)f(adjacency)f(list)i(and)g(the)g │ │ │ │ -(size)f(of)h(eac)n(h)e(list)i(is)g(then)g(set.)208 1283 │ │ │ │ -y Fk(Err)l(or)k(che)l(cking:)44 b Fm(If)30 b Fl(bpg)f │ │ │ │ -Fm(or)g Fl(graph)f Fm(are)i Fl(NULL)p Fm(,)e(or)h(if)i │ │ │ │ -Fl(nX)26 b Fi(\024)h Fm(0,)j(or)g(if)g Fl(nY)d Fi(\024)f │ │ │ │ -Fm(0,)31 b(an)e(error)g(message)f(is)i(prin)n(ted)g(and)208 │ │ │ │ -1383 y(the)e(program)d(exits.)101 1536 y(2.)42 b Fl(void)f │ │ │ │ -(BPG_initFromColor)o(ing)c(\()43 b(BPG)f(*bpg,)g(Graph)f(*graph,)g(int) │ │ │ │ -h(colors[],)e(int)j(cX,)1428 1636 y(int)f(cY,)h(int)f(cmap[],)f(int)h │ │ │ │ -(indX[],)f(int)h(indY[])f(\))i(;)208 1762 y Fm(This)22 │ │ │ │ -b(metho)r(d)h(extracts)f(a)g(bipartite)g(graph)g(from)g(a)g │ │ │ │ -Fl(Graph)f Fm(ob)5 b(ject)22 b(where)g(the)h Fl(X)f Fm(v)n(ertices)g │ │ │ │ -(are)f(those)h(with)h Fl(cmap[])208 1862 y Fm(v)-5 b(alue)26 │ │ │ │ -b(equal)g(to)h Fl(cX)f Fm(and)h(the)g Fl(Y)f Fm(v)n(ertices)g(are)f │ │ │ │ -(those)i(with)g Fl(cmap[])d Fm(v)-5 b(alue)27 b(equal)f(to)h │ │ │ │ -Fl(cY)p Fm(.)f(The)h(v)n(ectors)e Fl(indX[])f Fm(and)208 │ │ │ │ -1962 y Fl(indY[])h Fm(hold)i(the)h(global)f(v)n(ertex)f(ids)i(of)f(the) │ │ │ │ -h Fl(X)g Fm(and)f Fl(Y)g Fm(v)n(ertices)g(resp)r(ectiv)n(ely)-7 │ │ │ │ -b(.)208 2088 y Fk(Err)l(or)32 b(che)l(cking:)43 b Fm(If)31 │ │ │ │ -b Fl(bpg)p Fm(,)e Fl(graph)p Fm(,)g Fl(colors)e Fm(or)i │ │ │ │ -Fl(cmap)g Fm(are)f Fl(NULL)p Fm(,)h(or)g(if)h Fl(cX)c │ │ │ │ -Fi(\024)h Fm(0,)j(or)f(if)i Fl(cY)26 b Fi(\024)g Fm(0,)k(or)f(if)i │ │ │ │ -Fl(cX)26 b Fm(=)h Fl(cY)o Fm(,)j(an)208 2188 y(error)25 │ │ │ │ -b(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)0 │ │ │ │ -2433 y Fb(1.2.3)112 b(Generate)38 b(induced)h(graphs)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 │ │ │ │ +b(metho)s(ds)0 562 y Fm(There)27 b(are)g(t)n(w)n(o)f(initializer)i │ │ │ │ +(metho)r(ds.)101 731 y(1.)42 b Fl(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 Fm(This)23 b(metho)r(d)i(initializes)e(the)h Fl(BPG)f │ │ │ │ +Fm(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 Fl(Graph)22 b Fm(ob)5 b(ject)25 b(has)f Fl(nX)42 │ │ │ │ +b(+)i(nY)23 b Fm(v)n(ertices.)35 b(Note,)26 b(the)f Fl(BPG)e │ │ │ │ +Fm(ob)5 b(ject)24 b(no)n(w)g(\\o)n(wns")f(the)i Fl(Graph)e │ │ │ │ +Fm(ob)5 b(ject)24 b(and)h(so)e(will)i(free)208 1057 y(the)31 │ │ │ │ +b Fl(Graph)d Fm(ob)5 b(ject)31 b(when)g(it)g(is)g(free'd.)46 │ │ │ │ +b(The)31 b Fl(Graph)e Fm(ob)5 b(ject)30 b(ma)n(y)g(con)n(tains)g(edges) │ │ │ │ +g(b)r(et)n(w)n(een)h(no)r(des)f(in)h Fl(X)g Fm(and)f │ │ │ │ +Fl(Y)p Fm(,)208 1157 y(but)e(these)f(edges)g(are)g(sw)n(app)r(ed)g(to)g │ │ │ │ +(the)h(end)g(of)g(eac)n(h)f(adjacency)f(list)i(and)g(the)g(size)f(of)h │ │ │ │ +(eac)n(h)e(list)i(is)g(then)g(set.)208 1283 y Fk(Err)l(or)k(che)l │ │ │ │ +(cking:)44 b Fm(If)30 b Fl(bpg)f Fm(or)g Fl(graph)f Fm(are)i │ │ │ │ +Fl(NULL)p Fm(,)e(or)h(if)i Fl(nX)26 b Fi(\024)h Fm(0,)j(or)g(if)g │ │ │ │ +Fl(nY)d Fi(\024)f Fm(0,)31 b(an)e(error)g(message)f(is)i(prin)n(ted)g │ │ │ │ +(and)208 1383 y(the)e(program)d(exits.)101 1536 y(2.)42 │ │ │ │ +b Fl(void)f(BPG_initFromColor)o(ing)c(\()43 b(BPG)f(*bpg,)g(Graph)f │ │ │ │ +(*graph,)g(int)h(colors[],)e(int)j(cX,)1428 1636 y(int)f(cY,)h(int)f │ │ │ │ +(cmap[],)f(int)h(indX[],)f(int)h(indY[])f(\))i(;)208 │ │ │ │ +1762 y Fm(This)22 b(metho)r(d)h(extracts)f(a)g(bipartite)g(graph)g │ │ │ │ +(from)g(a)g Fl(Graph)f Fm(ob)5 b(ject)22 b(where)g(the)h │ │ │ │ +Fl(X)f Fm(v)n(ertices)g(are)f(those)h(with)h Fl(cmap[])208 │ │ │ │ +1862 y Fm(v)-5 b(alue)26 b(equal)g(to)h Fl(cX)f Fm(and)h(the)g │ │ │ │ +Fl(Y)f Fm(v)n(ertices)g(are)f(those)i(with)g Fl(cmap[])d │ │ │ │ +Fm(v)-5 b(alue)27 b(equal)f(to)h Fl(cY)p Fm(.)f(The)h(v)n(ectors)e │ │ │ │ +Fl(indX[])f Fm(and)208 1962 y Fl(indY[])h Fm(hold)i(the)h(global)f(v)n │ │ │ │ +(ertex)f(ids)i(of)f(the)h Fl(X)g Fm(and)f Fl(Y)g Fm(v)n(ertices)g(resp) │ │ │ │ +r(ectiv)n(ely)-7 b(.)208 2088 y Fk(Err)l(or)32 b(che)l(cking:)43 │ │ │ │ +b Fm(If)31 b Fl(bpg)p Fm(,)e Fl(graph)p Fm(,)g Fl(colors)e │ │ │ │ +Fm(or)i Fl(cmap)g Fm(are)f Fl(NULL)p Fm(,)h(or)g(if)h │ │ │ │ +Fl(cX)c Fi(\024)h Fm(0,)j(or)f(if)i Fl(cY)26 b Fi(\024)g │ │ │ │ +Fm(0,)k(or)f(if)i Fl(cX)26 b Fm(=)h Fl(cY)o Fm(,)j(an)208 │ │ │ │ +2188 y(error)25 b(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ +(exits.)0 2433 y Fb(1.2.3)112 b(Generate)38 b(induced)h(graphs)0 │ │ │ │ 2605 y Fm(Sometimes)25 b(w)n(e)f(need)h(to)g(kno)n(w)f(whic)n(h)h │ │ │ │ Fl(X)g Fm(or)f Fl(Y)g Fm(v)n(ertices)g(share)g(an)g(edge,)h(e.g.,)g(in) │ │ │ │ g(the)h Fl(BKL)d Fm(ob)5 b(ject)25 b(w)n(e)g(need)g(the)g(domain-)0 │ │ │ │ 2705 y(domain)k(adjacency)g(graph)f(\(the)i(domains)f(are)g(the)g │ │ │ │ Fl(X)h Fm(v)n(ertices\))e(to)i(e\016cien)n(tly)f(implemen)n(t)h(the)g │ │ │ │ (Fiduccia-Mattheyses)0 2804 y(algorithm.)36 b(W)-7 b(e)28 │ │ │ │ b(ha)n(v)n(e)e(t)n(w)n(o)h(metho)r(ds)h(to)f(generate)g(the)h(t)n(w)n │ │ │ │ @@ -5199,17 +5207,17 @@ │ │ │ │ Fk(Err)l(or)i(che)l(cking:)39 b Fm(If)27 b Fl(bpg)p Fm(,)f │ │ │ │ Fl(list)p Fm(,)g Fl(dist)f Fm(or)i Fl(mark)e Fm(is)i │ │ │ │ Fl(NULL)p Fm(,)f(or)g(if)i Fl(root)d Fm(is)i(not)g(in)g │ │ │ │ Fl([0,)43 b(nX+nY\))p Fm(,)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 1227 4 v 1393 100 a Fl(BPG)26 │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1191 4 v 1357 100 a Fl(BPG)26 │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ b(decomp)s(osition)c(metho)s(d)0 563 y Fm(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 │ │ │ │ @@ -5304,18 +5312,18 @@ │ │ │ │ 208 5280 y(v)-5 b(alue)27 b Fl(1)g Fm(is)h(returned.)36 │ │ │ │ b(If)28 b(an)g(IO)f(error)e(is)j(encoun)n(tered)f(from)g │ │ │ │ Fl(fscanf)p Fm(,)e(zero)i(is)g(returned.)208 5407 y Fk(Err)l(or)j(che)l │ │ │ │ (cking:)38 b Fm(If)28 b Fl(bpg)f Fm(or)g Fl(fp)f Fm(is)i │ │ │ │ Fl(NULL)e Fm(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 Fm(6)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(BPG)27 b Fe(:)g Fk(DRAFT)h Fe(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 101 390 a Fm(3.)42 b Fl(int)g(BPG_readFromBina)o(ry)o(Fil)o │ │ │ │ -(e)37 b(\()44 b(BPG)e(*bpg,)f(FILE)h(*fp)h(\))g(;)208 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 101 390 a Fm(3.)42 b Fl(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 Fm(This)24 b(metho)r(d)i(reads)e(a)g Fl(BPG)g Fm(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 Fl(1)27 b Fm(is)g(returned.)37 b(If)28 b(an)f(IO)g(error)f(is)h │ │ │ │ (encoun)n(tered)g(from)g Fl(fread)p Fm(,)f(zero)h(is)g(returned.)208 │ │ │ │ 756 y Fk(Err)l(or)j(che)l(cking:)38 b Fm(If)28 b Fl(bpg)f │ │ │ │ Fm(or)g Fl(fp)f Fm(is)i Fl(NULL)e Fm(an)h(error)f(message)g(is)i(prin)n │ │ │ │ @@ -5397,17 +5405,17 @@ │ │ │ │ (the)h(input)g(\014le)f(for)g(the)h Fl(BPG)e Fm(ob)5 │ │ │ │ b(ject.)60 b(It)35 b(m)n(ust)h(b)r(e)f(of)h(the)f(form)g │ │ │ │ Fl(*.bpgf)e Fm(or)390 5407 y Fl(*.bpgb)p Fm(.)i(The)27 │ │ │ │ b Fl(BPG)g Fm(ob)5 b(ject)27 b(is)h(read)e(from)i(the)g(\014le)f(via)g │ │ │ │ (the)h Fl(BPG)p 2449 5407 V 31 w(readFromFile\(\))21 │ │ │ │ b Fm(metho)r(d.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1227 4 v 1393 100 a Fl(BPG)26 │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fm(7)307 390 y Fh(\210)42 b Fm(The)33 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1191 4 v 1357 100 a Fl(BPG)26 │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fm(7)307 390 y Fh(\210)42 b Fm(The)33 │ │ │ │ b Fl(outFile)d Fm(parameter)i(is)g(the)i(output)f(\014le)g(for)g(the)g │ │ │ │ Fl(BPG)f Fm(ob)5 b(ject.)52 b(If)33 b Fl(outFile)d Fm(is)j │ │ │ │ Fl(none)f Fm(then)h(the)g Fl(BPG)390 490 y Fm(ob)5 b(ject)30 │ │ │ │ b(is)f(not)h(written)f(to)h(a)f(\014le.)43 b(Otherwise,)30 │ │ │ │ b(the)g Fl(BPG)p 2219 490 27 4 v 30 w(writeToFile\(\))24 │ │ │ │ b Fm(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 Fl(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 October 18, 2025 │ │ │ │ │ + 2 BPG : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + BPG : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 BPG : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + BPG : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 BPG : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + BPG : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Chv.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2519,23 +2519,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2709,90 +2708,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5381,16 +5389,16 @@ │ │ │ │ /Fe load 0 Fe currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ /Ff 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 /Fg 132[52 8[43 1[58 52 58 10[46 99[{}6 │ │ │ │ 90.9091 /CMBX10 rf /Fh 149[25 2[45 45 60[91 19[71 71 │ │ │ │ -17[71 1[71{}8 90.9091 /CMSY10 rf /Fi 139[35 1[36 2[45 │ │ │ │ -9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ +17[71 1[71{}8 90.9091 /CMSY10 rf /Fi 137[48 3[36 2[45 │ │ │ │ +1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 │ │ │ │ 90.9091 /CMSL10 rf /Fj 138[56 1[42 55 1[51 2[68 47 58 │ │ │ │ 4[49 51 1[54 1[56 97[{}11 90.9091 /CMCSC10 rf /Fk 163[47 │ │ │ │ 77[35 14[{}2 66.4176 /CMSY8 rf /Fl 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 /Fm 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 │ │ │ │ @@ -5518,34 +5526,34 @@ │ │ │ │ (\(e.g.,)i Fj(umfp)-6 b(a)n(ck)34 b Fn(and)j Fj(superlu)p │ │ │ │ Fn(\),)f(then)h(w)m(e)g(can)g(mo)s(dify)0 5272 y(the)31 │ │ │ │ b Fm(Chv)e Fn(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 Fn(2)p 136 100 1153 4 v │ │ │ │ -1335 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2747 100 V 111 399 a Fn(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 Fm(Chv)p 3300 399 29 4 v 33 w(addChevron\(\))227 │ │ │ │ -511 y Fn(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 Fm(Chv)p 2548 698 V 34 w(update)p Fh(f)p Fm(S,H,N)p │ │ │ │ -Fh(g)p Fm(\(\))e Fn(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 Fm(Chv)p 2837 885 V 33 w │ │ │ │ -(assemblePostponedData\(\))227 998 y Fn(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 Fm(Chv)p 3118 1185 V 33 w(factor\(\))d Fn(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 Fn(2)p 136 100 1114 4 v │ │ │ │ +1296 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2786 100 V 111 399 a Fn(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 Fm(Chv)p 3300 399 29 │ │ │ │ +4 v 33 w(addChevron\(\))227 511 y Fn(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 Fm(Chv)p 2548 698 V │ │ │ │ +34 w(update)p Fh(f)p Fm(S,H,N)p Fh(g)p Fm(\(\))e Fn(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 │ │ │ │ +Fm(Chv)p 2837 885 V 33 w(assemblePostponedData\(\))227 │ │ │ │ +998 y Fn(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 Fm(Chv)p 3118 1185 V 33 w(factor\(\))d │ │ │ │ +Fn(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 │ │ │ │ @@ -5711,20 +5719,20 @@ │ │ │ │ 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 Fm(Chv)f Fn(ob)5 b(ject.)51 b(A)34 │ │ │ │ b Fm(Chv)f Fn(ob)5 b(ject)35 b(is)e(an)h(\\atom")p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1153 4 v 1335 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2700 100 V 1153 w Fn(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 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1114 4 v 1296 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2739 100 V 1114 w Fn(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 │ │ │ │ b(ject)33 b(so)0 737 y(that)j(its)g(data)g(\(the)g(scalars)h(that)f │ │ │ │ (describ)s(e)f(its)g(dimensions,)i(id)e(and)g(t)m(yp)s(e,)i(the)f(ro)m │ │ │ │ (w)f(and)g(column)h(indices,)0 850 y(and)d(its)g(en)m(tries\))i(are)f │ │ │ │ @@ -5790,19 +5798,19 @@ │ │ │ │ b Fm(int)i(*colind)29 b Fn(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(base)h │ │ │ │ (address)e(of)i(the)f Fm(int)g Fn(v)m(ector)i(that)f(con)m(tains)g │ │ │ │ (column)g(indices.)137 5407 y Fe(\210)45 b Fm(double)h(*entries)22 │ │ │ │ b Fn(:)37 b(p)s(oin)m(ter)23 b(to)h(the)g(base)g(address)e(of)i(the)g │ │ │ │ Fm(double)d Fn(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 Fn(4)p 136 100 1153 4 v │ │ │ │ -1335 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2747 100 V 137 399 a Fe(\210)45 b Fm(DV)i(wrkDV)29 b │ │ │ │ -Fn(:)i(ob)5 b(ject)31 b(that)g(manages)g(the)g(o)m(wned)f(w)m(orking)h │ │ │ │ -(storage.)137 586 y Fe(\210)45 b Fm(Chv)i(*next)29 b │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1114 4 v │ │ │ │ +1296 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2786 100 V 137 399 a Fe(\210)45 b Fm(DV)i(wrkDV)29 │ │ │ │ +b Fn(:)i(ob)5 b(ject)31 b(that)g(manages)g(the)g(o)m(wned)f(w)m(orking) │ │ │ │ +h(storage.)137 586 y Fe(\210)45 b Fm(Chv)i(*next)29 b │ │ │ │ Fn(:)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.)137 1011 y Fe(\210)45 b Fm(CHV)p 377 1011 29 │ │ │ │ 4 v 34 w(IS)p 507 1011 V 34 w(REAL\(chv\))27 b Fn(is)k │ │ │ │ Fm(1)f Fn(if)g Fm(chv)g Fn(has)g(real)h(en)m(tries)g(and)f │ │ │ │ Fm(0)g Fn(otherwise.)137 1198 y Fe(\210)45 b Fm(CHV)p │ │ │ │ @@ -5860,19 +5868,19 @@ │ │ │ │ (call)i(to)f Fm(Chv)p 2235 5144 V 33 w(clearData\(\))c │ │ │ │ Fn(and)i(then)h(free)g(the)h(space)f(for)227 5257 y Fm(chv)p │ │ │ │ Fn(.)227 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(chv)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 1153 4 v 1335 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2700 100 V 1153 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ -b(metho)s(ds)111 595 y Fn(1.)46 b Fm(int)h(Chv_id)f(\()i(Chv)f(*chv)f │ │ │ │ -(\))i(;)227 746 y Fn(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ +TeXDict begin 5 4 bop 91 100 1114 4 v 1296 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2739 100 V 1114 w Fn(5)0 399 y Fc(1.2.2)112 │ │ │ │ +b(Instance)38 b(metho)s(ds)111 595 y Fn(1.)46 b Fm(int)h(Chv_id)f(\()i │ │ │ │ +(Chv)f(*chv)f(\))i(;)227 746 y Fn(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ Fl(id)h Fn(of)g(the)f(ob)5 b(ject.)227 897 y Fl(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g │ │ │ │ Fm(NULL)p Fn(,)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 Fm(int)h(Chv_type)f(\()h(Chv)g(*chv) │ │ │ │ g(\))g(;)227 1236 y Fn(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ Fl(typ)-5 b(e)32 b Fn(of)e(the)h(ob)5 b(ject.)337 1425 │ │ │ │ y Fe(\210)45 b Fm(SPOOLES)p 769 1425 29 4 v 33 w(REAL)29 │ │ │ │ @@ -5930,25 +5938,25 @@ │ │ │ │ Fl(double)k(pr)-5 b(e)g(cision)32 b(c)-5 b(omplex)30 │ │ │ │ b Fn(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 Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)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 Fn(6)p 136 100 1153 4 v │ │ │ │ -1335 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2747 100 V 111 399 a Fn(8.)46 b Fm(double)g(*)i(Chv_entries)d(\()i(Chv) │ │ │ │ -g(*chv)g(\))g(;)227 548 y Fn(This)40 b(metho)s(d)h(returns)f(the)h │ │ │ │ -Fl(entries)g Fn(\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 Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ -b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)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 Fm(double)g(*)i(Chv_diagLocation)43 b(\()48 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1114 4 v │ │ │ │ +1296 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2786 100 V 111 399 a Fn(8.)46 b Fm(double)g(*)i │ │ │ │ +(Chv_entries)d(\()i(Chv)g(*chv)g(\))g(;)227 548 y Fn(This)40 │ │ │ │ +b(metho)s(d)h(returns)f(the)h Fl(entries)g Fn(\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 Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ +b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)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 Fm(double)g(*)i(Chv_diagLocation)43 b(\()48 │ │ │ │ b(Chv)f(*chv,)f(int)h(ichv)f(\))i(;)227 1145 y Fn(This)33 │ │ │ │ b(metho)s(d)f(returns)g(a)i(p)s(oin)m(ter)f(to)h(the)f(address)f(of)i │ │ │ │ (the)f(en)m(try)g(in)g(the)h Fm(ichv)p Fn('th)e(diagonal)i(lo)s │ │ │ │ (cation.)227 1257 y(F)-8 b(or)31 b(a)g(real)g(c)m(hevron,)g(to)g │ │ │ │ (\014nd)e(the)i(en)m(try)f Fm(k)h Fn(places)g(to)g(the)g(righ)m(t)g(of) │ │ │ │ f(the)h(diagonal)g(en)m(try)-8 b(,)32 b(add)e Fm(k)g │ │ │ │ Fn(to)h(the)227 1370 y(address.)62 b(T)-8 b(o)38 b(\014nd)e(an)i(en)m │ │ │ │ @@ -6020,20 +6028,20 @@ │ │ │ │ b Fn(+)g Fm(nU)o Fn(.)227 5294 y Fl(Err)-5 b(or)37 b(che)-5 │ │ │ │ b(cking:)45 b Fn(If)32 b Fm(chv)p Fn(,)h 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 │ │ │ │ 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 1153 4 v 1335 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2700 100 V 1153 w Fn(7)66 399 y(15.)46 b Fm(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 Fn(This)29 b(metho)s(d)g(\014lls)h Fm(*ppReal)e │ │ │ │ +TeXDict begin 7 6 bop 91 100 1114 4 v 1296 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2739 100 V 1114 w Fn(7)66 399 y(15.)46 │ │ │ │ +b Fm(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 Fn(This)29 b(metho)s(d)g(\014lls)h Fm(*ppReal)e │ │ │ │ Fn(with)h(a)h(p)s(oin)m(ter)g(to)h(the)f(real)g(part)g(and)f │ │ │ │ Fm(*ppImag)f Fn(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 │ │ │ │ Fm(irow)e Fn(and)h(column)g Fm(jcol)p Fn(.)58 b(Note,)39 │ │ │ │ b Fm(irow)c Fn(and)h Fm(jcol)f Fn(are)i Fl(lo)-5 b(c)g(al)227 │ │ │ │ 892 y Fn(indices,)31 b(i.e.,)h(0)25 b Fh(\024)g Fm(irow)g │ │ │ │ Fb(<)g Fm(nD)19 b Fn(+)h Fm(nL)30 b Fn(and)g(0)25 b Fh(\024)g │ │ │ │ @@ -6103,29 +6111,30 @@ │ │ │ │ b(,)33 b(the)f(w)m(orkspace)h(bu\013er)e(o)m(wned)h(b)m(y)f(the)h │ │ │ │ Fm(Chv)f Fn(ob)5 b(ject)33 b(is)f(sen)m(t)h(and)227 5253 │ │ │ │ y(receiv)m(ed.)227 5407 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)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 Fn(8)p 136 100 1153 4 v │ │ │ │ -1335 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2747 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 b(metho)s(ds)111 │ │ │ │ -604 y Fn(1.)46 b Fm(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 Fn(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 Fm(jj)e Fn(m)m(ust)h(ha)m(v)m(e)h │ │ │ │ -Fm(mark[jj])46 b(=)h(tag)36 b Fn(to)g(b)s(e)g(eligible.)59 │ │ │ │ -b(Its)227 989 y(magnitude)30 b(is)g(returned)e(in)i Fm(*pmaxval)p │ │ │ │ -Fn(.)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 Fm(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 Fn(8)p 136 100 1114 4 v │ │ │ │ +1296 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2786 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 │ │ │ │ +b(metho)s(ds)111 604 y Fn(1.)46 b Fm(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 Fn(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 Fm(jj)e │ │ │ │ +Fn(m)m(ust)h(ha)m(v)m(e)h Fm(mark[jj])46 b(=)h(tag)36 │ │ │ │ +b Fn(to)g(b)s(e)g(eligible.)59 b(Its)227 989 y(magnitude)30 │ │ │ │ +b(is)g(returned)e(in)i Fm(*pmaxval)p Fn(.)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 Fm(k)48 b(=)f(Chv)p │ │ │ │ +2654 1101 29 4 v 34 w(maxabsDiagonal11\(chv,..)o(.\))p │ │ │ │ Fn(,)227 1214 y(then)30 b(the)h(complex)g(en)m(try)g(is)f(found)f(in)h │ │ │ │ Fm(chv->entries[2*kk:2*kk+1])o Fn(.)227 1373 y Fl(Err)-5 │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fn(If)25 b Fm(chv)p Fn(,)g │ │ │ │ Fm(mark)g Fn(or)g Fm(pmaxval)f Fn(is)h Fm(NULL)p Fn(,)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 Fm(int)h(Chv_maxabsInRow11)c(\()48 │ │ │ │ b(Chv)f(*chv,)f(int)h(irow,)f(int)h(colmark[],)1373 1804 │ │ │ │ @@ -6181,38 +6190,38 @@ │ │ │ │ b Fn(If)33 b Fm(chv)g Fn(is)h Fm(NULL)f Fn(or)h Fm(irow)f │ │ │ │ Fn(is)h(not)g(in)g Fm([0,n1-1])p Fn(,)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 Fm(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 1153 4 v 1335 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2700 100 V 1153 w Fn(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 Fm(jcol)p Fn(.)52 │ │ │ │ -b(Elemen)m(t)35 b Fm(jj)f Fn(m)m(ust)g(ha)m(v)m(e)i Fm(rowmark[jj])45 │ │ │ │ -b(=)i(tag)33 b Fn(to)j(b)s(e)d(eligible.)55 b(Its)34 │ │ │ │ -b(magnitude)h(is)f(returned)227 624 y(in)28 b Fm(*pmaxval)p │ │ │ │ -Fn(.)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 │ │ │ │ -737 y(not)35 b(in)g(the)g(real)g(en)m(tries,)i(i.e.,)g(if)e │ │ │ │ -Fm(k)47 b(=)h(Chv)p 1774 737 29 4 v 33 w(maxabsColumn11\(chv,...\))p │ │ │ │ -Fn(,)30 b(then)k(the)h(complex)h(en)m(try)227 850 y(is)31 │ │ │ │ -b(found)e(in)h Fm(chv->entries[2*kk:2*kk+1)o(])p Fn(.)227 │ │ │ │ -1008 y Fl(Err)-5 b(or)38 b(che)-5 b(cking:)47 b Fn(If)33 │ │ │ │ -b Fm(chv)g Fn(is)h Fm(NULL)f Fn(or)h Fm(irow)f Fn(is)h(not)g(in)g │ │ │ │ -Fm([0,n1-1])p Fn(,)f(an)g(error)h(message)h(is)f(prin)m(ted)g(and)227 │ │ │ │ -1121 y(the)d(program)f(exits.)111 1324 y(6.)46 b Fm(double)g │ │ │ │ -(Chv_quasimax)f(\()i(Chv)g(*chv,)g(int)f(rowmark[],)f(int)i(colmark[]) │ │ │ │ -1277 1437 y(int)g(tag,)g(int)g(*pirow,)f(int)g(*pjcol)h(\))g(;)227 │ │ │ │ -1595 y Fn(This)32 b(metho)s(d)f(searc)m(hes)i(for)f(a)h │ │ │ │ -Fl(quasimax)g Fn(en)m(try)f(in)g(the)h(\(1)p Fb(;)15 │ │ │ │ -b Fn(1\))34 b(blo)s(c)m(k,)f(an)f(en)m(try)h Fb(a)3162 │ │ │ │ -1609 y Fa(i;j)3274 1595 y Fn(that)g(has)f(largest)227 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1114 4 v 1296 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2739 100 V 1114 w Fn(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 Fm(jcol)p │ │ │ │ +Fn(.)52 b(Elemen)m(t)35 b Fm(jj)f Fn(m)m(ust)g(ha)m(v)m(e)i │ │ │ │ +Fm(rowmark[jj])45 b(=)i(tag)33 b Fn(to)j(b)s(e)d(eligible.)55 │ │ │ │ +b(Its)34 b(magnitude)h(is)f(returned)227 624 y(in)28 │ │ │ │ +b Fm(*pmaxval)p Fn(.)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 737 y(not)35 b(in)g(the)g(real)g(en)m(tries,)i(i.e.,)g │ │ │ │ +(if)e Fm(k)47 b(=)h(Chv)p 1774 737 29 4 v 33 w │ │ │ │ +(maxabsColumn11\(chv,...\))p Fn(,)30 b(then)k(the)h(complex)h(en)m(try) │ │ │ │ +227 850 y(is)31 b(found)e(in)h Fm(chv->entries[2*kk:2*kk+1)o(])p │ │ │ │ +Fn(.)227 1008 y Fl(Err)-5 b(or)38 b(che)-5 b(cking:)47 │ │ │ │ +b Fn(If)33 b Fm(chv)g Fn(is)h Fm(NULL)f Fn(or)h Fm(irow)f │ │ │ │ +Fn(is)h(not)g(in)g Fm([0,n1-1])p Fn(,)f(an)g(error)h(message)h(is)f │ │ │ │ +(prin)m(ted)g(and)227 1121 y(the)d(program)f(exits.)111 │ │ │ │ +1324 y(6.)46 b Fm(double)g(Chv_quasimax)f(\()i(Chv)g(*chv,)g(int)f │ │ │ │ +(rowmark[],)f(int)i(colmark[])1277 1437 y(int)g(tag,)g(int)g(*pirow,)f │ │ │ │ +(int)g(*pjcol)h(\))g(;)227 1595 y Fn(This)32 b(metho)s(d)f(searc)m(hes) │ │ │ │ +i(for)f(a)h Fl(quasimax)g Fn(en)m(try)f(in)g(the)h(\(1)p │ │ │ │ +Fb(;)15 b Fn(1\))34 b(blo)s(c)m(k,)f(an)f(en)m(try)h │ │ │ │ +Fb(a)3162 1609 y Fa(i;j)3274 1595 y Fn(that)g(has)f(largest)227 │ │ │ │ 1708 y(magnitude)48 b(of)g(the)g(tagged)i(en)m(tries)f(in)e(ro)m(w)h │ │ │ │ Fb(i)g Fn(and)g(column)g Fb(j)5 b Fn(.)93 b(An)48 b(en)m(try)g │ │ │ │ Fb(a)3164 1722 y Fa(i;j)3292 1708 y Fn(is)g Fl(tagge)-5 │ │ │ │ b(d)49 b Fn(when)227 1820 y Fm(rowmark[i])c(=)j(tag)29 │ │ │ │ b Fn(and)g Fm(colmark[j])45 b(=)j(tag)p Fn(.)40 b(On)29 │ │ │ │ b(return,)g Fm(*pirow)f Fn(is)j(\014lled)f(with)f(the)i(ro)m(w)f(id)g │ │ │ │ (and)227 1933 y Fm(*pjcol)c Fn(is)i(\014lled)f(with)h(the)f(column)h │ │ │ │ @@ -6275,18 +6284,18 @@ │ │ │ │ (symmetric,)h(w)m(e)f(can)h(\014nd)d(a)j(1)21 b Fh(\002)g │ │ │ │ Fn(1)33 b(or)f(2)22 b Fh(\002)f Fn(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 Fh(\002)f Fn(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 Fn(10)p 182 100 1131 4 │ │ │ │ -v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 227 399 a Fl(Err)-5 b(or)47 b(che)-5 │ │ │ │ -b(cking:)67 b Fn(If)43 b Fm(chv)p Fn(,)j Fm(workDV)p │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1092 4 │ │ │ │ +v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2809 100 V 227 399 a Fl(Err)-5 b(or)47 │ │ │ │ +b(che)-5 b(cking:)67 b Fn(If)43 b Fm(chv)p Fn(,)j Fm(workDV)p │ │ │ │ Fn(,)d Fm(pirow)p Fn(,)j Fm(pjcol)c Fn(or)i Fm(pntest)e │ │ │ │ Fn(is)h Fm(NULL)p Fn(,)g(or)h(if)g Fm(tau)j Fb(<)g Fn(1)p │ │ │ │ Fb(:)p Fn(0,)h(or)c(if)227 511 y Fm(ndelay)24 b Fb(<)h │ │ │ │ Fn(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 Fn(1.)46 b Fm(void)h(Chv_updateS)e(\()i(Chv)g │ │ │ │ (*chv,)f(SubMtx)g(*mtxD,)h(SubMtx)f(*mtxU,)g(DV)h(*tempDV)f(\))h(;)227 │ │ │ │ @@ -6383,19 +6392,19 @@ │ │ │ │ b Fb(<)h Fn(0,)30 b(then)f(the)h(en)m(try)f(is)g(found)f(in)h(lo)s │ │ │ │ (cation)i Fm(\(ichv-off,)45 b(ichv\))28 b Fn(of)h(the)g(matrix.)227 │ │ │ │ 5407 y(The)35 b(v)-5 b(alue\(s\))37 b(in)e Fm(alpha[])e │ │ │ │ Fn(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 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ -g(in)e Fb(A)h Fn(\(from)g(the)g(p)s(encil)g Fb(A)15 b │ │ │ │ -Fn(+)g Fb(\033)s(B)5 b Fn(\))28 b(w)m(ould)f(ha)m(v)m(e)i │ │ │ │ +TeXDict begin 11 10 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(11)227 399 y(call)e(to)g(assem)m │ │ │ │ +(ble)g(en)m(tries)g(in)e Fb(A)h Fn(\(from)g(the)g(p)s(encil)g │ │ │ │ +Fb(A)15 b Fn(+)g Fb(\033)s(B)5 b Fn(\))28 b(w)m(ould)f(ha)m(v)m(e)i │ │ │ │ Fm(alpha[])46 b(=)i(\(1.0,0.0\))p Fn(;)26 b(to)227 511 │ │ │ │ y(assem)m(ble)32 b(en)m(tries)f(in)f Fb(B)35 b Fn(\(from)30 │ │ │ │ b(the)g(p)s(encil)h Fb(A)20 b Fn(+)g Fb(\033)s(B)5 b │ │ │ │ Fn(\))30 b(w)m(ould)g(ha)m(v)m(e)i Fm(alpha[])23 b Fn(=)i(\()p │ │ │ │ Fb(R)q(eal)r Fn(\()p Fb(\033)s Fn(\))p Fb(;)15 b(I)7 │ │ │ │ b(mag)s Fn(\()p Fb(\033)s Fn(\)\).)227 659 y Fl(Err)-5 │ │ │ │ b(or)32 b(che)-5 b(cking:)39 b Fn(If)28 b Fm(chv)p Fn(,)g │ │ │ │ @@ -6481,21 +6490,21 @@ │ │ │ │ (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 Fn(12)p 182 100 1131 │ │ │ │ -4 v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fn(If)30 b Fm(chv)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 │ │ │ │ -588 y(3.)46 b Fm(int)h(Chv_r1upd)e(\()j(Chv)f(*chv)f(\))i(;)227 │ │ │ │ -739 y Fn(This)29 b(metho)s(d)f(is)i(used)e(during)g(the)h │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1092 │ │ │ │ +4 v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er) │ │ │ │ +i(15,)f(2025)p 2809 100 V 227 399 a Fl(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)40 b Fn(If)30 b Fm(chv)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 588 y(3.)46 b Fm(int)h(Chv_r1upd)e(\()j(Chv)f(*chv)f(\))i │ │ │ │ +(;)227 739 y Fn(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 Fm(1)f Fn(if)g(the)h(piv)m(ot)g(is)f │ │ │ │ (nonzero,)h Fm(0)f Fn(otherwise.)227 1003 y Fl(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(chv)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 1192 y(4.)46 b Fm(int)h(Chv_r2upd)e(\()j(Chv)f │ │ │ │ @@ -6559,23 +6568,23 @@ │ │ │ │ 1172 5260 V 33 w(11)29 b Fn(=)-15 b Fh(\))30 b Fn(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)337 │ │ │ │ 5407 y Fe(\210)45 b Fm(CHV)p 577 5407 V 34 w(UPPER)p │ │ │ │ 851 5407 V 33 w(12)30 b Fn(=)-16 b Fh(\))30 b Fn(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 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(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 Fl(Err)-5 b(or)36 │ │ │ │ -b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(is)h Fm(NULL)e │ │ │ │ -Fn(or)i(if)g Fm(countflag)d Fn(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 Fm(int)h │ │ │ │ +TeXDict begin 13 12 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(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 Fl(Err)-5 │ │ │ │ +b(or)36 b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(is)h │ │ │ │ +Fm(NULL)e Fn(or)i(if)g Fm(countflag)d Fn(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 Fm(int)h │ │ │ │ (Chv_countBigEntries)c(\()k(Chv)g(*chv,)f(int)h(npivot,)f(int)h │ │ │ │ (pivotsizes[],)1468 968 y(int)g(countflag,)e(double)h(droptol)g(\))h(;) │ │ │ │ 227 1121 y Fn(This)31 b(metho)s(d)g(coun)m(ts)i(the)f(n)m(um)m(b)s(er)e │ │ │ │ (of)i(en)m(tries)h(in)e(the)h(c)m(hevron)g(that)g(are)g(larger)h(in)e │ │ │ │ (magnitude)h(than)227 1233 y Fm(droptol)p Fn(.)39 b Fm(countflag)28 │ │ │ │ b Fn(has)i(the)h(follo)m(wing)g(meaning.)337 1425 y Fe(\210)45 │ │ │ │ b Fm(CHV)p 577 1425 29 4 v 34 w(STRICT)p 899 1425 V 33 │ │ │ │ @@ -6649,17 +6658,17 @@ │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(or)g Fm(dvec)g │ │ │ │ Fn(is)h Fm(NULL)e Fn(or)i(if)f Fm(length)f Fn(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 Fm(copyflag)e Fn(or)j Fm(storeflag)c │ │ │ │ Fn(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 Fn(14)p 182 100 1131 │ │ │ │ -4 v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 111 399 a Fn(4.)46 b Fm(int)h │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1092 │ │ │ │ +4 v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er) │ │ │ │ +i(15,)f(2025)p 2809 100 V 111 399 a Fn(4.)46 b Fm(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 Fn(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 │ │ │ │ @@ -6748,39 +6757,39 @@ │ │ │ │ 227 5294 y(width)e Fm(nD)h Fn(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 Fm(Chv)p │ │ │ │ 1540 5407 V 33 w(swapRowsAndColumns\(\))25 b Fn(is)30 │ │ │ │ b(called.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ -b(cking:)43 b Fn(If)31 b Fm(chv)g Fn(is)h Fm(NULL)e Fn(or)i(if)g │ │ │ │ -Fm(irow)e Fn(or)i Fm(jrow)e Fn(are)i(less)g(than)f(0)i(or)e(greater)i │ │ │ │ -(than)e(or)h(equal)g(to)227 511 y Fm(nD)p Fn(,)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 Fm(void)h(Chv_swapColumns)d(\()j(Chv)g(*chv,)f(int)h(icol,)g │ │ │ │ -(int)f(jcol)h(\))h(;)227 849 y Fn(This)29 b(metho)s(d)g(sw)m(aps)g │ │ │ │ -(columns)g Fm(icol)g Fn(and)g Fm(jcol)f Fn(of)h(the)h(c)m(hevron.)41 │ │ │ │ -b(Both)30 b(columns)f(m)m(ust)h(b)s(e)e(less)i(than)227 │ │ │ │ -962 y(the)36 b(width)f Fm(nD)g Fn(of)h(the)f(c)m(hevron.)57 │ │ │ │ -b(The)35 b(column)h(ids)f(of)h(the)f(t)m(w)m(o)i(columns)f(are)g(also)g │ │ │ │ -(sw)m(app)s(ed.)56 b(If)35 b(the)227 1075 y(c)m(hevron)c(is)f │ │ │ │ -(symmetric,)h(then)f(the)h(metho)s(d)f Fm(Chv)p 1970 │ │ │ │ -1075 29 4 v 33 w(swapRowsAndColumns\(\))25 b Fn(is)30 │ │ │ │ -b(called.)227 1225 y Fl(Err)-5 b(or)35 b(che)-5 b(cking:)43 │ │ │ │ -b Fn(If)31 b Fm(chv)g Fn(is)h Fm(NULL)e Fn(or)i(if)g │ │ │ │ -Fm(icol)e Fn(or)i Fm(jcol)e Fn(are)i(less)g(than)f(0)i(or)e(greater)i │ │ │ │ -(than)e(or)h(equal)g(to)227 1338 y Fm(nD)p Fn(,)e(an)h(error)f(message) │ │ │ │ -h(is)f(prin)m(ted)g(and)g(the)h(program)f(exits.)111 │ │ │ │ -1525 y(3.)46 b Fm(void)h(Chv_swapRowsAndColumns)42 b(\()47 │ │ │ │ -b(Chv)g(*chv,)f(int)h(ii,)g(int)g(jj)g(\))h(;)227 1675 │ │ │ │ -y Fn(This)29 b(metho)s(d)g(sw)m(aps)h(ro)m(ws)f(and)g(columns)h │ │ │ │ -Fm(ii)f Fn(and)g Fm(jj)g Fn(of)h(the)g(c)m(hevron.)40 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(15)227 399 y Fl(Err)-5 │ │ │ │ +b(or)35 b(che)-5 b(cking:)43 b Fn(If)31 b Fm(chv)g Fn(is)h │ │ │ │ +Fm(NULL)e Fn(or)i(if)g Fm(irow)e Fn(or)i Fm(jrow)e Fn(are)i(less)g │ │ │ │ +(than)f(0)i(or)e(greater)i(than)e(or)h(equal)g(to)227 │ │ │ │ +511 y Fm(nD)p Fn(,)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 Fm(void)h(Chv_swapColumns)d │ │ │ │ +(\()j(Chv)g(*chv,)f(int)h(icol,)g(int)f(jcol)h(\))h(;)227 │ │ │ │ +849 y Fn(This)29 b(metho)s(d)g(sw)m(aps)g(columns)g Fm(icol)g │ │ │ │ +Fn(and)g Fm(jcol)f Fn(of)h(the)h(c)m(hevron.)41 b(Both)30 │ │ │ │ +b(columns)f(m)m(ust)h(b)s(e)e(less)i(than)227 962 y(the)36 │ │ │ │ +b(width)f Fm(nD)g Fn(of)h(the)f(c)m(hevron.)57 b(The)35 │ │ │ │ +b(column)h(ids)f(of)h(the)f(t)m(w)m(o)i(columns)f(are)g(also)g(sw)m │ │ │ │ +(app)s(ed.)56 b(If)35 b(the)227 1075 y(c)m(hevron)c(is)f(symmetric,)h │ │ │ │ +(then)f(the)h(metho)s(d)f Fm(Chv)p 1970 1075 29 4 v 33 │ │ │ │ +w(swapRowsAndColumns\(\))25 b Fn(is)30 b(called.)227 │ │ │ │ +1225 y Fl(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fn(If)31 │ │ │ │ +b Fm(chv)g Fn(is)h Fm(NULL)e Fn(or)i(if)g Fm(icol)e Fn(or)i │ │ │ │ +Fm(jcol)e Fn(are)i(less)g(than)f(0)i(or)e(greater)i(than)e(or)h(equal)g │ │ │ │ +(to)227 1338 y Fm(nD)p Fn(,)e(an)h(error)f(message)h(is)f(prin)m(ted)g │ │ │ │ +(and)g(the)h(program)f(exits.)111 1525 y(3.)46 b Fm(void)h │ │ │ │ +(Chv_swapRowsAndColumns)42 b(\()47 b(Chv)g(*chv,)f(int)h(ii,)g(int)g │ │ │ │ +(jj)g(\))h(;)227 1675 y Fn(This)29 b(metho)s(d)g(sw)m(aps)h(ro)m(ws)f │ │ │ │ +(and)g(columns)h Fm(ii)f Fn(and)g Fm(jj)g Fn(of)h(the)g(c)m(hevron.)40 │ │ │ │ b(Both)31 b(m)m(ust)e(b)s(e)g(less)h(than)g(the)227 1788 │ │ │ │ y(width)g Fm(nD)g Fn(of)g(the)h(c)m(hevron.)41 b(The)30 │ │ │ │ b(ro)m(w)g(and/or)g(column)h(ids)e(are)i(also)h(sw)m(app)s(ed.)227 │ │ │ │ 1938 y Fl(Err)-5 b(or)37 b(che)-5 b(cking:)46 b Fn(If)33 │ │ │ │ b Fm(chv)g Fn(is)g Fm(NULL)f Fn(or)i(if)f Fm(ii)g Fn(or)g │ │ │ │ Fm(jj)g Fn(are)h(less)g(than)f(0)h(or)f(greater)i(than)e(or)g(equal)h │ │ │ │ (to)g Fm(nD)p Fn(,)227 2051 y(an)d(error)f(message)h(is)f(prin)m(ted)g │ │ │ │ @@ -6828,39 +6837,39 @@ │ │ │ │ Fn(is)i(p)s(ositiv)m(e,)k(the)41 b(\014rst)g Fm(shift)f │ │ │ │ Fn(c)m(hevrons)i(are)g(remo)m(v)m(ed)g(from)f(the)h(c)m(hevron.)75 │ │ │ │ b(If)41 b Fm(shift)f Fn(is)227 5407 y(negativ)m(e,)j(the)38 │ │ │ │ b Fm(shift)f Fn(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 Fn(16)p 182 100 1131 │ │ │ │ -4 v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 227 399 a Fn(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 │ │ │ │ -Fm(Chv)e Fn(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 Fl(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g │ │ │ │ -Fm(NULL)f Fn(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 Fm(void)h(Chv_fill11block)d(\()j │ │ │ │ -(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 1315 y Fn(This)27 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1092 │ │ │ │ +4 v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er) │ │ │ │ +i(15,)f(2025)p 2809 100 V 227 399 a Fn(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 Fm(Chv)e Fn(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 Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ +b Fm(chv)g Fn(is)g Fm(NULL)f Fn(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 Fm(void)h │ │ │ │ +(Chv_fill11block)d(\()j(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 │ │ │ │ +1315 y Fn(This)27 b(metho)s(d)h(is)g(used)f(to)h(\014ll)g(a)h │ │ │ │ +Fm(A2)e Fn(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 Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 │ │ │ │ +1428 y(c)m(hevron.)227 1601 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ +b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g │ │ │ │ +Fm(NULL)p Fn(,)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 Fm(void)h(Chv_fill12block)d(\()j │ │ │ │ +(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 2006 y Fn(This)27 │ │ │ │ b(metho)s(d)h(is)g(used)f(to)h(\014ll)g(a)h Fm(A2)e Fn(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 Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 1428 │ │ │ │ -y(c)m(hevron.)227 1601 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ -b Fn(If)30 b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p │ │ │ │ -Fn(,)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 Fm(void)h(Chv_fill12block)d(\()j(Chv)g │ │ │ │ -(*chv,)f(A2)h(*mtx)g(\))h(;)227 2006 y Fn(This)27 b(metho)s(d)h(is)g │ │ │ │ -(used)f(to)h(\014ll)g(a)h Fm(A2)e Fn(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 Fn(2\))30 b(blo)s(c)m(k)f(of)f(the)227 2119 │ │ │ │ y(c)m(hevron.)227 2292 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p │ │ │ │ Fn(,)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 Fm(void)h(Chv_fill21block)d(\()j(Chv)g │ │ │ │ (*chv,)f(A2)h(*mtx)g(\))h(;)227 2697 y Fn(This)27 b(metho)s(d)h(is)g │ │ │ │ (used)f(to)h(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i(ob)5 │ │ │ │ @@ -6892,43 +6901,43 @@ │ │ │ │ y(12.)46 b Fm(void)h(Chv_zero)e(\()j(Chv)f(*chv)f(\))i(;)227 │ │ │ │ 5234 y Fn(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 Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fn(If)30 b Fm(chv)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: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ -b(metho)s(ds)111 592 y Fn(1.)46 b Fm(void)h(Chv_writeForHumanEye)42 │ │ │ │ -b(\()48 b(Chv)f(*chv,)f(FILE)h(*fp)f(\))i(;)227 739 y │ │ │ │ -Fn(This)30 b(metho)s(d)g(writes)g(a)h Fm(Chv)e Fn(ob)5 │ │ │ │ -b(ject)32 b(to)f(a)f(\014le)h(in)f(an)g(easily)i(readable)f(format.)227 │ │ │ │ -887 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ -b Fm(chv)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 │ │ │ │ -1068 y(2.)46 b Fm(void)h(Chv_writeForMatlab)c(\()k(Chv)g(*chv,)f(char)h │ │ │ │ -(*chvname,)e(FILE)i(*fp)g(\))g(;)227 1215 y Fn(This)33 │ │ │ │ -b(metho)s(d)f(writes)i(a)f Fm(Chv)g Fn(ob)5 b(ject)34 │ │ │ │ -b(to)g(a)f(\014le)h(in)f(a)g(matlab)h(format.)50 b(F)-8 │ │ │ │ -b(or)34 b(a)g(real)g(c)m(hevron,)g(a)g(sample)227 1328 │ │ │ │ -y(line)d(is)227 1535 y Fm(a\(10,5\))46 b(=)95 b(-1.550328201511e-01)43 │ │ │ │ -b(;)227 1742 y Fn(where)30 b(c)m(h)m(vname)h(=)f Fm("a")p │ │ │ │ -Fn(.)40 b(F)-8 b(or)31 b(a)g(complex)g(c)m(hevron,)g(a)g(sample)f(line) │ │ │ │ -h(is)227 1949 y Fm(a\(10,5\))46 b(=)95 b(-1.550328201511e-01)43 │ │ │ │ -b(+)143 b(1.848033378871e+00*i;)227 2156 y Fn(where)32 │ │ │ │ -b(c)m(h)m(vname)i(=)e Fm("a")p Fn(.)47 b(The)32 b(matrix)h(indices)g │ │ │ │ -(come)g(from)g(the)f Fm(rowind[])f Fn(and)h Fm(colind[])e │ │ │ │ -Fn(v)m(ectors,)227 2269 y(and)g(are)h(incremen)m(ted)g(b)m(y)f(one)h │ │ │ │ -(to)g(follo)m(w)g(the)g(Matlab)h(and)d(F)m(OR)-8 b(TRAN)31 │ │ │ │ -b(con)m(v)m(en)m(tion.)227 2416 y Fl(Err)-5 b(or)45 b(che)-5 │ │ │ │ -b(cking:)63 b Fn(If)42 b Fm(chv)p Fn(,)i Fm(chvname)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 2529 y(returned.)0 │ │ │ │ -2835 y Ff(1.3)135 b(Driv)l(er)46 b(programs)g(for)f(the)g │ │ │ │ +TeXDict begin 17 16 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(17)0 399 y Fc(1.2.12)113 │ │ │ │ +b(IO)37 b(metho)s(ds)111 592 y Fn(1.)46 b Fm(void)h │ │ │ │ +(Chv_writeForHumanEye)42 b(\()48 b(Chv)f(*chv,)f(FILE)h(*fp)f(\))i(;) │ │ │ │ +227 739 y Fn(This)30 b(metho)s(d)g(writes)g(a)h Fm(Chv)e │ │ │ │ +Fn(ob)5 b(ject)32 b(to)f(a)f(\014le)h(in)f(an)g(easily)i(readable)f │ │ │ │ +(format.)227 887 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fn(If)30 b Fm(chv)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 1068 y(2.)46 b Fm(void)h(Chv_writeForMatlab)c(\()k(Chv)g │ │ │ │ +(*chv,)f(char)h(*chvname,)e(FILE)i(*fp)g(\))g(;)227 1215 │ │ │ │ +y Fn(This)33 b(metho)s(d)f(writes)i(a)f Fm(Chv)g Fn(ob)5 │ │ │ │ +b(ject)34 b(to)g(a)f(\014le)h(in)f(a)g(matlab)h(format.)50 │ │ │ │ +b(F)-8 b(or)34 b(a)g(real)g(c)m(hevron,)g(a)g(sample)227 │ │ │ │ +1328 y(line)d(is)227 1535 y Fm(a\(10,5\))46 b(=)95 b │ │ │ │ +(-1.550328201511e-01)43 b(;)227 1742 y Fn(where)30 b(c)m(h)m(vname)h(=) │ │ │ │ +f Fm("a")p Fn(.)40 b(F)-8 b(or)31 b(a)g(complex)g(c)m(hevron,)g(a)g │ │ │ │ +(sample)f(line)h(is)227 1949 y Fm(a\(10,5\))46 b(=)95 │ │ │ │ +b(-1.550328201511e-01)43 b(+)143 b(1.848033378871e+00*i;)227 │ │ │ │ +2156 y Fn(where)32 b(c)m(h)m(vname)i(=)e Fm("a")p Fn(.)47 │ │ │ │ +b(The)32 b(matrix)h(indices)g(come)g(from)g(the)f Fm(rowind[])f │ │ │ │ +Fn(and)h Fm(colind[])e Fn(v)m(ectors,)227 2269 y(and)g(are)h(incremen)m │ │ │ │ +(ted)g(b)m(y)f(one)h(to)g(follo)m(w)g(the)g(Matlab)h(and)d(F)m(OR)-8 │ │ │ │ +b(TRAN)31 b(con)m(v)m(en)m(tion.)227 2416 y Fl(Err)-5 │ │ │ │ +b(or)45 b(che)-5 b(cking:)63 b Fn(If)42 b Fm(chv)p Fn(,)i │ │ │ │ +Fm(chvname)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 2529 │ │ │ │ +y(returned.)0 2835 y Ff(1.3)135 b(Driv)l(er)46 b(programs)g(for)f(the)g │ │ │ │ Fd(Chv)60 b(object)111 3060 y Fn(1.)46 b Fm(test_addChevron)e(msglvl)i │ │ │ │ (msgFile)g(nD)h(nU)g(type)g(symflag)f(seed)g(alphareal)g(alphaimag)227 │ │ │ │ 3207 y Fn(This)36 b(driv)m(er)g(program)g(tests)h(the)g │ │ │ │ Fm(Chv)p 1612 3207 29 4 v 34 w(addChevron)c Fn(metho)s(d.)59 │ │ │ │ b(Use)36 b(the)h(script)f(\014le)h Fm(do)p 3395 3207 │ │ │ │ V 34 w(addChevron)227 3320 y Fn(for)28 b(testing.)41 │ │ │ │ b(When)27 b(the)h(output)f(\014le)h(is)g(loaded)g(in)m(to)h(matlab,)g │ │ │ │ @@ -6962,18 +6971,18 @@ │ │ │ │ Fn(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 Fn(+)g Fb(\013B)5 │ │ │ │ b Fn(,)31 b(the)f(en)m(tries)h(of)g Fb(B)j Fn(will)d(b)s(e)f(loaded)h │ │ │ │ (with)f Fm(alpha)e Fn(set)427 5407 y(equal)j(to)g Fb(\013)p │ │ │ │ Fn([0)c(:)e(1].)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1131 │ │ │ │ -4 v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 111 399 a Fn(2.)46 b Fm(test_assmbChv)e(msglvl)j │ │ │ │ -(msgFile)e(nDJ)i(nUJ)g(nDI)g(nUI)g(type)g(symflag)e(seed)227 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1092 │ │ │ │ +4 v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er) │ │ │ │ +i(15,)f(2025)p 2809 100 V 111 399 a Fn(2.)46 b Fm(test_assmbChv)e │ │ │ │ +(msglvl)j(msgFile)e(nDJ)i(nUJ)g(nDI)g(nUI)g(type)g(symflag)e(seed)227 │ │ │ │ 553 y Fn(This)30 b(driv)m(er)h(program)g(tests)g(the)h │ │ │ │ Fm(Chv)p 1585 553 29 4 v 33 w(assembleChv)c Fn(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 Fn(in)m(to)h Fb(T)3826 567 y Fa(J)3875 │ │ │ │ 553 y Fn(,)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 │ │ │ │ (factorization)i(when)227 779 y(piv)m(oting)42 b(is)f(enabled.)72 │ │ │ │ @@ -7049,21 +7058,21 @@ │ │ │ │ 881 5144 V 32 w(NONSYMMETRIC)p Fn(.)337 5294 y Fe(\210)45 │ │ │ │ b Fn(The)32 b Fm(pivotingflag)d Fn(parameter)k(is)g(the)g(piv)m(oting)g │ │ │ │ (\015ag)g(|)g Fm(SPOOLES)p 2906 5294 V 32 w(NO)p 3034 │ │ │ │ 5294 V 34 w(PIVOTING)d Fn(for)j(no)f(piv-)427 5407 y(oting,)g │ │ │ │ Fm(SPOOLES)p 1027 5407 V 32 w(PIVOTING)c Fn(for)j(piv)m(oting.)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(19)337 399 y Fe(\210)45 b Fn(The)35 │ │ │ │ -b Fm(storeflag)e Fn(parameter)j(is)g(the)g(storage)h(\015ag,)g(to)g │ │ │ │ -(store)f(b)m(y)f(ro)m(ws,)i(use)f Fm(SPOOLES)p 3528 399 │ │ │ │ -29 4 v 32 w(BY)p 3656 399 V 34 w(ROWS)p Fn(,)427 511 │ │ │ │ -y(to)31 b(store)g(b)m(y)g(columns,)f(use)g Fm(SPOOLES)p │ │ │ │ +TeXDict begin 19 18 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(19)337 399 y Fe(\210)45 │ │ │ │ +b Fn(The)35 b Fm(storeflag)e Fn(parameter)j(is)g(the)g(storage)h │ │ │ │ +(\015ag,)g(to)g(store)f(b)m(y)f(ro)m(ws,)i(use)f Fm(SPOOLES)p │ │ │ │ +3528 399 29 4 v 32 w(BY)p 3656 399 V 34 w(ROWS)p Fn(,)427 │ │ │ │ +511 y(to)31 b(store)g(b)m(y)g(columns,)f(use)g Fm(SPOOLES)p │ │ │ │ 1766 511 V 32 w(BY)p 1894 511 V 34 w(COLUMNS)p Fn(.)337 │ │ │ │ 651 y Fe(\210)45 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.)111 853 y(4.)46 b Fm │ │ │ │ (test_copyBigEntriesToVect)o(or)c(msglvl)k(msgFile)g(nD)h(nU)g(type)g │ │ │ │ (symflag)1420 966 y(pivotingflag)e(storeflag)g(seed)i(droptol)227 │ │ │ │ 1113 y Fn(This)41 b(driv)m(er)h(program)f(tests)i(the)f │ │ │ │ Fm(Chv)p 1639 1113 V 33 w(copyBigEntriesToVector)36 b │ │ │ │ @@ -7135,21 +7144,21 @@ │ │ │ │ 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 Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(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: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1131 │ │ │ │ -4 v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 337 399 a Fe(\210)45 b Fn(The)30 b │ │ │ │ -Fm(nD)g Fn(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.)337 551 │ │ │ │ -y Fe(\210)45 b Fn(The)30 b Fm(nU)g Fn(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.)337 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1092 │ │ │ │ +4 v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er) │ │ │ │ +i(15,)f(2025)p 2809 100 V 337 399 a Fe(\210)45 b Fn(The)30 │ │ │ │ +b Fm(nD)g Fn(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.)337 │ │ │ │ +551 y Fe(\210)45 b Fn(The)30 b Fm(nU)g Fn(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.)337 │ │ │ │ 703 y Fe(\210)45 b Fn(The)30 b Fm(type)f Fn(parameter)i(denotes)g(the)g │ │ │ │ (t)m(yp)s(e)f(of)h(en)m(tries)g(|)f Fm(SPOOLES)p 2818 │ │ │ │ 703 29 4 v 32 w(REAL)g Fn(or)g Fm(SPOOLES)p 3519 703 │ │ │ │ V 32 w(COMPLEX)337 855 y Fe(\210)45 b Fn(The)20 b Fm(symflag)e │ │ │ │ Fn(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g Fm(SPOOLES)p │ │ │ │ 2640 855 V 33 w(SYMMETRIC)p Fn(,)e Fm(SPOOLES)p 3484 │ │ │ │ 855 V 32 w(HERMITIAN)427 968 y Fn(or)31 b Fm(SPOOLES)p │ │ │ │ @@ -7217,20 +7226,20 @@ │ │ │ │ b Fm(rowerror)p Fn(,)f Fm(colerror)p Fn(,)h Fm(rowerror11)p │ │ │ │ Fn(,)e Fm(colerror11)f Fn(and)h Fm(diag11error)p Fn(.)59 │ │ │ │ b(All)38 b(should)f(b)s(e)227 5067 y(zero.)337 5294 y │ │ │ │ Fe(\210)45 b Fn(The)f 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: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 91 100 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(21)337 399 y Fe(\210)45 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 Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ +TeXDict begin 21 20 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(21)337 399 y Fe(\210)45 │ │ │ │ +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 Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)337 772 y Fe(\210)45 b Fn(The)30 b Fm(nD)g Fn(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.)337 920 y Fe(\210)45 b Fn(The)30 │ │ │ │ b Fm(nU)g Fn(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.)337 1068 y Fe(\210)45 │ │ │ │ @@ -7297,18 +7306,18 @@ │ │ │ │ (\(1,1\))i(blo)s(c)m(k.)337 5259 y Fe(\210)45 b Fn(The)30 │ │ │ │ b Fm(nU)g Fn(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.)337 5407 y Fe(\210)45 │ │ │ │ b Fn(The)30 b Fm(type)f Fn(parameter)i(denotes)g(the)g(t)m(yp)s(e)f(of) │ │ │ │ h(en)m(tries)g(|)f Fm(SPOOLES)p 2818 5407 V 32 w(REAL)g │ │ │ │ Fn(or)g Fm(SPOOLES)p 3519 5407 V 32 w(COMPLEX)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1131 │ │ │ │ -4 v 1313 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2770 100 V 337 399 a Fe(\210)45 b Fn(The)20 b │ │ │ │ -Fm(symflag)e Fn(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1092 │ │ │ │ +4 v 1274 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(No)m(v)m(em)m(b)s(er) │ │ │ │ +i(15,)f(2025)p 2809 100 V 337 399 a Fe(\210)45 b Fn(The)20 │ │ │ │ +b Fm(symflag)e Fn(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g │ │ │ │ Fm(SPOOLES)p 2640 399 29 4 v 33 w(SYMMETRIC)p Fn(,)e │ │ │ │ Fm(SPOOLES)p 3484 399 V 32 w(HERMITIAN)427 511 y Fn(or)31 │ │ │ │ b Fm(SPOOLES)p 881 511 V 32 w(NONSYMMETRIC)p Fn(.)337 │ │ │ │ 659 y Fe(\210)45 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.)66 876 y(10.)46 b Fm(test_swap)g │ │ │ │ (msglvl)g(msgFile)f(nD)j(nU)f(type)f(symflag)g(seed)227 │ │ │ │ 1027 y Fn(This)26 b(driv)m(er)g(program)g(tests)h(three)g(metho)s(ds:) │ │ │ │ @@ -7383,23 +7392,23 @@ │ │ │ │ 5260 y Fe(\210)k Fn(The)30 b Fm(ncolT)f Fn(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 Fn(.)337 5407 y Fe(\210)45 │ │ │ │ b Fn(The)30 b Fm(nDT)g Fn(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 Fn(.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 1131 4 v 1312 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2677 100 V 1131 w Fn(23)337 399 y Fe(\210)45 b Fn(The)30 │ │ │ │ -b Fm(ncolU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f │ │ │ │ -(in)g Fb(U)10 b Fn(.)337 545 y Fe(\210)45 b Fn(The)30 │ │ │ │ -b Fm(nrowD)f Fn(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 Fn(.)337 691 y Fe(\210)45 │ │ │ │ -b Fn(The)30 b Fm(nentU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e │ │ │ │ -(en)m(tries)i(in)f Fb(U)10 b Fn(,)31 b(ignored)f(if)h │ │ │ │ +TeXDict begin 23 22 bop 91 100 1092 4 v 1273 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2716 100 V 1092 w Fn(23)337 399 y Fe(\210)45 │ │ │ │ +b Fn(The)30 b Fm(ncolU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e │ │ │ │ +(of)i(columns)f(in)g Fb(U)10 b Fn(.)337 545 y Fe(\210)45 │ │ │ │ +b Fn(The)30 b Fm(nrowD)f Fn(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 Fn(.)337 │ │ │ │ +691 y Fe(\210)45 b Fn(The)30 b Fm(nentU)f Fn(parameter)i(is)f(the)h(n)m │ │ │ │ +(um)m(b)s(er)e(en)m(tries)i(in)f Fb(U)10 b Fn(,)31 b(ignored)f(if)h │ │ │ │ Fm(sparsityflag)44 b(=)j(0)p Fn(.)337 837 y Fe(\210)e │ │ │ │ Fn(The)30 b Fm(offset)f Fn(parameter)i(is)f(the)h(o\013set)g(of)g │ │ │ │ (\014rst)e(index)h(in)g Fb(T)43 b Fn(from)30 b(the)h(last)g(index)f(in) │ │ │ │ g Fb(D)s Fn(.)337 983 y Fe(\210)45 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: 24 24 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Chv : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 5 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 15 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 17 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 19 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 Chv : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 21 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 22 Chv : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 23 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ChvList.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1763,23 +1763,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1953,90 +1952,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3302,17 +3310,17 @@ │ │ │ │ 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 137[62 1[62 62 9[62 62 27[62 8[62 67[{}7 119.552 │ │ │ │ /CMTT12 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 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ -18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ -/CMSL10 rf │ │ │ │ +90.9091 /CMTI10 rf /Ff 137[48 3[36 2[45 1[76 7[40 2[51 │ │ │ │ +19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3423,19 +3431,19 @@ │ │ │ │ (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 Fh(ChvList)d Fi(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 Fh(ChvList)e │ │ │ │ Fi(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 Fi(2)p 136 100 1058 4 v │ │ │ │ -1240 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 0 399 a Fi(F)-8 b(or)35 b(a)g(m)m(ultithreaded)g │ │ │ │ -(factorization)i(there)d(is)h(one)f Fh(ChvList)f Fi(ob)5 │ │ │ │ -b(ject)35 b(that)g(is)g(shared)e(b)m(y)i(all)g(threads.)52 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1019 4 v │ │ │ │ +1201 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 0 399 a Fi(F)-8 b(or)35 b(a)g(m)m │ │ │ │ +(ultithreaded)g(factorization)i(there)d(is)h(one)f Fh(ChvList)f │ │ │ │ +Fi(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 Fh(ChvList)e │ │ │ │ Fi(ob)5 b(ject)23 b(is)f(a)g Fh(Lock)f Fi(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 │ │ │ │ Fh(Lock)f Fi(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 │ │ │ │ @@ -3486,31 +3494,31 @@ │ │ │ │ (and)d Fh(heads)p Fi(,)227 5251 y Fh(counts)p Fi(,)29 │ │ │ │ b Fh(lock)g Fi(and)h Fh(flags)f Fi(are)i(set)g(to)g Fh(NULL)e │ │ │ │ Fi(.)227 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fi(If)30 b Fh(list)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 1058 4 v 1239 100 a Fh(ChvList)29 │ │ │ │ -b Ff(:)40 b Fe(DRAFT)121 b Ff(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2795 100 V 1058 w Fi(3)111 399 y(3.)46 b Fh(void)h(ChvList_clearData)c │ │ │ │ -(\()k(ChvList)f(*list)h(\))g(;)227 555 y Fi(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 Fh(Chv)p 3220 555 29 4 v 34 │ │ │ │ -w(free\(\))c Fi(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 Fh(heads)f Fi(is)h(not)g │ │ │ │ -Fh(NULL)p Fi(,)g(it)g(is)h(free'd.)55 b(If)35 b Fh(counts)e │ │ │ │ -Fi(is)i(not)h Fh(NULL)p Fi(,)e(it)i(is)f(free'd)227 781 │ │ │ │ -y(via)43 b(a)f(call)h(to)g Fh(IVfree\(\))p Fi(.)73 b(If)41 │ │ │ │ -b Fh(flags)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)i(is)e(free'd)h(via)h(a) │ │ │ │ -f(call)h(to)g Fh(CVfree\(\))p Fi(.)72 b(If)42 b(the)227 │ │ │ │ -894 y(lo)s(c)m(k)f(is)f(not)g Fh(NULL)p Fi(,)g(it)g(is)g(destro)m(y)m │ │ │ │ -(ed)h(via)g(a)f(call)h(to)g Fh(Lock)p 2312 894 V 33 w(free\(\))p │ │ │ │ -Fi(.)68 b(There)39 b(is)h(a)h(concluding)f(call)h(to)227 │ │ │ │ -1007 y Fh(ChvList)p 569 1007 V 33 w(setDefaultFields\(\))p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1019 4 v 1200 100 a Fh(ChvList)29 │ │ │ │ +b Ff(:)40 b Fe(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2834 100 V 1019 w Fi(3)111 399 y(3.)46 │ │ │ │ +b Fh(void)h(ChvList_clearData)c(\()k(ChvList)f(*list)h(\))g(;)227 │ │ │ │ +555 y Fi(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 │ │ │ │ +Fh(Chv)p 3220 555 29 4 v 34 w(free\(\))c Fi(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 Fh(heads)f Fi(is)h(not)g Fh(NULL)p Fi(,)g(it)g(is)h(free'd.)55 │ │ │ │ +b(If)35 b Fh(counts)e Fi(is)i(not)h Fh(NULL)p Fi(,)e(it)i(is)f(free'd) │ │ │ │ +227 781 y(via)43 b(a)f(call)h(to)g Fh(IVfree\(\))p Fi(.)73 │ │ │ │ +b(If)41 b Fh(flags)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)i(is)e(free'd)h │ │ │ │ +(via)h(a)f(call)h(to)g Fh(CVfree\(\))p Fi(.)72 b(If)42 │ │ │ │ +b(the)227 894 y(lo)s(c)m(k)f(is)f(not)g Fh(NULL)p Fi(,)g(it)g(is)g │ │ │ │ +(destro)m(y)m(ed)h(via)g(a)f(call)h(to)g Fh(Lock)p 2312 │ │ │ │ +894 V 33 w(free\(\))p Fi(.)68 b(There)39 b(is)h(a)h(concluding)f(call)h │ │ │ │ +(to)227 1007 y Fh(ChvList)p 569 1007 V 33 w(setDefaultFields\(\))p │ │ │ │ Fi(.)227 1164 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fi(If)30 b Fh(list)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.)111 1364 │ │ │ │ y(4.)46 b Fh(void)h(ChvList_free)d(\()k(ChvList)e(*list)g(\))h(;)227 │ │ │ │ 1521 y Fi(This)29 b(metho)s(d)g(releases)i(an)m(y)f(storage)h(b)m(y)e │ │ │ │ (a)h(call)h(to)f Fh(ChvList)p 2395 1521 V 32 w(clearData\(\))d │ │ │ │ Fi(and)i(then)g(free)h(the)f(space)227 1634 y(for)h Fh(list)p │ │ │ │ @@ -3559,19 +3567,19 @@ │ │ │ │ 5138 y(metho)s(d)e(returns)f(0.)227 5294 y Fe(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 b Fh(list)g Fi(is)h │ │ │ │ Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e Fi(is)i(not)h(in)e(the)h(range)h │ │ │ │ Fh([0,nlist\))p Fi(,)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 Fi(4)p 136 100 1058 4 v │ │ │ │ -1240 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 111 399 a Fi(3.)46 b Fh(Chv)h(*)h(ChvList_getList)43 │ │ │ │ -b(\()48 b(ChvList)e(*list,)g(int)h(ilist)f(\))h(;)227 │ │ │ │ -549 y Fi(If)28 b(list)h Fh(ilist)e Fi(is)h(empt)m(y)-8 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1019 4 v │ │ │ │ +1201 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 111 399 a Fi(3.)46 b Fh(Chv)h(*)h │ │ │ │ +(ChvList_getList)43 b(\()48 b(ChvList)e(*list,)g(int)h(ilist)f(\))h(;) │ │ │ │ +227 549 y Fi(If)28 b(list)h Fh(ilist)e Fi(is)h(empt)m(y)-8 │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fh(NULL)p Fi(.)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 Fh(NULL)p │ │ │ │ Fi(.)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 │ │ │ │ (um)m(b)s(er)f(of)i(lo)s(c)m(ks)g(is)g(incremen)m(ted)f(and)g(the)h(lo) │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 ChvList : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + ChvList : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 ChvList : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ChvManager.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1160,23 +1160,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1350,90 +1349,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3104,16 +3112,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 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 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 │ │ │ │ -2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fe 134[44 │ │ │ │ +rf /Fd 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 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 │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ @@ -3233,21 +3241,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 1034 4 v │ │ │ │ -1216 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 995 4 v │ │ │ │ +1177 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 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 │ │ │ │ @@ -3296,23 +3304,24 @@ │ │ │ │ (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 1034 4 v 1215 100 a Fg(DChvList)29 │ │ │ │ -b Fd(:)40 b Fe(DRAFT)121 b Fd(Octob)s(er)31 b(18,)g(2025)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 │ │ │ │ +TeXDict begin 3 2 bop 91 100 995 4 v 1176 100 a Fg(DChvList)28 │ │ │ │ +b Fd(:)41 b Fe(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 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 │ │ │ │ 774 y Fh(are)j(set)g(to)g Fg(NULL)e Fh(.)227 924 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 │ │ │ │ (the)i(program)f(exits.)111 1110 y(3.)46 b Fg(void)h │ │ │ │ (ChvManager_clearData)42 b(\()48 b(ChvManager)d(*manager)g(\))j(;)227 │ │ │ │ 1260 y Fh(This)41 b(metho)s(d)g(clears)h(the)g(ob)5 b(ject)42 │ │ │ │ @@ -3373,19 +3382,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 1034 4 v │ │ │ │ -1216 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 995 4 v │ │ │ │ +1177 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 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 October 18, 2025 │ │ │ │ │ + 2 DChvList : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + DChvList : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 DChvList : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Coords.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1239,23 +1239,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1429,90 +1428,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3892,16 +3900,16 @@ │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 253[71 2[{}1 90.9091 /CMSY10 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 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 │ │ │ │ -2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fd 133[50 │ │ │ │ +/Fc 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 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 /Fe 140[62 62 2[62 10[62 32[62 67[{}5 119.552 /CMTT12 │ │ │ │ rf /Ff 199[35 35 35 3[35 35 35 48[{}6 66.4176 /CMR8 rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ @@ -4007,34 +4015,34 @@ │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 4808 y Fj(Coords)29 │ │ │ │ b Fk(ob)5 b(ject.)0 5092 y Fd(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 5294 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 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 Fk(2)p 136 100 1082 4 v │ │ │ │ -1264 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 111 399 a Fk(1.)46 b Fj(Coords)g(*)i(Coords_new)d │ │ │ │ -(\()i(void)g(\))g(;)227 555 y Fk(This)25 b(metho)s(d)g(simply)f(allo)s │ │ │ │ -(cates)k(storage)f(for)e(the)h Fj(Coords)d Fk(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 │ │ │ │ -Fj(Coords)p 1001 668 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ -Fk(.)111 867 y(2.)46 b Fj(void)h(Coords_setDefaultFields)41 │ │ │ │ -b(\()48 b(Coords)e(*coords)g(\))h(;)227 1023 y Fk(This)34 │ │ │ │ -b(metho)s(d)g(sets)h(the)g(structure's)f(\014elds)g(are)h(set)h(to)f │ │ │ │ -(default)g(v)-5 b(alues:)49 b Fj(type)e(=)h(COORDS)p │ │ │ │ -3480 1023 V 32 w(BY)p 3608 1023 V 34 w(TUPLE)p Fk(,)227 │ │ │ │ -1136 y Fj(ndim)f(=)g(ncoor)g(=)g(0)30 b Fk(and)g Fj(coors)46 │ │ │ │ -b(=)i(NULL)p Fk(.)227 1292 y Fb(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fk(If)30 b Fj(coords)f Fk(is)h Fj(NULL)p │ │ │ │ -Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ -(exits.)111 1492 y(3.)46 b Fj(void)h(Coords_clearData)c(\()48 │ │ │ │ -b(Coords)e(*coords)g(\))h(;)227 1648 y Fk(This)29 b(metho)s(d)g(clears) │ │ │ │ -i(data)f(and)f(releases)i(an)m(y)f(storage)h(allo)s(cated)h(b)m(y)d │ │ │ │ -(the)h(ob)5 b(ject.)41 b(If)30 b Fj(coords->coors)227 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 111 399 a Fk(1.)46 b Fj(Coords)g(*)i │ │ │ │ +(Coords_new)d(\()i(void)g(\))g(;)227 555 y Fk(This)25 │ │ │ │ +b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ +Fj(Coords)d Fk(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 Fj(Coords)p │ │ │ │ +1001 668 29 4 v 33 w(setDefaultFields\(\))p Fk(.)111 │ │ │ │ +867 y(2.)46 b Fj(void)h(Coords_setDefaultFields)41 b(\()48 │ │ │ │ +b(Coords)e(*coords)g(\))h(;)227 1023 y Fk(This)34 b(metho)s(d)g(sets)h │ │ │ │ +(the)g(structure's)f(\014elds)g(are)h(set)h(to)f(default)g(v)-5 │ │ │ │ +b(alues:)49 b Fj(type)e(=)h(COORDS)p 3480 1023 V 32 w(BY)p │ │ │ │ +3608 1023 V 34 w(TUPLE)p Fk(,)227 1136 y Fj(ndim)f(=)g(ncoor)g(=)g(0)30 │ │ │ │ +b Fk(and)g Fj(coors)46 b(=)i(NULL)p Fk(.)227 1292 y Fb(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(coords)f │ │ │ │ +Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ +(the)g(program)g(exits.)111 1492 y(3.)46 b Fj(void)h(Coords_clearData)c │ │ │ │ +(\()48 b(Coords)e(*coords)g(\))h(;)227 1648 y Fk(This)29 │ │ │ │ +b(metho)s(d)g(clears)i(data)f(and)f(releases)i(an)m(y)f(storage)h(allo) │ │ │ │ +s(cated)h(b)m(y)d(the)h(ob)5 b(ject.)41 b(If)30 b Fj(coords->coors)227 │ │ │ │ 1761 y Fk(is)e(not)f Fj(NULL)p Fk(,)f(then)h Fj │ │ │ │ (FVfree\(coords->coors\))22 b Fk(is)27 b(called)i(to)f(free)f(the)h │ │ │ │ Fj(float)d Fk(v)m(ector.)42 b(It)27 b(then)g(sets)h(the)227 │ │ │ │ 1874 y(structure's)i(default)h(\014elds)f(with)g(a)g(call)i(to)f │ │ │ │ Fj(Coords)p 2071 1874 V 33 w(setDefaultFields\(\))p Fk(.)227 │ │ │ │ 2030 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(coords)f Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e │ │ │ │ @@ -4086,58 +4094,58 @@ │ │ │ │ Fj(n2)e Fk(or)h Fj(ncomp)e Fk(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 Fj(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 1082 4 v 1263 100 a Fj(Coords)29 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fk(3)227 399 y(This)g(metho)s(d)g(initializes)i(a)f │ │ │ │ -Fj(Coords)e Fk(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 Fj(n1)21 b Fa(\002)f Fj(n2)h Fa(\002)f Fj(n3)31 │ │ │ │ -b Fk(grid)g(with)227 511 y Fj(ncomp)42 b Fk(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 Fj(bbox[0])31 b Fk(=)i Fi(x)p Fk(-co)s(ordinate)i(of)f │ │ │ │ -(the)f(south)m(w)m(est)i(p)s(oin)m(t,)f Fj(bbox[1])e │ │ │ │ -Fk(=)h Fi(y)s Fk(-co)s(ordinate)h(of)g(the)227 737 y(south)m(w)m(est)40 │ │ │ │ -b(p)s(oin)m(t,)g Fj(bbox[2])d Fk(=)h Fi(z)t Fk(-co)s(ordinate)i(of)e │ │ │ │ -(the)h(south)m(w)m(est)g(p)s(oin)m(t,)i Fj(bbox[3])c │ │ │ │ -Fk(=)h Fi(x)p Fk(-co)s(ordinate)227 850 y(of)g(the)g(northeast)h(p)s │ │ │ │ -(oin)m(t,)h Fj(bbox[4])35 b Fk(=)j Fi(y)s Fk(-co)s(ordinate)h(of)f(the) │ │ │ │ -g(northeast)g(p)s(oin)m(t,)i(and)d Fj(bbox[5])f Fk(=)h │ │ │ │ -Fi(z)t Fk(-)227 963 y(co)s(ordinate)31 b(of)g(the)g(northeast)f(p)s │ │ │ │ -(oin)m(t.)227 1114 y Fb(Err)-5 b(or)25 b(che)-5 b(cking:)35 │ │ │ │ -b Fk(If)20 b Fj(coords)e(bbox)i Fk(is)g Fj(NULL)p Fk(,)f(or)i(if)f │ │ │ │ -Fj(type)f Fk(is)h(not)h Fj(COORDS)p 2691 1114 29 4 v │ │ │ │ -32 w(BY)p 2819 1114 V 34 w(TUPLE)e Fk(or)h Fj(COORDS)p │ │ │ │ -3501 1114 V 33 w(BY)p 3630 1114 V 34 w(COORD)p Fk(,)227 │ │ │ │ -1227 y(or)28 b(if)h(an)m(y)f(of)g Fj(n1)p Fk(,)h Fj(n2)p │ │ │ │ -Fk(,)f Fj(n3)f Fk(or)i Fj(ncomp)d Fk(are)j(nonp)s(ositiv)m(e,)g(an)f │ │ │ │ -(error)g(message)h(is)g(prin)m(ted)e(and)h(the)g(program)227 │ │ │ │ -1340 y(exits.)0 1611 y Fd(1.2.3)112 b(Utilit)m(y)38 b(metho)s(ds)0 │ │ │ │ -1808 y Fk(There)30 b(are)h(three)f(utilit)m(y)i(metho)s(ds.)111 │ │ │ │ -2048 y(1.)46 b Fj(int)h(Coords_sizeOf)d(\()k(Coords)e(*coords)g(\))h(;) │ │ │ │ -227 2199 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(that)g(the)f(ob)5 b(ject)32 b(o)s(ccupies.)227 │ │ │ │ -2350 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ -b Fj(coords)f Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e │ │ │ │ -(prin)m(ted)g(and)g(the)g(program)g(exits.)111 2539 y(2.)46 │ │ │ │ -b Fj(float)h(Coords_min)e(\()i(Coords)f(*coords,)g(int)h(dim)g(\))227 │ │ │ │ -2690 y Fk(This)31 b(metho)s(d)g(returns)g(the)g(minim)m(um)g(co)s │ │ │ │ -(ordinate)i(v)-5 b(alue)32 b(for)f(the)h Fj(dim)p Fk('th)f(en)m(try)h │ │ │ │ -(in)f(the)h(co)s(ordinates.)227 2803 y(F)-8 b(or)28 b(example,)g │ │ │ │ -Fj(Coords)p 1059 2803 V 33 w(min\(coords,)45 b(1\))26 │ │ │ │ -b Fk(is)h(the)g(minim)m(um)e Fi(x)p Fk(-v)-5 b(alue)28 │ │ │ │ -b(and)e Fj(Coords)p 3205 2803 V 33 w(min\(coords,)45 │ │ │ │ -b(2\))227 2916 y Fk(is)31 b(the)f(minim)m(um)g Fi(y)s │ │ │ │ -Fk(-v)-5 b(alue.)227 3067 y Fb(Err)g(or)40 b(che)-5 b(cking:)52 │ │ │ │ -b Fk(If)36 b Fj(coords)e Fk(is)j Fj(NULL)p Fk(,)e(or)h(if)g │ │ │ │ -Fj(idim)g Fk(do)s(es)g(not)g(lie)h(in)f(the)h(range)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 1043 4 v 1224 100 a Fj(Coords)29 │ │ │ │ +b Fc(:)40 b Fb(DRAFT)121 b Fc(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fk(3)227 399 y(This)f(metho)s(d)g │ │ │ │ +(initializes)i(a)f Fj(Coords)e Fk(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 Fj(n1)21 b Fa(\002)f │ │ │ │ +Fj(n2)h Fa(\002)f Fj(n3)31 b Fk(grid)g(with)227 511 y │ │ │ │ +Fj(ncomp)42 b Fk(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 Fj(bbox[0])31 │ │ │ │ +b Fk(=)i Fi(x)p Fk(-co)s(ordinate)i(of)f(the)f(south)m(w)m(est)i(p)s │ │ │ │ +(oin)m(t,)f Fj(bbox[1])e Fk(=)h Fi(y)s Fk(-co)s(ordinate)h(of)g(the)227 │ │ │ │ +737 y(south)m(w)m(est)40 b(p)s(oin)m(t,)g Fj(bbox[2])d │ │ │ │ +Fk(=)h Fi(z)t Fk(-co)s(ordinate)i(of)e(the)h(south)m(w)m(est)g(p)s(oin) │ │ │ │ +m(t,)i Fj(bbox[3])c Fk(=)h Fi(x)p Fk(-co)s(ordinate)227 │ │ │ │ +850 y(of)g(the)g(northeast)h(p)s(oin)m(t,)h Fj(bbox[4])35 │ │ │ │ +b Fk(=)j Fi(y)s Fk(-co)s(ordinate)h(of)f(the)g(northeast)g(p)s(oin)m │ │ │ │ +(t,)i(and)d Fj(bbox[5])f Fk(=)h Fi(z)t Fk(-)227 963 y(co)s(ordinate)31 │ │ │ │ +b(of)g(the)g(northeast)f(p)s(oin)m(t.)227 1114 y Fb(Err)-5 │ │ │ │ +b(or)25 b(che)-5 b(cking:)35 b Fk(If)20 b Fj(coords)e(bbox)i │ │ │ │ +Fk(is)g Fj(NULL)p Fk(,)f(or)i(if)f Fj(type)f Fk(is)h(not)h │ │ │ │ +Fj(COORDS)p 2691 1114 29 4 v 32 w(BY)p 2819 1114 V 34 │ │ │ │ +w(TUPLE)e Fk(or)h Fj(COORDS)p 3501 1114 V 33 w(BY)p 3630 │ │ │ │ +1114 V 34 w(COORD)p Fk(,)227 1227 y(or)28 b(if)h(an)m(y)f(of)g │ │ │ │ +Fj(n1)p Fk(,)h Fj(n2)p Fk(,)f Fj(n3)f Fk(or)i Fj(ncomp)d │ │ │ │ +Fk(are)j(nonp)s(ositiv)m(e,)g(an)f(error)g(message)h(is)g(prin)m(ted)e │ │ │ │ +(and)h(the)g(program)227 1340 y(exits.)0 1611 y Fd(1.2.3)112 │ │ │ │ +b(Utilit)m(y)38 b(metho)s(ds)0 1808 y Fk(There)30 b(are)h(three)f │ │ │ │ +(utilit)m(y)i(metho)s(ds.)111 2048 y(1.)46 b Fj(int)h(Coords_sizeOf)d │ │ │ │ +(\()k(Coords)e(*coords)g(\))h(;)227 2199 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(that)g │ │ │ │ +(the)f(ob)5 b(ject)32 b(o)s(ccupies.)227 2350 y Fb(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(coords)f │ │ │ │ +Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ +(the)g(program)g(exits.)111 2539 y(2.)46 b Fj(float)h(Coords_min)e(\()i │ │ │ │ +(Coords)f(*coords,)g(int)h(dim)g(\))227 2690 y Fk(This)31 │ │ │ │ +b(metho)s(d)g(returns)g(the)g(minim)m(um)g(co)s(ordinate)i(v)-5 │ │ │ │ +b(alue)32 b(for)f(the)h Fj(dim)p Fk('th)f(en)m(try)h(in)f(the)h(co)s │ │ │ │ +(ordinates.)227 2803 y(F)-8 b(or)28 b(example,)g Fj(Coords)p │ │ │ │ +1059 2803 V 33 w(min\(coords,)45 b(1\))26 b Fk(is)h(the)g(minim)m(um)e │ │ │ │ +Fi(x)p Fk(-v)-5 b(alue)28 b(and)e Fj(Coords)p 3205 2803 │ │ │ │ +V 33 w(min\(coords,)45 b(2\))227 2916 y Fk(is)31 b(the)f(minim)m(um)g │ │ │ │ +Fi(y)s Fk(-v)-5 b(alue.)227 3067 y Fb(Err)g(or)40 b(che)-5 │ │ │ │ +b(cking:)52 b Fk(If)36 b Fj(coords)e Fk(is)j Fj(NULL)p │ │ │ │ +Fk(,)e(or)h(if)g Fj(idim)g Fk(do)s(es)g(not)g(lie)h(in)f(the)h(range)f │ │ │ │ Fj([1,ndim])p Fk(,)g(an)g(error)227 3180 y(message)c(is)e(prin)m(ted)g │ │ │ │ (and)g(the)g(program)h(exits.)111 3370 y(3.)46 b Fj(float)h(Coords_max) │ │ │ │ e(\()i(Coords)f(*coords,)g(int)h(dim)g(\))227 3521 y │ │ │ │ Fk(This)30 b(metho)s(d)f(returns)h(the)g(maxim)m(um)g(co)s(ordinate)h │ │ │ │ (v)-5 b(alue)31 b(for)f(the)h Fj(dim)p Fk('th)e(en)m(try)i(in)f(the)g │ │ │ │ (co)s(ordinates.)227 3634 y(F)-8 b(or)26 b(example,)g │ │ │ │ Fj(Coords)p 1055 3634 V 33 w(max\(coords,)45 b(1\))23 │ │ │ │ @@ -4177,32 +4185,32 @@ │ │ │ │ Fk(2,)34 b Fj(Coords)p 3110 5294 V 32 w(setValue\(coords,)227 │ │ │ │ 5407 y(2,)47 b(16,)g(3.3\))30 b Fk(sets)g Fi(y)1005 5421 │ │ │ │ y Ff(16)1105 5407 y Fk(=)25 b(3)p Fi(:)p Fk(3,)32 b(and)d │ │ │ │ Fj(Coords)p 1843 5407 V 33 w(setValue\(coords,)43 b(3,)48 │ │ │ │ b(118,)e(0\))30 b Fk(sets)h Fi(z)3409 5421 y Ff(118)3544 │ │ │ │ 5407 y Fk(=)25 b(0.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1082 4 v │ │ │ │ -1264 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 227 399 a Fb(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fk(If)29 b Fj(coords)g Fk(is)h Fj(NULL)p │ │ │ │ -Fk(,)f(or)h(if)g Fj(idim)f Fk(do)s(es)g(not)h(lie)h(in)f(the)g(range)g │ │ │ │ -Fj([1,ndim])p Fk(,)e(or)i(if)g Fj(icoor)227 511 y Fk(do)s(es)g(not)h │ │ │ │ -(lie)g(in)f(the)h(range)g Fj([0,ncoor\))p Fk(,)d(an)i(error)g(message)h │ │ │ │ -(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)0 790 │ │ │ │ -y Fd(1.2.4)112 b(IO)38 b(metho)s(ds)0 989 y Fk(There)29 │ │ │ │ -b(are)g(the)g(usual)g(eigh)m(t)i(IO)d(routines.)40 b(The)29 │ │ │ │ -b(\014le)g(structure)g(of)g(a)h Fj(Coords)d Fk(ob)5 b(ject)30 │ │ │ │ -b(is)f(simple:)40 b Fj(type)p Fk(,)29 b Fj(ndim)p Fk(,)0 │ │ │ │ -1102 y Fj(ncoor)g Fk(follo)m(w)m(ed)j(b)m(y)e(the)h Fj(coors[])d │ │ │ │ -Fk(v)m(ector.)111 1348 y(1.)46 b Fj(int)h(Coords_readFromFile)c(\()k │ │ │ │ -(Coords)f(*coords,)g(char)g(*filename)g(\))h(;)227 1502 │ │ │ │ -y Fk(This)25 b(metho)s(d)h(read)g(a)g Fj(Coords)e Fk(ob)5 │ │ │ │ -b(ject)27 b(from)f(a)g(\014le.)39 b(It)26 b(tries)h(to)f(op)s(en)g(the) │ │ │ │ -g(\014le)g(and)f(if)h(it)h(is)f(successful,)g(it)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 227 399 a Fb(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)40 b Fk(If)29 b Fj(coords)g Fk(is)h │ │ │ │ +Fj(NULL)p Fk(,)f(or)h(if)g Fj(idim)f Fk(do)s(es)g(not)h(lie)h(in)f(the) │ │ │ │ +g(range)g Fj([1,ndim])p Fk(,)e(or)i(if)g Fj(icoor)227 │ │ │ │ +511 y Fk(do)s(es)g(not)h(lie)g(in)f(the)h(range)g Fj([0,ncoor\))p │ │ │ │ +Fk(,)d(an)i(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ +(exits.)0 790 y Fd(1.2.4)112 b(IO)38 b(metho)s(ds)0 989 │ │ │ │ +y Fk(There)29 b(are)g(the)g(usual)g(eigh)m(t)i(IO)d(routines.)40 │ │ │ │ +b(The)29 b(\014le)g(structure)g(of)g(a)h Fj(Coords)d │ │ │ │ +Fk(ob)5 b(ject)30 b(is)f(simple:)40 b Fj(type)p Fk(,)29 │ │ │ │ +b Fj(ndim)p Fk(,)0 1102 y Fj(ncoor)g Fk(follo)m(w)m(ed)j(b)m(y)e(the)h │ │ │ │ +Fj(coors[])d Fk(v)m(ector.)111 1348 y(1.)46 b Fj(int)h │ │ │ │ +(Coords_readFromFile)c(\()k(Coords)f(*coords,)g(char)g(*filename)g(\))h │ │ │ │ +(;)227 1502 y Fk(This)25 b(metho)s(d)h(read)g(a)g Fj(Coords)e │ │ │ │ +Fk(ob)5 b(ject)27 b(from)f(a)g(\014le.)39 b(It)26 b(tries)h(to)f(op)s │ │ │ │ +(en)g(the)g(\014le)g(and)f(if)h(it)h(is)f(successful,)g(it)227 │ │ │ │ 1615 y(then)j(calls)h Fj(Coords)p 928 1615 29 4 v 33 │ │ │ │ w(readFromFormattedFile\(\))23 b Fk(or)29 b Fj(Coords)p │ │ │ │ 2486 1615 V 32 w(readFromBinaryFile\(\))p Fk(,)c(closes)30 │ │ │ │ b(the)227 1728 y(\014le)h(and)f(returns)f(the)h(v)-5 │ │ │ │ b(alue)31 b(returned)e(from)h(the)h(called)g(routine.)227 │ │ │ │ 1882 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)29 │ │ │ │ b Fj(coords)f Fk(or)i Fj(filename)d Fk(is)j Fj(NULL)p │ │ │ │ @@ -4264,19 +4272,19 @@ │ │ │ │ 5253 y(data,)32 b(the)e(v)-5 b(alue)31 b Fj(1)f Fk(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fj(fwrite)p Fk(,)f(zero)i(is)g(returned.)227 5407 y Fb(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(coords)f │ │ │ │ Fk(or)h Fj(fp)g Fk(are)h Fj(NULL)e Fk(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 1082 4 v 1263 100 a Fj(Coords)29 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fk(5)111 399 y(7.)46 b Fj(int)h │ │ │ │ -(Coords_writeForHumanEye)42 b(\()47 b(Coords)f(*coords,)g(FILE)g(*fp)h │ │ │ │ -(\))h(;)227 554 y Fk(This)43 b(metho)s(d)g(write)h(the)g │ │ │ │ +TeXDict begin 5 4 bop 91 100 1043 4 v 1224 100 a Fj(Coords)29 │ │ │ │ +b Fc(:)40 b Fb(DRAFT)121 b Fc(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fk(5)111 399 y(7.)46 │ │ │ │ +b Fj(int)h(Coords_writeForHumanEye)42 b(\()47 b(Coords)f(*coords,)g │ │ │ │ +(FILE)g(*fp)h(\))h(;)227 554 y Fk(This)43 b(metho)s(d)g(write)h(the)g │ │ │ │ Fj(Coords)e Fk(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 Fj(Coords)p │ │ │ │ 521 667 29 4 v 33 w(writeStats\(\))24 b Fk(is)k(called)h(to)f(write)g │ │ │ │ (out)g(the)g(header)g(and)f(statistics.)42 b(The)27 b │ │ │ │ Fj(coors[])f Fk(v)m(ector)j(is)227 780 y(then)h(prin)m(ted)g(out.)41 │ │ │ │ b(The)30 b(v)-5 b(alue)31 b Fj(1)f Fk(is)g(returned.)227 │ │ │ │ 936 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ @@ -4338,18 +4346,18 @@ │ │ │ │ 5181 y Fg(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j(determines) │ │ │ │ f(the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e Fk(is)i │ │ │ │ Fj(stdout)p Fk(,)g(then)g(the)427 5294 y(message)24 b(\014le)e(is)h │ │ │ │ Fb(stdout)p Fk(,)i(otherwise)e(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ Fb(app)-5 b(end)24 b Fk(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 Fk(6)p 136 100 1082 4 v │ │ │ │ -1264 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 337 399 a Fg(\210)45 b Fk(The)20 b │ │ │ │ -Fj(outCoordsFile)d Fk(parameter)j(is)h(the)f(output)g(\014le)g(for)h │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 337 399 a Fg(\210)45 b Fk(The)20 │ │ │ │ +b Fj(outCoordsFile)d Fk(parameter)j(is)h(the)f(output)g(\014le)g(for)h │ │ │ │ (the)f Fj(Coords)f Fk(ob)5 b(ject.)38 b(If)20 b Fj(outCoordsFile)427 │ │ │ │ 511 y Fk(is)h Fj(none)e Fk(then)h(the)g Fj(Coords)f Fk(ob)5 │ │ │ │ b(ject)21 b(is)f(not)h(written)f(to)h(a)g(\014le.)37 │ │ │ │ b(Otherwise,)22 b(the)f Fj(Coords)p 3409 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fk(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 │ │ │ │ Fj(outCoordsFile)c Fk(is)k(of)g(the)f(form)427 737 y │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Coords : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Coords : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Coords : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Coords : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Coords : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o DSTree.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1409,23 +1409,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1599,90 +1598,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3655,17 +3663,17 @@ │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 154[40 40 100[{}2 90.9091 /CMSY10 rf /Fb 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 /Fc 141[62 12[62 16[62 62 14[62 68[{}5 │ │ │ │ -119.552 /CMTT12 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ -18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ -/CMSL10 rf │ │ │ │ +119.552 /CMTT12 rf /Fd 137[48 3[36 2[45 1[76 7[40 2[51 │ │ │ │ +19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +rf │ │ │ │ %DVIPSBitmapFont: Fe tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3782,17 +3790,17 @@ │ │ │ │ 5074 y Fe(\210)45 b Fi(Tree)i(*tree)29 b Fj(:)41 b(p)s(oin)m(ter)30 │ │ │ │ b(to)h(the)g Fi(Tree)e Fj(ob)5 b(ject)137 5294 y Fe(\210)45 │ │ │ │ b Fi(IV)i(*mapIV)d Fj(:)h(p)s(oin)m(ter)g(to)h(the)f │ │ │ │ Fi(IV)g Fj(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 Fj(2)p 136 100 1130 4 v │ │ │ │ -1311 w Fi(Tree)30 b Fd(:)40 b Fh(DRAFT)30 b Fd(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1090 4 v │ │ │ │ +1272 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fc(DSTree)d Ff(metho)t(ds)0 │ │ │ │ 636 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 749 y Fi(DSTree)29 b Fj(ob)5 b(ject.)0 │ │ │ │ 1047 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1253 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 │ │ │ │ @@ -3847,38 +3855,38 @@ │ │ │ │ 5247 y Fj(This)27 b(metho)s(d)f(returns)g(a)h(p)s(oin)m(ter)g(to)h(its) │ │ │ │ g Fi(IV)e Fj(ob)5 b(ject)28 b(that)g(maps)e(v)m(ertices)j(to)f(domains) │ │ │ │ f(and)f(separators.)227 5407 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fj(If)30 b Fi(dstree)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 │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1130 4 v 1311 100 a Fi(Tree)29 │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fj(3)0 399 y Fb(1.2.3)112 b(Initializer)38 │ │ │ │ -b(metho)s(ds)0 602 y Fj(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 Fi(void)h(DSTree_init1)d │ │ │ │ -(\()k(DSTree)e(*dstree,)f(int)i(ndomsep,)f(int)h(nvtx)f(\))i(;)227 │ │ │ │ -1126 y Fj(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 │ │ │ │ -(\(the)e(dimension)e(of)h Fi(mapIV)p Fj(\))g(and)227 │ │ │ │ -1239 y(domains)40 b(and)f(separators)h(\(the)h(n)m(um)m(b)s(er)d(of)i │ │ │ │ -(no)s(des)f(in)h Fi(tree)p Fj(\).)68 b(It)40 b(then)g(clears)h(an)m(y)f │ │ │ │ -(previous)f(data)227 1352 y(with)e(a)h(call)h(to)f Fi(DSTree)p │ │ │ │ -1110 1352 29 4 v 32 w(clearData\(\))p Fj(.)59 b(The)36 │ │ │ │ -b Fi(tree)h Fj(\014eld)g(is)g(created)h(and)f(initialized)i(via)f(a)g │ │ │ │ -(call)g(to)227 1465 y Fi(Tree)p 425 1465 V 34 w(init1\(\))p │ │ │ │ -Fj(.)g(The)30 b Fi(mapIV)f Fj(\014eld)h(is)g(created)i(and)e │ │ │ │ -(initialized)i(via)f(a)g(call)g(to)g Fi(IV)p 3115 1465 │ │ │ │ -V 34 w(init1\(\))p Fj(.)227 1622 y Fh(Err)-5 b(or)44 │ │ │ │ -b(che)-5 b(cking:)62 b Fj(If)41 b Fi(dstree)e Fj(is)i │ │ │ │ -Fi(NULL)p Fj(,)g(or)g Fi(ndomsep)e Fj(or)i Fi(nvtx)f │ │ │ │ -Fj(are)h(negativ)m(e,)47 b(an)41 b(error)g(message)h(is)227 │ │ │ │ -1735 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.)111 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1090 4 v 1272 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fj(3)0 399 y Fb(1.2.3)112 │ │ │ │ +b(Initializer)38 b(metho)s(ds)0 602 y Fj(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 Fi(void)h(DSTree_init1)d(\()k(DSTree)e(*dstree,)f(int)i │ │ │ │ +(ndomsep,)f(int)h(nvtx)f(\))i(;)227 1126 y Fj(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(\(the)e(dimension)e(of)h │ │ │ │ +Fi(mapIV)p Fj(\))g(and)227 1239 y(domains)40 b(and)f(separators)h │ │ │ │ +(\(the)h(n)m(um)m(b)s(er)d(of)i(no)s(des)f(in)h Fi(tree)p │ │ │ │ +Fj(\).)68 b(It)40 b(then)g(clears)h(an)m(y)f(previous)f(data)227 │ │ │ │ +1352 y(with)e(a)h(call)h(to)f Fi(DSTree)p 1110 1352 29 │ │ │ │ +4 v 32 w(clearData\(\))p Fj(.)59 b(The)36 b Fi(tree)h │ │ │ │ +Fj(\014eld)g(is)g(created)h(and)f(initialized)i(via)f(a)g(call)g(to)227 │ │ │ │ +1465 y Fi(Tree)p 425 1465 V 34 w(init1\(\))p Fj(.)g(The)30 │ │ │ │ +b Fi(mapIV)f Fj(\014eld)h(is)g(created)i(and)e(initialized)i(via)f(a)g │ │ │ │ +(call)g(to)g Fi(IV)p 3115 1465 V 34 w(init1\(\))p Fj(.)227 │ │ │ │ +1622 y Fh(Err)-5 b(or)44 b(che)-5 b(cking:)62 b Fj(If)41 │ │ │ │ +b Fi(dstree)e Fj(is)i Fi(NULL)p Fj(,)g(or)g Fi(ndomsep)e │ │ │ │ +Fj(or)i Fi(nvtx)f Fj(are)h(negativ)m(e,)47 b(an)41 b(error)g(message)h │ │ │ │ +(is)227 1735 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.)111 │ │ │ │ 1936 y(2.)46 b Fi(void)h(DSTree_init2)d(\()k(DSTree)e(*dstree,)f(Tree)i │ │ │ │ (*tree,)f(IV)h(*mapIV\))f(;)227 2094 y Fj(An)m(y)31 b(previous)f(data)i │ │ │ │ (is)f(cleared)h(with)e(a)h(call)h(to)g Fi(DSTree)p 2249 │ │ │ │ 2094 V 33 w(clearData\(\))p Fj(.)39 b(Then)29 b(the)j │ │ │ │ Fi(tree)d Fj(and)h Fi(mapIV)227 2207 y Fj(\014elds)g(are)h(set)g(to)g │ │ │ │ (the)f(p)s(oin)m(ters)h(in)f(the)g(calling)i(sequence.)227 │ │ │ │ 2364 y Fh(Err)-5 b(or)45 b(che)-5 b(cking:)62 b Fj(If)41 │ │ │ │ @@ -3925,32 +3933,32 @@ │ │ │ │ (k,)f(its)f(stage)i(is)f Fa(d)p Fg(k)s(=)p Fj(2)p Fa(e)p │ │ │ │ Fj(.)227 5294 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ b Fj(If)29 b Fi(dstree)g Fj(is)i Fi(NULL)p Fj(,)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 Fj(4)p 136 100 1130 4 v │ │ │ │ -1311 w Fi(Tree)30 b Fd(:)40 b Fh(DRAFT)30 b Fd(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 111 399 a Fj(3.)46 b Fi(IV)h(*)h(DSTree_MS2stages)43 │ │ │ │ -b(\()48 b(DSTree)e(*dstree)g(\))95 b(;)227 553 y Fj(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 Fi(Tree)p 2455 666 29 4 v 33 w(setHeightImetric\(\))p │ │ │ │ -Fj(.)45 b(A)34 b Fi(stagesIV)227 779 y(IV)40 b Fj(ob)5 │ │ │ │ -b(ject)41 b(is)f(created)h(of)f(size)h Fi(nvtx)47 b(=)g(mapIV->size)p │ │ │ │ -Fj(,)40 b(\014lled)g(and)f(then)h(returned.)69 b(If)39 │ │ │ │ -b(a)i(v)m(ertex)g(is)227 892 y(found)29 b(in)h(a)h(domain,)g(its)f │ │ │ │ -(stage)i(is)f(zero.)41 b(If)30 b(a)h(v)m(ertex)g(is)g(found)e(in)h(a)h │ │ │ │ -(separator,)g(its)g(stage)g(is)g(one.)227 1046 y Fh(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)41 b Fj(If)29 b Fi(dstree)g │ │ │ │ -Fj(is)i Fi(NULL)p Fj(,)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 │ │ │ │ -1159 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1090 4 v │ │ │ │ +1272 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 111 399 a Fj(3.)46 b Fi(IV)h(*)h │ │ │ │ +(DSTree_MS2stages)43 b(\()48 b(DSTree)e(*dstree)g(\))95 │ │ │ │ +b(;)227 553 y Fj(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 Fi(Tree)p 2455 666 │ │ │ │ +29 4 v 33 w(setHeightImetric\(\))p Fj(.)45 b(A)34 b Fi(stagesIV)227 │ │ │ │ +779 y(IV)40 b Fj(ob)5 b(ject)41 b(is)f(created)h(of)f(size)h │ │ │ │ +Fi(nvtx)47 b(=)g(mapIV->size)p Fj(,)40 b(\014lled)g(and)f(then)h │ │ │ │ +(returned.)69 b(If)39 b(a)i(v)m(ertex)g(is)227 892 y(found)29 │ │ │ │ +b(in)h(a)h(domain,)g(its)f(stage)i(is)f(zero.)41 b(If)30 │ │ │ │ +b(a)h(v)m(ertex)g(is)g(found)e(in)h(a)h(separator,)g(its)g(stage)g(is)g │ │ │ │ +(one.)227 1046 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ +b Fj(If)29 b Fi(dstree)g Fj(is)i Fi(NULL)p Fj(,)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 1159 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ 1355 y(4.)46 b Fi(IV)h(*)h(DSTree_MS3stages)43 b(\()48 │ │ │ │ b(DSTree)e(*dstree)g(\))95 b(;)227 1510 y Fj(This)35 │ │ │ │ b(metho)s(d)h(returns)e(the)i(stages)h(for)f(a)g(three-stage)i(v)-5 │ │ │ │ b(arian)m(t)37 b(of)f(the)g(m)m(ultisection)i(ordering.)56 │ │ │ │ b(The)227 1623 y(lev)m(els)37 b(of)f(the)f(domains)h(and)e(separators)i │ │ │ │ (are)g(obtained)g(via)g(a)g(call)g(to)g Fi(Tree)p 2988 │ │ │ │ 1623 V 34 w(setHeightImetric\(\))p Fj(.)227 1736 y(A)c │ │ │ │ @@ -4006,38 +4014,38 @@ │ │ │ │ (in)h(the)f(tree)h(via)g(a)g(p)s(ost-order)f(tra)m(v)m(ersal.)227 │ │ │ │ 5294 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 b Fj(If)29 │ │ │ │ b Fi(dstree)g Fj(is)i Fi(NULL)p Fj(,)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 1130 4 v 1311 100 a Fi(Tree)29 │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fj(5)111 399 y(3.)46 b Fi(int)h(DSTree_domainWeight)c │ │ │ │ -(\()k(DSTree)f(*dstree,)g(int)h(vwghts[])e(\))j(;)227 │ │ │ │ -560 y Fj(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 Fi(vwghts)e │ │ │ │ -Fj(is)i Fi(NULL)p Fj(,)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 Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fj(If)30 b Fi(dstree)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 │ │ │ │ -(exits.)111 1043 y(4.)46 b Fi(int)h(DSTree_separatorWeight)42 │ │ │ │ -b(\()47 b(DSTree)f(*dstree,)g(int)h(vwghts[])e(\))j(;)227 │ │ │ │ -1204 y Fj(This)40 b(metho)s(d)h(returns)f(the)h(w)m(eigh)m(t)h(of)g │ │ │ │ -(the)f(v)m(ertices)i(in)d(the)i(separators.)73 b(If)40 │ │ │ │ -b Fi(vwghts)g Fj(is)h Fi(NULL)p Fj(,)f(the)227 1317 y(v)m(ertices)32 │ │ │ │ -b(ha)m(v)m(e)g(unit)e(w)m(eigh)m(t.)227 1478 y Fh(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(dstree)f │ │ │ │ +TeXDict begin 5 4 bop 91 100 1090 4 v 1272 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fj(5)111 399 y(3.)46 │ │ │ │ +b Fi(int)h(DSTree_domainWeight)c(\()k(DSTree)f(*dstree,)g(int)h │ │ │ │ +(vwghts[])e(\))j(;)227 560 y Fj(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 Fi(vwghts)e Fj(is)i Fi(NULL)p Fj(,)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 │ │ │ │ +Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(dstree)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(exits.)0 1777 y Fb(1.2.6)112 b(IO)38 │ │ │ │ -b(metho)s(ds)0 1984 y Fj(There)28 b(are)i(the)f(usual)f(eigh)m(t)i(IO)e │ │ │ │ -(routines.)40 b(The)29 b(\014le)g(structure)f(of)h(a)g(dstree)g(ob)5 │ │ │ │ -b(ject)30 b(is)e(simple:)40 b(the)29 b(structure)0 2097 │ │ │ │ -y(for)h(a)h Fi(Tree)e Fj(ob)5 b(ject)31 b(follo)m(w)m(ed)h(b)m(y)f(the) │ │ │ │ -f(structure)g(for)g(an)h Fi(IV)e Fj(ob)5 b(ject.)111 │ │ │ │ +(the)g(program)g(exits.)111 1043 y(4.)46 b Fi(int)h │ │ │ │ +(DSTree_separatorWeight)42 b(\()47 b(DSTree)f(*dstree,)g(int)h │ │ │ │ +(vwghts[])e(\))j(;)227 1204 y Fj(This)40 b(metho)s(d)h(returns)f(the)h │ │ │ │ +(w)m(eigh)m(t)h(of)g(the)f(v)m(ertices)i(in)d(the)i(separators.)73 │ │ │ │ +b(If)40 b Fi(vwghts)g Fj(is)h Fi(NULL)p Fj(,)f(the)227 │ │ │ │ +1317 y(v)m(ertices)32 b(ha)m(v)m(e)g(unit)e(w)m(eigh)m(t.)227 │ │ │ │ +1478 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ +b Fi(dstree)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(exits.)0 1777 y Fb(1.2.6)112 │ │ │ │ +b(IO)38 b(metho)s(ds)0 1984 y Fj(There)28 b(are)i(the)f(usual)f(eigh)m │ │ │ │ +(t)i(IO)e(routines.)40 b(The)29 b(\014le)g(structure)f(of)h(a)g(dstree) │ │ │ │ +g(ob)5 b(ject)30 b(is)e(simple:)40 b(the)29 b(structure)0 │ │ │ │ +2097 y(for)h(a)h Fi(Tree)e Fj(ob)5 b(ject)31 b(follo)m(w)m(ed)h(b)m(y)f │ │ │ │ +(the)f(structure)g(for)g(an)h Fi(IV)e Fj(ob)5 b(ject.)111 │ │ │ │ 2362 y(1.)46 b Fi(int)h(DSTree_readFromFile)c(\()k(DSTree)f(*dstree,)g │ │ │ │ (char)g(*fn)h(\))h(;)227 2523 y Fj(This)28 b(metho)s(d)g(reads)h(a)g │ │ │ │ Fi(DSTree)e Fj(ob)5 b(ject)30 b(from)e(a)h(\014le.)41 │ │ │ │ b(It)28 b(tries)i(to)f(op)s(en)f(the)h(\014le)g(and)f(if)h(it)g(is)g │ │ │ │ (successful,)227 2636 y(it)40 b(then)g(calls)h Fi(DSTree)p │ │ │ │ 1050 2636 29 4 v 32 w(readFromFormattedFile\(\))34 b │ │ │ │ Fj(or)39 b Fi(DSTree)p 2628 2636 V 33 w(readFromBinaryFile\(\))p │ │ │ │ @@ -4083,21 +4091,21 @@ │ │ │ │ b Fi(dstree)e Fj(or)h Fi(fn)g Fj(are)i Fi(NULL)p Fj(,)d(or)i(if)g │ │ │ │ Fi(fn)f Fj(is)h(not)g(of)f(the)h(form)g Fi(*.dstreef)d │ │ │ │ Fj(\(for)j(a)227 5294 y(formatted)32 b(\014le\))g(or)f │ │ │ │ Fi(*.dstreeb)e Fj(\(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 Fj(6)p 136 100 1130 4 v │ │ │ │ -1311 w Fi(Tree)30 b Fd(:)40 b Fh(DRAFT)30 b Fd(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 111 399 a Fj(5.)46 b Fi(int)h(DSTree_writeToFormattedFi)o │ │ │ │ -(le)42 b(\()47 b(DSTree)f(*dstree,)g(FILE)g(*fp)h(\))h(;)227 │ │ │ │ -548 y Fj(This)30 b(metho)s(d)g(writes)g(a)h Fi(DSTree)e │ │ │ │ -Fj(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 Fj(6)p 136 100 1090 4 v │ │ │ │ +1272 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 111 399 a Fj(5.)46 b Fi(int)h │ │ │ │ +(DSTree_writeToFormattedFi)o(le)42 b(\()47 b(DSTree)f(*dstree,)g(FILE)g │ │ │ │ +(*fp)h(\))h(;)227 548 y Fj(This)30 b(metho)s(d)g(writes)g(a)h │ │ │ │ +Fi(DSTree)e Fj(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 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(,)f(zero)i(is)f(returned.)227 810 y Fh(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(dstree)f │ │ │ │ Fj(or)h Fi(fp)g Fj(is)h Fi(NULL)p Fj(,)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 Fi(int)h(DSTree_writeToBinaryFile)41 b(\()48 b(DSTree)e(*dstree,)f │ │ │ │ @@ -4167,31 +4175,32 @@ │ │ │ │ 5181 V 33 w(writeToFile\(\))17 b Fj(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 Fi(outFile)d Fj(is)j(of)g(the)g │ │ │ │ (form)f Fi(*.dinpmtxf)p Fj(\),)427 5407 y(or)h(a)f(binary)g(\014le)g │ │ │ │ (\(if)h Fi(outFile)e Fj(is)h(of)g(the)h(form)f Fi(*.dinpmtxb)p │ │ │ │ Fj(\).)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1130 4 v 1311 100 a Fi(Tree)29 │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ -(msgFile)e(inFile)h(type)h(outFile)227 543 y Fj(This)28 │ │ │ │ -b(driv)m(er)h(program)g(reads)f(in)h(a)g Fi(DSTree)e │ │ │ │ -Fj(from)h(a)i(\014le,)f(creates)h(a)g(stages)g Fi(IV)e │ │ │ │ -Fj(ob)5 b(ject)30 b(and)e(writes)h(it)g(to)227 656 y(a)i(\014le.)337 │ │ │ │ -853 y Fe(\210)45 b Fj(The)28 b Fi(msglvl)f Fj(parameter)i(determines)g │ │ │ │ -(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fi(msglvl)46 │ │ │ │ -b(>=)h(3)28 b Fj(means)427 965 y(the)j Fi(DSTree)e Fj(ob)5 │ │ │ │ -b(ject)31 b(is)f(written)h(to)g(the)f(message)i(\014le.)337 │ │ │ │ -1101 y Fe(\210)45 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 1214 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 │ │ │ │ -1327 y(data.)337 1462 y Fe(\210)45 b Fj(The)35 b Fi(inFile)e │ │ │ │ +TeXDict begin 7 6 bop 91 100 1090 4 v 1272 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fj(7)111 399 y(2.)46 │ │ │ │ +b Fi(writeStagesIV)e(msglvl)j(msgFile)e(inFile)h(type)h(outFile)227 │ │ │ │ +543 y Fj(This)28 b(driv)m(er)h(program)g(reads)f(in)h(a)g │ │ │ │ +Fi(DSTree)e Fj(from)h(a)i(\014le,)f(creates)h(a)g(stages)g │ │ │ │ +Fi(IV)e Fj(ob)5 b(ject)30 b(and)e(writes)h(it)g(to)227 │ │ │ │ +656 y(a)i(\014le.)337 853 y Fe(\210)45 b Fj(The)28 b │ │ │ │ +Fi(msglvl)f Fj(parameter)i(determines)g(the)g(amoun)m(t)g(of)f(output)h │ │ │ │ +(|)f(taking)i Fi(msglvl)46 b(>=)h(3)28 b Fj(means)427 │ │ │ │ +965 y(the)j Fi(DSTree)e Fj(ob)5 b(ject)31 b(is)f(written)h(to)g(the)f │ │ │ │ +(message)i(\014le.)337 1101 y Fe(\210)45 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 │ │ │ │ +1214 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 1327 │ │ │ │ +y(data.)337 1462 y Fe(\210)45 b Fj(The)35 b Fi(inFile)e │ │ │ │ Fj(parameter)i(is)g(the)h(input)e(\014le)h(for)f(the)h │ │ │ │ Fi(DSTree)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 1575 y Fi(*.dstreef)18 b Fj(or)i Fi(*.dstreeb)p │ │ │ │ Fj(.)35 b(The)20 b Fi(DSTree)e Fj(ob)5 b(ject)22 b(is)e(read)g(from)g │ │ │ │ (the)g(\014le)h(via)g(the)f Fi(DSTree)p 3559 1575 29 │ │ │ │ 4 v 33 w(readFromFile\(\))427 1688 y Fj(metho)s(d.)337 │ │ │ │ 1823 y Fe(\210)45 b Fj(The)28 b Fi(type)g Fj(parameter)h(sp)s │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o DV.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2353,23 +2353,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2543,90 +2542,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4200,19 +4208,19 @@ │ │ │ │ /Fb 235[71 20[{}1 90.9091 /CMSY10 rf /Fc 206[35 35 48[{}2 │ │ │ │ 66.4176 /CMR8 rf /Fd 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 /Fe 139[62 │ │ │ │ 4[62 4[62 4[62 1[62 62 11[62 17[62 68[{}8 119.552 /CMTT12 │ │ │ │ rf /Ff 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 /Fg 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ -18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ -/CMSL10 rf /Fh 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 │ │ │ │ +90.9091 /CMTI10 rf /Fg 137[48 3[36 2[45 1[76 7[40 2[51 │ │ │ │ +19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +rf /Fh 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 │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 2 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4327,17 +4335,17 @@ │ │ │ │ Fk(DV)g Fl(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 Fh(1.1)135 b(Data)46 b(Structure)0 5214 │ │ │ │ y Fl(The)30 b Fk(DV)g Fl(structure)g(has)g(three)g(\014elds.)137 │ │ │ │ 5407 y Fi(\210)45 b Fk(int)i(size)29 b Fl(:)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 Fl(2)p 136 100 1182 4 v │ │ │ │ -1364 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 137 399 a Fi(\210)45 b Fk(int)i(maxsize)29 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1143 4 v │ │ │ │ +1325 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 137 399 a Fi(\210)45 b Fk(int)i(maxsize)29 │ │ │ │ b Fl(:)40 b(maxim)m(um)30 b(size)i(of)e(the)h(v)m(ector.)137 │ │ │ │ 608 y Fi(\210)45 b Fk(int)i(owned)27 b Fl(:)40 b(o)m(wner)28 │ │ │ │ b(\015ag)h(for)f(the)h(data.)41 b(When)28 b Fk(owned)46 │ │ │ │ b(=)i(1)p Fl(,)28 b(storage)i(for)f Fk(owned)e(double)p │ │ │ │ Fl('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 Fk(owned)46 b(==)h(0)30 b Fl(but)g │ │ │ │ @@ -4391,17 +4399,17 @@ │ │ │ │ (storage)i(b)m(y)d(a)i(call)g(to)f Fk(DV)p 2148 5133 │ │ │ │ V 34 w(clearData\(\))d Fl(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 Fk(free\(\))p │ │ │ │ Fl(.)227 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fl(If)30 b Fk(dv)g Fl(is)h Fk(NULL)e Fl(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 1182 4 v 1364 100 a Fk(DV)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fl(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1143 4 v 1325 100 a Fk(DV)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fl(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)0 610 y Fl(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 Fk(int)h(DV_owned)f(\()h │ │ │ │ (DV)g(*dv)g(\))h(;)227 1276 y Fl(This)24 b(metho)s(d)g(returns)g(the)g │ │ │ │ @@ -4455,33 +4463,33 @@ │ │ │ │ (double)h(value)f(\))h(;)227 5242 y Fl(This)30 b(metho)s(d)g(sets)g │ │ │ │ (the)h Fk(loc)p Fl('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ Fk(value)p Fl(.)227 5407 y Ff(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)40 b Fl(If)28 b Fk(dv)h Fl(is)g Fk(NULL)e Fl(or)j │ │ │ │ Fk(loc)46 b(<)i(0)p Fl(,)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 Fl(4)p 136 100 1182 4 v │ │ │ │ -1364 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 0 399 a Fd(1.2.3)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ -592 y Fl(There)30 b(are)h(three)f(initializer)j(metho)s(ds.)111 │ │ │ │ -806 y(1.)46 b Fk(void)h(DV_init)f(\()h(DV)g(*dv,)g(int)g(size,)f │ │ │ │ -(double)g(*entries)g(\))h(;)227 953 y Fl(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 Fk(DV)p 2716 1066 │ │ │ │ -29 4 v 34 w(clearData\(\))p Fl(.)37 b(If)28 b Fk(entries)46 │ │ │ │ -b(!=)227 1178 y(NULL)31 b Fl(then)h(the)h Fk(vec)e Fl(\014eld)h(is)g │ │ │ │ -(set)h(to)g Fk(entries)p Fl(,)e(the)h Fk(size)f Fl(and)h │ │ │ │ -Fk(maxsize)e Fl(\014elds)h(are)i(set)g(to)g Fk(size)p │ │ │ │ -Fl(,)f(and)227 1291 y Fk(owned)25 b Fl(is)h(set)g(to)h(zero)g(b)s │ │ │ │ -(ecause)f(the)g(ob)5 b(ject)27 b(do)s(es)f(not)g(o)m(wn)g(the)g(en)m │ │ │ │ -(tries.)40 b(If)26 b Fk(entries)e Fl(is)i Fk(NULL)f Fl(and)g │ │ │ │ -Fk(size)227 1404 y(>)48 b(0)30 b Fl(then)g(a)h(v)m(ector)h(is)e(allo)s │ │ │ │ -(cated)i(b)m(y)f(the)f(ob)5 b(ject,)32 b(and)d(the)i(ob)5 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1143 4 v │ │ │ │ +1325 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 0 399 a Fd(1.2.3)112 b(Initializer)38 │ │ │ │ +b(metho)s(ds)0 592 y Fl(There)30 b(are)h(three)f(initializer)j(metho)s │ │ │ │ +(ds.)111 806 y(1.)46 b Fk(void)h(DV_init)f(\()h(DV)g(*dv,)g(int)g │ │ │ │ +(size,)f(double)g(*entries)g(\))h(;)227 953 y Fl(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 │ │ │ │ +Fk(DV)p 2716 1066 29 4 v 34 w(clearData\(\))p Fl(.)37 │ │ │ │ +b(If)28 b Fk(entries)46 b(!=)227 1178 y(NULL)31 b Fl(then)h(the)h │ │ │ │ +Fk(vec)e Fl(\014eld)h(is)g(set)h(to)g Fk(entries)p Fl(,)e(the)h │ │ │ │ +Fk(size)f Fl(and)h Fk(maxsize)e Fl(\014elds)h(are)i(set)g(to)g │ │ │ │ +Fk(size)p Fl(,)f(and)227 1291 y Fk(owned)25 b Fl(is)h(set)g(to)h(zero)g │ │ │ │ +(b)s(ecause)f(the)g(ob)5 b(ject)27 b(do)s(es)f(not)g(o)m(wn)g(the)g(en) │ │ │ │ +m(tries.)40 b(If)26 b Fk(entries)e Fl(is)i Fk(NULL)f │ │ │ │ +Fl(and)g Fk(size)227 1404 y(>)48 b(0)30 b Fl(then)g(a)h(v)m(ector)h(is) │ │ │ │ +e(allo)s(cated)i(b)m(y)f(the)f(ob)5 b(ject,)32 b(and)d(the)i(ob)5 │ │ │ │ b(ject)31 b(o)m(wns)g(this)f(storage.)227 1551 y Ff(Err)-5 │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fl(If)26 b Fk(dv)f Fl(is)h │ │ │ │ Fk(NULL)e Fl(or)i Fk(size)47 b(<)g(0)p Fl(,)27 b(an)f(error)f(message)i │ │ │ │ (is)f(prin)m(ted)g(and)f(the)h(program)g(exits.)111 1732 │ │ │ │ y(2.)46 b Fk(void)h(DV_init1)e(\()j(DV)f(*dv,)g(int)g(size)f(\))i(;)227 │ │ │ │ 1879 y Fl(This)30 b(metho)s(d)g(initializes)i(the)f(ob)5 │ │ │ │ b(ject)31 b(giv)m(en)g(a)g(size)g(size)h(for)e(the)g(v)m(ector)i(via)f │ │ │ │ @@ -4541,17 +4549,17 @@ │ │ │ │ (offset)f(\))h(;)227 5294 y Fl(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 Fk(offset)p Fl(.)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 1182 4 v 1364 100 a Fk(DV)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fl(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1143 4 v 1325 100 a Fk(DV)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fl(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ (namely)e Fk(vec)p Fl(,)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 Fk(DV)p 792 511 29 4 v 34 │ │ │ │ w(free\(\))p Fl(,)g Fk(DV)p 1262 511 V 34 w(setSize\(\))e │ │ │ │ Fl(or)j Fk(DV)p 1958 511 V 34 w(setMaxsize\(\))d Fl(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 │ │ │ │ @@ -4610,24 +4618,24 @@ │ │ │ │ 5088 y(7.)46 b Fk(int)h(DV_sizeOf)e(\()j(DV)f(*dv)g(\))g(;)227 │ │ │ │ 5247 y Fl(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 Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fk(dv)g Fl(is)h Fk(NULL)e Fl(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 Fl(6)p 136 100 1182 4 v │ │ │ │ -1364 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 111 399 a Fl(8.)46 b Fk(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 Fl(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 Fk(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 Fl(Eac)m(h)41 b(metho)s(d)f(c)m(hec)m(ks)i(to)f │ │ │ │ -(see)g(if)f Fk(dv)g Fl(or)g Fk(pd)g Fl(is)g Fk(NULL)p │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1143 4 v │ │ │ │ +1325 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 111 399 a Fl(8.)46 b Fk(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 Fl(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 Fk(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 Fl(Eac)m(h)41 b(metho)s(d)f(c)m(hec)m(ks) │ │ │ │ +i(to)f(see)g(if)f Fk(dv)g Fl(or)g Fk(pd)g Fl(is)g Fk(NULL)p │ │ │ │ Fl(,)f(if)i(so)f(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)227 │ │ │ │ 1509 y(program)f(exits.)69 b(In)38 b(metho)s(d)h Fk(DV)p │ │ │ │ 1442 1509 29 4 v 34 w(next\(\))p Fl(,)h(if)f Fk(pd)g │ │ │ │ Fl(is)g(not)g(in)g(the)h(v)-5 b(alid)39 b(range,)j(an)e(error)e │ │ │ │ (message)j(is)227 1621 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.) │ │ │ │ 227 1781 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fk(dv)g Fl(is)h Fk(NULL)e Fl(an)h(error)g(message)h(is)g(prin)m(ted)f │ │ │ │ @@ -4680,17 +4688,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 Fk(DV)f Fl(ob)5 b(ject)31 │ │ │ │ b(is)f(simple:)41 b(the)30 b(\014rst)f(en)m(try)h(is)0 │ │ │ │ 5407 y Fk(size)p Fl(,)f(follo)m(w)m(ed)j(b)m(y)f(the)f │ │ │ │ Fk(size)g Fl(en)m(tries)h(found)e(in)h Fk(vec[])p Fl(.)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1182 4 v 1364 100 a Fk(DV)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fl(7)111 399 y(1.)46 b Fk(int)h(DV_readFromFile)d(\() │ │ │ │ +TeXDict begin 7 6 bop 91 100 1143 4 v 1325 100 a Fk(DV)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fl(7)111 399 y(1.)46 b Fk(int)h(DV_readFromFile)d(\() │ │ │ │ j(DV)g(*dv,)g(char)g(*fn)g(\))g(;)227 547 y Fl(This)33 │ │ │ │ b(metho)s(d)g(reads)g(a)h Fk(DV)f Fl(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 │ │ │ │ Fk(DV)p 751 660 29 4 v 34 w(readFromFormattedFile\(\))30 │ │ │ │ b Fl(or)37 b Fk(DV)p 2133 660 V 34 w(readFromBinaryFile\(\))p │ │ │ │ Fl(,)32 b(closes)38 b(the)f(\014le)g(and)227 772 y(returns)29 │ │ │ │ @@ -4771,18 +4779,18 @@ │ │ │ │ (\))h(;)227 5259 y Fl(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 Fk(1)f Fl(is)h(returned.)227 5407 y Ff(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(or)g │ │ │ │ Fk(fp)g Fl(are)h Fk(NULL)p Fl(,)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 Fl(8)p 136 100 1182 4 v │ │ │ │ -1364 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 111 399 a Fl(9.)46 b Fk(int)h(DV_writeForMatlab)c(\()48 │ │ │ │ -b(DV)f(*dv,)g(char)f(*name,)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1143 4 v │ │ │ │ +1325 w Fk(DV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 111 399 a Fl(9.)46 b Fk(int)h(DV_writeForMatlab)c │ │ │ │ +(\()48 b(DV)f(*dv,)g(char)f(*name,)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ 549 y Fl(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 │ │ │ │ Fk(name)f Fl(is)h(the)g(name)g(of)g(the)g(v)m(ector,)i(e.g,)g(if)e │ │ │ │ Fk(name)46 b(=)i("A")p Fl(,)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 Fk(A\(1\))47 b(=)g │ │ │ │ (1.000000000000e0)d(;)227 1112 y(A\(2\))j(=)g(2.000000000000e0)d(;)227 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 DV : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + DV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 DV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + DV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 DV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + DV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 DV : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o DenseMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1624,23 +1624,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1814,90 +1813,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3686,16 +3694,16 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 234[65 21[{}1 83.022 /CMSY10 rf /Fb 195[65 │ │ │ │ 60[{}1 83.022 /CMMI10 rf /Fc 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 /Fd 135[62 │ │ │ │ 3[62 62 4[62 8[62 23[62 8[62 68[{}7 119.552 /CMTT12 rf │ │ │ │ -/Fe 139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 1[42 2[42 │ │ │ │ -2[42 42 42 3[23 44[{}14 83.022 /CMSL10 rf │ │ │ │ +/Fe 137[44 3[33 2[42 1[69 7[37 2[46 19[62 19[23 4[42 │ │ │ │ +2[42 42 42 3[23 44[{}13 83.022 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3818,17 +3826,17 @@ │ │ │ │ b Fj(returns)j Fi(1)g Fj(if)h(the)g(matrix)f(has)g(real)g(en)n(tries,)g │ │ │ │ (and)h Fi(0)f Fj(otherwise.)125 5407 y Ff(\210)42 b Fi(DENSEMTX)p │ │ │ │ 565 5407 V 28 w(IS)p 681 5407 V 30 w(COMPLEX\(mtx\))23 │ │ │ │ b Fj(returns)k Fi(1)g Fj(if)h(the)g(matrix)f(has)g(complex)g(en)n │ │ │ │ (tries,)g(and)h Fi(0)f Fj(otherwise.)1929 5656 y(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1114 4 v │ │ │ │ -1279 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2787 100 V 0 390 a Fg(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1078 4 v │ │ │ │ +1243 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2823 100 V 0 390 a Fg(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fd(DenseMtx)c Fg(metho)t(ds)0 │ │ │ │ 598 y Fj(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 Fi(DenseMtx)0 698 y Fj(ob)5 b(ject.)0 │ │ │ │ 958 y Fc(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1138 y Fj(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) │ │ │ │ @@ -3892,26 +3900,26 @@ │ │ │ │ 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 Fh(Err)l(or)j(che)l(cking:)38 b │ │ │ │ Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)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 1114 4 v 1279 100 a Fi(DenseMtx)25 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2747 100 V 1114 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o │ │ │ │ -(em)o(ent)37 b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 529 │ │ │ │ -y Fj(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 Fh(Err)l(or)j(che)l │ │ │ │ -(cking:)38 b Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d │ │ │ │ -(message)i(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 │ │ │ │ -945 y(6.)42 b Fi(void)f(DenseMtx_rowIndic)o(es)c(\()43 │ │ │ │ -b(DenseMtx)e(*mtx,)g(int)i(*pnrow,)d(**prowind)g(\))j(;)208 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1078 4 v 1243 100 a Fi(DenseMtx)25 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2783 100 V 1078 w Fj(3)101 390 y(5.)42 │ │ │ │ +b Fi(int)g(DenseMtx_rowIncr)o(em)o(ent)37 b(\()43 b(DenseMtx)d(*mtx)i │ │ │ │ +(\))h(;)208 529 y Fj(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 Fh(Err)l(or)j(che)l(cking:)38 b Fj(If)28 b Fi(mtx)f │ │ │ │ +Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ +(the)h(program)e(exits.)101 945 y(6.)42 b Fi(void)f(DenseMtx_rowIndic)o │ │ │ │ +(es)c(\()43 b(DenseMtx)e(*mtx,)g(int)i(*pnrow,)d(**prowind)g(\))j(;)208 │ │ │ │ 1084 y Fj(This)26 b(metho)r(d)h(\014lls)f Fi(*pnrow)e │ │ │ │ Fj(with)j Fi(nrow)p Fj(,)e(the)h(n)n(um)n(b)r(er)g(of)h(ro)n(ws,)e(and) │ │ │ │ h Fi(*prowind)d Fj(with)k Fi(rowind)p Fj(,)d(a)i(p)r(oin)n(ter)g(to)g │ │ │ │ (the)208 1184 y(ro)n(w)g(indices.)208 1322 y Fh(Err)l(or)k(che)l │ │ │ │ (cking:)38 b Fj(If)28 b Fi(mtx)p Fj(,)f Fi(pnrow)f Fj(or)g │ │ │ │ Fi(prowind)f Fj(is)j Fi(NULL)p Fj(,)e(an)h(error)f(message)g(is)h(prin) │ │ │ │ n(ted)h(and)f(the)h(program)e(exits.)101 1500 y(7.)42 │ │ │ │ @@ -3973,31 +3981,31 @@ │ │ │ │ Fi(jcol)f Fj(to)i(b)r(e)208 5169 y Fi(\(real,imag\))p │ │ │ │ Fj(.)208 5308 y Fh(Err)l(or)31 b(che)l(cking:)42 b Fj(If)29 │ │ │ │ b Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)e(or)h(if)i(the)f(matrix)g(is)g(not)g │ │ │ │ (complex,)g(or)f(if)h Fi(irow)f Fj(or)g Fi(jcol)f Fj(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 Fj(4)p 125 100 1114 4 v │ │ │ │ -1279 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2787 100 V 60 390 a Fj(14.)41 b Fi(int)h(DenseMtx_row)d(\()k │ │ │ │ -(DenseMtx)d(*mtx,)h(int)i(irow,)e(double)g(**prowent)f(\))j(;)208 │ │ │ │ -517 y Fj(This)27 b(metho)r(d)h(\014lls)g Fi(*prowent)c │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1078 4 v │ │ │ │ +1243 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2823 100 V 60 390 a Fj(14.)41 b Fi(int)h │ │ │ │ +(DenseMtx_row)d(\()k(DenseMtx)d(*mtx,)h(int)i(irow,)e(double)g │ │ │ │ +(**prowent)f(\))j(;)208 517 y Fj(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ +Fi(*prowent)c Fj(with)k(the)g(\014rst)g(lo)r(cation)f(of)g(the)h(en)n │ │ │ │ +(tries)f(in)h(ro)n(w)e Fi(irow)p Fj(.)208 644 y Fh(R)l(eturn)31 │ │ │ │ +b(c)l(o)l(des:)45 b Fi(1)31 b Fj(is)g(a)g(normal)f(return,)i │ │ │ │ +Fi(-1)e Fj(means)h Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)f │ │ │ │ +Fi(-2)g Fj(means)h(in)n(v)-5 b(alid)31 b(t)n(yp)r(e)g(for)g │ │ │ │ +Fi(mtx)p Fj(,)g Fi(-3)g Fj(means)208 744 y Fi(irow)26 │ │ │ │ +b Fj(is)h(out-of-range,)f Fi(-4)g Fj(means)h Fi(prowent)e │ │ │ │ +Fj(is)j Fi(NULL)p Fj(.)60 899 y(15.)41 b Fi(int)h(DenseMtx_column)37 │ │ │ │ +b(\()43 b(DenseMtx)e(*mtx,)g(int)i(jcol,)e(double)g(**pcolent)f(\))j(;) │ │ │ │ +208 1026 y Fj(This)27 b(metho)r(d)h(\014lls)g Fi(*pcolent)c │ │ │ │ Fj(with)k(the)g(\014rst)g(lo)r(cation)f(of)g(the)h(en)n(tries)f(in)h │ │ │ │ -(ro)n(w)e Fi(irow)p Fj(.)208 644 y Fh(R)l(eturn)31 b(c)l(o)l(des:)45 │ │ │ │ -b Fi(1)31 b Fj(is)g(a)g(normal)f(return,)i Fi(-1)e Fj(means)h │ │ │ │ -Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)f Fi(-2)g Fj(means)h(in)n(v)-5 │ │ │ │ -b(alid)31 b(t)n(yp)r(e)g(for)g Fi(mtx)p Fj(,)g Fi(-3)g │ │ │ │ -Fj(means)208 744 y Fi(irow)26 b Fj(is)h(out-of-range,)f │ │ │ │ -Fi(-4)g Fj(means)h Fi(prowent)e Fj(is)j Fi(NULL)p Fj(.)60 │ │ │ │ -899 y(15.)41 b Fi(int)h(DenseMtx_column)37 b(\()43 b(DenseMtx)e(*mtx,)g │ │ │ │ -(int)i(jcol,)e(double)g(**pcolent)f(\))j(;)208 1026 y │ │ │ │ -Fj(This)27 b(metho)r(d)h(\014lls)g Fi(*pcolent)c Fj(with)k(the)g │ │ │ │ -(\014rst)g(lo)r(cation)f(of)g(the)h(en)n(tries)f(in)h(column)g │ │ │ │ -Fi(jcol)p Fj(.)208 1153 y Fh(R)l(eturn)j(c)l(o)l(des:)45 │ │ │ │ +(column)g Fi(jcol)p Fj(.)208 1153 y Fh(R)l(eturn)j(c)l(o)l(des:)45 │ │ │ │ b Fi(1)31 b Fj(is)g(a)g(normal)f(return,)i Fi(-1)e Fj(means)h │ │ │ │ Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)f Fi(-2)g Fj(means)h(in)n(v)-5 │ │ │ │ b(alid)31 b(t)n(yp)r(e)g(for)g Fi(mtx)p Fj(,)g Fi(-3)g │ │ │ │ Fj(means)208 1253 y Fi(jcol)26 b Fj(is)h(out-of-range,)f │ │ │ │ Fi(-4)g Fj(means)h Fi(pcolent)e Fj(is)j Fi(NULL)p Fj(.)0 │ │ │ │ 1499 y Fc(1.2.3)112 b(Initialization)39 b(metho)s(ds)0 │ │ │ │ 1672 y Fj(There)27 b(are)g(three)g(initializer)g(metho)r(ds.)101 │ │ │ │ @@ -4070,31 +4078,31 @@ │ │ │ │ y Fj(This)27 b(metho)r(d)h(initializes)g(the)g Fi(a2)f │ │ │ │ Fj(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 Fh(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fj(If)28 b Fi(mtx)f Fj(or)g Fi(a2)f Fj(is)i Fi(NULL)p │ │ │ │ Fj(,)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 1114 4 v 1279 100 a Fi(DenseMtx)25 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2747 100 V 1114 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ -b(metho)s(ds)101 570 y Fj(1.)k Fi(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 Fj(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 Fh(Err)l(or)h(che)l │ │ │ │ -(cking:)38 b Fj(If)27 b Fi(type)e Fj(is)i(neither)f Fi(SPOOLES)p │ │ │ │ -1758 839 27 4 v 29 w(REAL)f Fj(nor)g Fi(SPOOLES)p 2442 │ │ │ │ -839 V 29 w(COMPLEX)p Fj(,)f(or)h(if)j Fi(nrow)d Fj(or)g │ │ │ │ -Fi(ncol)g Fj(is)i(less)f(than)208 939 y(zero,)g(an)h(error)f(message)g │ │ │ │ -(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)101 1109 │ │ │ │ -y(2.)42 b Fi(int)g(DenseMtx_nbytesI)o(nW)o(ork)o(sp)o(ace)37 │ │ │ │ -b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 1243 y Fj(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(in)h │ │ │ │ -(the)g(w)n(orkspace)d(o)n(wned)i(b)n(y)h(this)g(ob)5 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1078 4 v 1243 100 a Fi(DenseMtx)25 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2783 100 V 1078 w Fj(5)0 390 y Fc(1.2.4)112 │ │ │ │ +b(Utilit)m(y)38 b(metho)s(ds)101 570 y Fj(1.)k Fi(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 Fj(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 Fh(Err)l(or)h(che)l(cking:)38 b Fj(If)27 b Fi(type)e │ │ │ │ +Fj(is)i(neither)f Fi(SPOOLES)p 1758 839 27 4 v 29 w(REAL)f │ │ │ │ +Fj(nor)g Fi(SPOOLES)p 2442 839 V 29 w(COMPLEX)p Fj(,)f(or)h(if)j │ │ │ │ +Fi(nrow)d Fj(or)g Fi(ncol)g Fj(is)i(less)f(than)208 939 │ │ │ │ +y(zero,)g(an)h(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program) │ │ │ │ +d(exits.)101 1109 y(2.)42 b Fi(int)g(DenseMtx_nbytesI)o(nW)o(ork)o(sp)o │ │ │ │ +(ace)37 b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 1243 y │ │ │ │ +Fj(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(in)h(the)g(w)n(orkspace)d(o)n(wned)i(b)n(y)h(this)g(ob)5 │ │ │ │ b(ject.)208 1378 y Fh(Err)l(or)30 b(che)l(cking:)38 b │ │ │ │ Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d(message)i(is) │ │ │ │ g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 1548 │ │ │ │ y(3.)42 b Fi(void)f(DenseMtx_setNbyte)o(sIn)o(Wo)o(rks)o(pa)o(ce)c(\() │ │ │ │ 43 b(DenseMtx)e(*mtx,)g(int)h(nbytes)f(\))j(;)208 1682 │ │ │ │ y Fj(This)22 b(metho)r(d)g(sets)g(the)g(n)n(um)n(b)r(er)g(of)g(b)n │ │ │ │ (ytes)f(in)i(the)f(w)n(orkspace)e(of)i(this)g(ob)5 b(ject.)35 │ │ │ │ @@ -4159,28 +4167,28 @@ │ │ │ │ Fi(irowB)e Fj(is)h(out)h(of)f(range,)h(or)f(if)h Fi(mtxA)e │ │ │ │ Fj(is)h Fi(NULL)p Fj(,)f(or)h(if)h Fi(irowA)e Fj(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 Fi(mtxB)f Fj(and)h Fi(mtxA)f Fj(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 Fj(6)p 125 100 1114 4 v │ │ │ │ -1279 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2787 100 V 101 390 a Fj(9.)42 b Fi(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 Fj(This)27 b(metho)r(d)h(adds)f(ro)n(w) │ │ │ │ -g Fi(irowA)e Fj(from)j(matrix)f Fi(mtxA)f Fj(in)n(to)h(ro)n(w)f │ │ │ │ -Fi(irowB)g Fj(of)i(matrix)f Fi(mtxB)p Fj(.)208 659 y │ │ │ │ -Fh(Err)l(or)34 b(che)l(cking:)46 b Fj(If)32 b Fi(mtxB)e │ │ │ │ -Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h Fi(irowB)e Fj(is)h(out)h(of)f │ │ │ │ -(range,)h(or)f(if)h Fi(mtxA)e Fj(is)h Fi(NULL)p Fj(,)f(or)h(if)h │ │ │ │ -Fi(irowA)e Fj(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 Fi(mtxB)f Fj(and)h │ │ │ │ -Fi(mtxA)f Fj(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 Fj(6)p 125 100 1078 4 v │ │ │ │ +1243 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2823 100 V 101 390 a Fj(9.)42 b Fi(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 Fj(This)27 │ │ │ │ +b(metho)r(d)h(adds)f(ro)n(w)g Fi(irowA)e Fj(from)j(matrix)f │ │ │ │ +Fi(mtxA)f Fj(in)n(to)h(ro)n(w)f Fi(irowB)g Fj(of)i(matrix)f │ │ │ │ +Fi(mtxB)p Fj(.)208 659 y Fh(Err)l(or)34 b(che)l(cking:)46 │ │ │ │ +b Fj(If)32 b Fi(mtxB)e Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h │ │ │ │ +Fi(irowB)e Fj(is)h(out)h(of)f(range,)h(or)f(if)h Fi(mtxA)e │ │ │ │ +Fj(is)h Fi(NULL)p Fj(,)f(or)h(if)h Fi(irowA)e Fj(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 │ │ │ │ +Fi(mtxB)f Fj(and)h Fi(mtxA)f Fj(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 Fi(void)g(DenseMtx_zero)e(\()k(DenseMtx)d(*mtx)i(\))h │ │ │ │ (;)208 1163 y Fj(This)27 b(metho)r(d)h(zeros)e(the)i(en)n(tries)f(in)h │ │ │ │ (the)g(matrix.)208 1298 y Fh(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)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 Fi(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 │ │ │ │ @@ -4242,26 +4250,26 @@ │ │ │ │ Fj(in)n(to)j(ro)n(w)e Fi(irow)g Fj(of)i(matrix)f Fi(mtx)p │ │ │ │ Fj(.)208 5308 y Fh(Err)l(or)j(che)l(cking:)39 b Fj(If)28 │ │ │ │ b Fi(mtx)e Fj(or)h Fi(vec)f Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h │ │ │ │ Fi(irow)22 b Fb(<)g Fj(0)28 b(or)e Fi(irow)c Fa(\025)h │ │ │ │ Fi(nrow)n Fj(,)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 1114 4 v 1279 100 a Fi(DenseMtx)25 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2747 100 V 1114 w Fj(7)0 390 y Fc(1.2.5)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ -573 y Fj(The)23 b(\014le)g(structure)f(of)h(a)g Fi(DenseMtx)c │ │ │ │ -Fj(ob)5 b(ject)23 b(is)g(simple.)35 b(First)23 b(comes)f(sev)n(en)g │ │ │ │ -(scalars,)g Fi(type)p Fj(,)h Fi(rowid)p Fj(,)e Fi(colid)p │ │ │ │ -Fj(,)h Fi(nrow)p Fj(,)h Fi(ncol)p Fj(,)0 672 y Fi(inc1)g │ │ │ │ -Fj(and)h Fi(inc2)p Fj(,)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 │ │ │ │ -988 y(1.)42 b Fi(int)g(DenseMtx_readFro)o(mF)o(ile)37 │ │ │ │ -b(\()43 b(DenseMtx)d(*mtx,)i(char)g(*fn)g(\))h(;)208 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1078 4 v 1243 100 a Fi(DenseMtx)25 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2783 100 V 1078 w Fj(7)0 390 y Fc(1.2.5)112 │ │ │ │ +b(IO)38 b(metho)s(ds)0 573 y Fj(The)23 b(\014le)g(structure)f(of)h(a)g │ │ │ │ +Fi(DenseMtx)c Fj(ob)5 b(ject)23 b(is)g(simple.)35 b(First)23 │ │ │ │ +b(comes)f(sev)n(en)g(scalars,)g Fi(type)p Fj(,)h Fi(rowid)p │ │ │ │ +Fj(,)e Fi(colid)p Fj(,)h Fi(nrow)p Fj(,)h Fi(ncol)p Fj(,)0 │ │ │ │ +672 y Fi(inc1)g Fj(and)h Fi(inc2)p Fj(,)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 988 y(1.)42 b Fi(int)g(DenseMtx_readFro)o(mF)o │ │ │ │ +(ile)37 b(\()43 b(DenseMtx)d(*mtx,)i(char)g(*fn)g(\))h(;)208 │ │ │ │ 1126 y Fj(This)37 b(metho)r(d)g(reads)f(an)h Fi(DenseMtx)d │ │ │ │ Fj(ob)5 b(ject)36 b(from)h(a)g(\014le.)65 b(If)37 b(the)h(the)f(\014le) │ │ │ │ g(can)g(b)r(e)h(op)r(ened)f(successfully)-7 b(,)39 b(the)208 │ │ │ │ 1225 y(metho)r(d)c(calls)f Fi(DenseMtx)p 1066 1225 27 │ │ │ │ 4 v 28 w(readFromFormatte)o(dF)o(ile)o(\(\))28 b Fj(or)34 │ │ │ │ b Fi(DenseMtx)p 2592 1225 V 28 w(readFromBinaryFi)o(le)o(\(\))p │ │ │ │ Fj(,)c(closes)k(the)208 1325 y(\014le)27 b(and)h(returns)f(the)h(v)-5 │ │ │ │ @@ -4339,21 +4347,22 @@ │ │ │ │ 5270 y Fj(This)27 b(metho)r(d)h(writes)f(a)h Fi(DenseMtx)c │ │ │ │ Fj(ob)5 b(ject)27 b(to)h(a)f(\014le)h(in)g(an)f(easily)g(readable)f │ │ │ │ (format.)208 5407 y Fh(Err)l(or)k(che)l(cking:)38 b Fj(If)28 │ │ │ │ b Fi(mtx)f Fj(or)g Fi(fp)f Fj(are)h Fi(NULL)p Fj(,)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 Fj(8)p 125 100 1114 4 v │ │ │ │ -1279 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2787 100 V 101 390 a Fj(9.)42 b Fi(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 Fj(This)27 b(metho)r(d)h(writes)f(out)h(a)f │ │ │ │ -Fi(DenseMtx)e Fj(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 Fi(a\(10,5\))40 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 125 100 1078 4 v │ │ │ │ +1243 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2823 100 V 101 390 a Fj(9.)42 b Fi(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 Fj(This)27 │ │ │ │ +b(metho)r(d)h(writes)f(out)h(a)f Fi(DenseMtx)e Fj(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 Fi(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 Fj(for)27 b(complex)g(matrices,)g(or)208 │ │ │ │ 1121 y Fi(a\(10,5\))40 b(=)87 b(-1.550328201511e)o(-01)37 │ │ │ │ b(;)208 1320 y Fj(for)27 b(real)g(matrices,)h(where)f(m)n(txname)h(=)g │ │ │ │ Fi("a")p Fj(.)38 b(The)28 b(matrix)f(indices)h(come)g(from)g(the)g │ │ │ │ Fi(rowind[])d Fj(and)j Fi(colind[])208 1420 y Fj(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 October 18, 2025 │ │ │ │ │ + 2 DenseMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + DenseMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 DenseMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + DenseMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 DenseMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + DenseMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 DenseMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Drand.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1722,23 +1722,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1912,90 +1911,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3606,16 +3614,16 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 234[71 71 20[{}2 90.9091 /CMSY10 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 │ │ │ │ 11[42 6[80 14[56 56 56 2[31 46[{}22 99.6264 /CMBX12 rf │ │ │ │ /Fc 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 /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ -1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +/CMTI10 rf /Fd 137[48 3[36 2[45 1[76 7[40 2[51 19[68 │ │ │ │ +19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ /Fe 141[62 3[62 9[62 2[62 28[62 68[{}5 119.552 /CMTT12 │ │ │ │ rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ @@ -3708,45 +3716,45 @@ │ │ │ │ b(ject,)31 b(uniform)e(is)i Fh(1)p Fj(,)f(normal)g(is)h │ │ │ │ Fh(2)0 5064 y Fg(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ (of)g Fe(Drand)e Fg(metho)t(ds)0 5294 y Fj(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 Fh(Drand)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 1106 4 v │ │ │ │ -1288 w Fh(Drand)28 b Fd(:)41 b Fc(DRAFT)30 b Fd(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -602 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 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 Fh(Drand)h(*)g │ │ │ │ -(Drand_new)e(\()j(void)e(\))i(;)227 1130 y Fj(This)28 │ │ │ │ -b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ -Fh(Drand)f Fj(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ -227 1243 y(b)m(y)j(a)f(call)i(to)f Fh(Drand)p 953 1243 │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 1446 y(2.)46 │ │ │ │ -b Fh(void)h(Drand_setDefaultFields)42 b(\()47 b(Drand)f(*drand)h(\))g │ │ │ │ -(;)227 1604 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(structure's)f │ │ │ │ -(\014elds)g(to)h(default)g(v)-5 b(alues.)227 1848 y Fh(drand->seed1)45 │ │ │ │ -b(=)95 b(123456789.0)45 b(;)i(drand->seed2)e(=)95 b(987654321.0)44 │ │ │ │ -b(;)227 1961 y(drand->base1)h(=)i(2147483563.0)e(;)i(drand->base2)e(=)i │ │ │ │ -(2147483399.0)d(;)227 2074 y(drand->lower)h(=)477 b(0.0)47 │ │ │ │ -b(;)g(drand->upper)e(=)477 b(1.0)46 b(;)227 2187 y(drand->mean)93 │ │ │ │ -b(=)477 b(0.0)47 b(;)g(drand->sigma)e(=)477 b(1.0)46 │ │ │ │ -b(;)227 2300 y(drand->mode)93 b(=)572 b(1)48 b(;)227 │ │ │ │ -2544 y Fj(The)30 b(default)h(mo)s(de)f(is)g(a)h(uniform)e(distribution) │ │ │ │ -h(on)g Fh([0,1])p Fj(.)227 2702 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fj(If)30 b Fh(drand)f Fj(is)i Fh(NULL)p │ │ │ │ -Fj(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ -(exits.)111 2905 y(3.)46 b Fh(void)h(Drand_clearData)d(\()j(Drand)f │ │ │ │ -(*drand)g(\))i(;)227 3063 y Fj(This)31 b(metho)s(d)h(clears)h(an)m(y)f │ │ │ │ -(data)h(o)m(wned)f(b)m(y)g(the)g(ob)5 b(ject.)46 b(It)33 │ │ │ │ -b(then)e(sets)i(the)f(default)g(\014elds)g(with)f(a)i(call)227 │ │ │ │ -3176 y(to)e Fh(Drand)p 584 3176 V 33 w(setDefaultFields\(\))p │ │ │ │ -Fj(.)227 3333 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1067 4 v │ │ │ │ +1248 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 602 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 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 Fh(Drand)h(*)g(Drand_new)e(\()j(void)e(\))i(;)227 │ │ │ │ +1130 y Fj(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e │ │ │ │ +(the)h Fh(Drand)f Fj(structure)g(and)g(then)g(sets)i(the)f(default)f │ │ │ │ +(\014elds)227 1243 y(b)m(y)j(a)f(call)i(to)f Fh(Drand)p │ │ │ │ +953 1243 29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 │ │ │ │ +1446 y(2.)46 b Fh(void)h(Drand_setDefaultFields)42 b(\()47 │ │ │ │ +b(Drand)f(*drand)h(\))g(;)227 1604 y Fj(This)30 b(metho)s(d)g(sets)g │ │ │ │ +(the)h(structure's)f(\014elds)g(to)h(default)g(v)-5 b(alues.)227 │ │ │ │ +1848 y Fh(drand->seed1)45 b(=)95 b(123456789.0)45 b(;)i(drand->seed2)e │ │ │ │ +(=)95 b(987654321.0)44 b(;)227 1961 y(drand->base1)h(=)i(2147483563.0)e │ │ │ │ +(;)i(drand->base2)e(=)i(2147483399.0)d(;)227 2074 y(drand->lower)h(=) │ │ │ │ +477 b(0.0)47 b(;)g(drand->upper)e(=)477 b(1.0)46 b(;)227 │ │ │ │ +2187 y(drand->mean)93 b(=)477 b(0.0)47 b(;)g(drand->sigma)e(=)477 │ │ │ │ +b(1.0)46 b(;)227 2300 y(drand->mode)93 b(=)572 b(1)48 │ │ │ │ +b(;)227 2544 y Fj(The)30 b(default)h(mo)s(de)f(is)g(a)h(uniform)e │ │ │ │ +(distribution)h(on)g Fh([0,1])p Fj(.)227 2702 y Fc(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fh(drand)f │ │ │ │ +Fj(is)i Fh(NULL)p Fj(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ +(the)h(program)f(exits.)111 2905 y(3.)46 b Fh(void)h(Drand_clearData)d │ │ │ │ +(\()j(Drand)f(*drand)g(\))i(;)227 3063 y Fj(This)31 b(metho)s(d)h │ │ │ │ +(clears)h(an)m(y)f(data)h(o)m(wned)f(b)m(y)g(the)g(ob)5 │ │ │ │ +b(ject.)46 b(It)33 b(then)e(sets)i(the)f(default)g(\014elds)g(with)f(a) │ │ │ │ +i(call)227 3176 y(to)e Fh(Drand)p 584 3176 V 33 w(setDefaultFields\(\)) │ │ │ │ +p Fj(.)227 3333 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fj(If)30 b Fh(drand)f Fj(is)i Fh(NULL)p Fj(,)e(an)h(error)g(message)i │ │ │ │ (is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)111 3536 │ │ │ │ y(4.)46 b Fh(void)h(Drand_free)e(\()i(Drand)g(*drand)f(\))h(;)227 │ │ │ │ 3694 y Fj(This)33 b(metho)s(d)h(frees)g(the)g(ob)5 b(ject.)53 │ │ │ │ b(It)34 b(releases)h(an)m(y)f(storage)i(b)m(y)e(a)g(call)i(to)e │ │ │ │ Fh(Drand)p 3137 3694 V 33 w(clearData\(\))d Fj(then)227 │ │ │ │ 3807 y(free's)g(the)f(storage)i(for)e(the)h(structure)f(with)g(a)h │ │ │ │ @@ -3766,42 +3774,43 @@ │ │ │ │ (b)s(er)f(seeds)h(using)g(a)h(single)g(input)e(seed.)227 │ │ │ │ 5294 y Fc(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fj(If)25 │ │ │ │ b Fh(drand)f Fj(is)h Fh(NULL)p Fj(,)g(or)h(if)f Fh(seed1)f │ │ │ │ Fa(\024)h Fj(0,)i(or)f(if)f Fh(seed1)f Fa(\025)h Fj(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 1106 4 v 1287 100 a Fh(Drand)29 │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fj(3)111 399 y(3.)46 b Fh(void)h(Drand_setSeeds)d(\() │ │ │ │ -j(Drand)g(*drand,)e(int)i(seed1,)f(int)h(seed2)g(\))g(;)227 │ │ │ │ -553 y Fj(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 │ │ │ │ -Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fh(drand)f │ │ │ │ -Fj(is)i Fh(NULL)p Fj(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ -(the)h(program)f(exits.)227 862 y Fc(Err)-5 b(or)33 b(che)-5 │ │ │ │ -b(cking:)39 b Fj(If)29 b Fh(drand)e Fj(is)i Fh(NULL)p │ │ │ │ -Fj(,)f(or)h(if)g Fh(seed1)24 b Fa(\024)h Fj(0,)k(or)g(if)g │ │ │ │ -Fh(seed1)24 b Fa(\025)h Fj(2147483563,)34 b(or)29 b(if)f │ │ │ │ -Fh(seed2)c Fa(\024)h Fj(0,)227 975 y(or)31 b(if)f Fh(seed2)24 │ │ │ │ -b Fa(\025)h Fj(2147483399,)35 b(an)30 b(error)g(message)i(is)e(prin)m │ │ │ │ -(ted)g(and)g(the)g(program)g(exits.)111 1171 y(4.)46 │ │ │ │ -b Fh(void)h(Drand_setNormal)d(\()j(Drand)f(*drand,)g(double)g(mean,)h │ │ │ │ -(double)f(sigma)g(\))i(;)227 1325 y Fj(This)26 b(metho)s(d)h(sets)g │ │ │ │ -(the)g(mo)s(de)f(to)i(b)s(e)e(a)i(normal)e(distribution)h(with)f(mean)h │ │ │ │ -Fh(mean)f Fj(and)g(v)-5 b(ariation)28 b Fh(sigma)p Fj(.)227 │ │ │ │ -1479 y Fc(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fj(If)23 │ │ │ │ -b Fh(drand)f Fj(is)i Fh(NULL)p Fj(,)f(or)g(if)h Fh(sigma)g │ │ │ │ -Fa(\024)h Fj(0,)g(an)f(error)f(message)i(is)e(prin)m(ted)g(and)g(the)h │ │ │ │ -(program)227 1592 y(exits.)111 1788 y(5.)46 b Fh(void)h │ │ │ │ -(Drand_setUniform)c(\()48 b(Drand)e(*drand,)g(double)g(lower,)g(double) │ │ │ │ -g(upper)h(\))g(;)227 1943 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(mo)s │ │ │ │ -(de)f(to)h(b)s(e)f(a)h(uniform)e(distribution)g(o)m(v)m(er)j(the)f(in)m │ │ │ │ -(terv)-5 b(al)31 b Fh([lower,upper])c Fj(;)227 2097 y │ │ │ │ -Fc(Err)-5 b(or)37 b(che)-5 b(cking:)48 b Fj(If)33 b Fh(drand)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 1067 4 v 1248 100 a Fh(Drand)29 │ │ │ │ +b Fd(:)40 b Fc(DRAFT)122 b Fd(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fj(3)111 399 y(3.)46 │ │ │ │ +b Fh(void)h(Drand_setSeeds)d(\()j(Drand)g(*drand,)e(int)i(seed1,)f(int) │ │ │ │ +h(seed2)g(\))g(;)227 553 y Fj(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 Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ +b Fh(drand)f Fj(is)i Fh(NULL)p Fj(,)e(an)h(error)g(message)i(is)e(prin) │ │ │ │ +m(ted)g(and)g(the)h(program)f(exits.)227 862 y Fc(Err)-5 │ │ │ │ +b(or)33 b(che)-5 b(cking:)39 b Fj(If)29 b Fh(drand)e │ │ │ │ +Fj(is)i Fh(NULL)p Fj(,)f(or)h(if)g Fh(seed1)24 b Fa(\024)h │ │ │ │ +Fj(0,)k(or)g(if)g Fh(seed1)24 b Fa(\025)h Fj(2147483563,)34 │ │ │ │ +b(or)29 b(if)f Fh(seed2)c Fa(\024)h Fj(0,)227 975 y(or)31 │ │ │ │ +b(if)f Fh(seed2)24 b Fa(\025)h Fj(2147483399,)35 b(an)30 │ │ │ │ +b(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g(exits.)111 │ │ │ │ +1171 y(4.)46 b Fh(void)h(Drand_setNormal)d(\()j(Drand)f(*drand,)g │ │ │ │ +(double)g(mean,)h(double)f(sigma)g(\))i(;)227 1325 y │ │ │ │ +Fj(This)26 b(metho)s(d)h(sets)g(the)g(mo)s(de)f(to)i(b)s(e)e(a)i │ │ │ │ +(normal)e(distribution)h(with)f(mean)h Fh(mean)f Fj(and)g(v)-5 │ │ │ │ +b(ariation)28 b Fh(sigma)p Fj(.)227 1479 y Fc(Err)-5 │ │ │ │ +b(or)28 b(che)-5 b(cking:)37 b Fj(If)23 b Fh(drand)f │ │ │ │ +Fj(is)i Fh(NULL)p Fj(,)f(or)g(if)h Fh(sigma)g Fa(\024)h │ │ │ │ +Fj(0,)g(an)f(error)f(message)i(is)e(prin)m(ted)g(and)g(the)h(program) │ │ │ │ +227 1592 y(exits.)111 1788 y(5.)46 b Fh(void)h(Drand_setUniform)c(\()48 │ │ │ │ +b(Drand)e(*drand,)g(double)g(lower,)g(double)g(upper)h(\))g(;)227 │ │ │ │ +1943 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(mo)s(de)f(to)h(b)s(e)f(a)h │ │ │ │ +(uniform)e(distribution)g(o)m(v)m(er)j(the)f(in)m(terv)-5 │ │ │ │ +b(al)31 b Fh([lower,upper])c Fj(;)227 2097 y Fc(Err)-5 │ │ │ │ +b(or)37 b(che)-5 b(cking:)48 b Fj(If)33 b Fh(drand)f │ │ │ │ Fj(is)i Fh(NULL)p Fj(,)f(or)h(if)g Fh(lower)c Fa(\025)g │ │ │ │ Fh(upper)o Fj(,)35 b(an)f(error)f(message)i(is)f(prin)m(ted)f(and)h │ │ │ │ (the)227 2210 y(program)c(exits.)0 2490 y Fb(1.2.3)112 │ │ │ │ b(Utilit)m(y)38 b(metho)s(ds)111 2691 y Fj(1.)46 b Fh(double)g │ │ │ │ (Drand_value)f(\()j(Drand)e(*drand)g(\))h(;)227 2845 │ │ │ │ y Fj(This)30 b(metho)s(d)g(returns)f(a)i(double)e(precision)i(random)f │ │ │ │ (n)m(um)m(b)s(er.)227 2999 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ @@ -3831,17 +3840,17 @@ │ │ │ │ Fh(n)47 b(<)h(0)f Fj(,)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 Fg(1.3)135 │ │ │ │ b(Driv)l(er)46 b(programs)g(for)f(the)g Fe(Drand)d Fg(ob)7 │ │ │ │ b(ject)0 5407 y Fj(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 Fj(4)p 136 100 1106 4 v │ │ │ │ -1288 w Fh(Drand)28 b Fd(:)41 b Fc(DRAFT)30 b Fd(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 111 399 a Fj(1.)46 b Fh(testDrand)g(msglvl)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1067 4 v │ │ │ │ +1248 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 111 399 a Fj(1.)46 b Fh(testDrand)g(msglvl)g │ │ │ │ (msgFile)f(distribution)g(param1)h(param2)g(seed1)g(seed2)h(n)227 │ │ │ │ 549 y Fj(This)30 b(driv)m(er)g(program)g(test)h(the)g │ │ │ │ Fh(Drand)e Fj(random)g(n)m(um)m(b)s(er)h(generator.)337 │ │ │ │ 761 y Ff(\210)45 b Fj(The)30 b Fh(msglvl)f Fj(parameter)i(determines)f │ │ │ │ (the)h(amoun)m(t)f(of)h(output.)337 907 y Ff(\210)45 │ │ │ │ b Fj(The)33 b Fh(msgFile)e Fj(parameter)j(determines)f(the)h(message)g │ │ │ │ (\014le)f(|)h(if)f Fh(msgFile)e Fj(is)i Fh(stdout)p Fj(,)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 October 18, 2025 │ │ │ │ │ + 2 Drand : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Drand : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Drand : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o EGraph.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1408,23 +1408,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1598,90 +1597,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3901,16 +3909,16 @@ │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 253[71 2[{}1 90.9091 /CMSY10 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[62 1[62 7[62 6[62 25[62 1[62 69[{}6 119.552 │ │ │ │ -/CMTT12 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ -1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +/CMTT12 rf /Fd 137[48 3[36 2[45 1[76 7[40 2[51 19[68 │ │ │ │ +19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fe tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4030,17 +4038,17 @@ │ │ │ │ (ts.)0 5294 y(A)37 b(correctly)i(initialized)g(and)d(non)m(trivial)i │ │ │ │ Fj(EGraph)e Fk(ob)5 b(ject)38 b(will)f(ha)m(v)m(e)i(p)s(ositiv)m(e)f │ │ │ │ Fj(nelem)e Fk(and)g Fj(nvtx)g Fk(v)-5 b(alues,)40 b(a)0 │ │ │ │ 5407 y(v)-5 b(alid)31 b Fj(adjIVL)d Fk(\014eld.)41 b(If)30 │ │ │ │ b Fj(type)46 b(=)i(1)p Fk(,)30 b(the)h Fj(vwghts)d Fk(will)j(b)s(e)f │ │ │ │ (non-)p Fj(NULL)p Fk(.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ -1264 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fc(EGraph)d Ff(metho)t(ds)0 │ │ │ │ 631 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 744 y Fj(EGraph)29 b Fk(ob)5 b(ject.)0 │ │ │ │ 1025 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1226 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 │ │ │ │ @@ -4101,33 +4109,33 @@ │ │ │ │ V 33 w(type)f Fk(parameter.)227 5294 y Fg(Err)-5 b(or)36 │ │ │ │ b(che)-5 b(cking:)45 b Fk(If)32 b Fj(egraph)f Fk(is)i │ │ │ │ Fj(NULL)f Fk(or)g Fj(type)g Fk(is)h(not)g(zero)g(or)g(one,)h(or)e(if)h │ │ │ │ (either)g Fj(nelem)e Fk(or)i Fj(nvtx)f Fk(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 1082 4 v 1263 100 a Fj(EGraph)29 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fk(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ -b(metho)s(ds)111 591 y Fk(1.)46 b Fj(Graph)h(EGraph_mkAdjGraph)c(\()k │ │ │ │ -(EGraph)f(*egraph)g(\))i(;)227 736 y Fk(This)26 b(metho)s(d)h(creates)h │ │ │ │ -(and)f(returns)f(a)h Fj(Graph)f Fk(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 Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fk(If)30 b Fj(egraph)f Fk(is)h Fj(NULL)p │ │ │ │ -Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ -(exits.)111 1174 y(2.)46 b Fj(EGraph)g(*)i(EGraph_make9P)c(\()j(int)g │ │ │ │ -(n1,)g(int)g(n2,)g(int)g(ncomp)f(\))i(;)227 1320 y Fk(This)34 │ │ │ │ -b(metho)s(d)h(creates)h(and)e(returns)g(a)h Fj(EGraph)e │ │ │ │ -Fk(ob)5 b(ject)36 b(for)f(a)g Fj(n1)22 b Fa(\002)h Fj(n2)35 │ │ │ │ -b Fk(grid)f(for)h(a)g(9-p)s(oin)m(t)h(op)s(erator)227 │ │ │ │ -1433 y(matrix.)k(Eac)m(h)25 b(elemen)m(t)i(is)e(a)g(linear)g │ │ │ │ -(quadrilateral)h(\014nite)f(elemen)m(t)i(with)d Fj(ncomp)g │ │ │ │ -Fk(degrees)h(of)g(freedom)g(at)227 1546 y(the)i(grid)f(p)s(oin)m(ts.)40 │ │ │ │ -b(The)26 b(resulting)g(graph)g(has)h Fj(n1*n2*ncomp)c │ │ │ │ +TeXDict begin 3 2 bop 91 100 1043 4 v 1224 100 a Fj(EGraph)29 │ │ │ │ +b Fd(:)40 b Fg(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fk(3)0 399 y Fb(1.2.3)112 │ │ │ │ +b(Utilit)m(y)38 b(metho)s(ds)111 591 y Fk(1.)46 b Fj(Graph)h │ │ │ │ +(EGraph_mkAdjGraph)c(\()k(EGraph)f(*egraph)g(\))i(;)227 │ │ │ │ +736 y Fk(This)26 b(metho)s(d)h(creates)h(and)f(returns)f(a)h │ │ │ │ +Fj(Graph)f Fk(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 Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ +b Fj(egraph)f Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e │ │ │ │ +(prin)m(ted)g(and)g(the)g(program)g(exits.)111 1174 y(2.)46 │ │ │ │ +b Fj(EGraph)g(*)i(EGraph_make9P)c(\()j(int)g(n1,)g(int)g(n2,)g(int)g │ │ │ │ +(ncomp)f(\))i(;)227 1320 y Fk(This)34 b(metho)s(d)h(creates)h(and)e │ │ │ │ +(returns)g(a)h Fj(EGraph)e Fk(ob)5 b(ject)36 b(for)f(a)g │ │ │ │ +Fj(n1)22 b Fa(\002)h Fj(n2)35 b Fk(grid)f(for)h(a)g(9-p)s(oin)m(t)h(op) │ │ │ │ +s(erator)227 1433 y(matrix.)k(Eac)m(h)25 b(elemen)m(t)i(is)e(a)g │ │ │ │ +(linear)g(quadrilateral)h(\014nite)f(elemen)m(t)i(with)d │ │ │ │ +Fj(ncomp)g Fk(degrees)h(of)g(freedom)g(at)227 1546 y(the)i(grid)f(p)s │ │ │ │ +(oin)m(ts.)40 b(The)26 b(resulting)g(graph)g(has)h Fj(n1*n2*ncomp)c │ │ │ │ Fk(v)m(ertices)28 b(and)e Fj(\(n1-1\)*\(n2-1\))d Fk(elemen)m(ts.)227 │ │ │ │ 1691 y Fg(Err)-5 b(or)37 b(che)-5 b(cking:)45 b Fk(If)32 │ │ │ │ b Fj(n1)p Fk(,)h Fj(n2)g Fk(or)g Fj(ncomp)e Fk(is)i(less)g(than)g(or)g │ │ │ │ (equal)g(to)h(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)227 │ │ │ │ 1804 y(and)d(the)h(program)f(exits.)111 1983 y(3.)46 │ │ │ │ b Fj(EGraph)g(*)i(EGraph_make27P)c(\()j(int)g(n1,)g(int)g(n2,)g(int)g │ │ │ │ (n3,)g(int)g(ncomp)f(\))h(;)227 2129 y Fk(This)22 b(metho)s(d)g │ │ │ │ @@ -4183,19 +4191,19 @@ │ │ │ │ 5261 y(the)d(data,)h(the)f(v)-5 b(alue)30 b Fj(1)f Fk(is)h(returned.)39 │ │ │ │ b(If)29 b(an)h(IO)f(error)g(is)h(encoun)m(tered)g(from)f │ │ │ │ Fj(fread)p Fk(,)g(zero)h(is)g(returned.)227 5407 y Fg(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ Fk(or)h Fj(fp)g Fk(are)h Fj(NULL)e Fk(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 Fk(4)p 136 100 1082 4 v │ │ │ │ -1264 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 111 399 a Fk(4.)46 b Fj(int)h(EGraph_writeToFile)c │ │ │ │ -(\()k(EGraph)g(*egraph,)e(char)i(*fn)g(\))g(;)227 546 │ │ │ │ -y Fk(This)29 b(metho)s(d)h(writes)g(an)g Fj(EGraph)e │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 111 399 a Fk(4.)46 b Fj(int)h │ │ │ │ +(EGraph_writeToFile)c(\()k(EGraph)g(*egraph,)e(char)i(*fn)g(\))g(;)227 │ │ │ │ +546 y Fk(This)29 b(metho)s(d)h(writes)g(an)g Fj(EGraph)e │ │ │ │ Fk(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 Fj(EGraph)p 1002 658 29 │ │ │ │ 4 v 33 w(writeFromFormattedFile\(\))17 b Fk(or)24 b Fj(EGraph)p │ │ │ │ 2597 658 V 33 w(writeFromBinaryFile\(\))p Fk(,)c(closes)227 │ │ │ │ 771 y(the)31 b(\014le)f(and)g(returns)f(the)i(v)-5 b(alue)31 │ │ │ │ b(returned)e(from)h(the)g(called)i(routine.)227 918 y │ │ │ │ @@ -4265,44 +4273,45 @@ │ │ │ │ y Fe(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j(determines)f │ │ │ │ (the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e Fk(is)i │ │ │ │ Fj(stdout)p Fk(,)g(then)g(the)427 5294 y(message)27 b(\014le)f(is)g │ │ │ │ Fg(stdout)p Fk(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ Fg(app)-5 b(end)28 b Fk(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 1082 4 v 1263 100 a Fj(EGraph)29 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fk(5)337 399 y Fe(\210)45 b Fk(The)35 │ │ │ │ -b Fj(inFile)e Fk(parameter)i(is)g(the)h(input)e(\014le)h(for)f(the)h │ │ │ │ -Fj(EGraph)f Fk(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 Fj(*.egraphf)18 b Fk(or)i Fj(*.egraphb)p │ │ │ │ -Fk(.)35 b(The)20 b Fj(EGraph)e Fk(ob)5 b(ject)22 b(is)e(read)g(from)g │ │ │ │ -(the)g(\014le)h(via)g(the)f Fj(EGraph)p 3559 511 29 4 │ │ │ │ -v 33 w(readFromFile\(\))427 624 y Fk(metho)s(d.)337 780 │ │ │ │ -y Fe(\210)45 b Fk(The)25 b Fj(outFile)e Fk(parameter)j(is)f(the)h │ │ │ │ -(output)f(\014le)g(for)g(the)g Fj(EGraph)f Fk(ob)5 b(ject.)40 │ │ │ │ -b(If)25 b Fj(outFile)e Fk(is)i Fj(none)f Fk(then)427 │ │ │ │ -893 y(the)e Fj(EGraph)e Fk(ob)5 b(ject)22 b(is)f(not)h(written)f(to)i │ │ │ │ -(a)e(\014le.)38 b(Otherwise,)23 b(the)f Fj(EGraph)p 2931 │ │ │ │ -893 V 33 w(writeToFile\(\))17 b Fk(metho)s(d)427 1006 │ │ │ │ -y(is)34 b(called)h(to)f(write)g(the)g(ob)5 b(ject)35 │ │ │ │ -b(to)f(a)g(formatted)h(\014le)e(\(if)h Fj(outFile)e Fk(is)i(of)g(the)g │ │ │ │ -(form)f Fj(*.egraphf)p Fk(\),)427 1119 y(or)e(a)f(binary)g(\014le)g │ │ │ │ -(\(if)h Fj(outFile)e Fk(is)h(of)g(the)h(form)f Fj(*.egraphb)p │ │ │ │ -Fk(\).)111 1355 y(2.)46 b Fj(mkGraph)g(msglvl)g(msgFile)g(inEGraphFile) │ │ │ │ -e(outGraphFile)227 1515 y Fk(This)38 b(driv)m(er)g(program)g(reads)g │ │ │ │ -(in)g(an)g Fj(EGraph)f Fk(ob)5 b(ject)39 b(and)f(creates)i(a)e │ │ │ │ -Fj(Graph)f Fk(ob)5 b(ject,)42 b(whic)m(h)c(is)g(then)227 │ │ │ │ -1628 y(optionally)32 b(written)e(out)h(to)g(a)g(\014le.)337 │ │ │ │ -1865 y Fe(\210)45 b Fk(The)28 b Fj(msglvl)f Fk(parameter)i(determines)g │ │ │ │ -(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fj(msglvl)46 │ │ │ │ -b(>=)h(3)28 b Fk(means)427 1978 y(the)j Fj(EGraph)e Fk(ob)5 │ │ │ │ -b(ject)31 b(is)f(written)h(to)g(the)f(message)i(\014le.)337 │ │ │ │ -2133 y Fe(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j(determines) │ │ │ │ -f(the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e Fk(is)i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1043 4 v 1224 100 a Fj(EGraph)29 │ │ │ │ +b Fd(:)40 b Fg(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fk(5)337 399 y Fe(\210)45 │ │ │ │ +b Fk(The)35 b Fj(inFile)e Fk(parameter)i(is)g(the)h(input)e(\014le)h │ │ │ │ +(for)f(the)h Fj(EGraph)f Fk(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 Fj(*.egraphf)18 b Fk(or)i │ │ │ │ +Fj(*.egraphb)p Fk(.)35 b(The)20 b Fj(EGraph)e Fk(ob)5 │ │ │ │ +b(ject)22 b(is)e(read)g(from)g(the)g(\014le)h(via)g(the)f │ │ │ │ +Fj(EGraph)p 3559 511 29 4 v 33 w(readFromFile\(\))427 │ │ │ │ +624 y Fk(metho)s(d.)337 780 y Fe(\210)45 b Fk(The)25 │ │ │ │ +b Fj(outFile)e Fk(parameter)j(is)f(the)h(output)f(\014le)g(for)g(the)g │ │ │ │ +Fj(EGraph)f Fk(ob)5 b(ject.)40 b(If)25 b Fj(outFile)e │ │ │ │ +Fk(is)i Fj(none)f Fk(then)427 893 y(the)e Fj(EGraph)e │ │ │ │ +Fk(ob)5 b(ject)22 b(is)f(not)h(written)f(to)i(a)e(\014le.)38 │ │ │ │ +b(Otherwise,)23 b(the)f Fj(EGraph)p 2931 893 V 33 w(writeToFile\(\))17 │ │ │ │ +b Fk(metho)s(d)427 1006 y(is)34 b(called)h(to)f(write)g(the)g(ob)5 │ │ │ │ +b(ject)35 b(to)f(a)g(formatted)h(\014le)e(\(if)h Fj(outFile)e │ │ │ │ +Fk(is)i(of)g(the)g(form)f Fj(*.egraphf)p Fk(\),)427 1119 │ │ │ │ +y(or)e(a)f(binary)g(\014le)g(\(if)h Fj(outFile)e Fk(is)h(of)g(the)h │ │ │ │ +(form)f Fj(*.egraphb)p Fk(\).)111 1355 y(2.)46 b Fj(mkGraph)g(msglvl)g │ │ │ │ +(msgFile)g(inEGraphFile)e(outGraphFile)227 1515 y Fk(This)38 │ │ │ │ +b(driv)m(er)g(program)g(reads)g(in)g(an)g Fj(EGraph)f │ │ │ │ +Fk(ob)5 b(ject)39 b(and)f(creates)i(a)e Fj(Graph)f Fk(ob)5 │ │ │ │ +b(ject,)42 b(whic)m(h)c(is)g(then)227 1628 y(optionally)32 │ │ │ │ +b(written)e(out)h(to)g(a)g(\014le.)337 1865 y Fe(\210)45 │ │ │ │ +b Fk(The)28 b Fj(msglvl)f Fk(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ +(of)f(output)h(|)f(taking)i Fj(msglvl)46 b(>=)h(3)28 │ │ │ │ +b Fk(means)427 1978 y(the)j Fj(EGraph)e Fk(ob)5 b(ject)31 │ │ │ │ +b(is)f(written)h(to)g(the)f(message)i(\014le.)337 2133 │ │ │ │ +y Fe(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j(determines)f │ │ │ │ +(the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e Fk(is)i │ │ │ │ Fj(stdout)p Fk(,)g(then)g(the)427 2246 y(message)27 b(\014le)f(is)g │ │ │ │ Fg(stdout)p Fk(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ Fg(app)-5 b(end)28 b Fk(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ 2359 y(data.)337 2515 y Fe(\210)45 b Fk(The)c Fj(inEGraphFile)c │ │ │ │ Fk(parameter)k(is)g(the)g(input)f(\014le)h(for)g(the)g │ │ │ │ Fj(EGraph)e Fk(ob)5 b(ject.)73 b(It)41 b(m)m(ust)g(b)s(e)f(of)427 │ │ │ │ 2628 y(the)h(form)g Fj(*.egraphf)d Fk(or)j Fj(*.egraphb)p │ │ │ │ @@ -4347,18 +4356,18 @@ │ │ │ │ (b)s(e)g(greater)i(than)f(or)g(equal)g(to)427 5139 y(one.)337 │ │ │ │ 5294 y Fe(\210)45 b Fj(ncomp)26 b Fk(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 Fk(6)p 136 100 1082 4 v │ │ │ │ -1264 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 337 399 a Fe(\210)45 b Fk(The)20 b │ │ │ │ -Fj(outEGraphFile)d Fk(parameter)j(is)h(the)f(output)g(\014le)g(for)h │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 337 399 a Fe(\210)45 b Fk(The)20 │ │ │ │ +b Fj(outEGraphFile)d Fk(parameter)j(is)h(the)f(output)g(\014le)g(for)h │ │ │ │ (the)f Fj(EGraph)f Fk(ob)5 b(ject.)38 b(If)20 b Fj(outEGraphFile)427 │ │ │ │ 511 y Fk(is)h Fj(none)e Fk(then)h(the)g Fj(EGraph)f Fk(ob)5 │ │ │ │ b(ject)21 b(is)f(not)h(written)f(to)h(a)g(\014le.)37 │ │ │ │ b(Otherwise,)22 b(the)f Fj(EGraph)p 3409 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fk(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 │ │ │ │ Fj(outEGraphFile)c Fk(is)k(of)g(the)f(form)427 737 y │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 EGraph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + EGraph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 EGraph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + EGraph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 EGraph : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ETree.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -3608,23 +3608,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3798,90 +3797,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5423,16 +5431,16 @@ │ │ │ │ /CMMI10 rf /Fh 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 /Fi 141[62 12[62 16[62 │ │ │ │ 14[62 69[{}4 119.552 /CMTT12 rf /Fj 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 /Fk 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ -1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +/CMTI10 rf /Fk 137[48 3[36 2[45 1[76 7[40 2[51 19[68 │ │ │ │ +19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fl tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -5545,26 +5553,26 @@ │ │ │ │ b Fo(:)i(p)s(oin)m(ter)h(to)g(an)f Fn(IV)g Fo(ob)5 b(ject)31 │ │ │ │ b(to)g(hold)f(fron)m(t)h(w)m(eigh)m(ts,)h(size)f Fn(nfront)137 │ │ │ │ 5294 y Fl(\210)45 b Fn(IV)i(*bndwghtsIV)28 b Fo(:)i(p)s(oin)m(ter)h(to) │ │ │ │ g(an)f Fn(IV)g Fo(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 Fn(nfront)1927 5656 y Fo(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(ETree)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 137 399 a Fl(\210)45 b Fn(IV)i(*vtxToFrontIV)35 │ │ │ │ -b Fo(:)j(p)s(oin)m(ter)h(to)g(an)f Fn(IV)f Fo(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 Fn(nfront)0 727 y Fo(A)d(correctly)i(initialized)g(and)d(non) │ │ │ │ -m(trivial)i Fn(ETree)e Fo(ob)5 b(ject)38 b(will)g(ha)m(v)m(e)g(p)s │ │ │ │ -(ositiv)m(e)g Fn(nfront)e Fo(and)g Fn(nvtx)g Fo(v)-5 │ │ │ │ -b(alues,)40 b(a)0 840 y(v)-5 b(alid)31 b Fn(tree)e Fo(\014eld)h(and)g │ │ │ │ -(non-)p Fn(NULL)f(nodwghtsIV)p Fo(,)e Fn(bndwghtsIV)h │ │ │ │ -Fo(and)i Fn(vtxToFrontIV)d Fo(p)s(oin)m(ters.)0 1155 │ │ │ │ -y Fm(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 137 399 a Fl(\210)45 b Fn(IV)i(*vtxToFrontIV) │ │ │ │ +35 b Fo(:)j(p)s(oin)m(ter)h(to)g(an)f Fn(IV)f Fo(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 Fn(nfront)0 727 y Fo(A)d(correctly)i(initialized) │ │ │ │ +g(and)d(non)m(trivial)i Fn(ETree)e Fo(ob)5 b(ject)38 │ │ │ │ +b(will)g(ha)m(v)m(e)g(p)s(ositiv)m(e)g Fn(nfront)e Fo(and)g │ │ │ │ +Fn(nvtx)g Fo(v)-5 b(alues,)40 b(a)0 840 y(v)-5 b(alid)31 │ │ │ │ +b Fn(tree)e Fo(\014eld)h(and)g(non-)p Fn(NULL)f(nodwghtsIV)p │ │ │ │ +Fo(,)e Fn(bndwghtsIV)h Fo(and)i Fn(vtxToFrontIV)d Fo(p)s(oin)m(ters.)0 │ │ │ │ +1155 y Fm(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fi(ETree)e Fm(metho)t(ds)0 1385 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 1497 y Fn(ETree)29 │ │ │ │ b Fo(ob)5 b(ject.)0 1770 y Fh(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 1968 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 2081 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ @@ -5608,88 +5616,88 @@ │ │ │ │ b(metho)s(ds)111 5104 y Fo(1.)46 b Fn(int)h(ETree_nfront)e(\()i(ETree)f │ │ │ │ (*etree)h(\))g(;)227 5255 y Fo(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 Fj(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)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: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1106 4 v 1287 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j │ │ │ │ -(ETree)e(*etree)g(\))i(;)227 556 y Fo(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 │ │ │ │ -Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)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.)111 915 y(3.)46 b Fn(Tree)h(*)g(ETree_tree)e │ │ │ │ -(\()j(ETree)e(*etree)g(\))i(;)227 1072 y Fo(This)30 b(metho)s(d)g │ │ │ │ -(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fn(Tree)e Fo(ob)5 │ │ │ │ -b(ject.)227 1229 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1067 4 v 1248 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(3)111 399 y(2.)46 │ │ │ │ +b Fn(int)h(ETree_nvtx)e(\()j(ETree)e(*etree)g(\))i(;)227 │ │ │ │ +556 y Fo(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 Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fo(If)30 b Fn(etree)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.)111 1431 │ │ │ │ -y(4.)46 b Fn(int)95 b(ETree_root)45 b(\()i(ETree)g(*etree)f(\))h(;)227 │ │ │ │ -1588 y Fo(This)30 b(metho)s(d)g(returns)f(the)h(id)g(of)h(the)g(ro)s │ │ │ │ -(ot)f(no)s(de.)227 1745 y Fj(Err)-5 b(or)27 b(che)-5 │ │ │ │ -b(cking:)36 b Fo(If)22 b Fn(etree)f Fo(or)i Fn(etree->tree)c │ │ │ │ -Fo(is)k Fn(NULL)p Fo(,)e(an)h(error)h(message)g(is)g(prin)m(ted)f(and)g │ │ │ │ -(the)g(program)227 1858 y(exits.)111 2060 y(5.)46 b Fn(int)h(*)95 │ │ │ │ -b(ETree_par)46 b(\()h(ETree)f(*etree)h(\))g(;)227 2217 │ │ │ │ -y Fo(This)30 b(metho)s(d)g(returns)f(the)h(p)s(oin)m(ter)h(to)g(the)f │ │ │ │ -(paren)m(t)h(v)m(ector.)227 2375 y Fj(Err)-5 b(or)27 │ │ │ │ -b(che)-5 b(cking:)36 b Fo(If)22 b Fn(etree)f Fo(or)i │ │ │ │ -Fn(etree->tree)c Fo(is)k Fn(NULL)p Fo(,)e(an)h(error)h(message)g(is)g │ │ │ │ -(prin)m(ted)f(and)g(the)g(program)227 2487 y(exits.)111 │ │ │ │ -2689 y(6.)46 b Fn(int)h(*)95 b(ETree_fch)46 b(\()h(ETree)f(*etree)h(\)) │ │ │ │ -g(;)227 2846 y Fo(This)30 b(metho)s(d)g(returns)f(the)h(p)s(oin)m(ter)h │ │ │ │ -(to)g(the)f(\014rst)g(c)m(hild)h(v)m(ector.)227 3004 │ │ │ │ -y Fj(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fo(If)22 b │ │ │ │ -Fn(etree)f Fo(or)i Fn(etree->tree)c Fo(is)k Fn(NULL)p │ │ │ │ +(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)111 915 │ │ │ │ +y(3.)46 b Fn(Tree)h(*)g(ETree_tree)e(\()j(ETree)e(*etree)g(\))i(;)227 │ │ │ │ +1072 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ +g Fn(Tree)e Fo(ob)5 b(ject.)227 1229 y Fj(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)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.)111 1431 y(4.)46 b Fn(int)95 b(ETree_root)45 │ │ │ │ +b(\()i(ETree)g(*etree)f(\))h(;)227 1588 y Fo(This)30 │ │ │ │ +b(metho)s(d)g(returns)f(the)h(id)g(of)h(the)g(ro)s(ot)f(no)s(de.)227 │ │ │ │ +1745 y Fj(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fo(If)22 │ │ │ │ +b Fn(etree)f Fo(or)i Fn(etree->tree)c Fo(is)k Fn(NULL)p │ │ │ │ Fo(,)e(an)h(error)h(message)g(is)g(prin)m(ted)f(and)g(the)g(program)227 │ │ │ │ -3117 y(exits.)111 3318 y(7.)46 b Fn(int)h(*)95 b(ETree_sib)46 │ │ │ │ -b(\()h(ETree)f(*etree)h(\))g(;)227 3475 y Fo(This)30 │ │ │ │ -b(metho)s(d)g(returns)f(the)h(p)s(oin)m(ter)h(to)g(the)f(sibling)h(v)m │ │ │ │ -(ector.)227 3633 y Fj(Err)-5 b(or)27 b(che)-5 b(cking:)36 │ │ │ │ +1858 y(exits.)111 2060 y(5.)46 b Fn(int)h(*)95 b(ETree_par)46 │ │ │ │ +b(\()h(ETree)f(*etree)h(\))g(;)227 2217 y Fo(This)30 │ │ │ │ +b(metho)s(d)g(returns)f(the)h(p)s(oin)m(ter)h(to)g(the)f(paren)m(t)h(v) │ │ │ │ +m(ector.)227 2375 y Fj(Err)-5 b(or)27 b(che)-5 b(cking:)36 │ │ │ │ b Fo(If)22 b Fn(etree)f Fo(or)i Fn(etree->tree)c Fo(is)k │ │ │ │ Fn(NULL)p Fo(,)e(an)h(error)h(message)g(is)g(prin)m(ted)f(and)g(the)g │ │ │ │ -(program)227 3746 y(exits.)111 3947 y(8.)46 b Fn(IV)h(*)h │ │ │ │ -(ETree_nodwghtsIV)43 b(\()48 b(ETree)e(*etree)g(\))i(;)227 │ │ │ │ -4105 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ -g Fn(nodwghtsIV)c Fo(ob)5 b(ject.)227 4262 y Fj(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)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.)111 4464 y(9.)46 b Fn(int)h(*)h(ETree_nodwghts) │ │ │ │ -c(\()j(ETree)f(*etree)g(\))i(;)227 4621 y Fo(This)30 │ │ │ │ -b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ -Fn(nodwghts)d Fo(v)m(ector.)227 4778 y Fj(Err)-5 b(or)32 │ │ │ │ -b(che)-5 b(cking:)39 b Fo(If)27 b Fn(etree)f Fo(or)i │ │ │ │ -Fn(etree->nodwghtsIV)23 b Fo(is)k Fn(NULL)p Fo(,)g(an)h(error)f │ │ │ │ +(program)227 2487 y(exits.)111 2689 y(6.)46 b Fn(int)h(*)95 │ │ │ │ +b(ETree_fch)46 b(\()h(ETree)f(*etree)h(\))g(;)227 2846 │ │ │ │ +y Fo(This)30 b(metho)s(d)g(returns)f(the)h(p)s(oin)m(ter)h(to)g(the)f │ │ │ │ +(\014rst)g(c)m(hild)h(v)m(ector.)227 3004 y Fj(Err)-5 │ │ │ │ +b(or)27 b(che)-5 b(cking:)36 b Fo(If)22 b Fn(etree)f │ │ │ │ +Fo(or)i Fn(etree->tree)c Fo(is)k Fn(NULL)p Fo(,)e(an)h(error)h(message) │ │ │ │ +g(is)g(prin)m(ted)f(and)g(the)g(program)227 3117 y(exits.)111 │ │ │ │ +3318 y(7.)46 b Fn(int)h(*)95 b(ETree_sib)46 b(\()h(ETree)f(*etree)h(\)) │ │ │ │ +g(;)227 3475 y Fo(This)30 b(metho)s(d)g(returns)f(the)h(p)s(oin)m(ter)h │ │ │ │ +(to)g(the)f(sibling)h(v)m(ector.)227 3633 y Fj(Err)-5 │ │ │ │ +b(or)27 b(che)-5 b(cking:)36 b Fo(If)22 b Fn(etree)f │ │ │ │ +Fo(or)i Fn(etree->tree)c Fo(is)k Fn(NULL)p Fo(,)e(an)h(error)h(message) │ │ │ │ +g(is)g(prin)m(ted)f(and)g(the)g(program)227 3746 y(exits.)111 │ │ │ │ +3947 y(8.)46 b Fn(IV)h(*)h(ETree_nodwghtsIV)43 b(\()48 │ │ │ │ +b(ETree)e(*etree)g(\))i(;)227 4105 y Fo(This)30 b(metho)s(d)g(returns)f │ │ │ │ +(a)i(p)s(oin)m(ter)f(to)h(the)g Fn(nodwghtsIV)c Fo(ob)5 │ │ │ │ +b(ject.)227 4262 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fo(If)30 b Fn(etree)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.)111 4464 │ │ │ │ +y(9.)46 b Fn(int)h(*)h(ETree_nodwghts)c(\()j(ETree)f(*etree)g(\))i(;) │ │ │ │ +227 4621 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h │ │ │ │ +(the)g Fn(nodwghts)d Fo(v)m(ector.)227 4778 y Fj(Err)-5 │ │ │ │ +b(or)32 b(che)-5 b(cking:)39 b Fo(If)27 b Fn(etree)f │ │ │ │ +Fo(or)i Fn(etree->nodwghtsIV)23 b Fo(is)k Fn(NULL)p Fo(,)g(an)h(error)f │ │ │ │ (message)i(is)e(prin)m(ted)h(and)f(the)227 4891 y(program)j(exits.)66 │ │ │ │ 5093 y(10.)46 b Fn(IV)h(*)h(ETree_bndwghtsIV)43 b(\()48 │ │ │ │ b(ETree)e(*etree)g(\))i(;)227 5250 y Fo(This)30 b(metho)s(d)g(returns)f │ │ │ │ (a)i(p)s(oin)m(ter)f(to)h(the)g Fn(bndwghtsIV)c Fo(ob)5 │ │ │ │ b(ject.)227 5407 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fo(If)30 b Fn(etree)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: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(ETree)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 66 399 a Fo(11.)46 b Fn(int)h(*)h(ETree_bndwghts)c │ │ │ │ -(\()j(ETree)f(*etree)g(\))i(;)227 551 y Fo(This)30 b(metho)s(d)g │ │ │ │ -(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fn(bndwghts)d │ │ │ │ -Fo(v)m(ector.)227 703 y Fj(Err)-5 b(or)32 b(che)-5 b(cking:)39 │ │ │ │ -b Fo(If)27 b Fn(etree)f Fo(or)i Fn(etree->bndwghtsIV)23 │ │ │ │ -b Fo(is)k Fn(NULL)p Fo(,)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 Fn(IV)h(*)h(ETree_vtxToFrontIV)43 b(\()k(ETree)g(*etree)f(\))h(;)227 │ │ │ │ -1160 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ -g Fn(vtxToFrontIV)c Fo(ob)5 b(ject.)227 1312 y Fj(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)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.)66 1504 y(13.)46 b Fn(int)h(*)h │ │ │ │ -(ETree_vtxToFront)43 b(\()k(ETree)g(*etree)f(\))h(;)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 66 399 a Fo(11.)46 b Fn(int)h(*)h │ │ │ │ +(ETree_bndwghts)c(\()j(ETree)f(*etree)g(\))i(;)227 551 │ │ │ │ +y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ +Fn(bndwghts)d Fo(v)m(ector.)227 703 y Fj(Err)-5 b(or)32 │ │ │ │ +b(che)-5 b(cking:)39 b Fo(If)27 b Fn(etree)f Fo(or)i │ │ │ │ +Fn(etree->bndwghtsIV)23 b Fo(is)k Fn(NULL)p Fo(,)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 Fn(IV)h(*)h(ETree_vtxToFrontIV)43 b(\()k(ETree)g │ │ │ │ +(*etree)f(\))h(;)227 1160 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s │ │ │ │ +(oin)m(ter)f(to)h(the)g Fn(vtxToFrontIV)c Fo(ob)5 b(ject.)227 │ │ │ │ +1312 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ +b Fn(etree)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.)66 1504 y(13.)46 │ │ │ │ +b Fn(int)h(*)h(ETree_vtxToFront)43 b(\()k(ETree)g(*etree)f(\))h(;)227 │ │ │ │ 1656 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ g Fn(vtxToFront)c Fo(v)m(ector.)227 1809 y Fj(Err)-5 │ │ │ │ b(or)36 b(che)-5 b(cking:)44 b Fo(If)31 b Fn(etree)g │ │ │ │ Fo(or)h Fn(etree->vtxToFrontIV)27 b Fo(is)32 b Fn(NULL)p │ │ │ │ Fo(,)g(an)g(error)f(message)j(is)e(prin)m(ted)g(and)227 │ │ │ │ 1922 y(the)f(program)f(exits.)66 2113 y(14.)46 b Fn(int)h │ │ │ │ (ETree_frontSize)d(\()j(ETree)g(*etree,)e(int)i(J)h(\))f(;)227 │ │ │ │ @@ -5734,17 +5742,17 @@ │ │ │ │ Fo(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 │ │ │ │ Fn(ETree)p 2153 5407 V 33 w(clearData\(\))p Fo(,)c(The)i │ │ │ │ Fn(Tree)f Fo(ob)5 b(ject)27 b(is)e(initialized)p eop │ │ │ │ end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1106 4 v 1287 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(5)227 399 y(with)j(a)g(call)i(to)e │ │ │ │ +TeXDict begin 5 4 bop 91 100 1067 4 v 1248 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(5)227 399 y(with)i(a)g(call)i(to)e │ │ │ │ Fn(Tree)p 1000 399 29 4 v 34 w(init1\(\))p Fo(.)49 b(The)34 │ │ │ │ b Fn(nodwghtsIV)p Fo(,)d Fn(bndwghtsIV)h Fo(and)h Fn(vtxToFrontIV)e │ │ │ │ Fo(ob)5 b(jects)35 b(are)227 511 y(initialized)d(with)e(calls)h(to)g │ │ │ │ Fn(IV)p 1268 511 V 34 w(init\(\))p Fo(.)39 b(The)30 b(en)m(tries)h(in)f │ │ │ │ Fn(nodwghtsIV)d Fo(and)i Fn(bndwghtsIV)f Fo(are)i(set)h(to)g │ │ │ │ Fn(0)p Fo(,)227 624 y(while)g(the)f(en)m(tries)h(in)f │ │ │ │ Fn(vtxToFrontIV)d Fo(are)k(set)g(to)g Fn(-1)p Fo(.)227 │ │ │ │ @@ -5822,18 +5830,18 @@ │ │ │ │ 5294 y Fo(This)f(metho)s(d)g(initializes)j Fn(subtree)c │ │ │ │ Fo(from)h Fn(tree)f Fo(using)h(the)h(no)s(des)f(of)h │ │ │ │ Fn(etree)e Fo(that)i(are)g(found)e(in)227 5407 y Fn(nodeidsIV)p │ │ │ │ Fo(.)28 b(The)i(map)g(from)g(no)s(des)g(in)g Fn(subtree)e │ │ │ │ Fo(to)j(no)s(des)f(in)g Fn(etree)f Fo(is)h(returned)f(in)h │ │ │ │ Fn(vtxIV)p Fo(.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(ETree)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 227 399 a Fj(R)-5 b(eturn)40 b(c)-5 │ │ │ │ -b(o)g(de:)111 b Fo(1)38 b(for)f(a)h(normal)g(return,)g(-1)h(if)e │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 227 399 a Fj(R)-5 b(eturn)40 │ │ │ │ +b(c)-5 b(o)g(de:)111 b Fo(1)38 b(for)f(a)h(normal)g(return,)g(-1)h(if)e │ │ │ │ Fn(subtree)f Fo(is)h Fn(NULL)p Fo(,)g(-2)h(if)g Fn(nodeidsIV)d │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)g(-3)h(if)227 511 y Fn(etree)29 │ │ │ │ b Fo(is)i Fn(NULL)p Fo(,)e(-4)i(if)f Fn(nodeidsIV)e Fo(is)j(in)m(v)-5 │ │ │ │ b(alid,)31 b(-5)g(if)f Fn(vtxIV)f Fo(is)i Fn(NULL)p Fo(.)0 │ │ │ │ 809 y Fh(1.2.4)112 b(Utilit)m(y)38 b(metho)s(ds)0 1015 │ │ │ │ y Fo(The)23 b(utilit)m(y)h(metho)s(ds)f(return)f(the)h(n)m(um)m(b)s(er) │ │ │ │ f(of)h(b)m(ytes)h(tak)m(en)g(b)m(y)f(the)h(ob)5 b(ject,)26 │ │ │ │ @@ -5907,42 +5915,42 @@ │ │ │ │ b Fo(If)37 b Fn(etree)f Fo(or)h Fn(tree)g Fo(is)g Fn(NULL)p │ │ │ │ Fo(,)g(or)h(if)f Fn(nfront)f Fg(<)h Fo(1,)j(or)d(if)h │ │ │ │ Fn(symflag)e Fo(is)h(in)m(v)-5 b(alid,)40 b(or)e(if)227 │ │ │ │ 5407 y Fn(J)25 b Fg(<)g Fo(0,)31 b(or)g(if)f Fn(J)25 │ │ │ │ b Ff(\025)g Fn(nfront)n Fo(,)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 1106 4 v 1287 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(7)111 399 y(6.)46 b Fn(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 Fo(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 Fn(J)g │ │ │ │ -Fo(on)h(its)f(\(1)p Fg(;)15 b Fo(1\),)25 b(\(2)p Fg(;)15 │ │ │ │ -b Fo(1\),)227 667 y(and)37 b(\(1)p Fg(;)15 b Fo(2\))38 │ │ │ │ -b(blo)s(c)m(ks)g(during)d(a)j(factorization.)63 b(The)36 │ │ │ │ -b Fn(type)g Fo(parameter)h(can)g(b)s(e)f(one)i(of)f Fn(SPOOLES)p │ │ │ │ -3683 667 29 4 v 32 w(REAL)227 780 y Fo(or)g Fn(SPOOLES)p │ │ │ │ -687 780 V 32 w(COMPLEX)p Fo(.)e Fn(symflag)g Fo(m)m(ust)i(b)s(e)f(one)h │ │ │ │ -(of)f Fn(SPOOLES)p 2466 780 V 33 w(SYMMETRIC)p Fo(,)e │ │ │ │ -Fn(SPOOLES)p 3326 780 V 33 w(HERMITIAN)g Fo(or)227 893 │ │ │ │ -y Fn(SPOOLES)p 569 893 V 33 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ -1049 y Fj(Err)-5 b(or)35 b(che)-5 b(cking:)42 b Fo(If)31 │ │ │ │ -b Fn(etree)f Fo(or)h Fn(tree)f Fo(is)h Fn(NULL)p Fo(,)g(or)g(if)g │ │ │ │ -Fn(nfront)25 b Fg(<)i Fo(1,)32 b(or)f(if)g Fn(type)f │ │ │ │ -Fo(or)i Fn(symflag)d Fo(is)i(in)m(v)-5 b(alid,)227 1162 │ │ │ │ -y(or)31 b(if)f Fn(J)25 b Fg(<)g Fo(0,)31 b(or)f(if)h │ │ │ │ -Fn(J)25 b Ff(\025)g Fn(nfront)n Fo(,)30 b(an)h(error)f(message)h(is)g │ │ │ │ -(prin)m(ted)f(and)f(the)i(program)f(exits.)111 1360 y(7.)46 │ │ │ │ -b Fn(double)g(ETree_nExternalOpsInFront)41 b(\()48 b(ETree)e(*etree,)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1067 4 v 1248 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(7)111 399 y(6.)46 │ │ │ │ +b Fn(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 │ │ │ │ -1516 y Fo(This)36 b(metho)s(d)g(returns)f(the)i(n)m(um)m(b)s(er)e(of)h │ │ │ │ -(op)s(erations)h(p)s(erformed)e(b)m(y)h(fron)m(t)h Fn(J)f │ │ │ │ -Fo(on)g(its)h(\(2)p Fg(;)15 b Fo(2\))38 b(blo)s(c)m(k)f(for)227 │ │ │ │ +554 y Fo(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 │ │ │ │ +Fn(J)g Fo(on)h(its)f(\(1)p Fg(;)15 b Fo(1\),)25 b(\(2)p │ │ │ │ +Fg(;)15 b Fo(1\),)227 667 y(and)37 b(\(1)p Fg(;)15 b │ │ │ │ +Fo(2\))38 b(blo)s(c)m(ks)g(during)d(a)j(factorization.)63 │ │ │ │ +b(The)36 b Fn(type)g Fo(parameter)h(can)g(b)s(e)f(one)i(of)f │ │ │ │ +Fn(SPOOLES)p 3683 667 29 4 v 32 w(REAL)227 780 y Fo(or)g │ │ │ │ +Fn(SPOOLES)p 687 780 V 32 w(COMPLEX)p Fo(.)e Fn(symflag)g │ │ │ │ +Fo(m)m(ust)i(b)s(e)f(one)h(of)f Fn(SPOOLES)p 2466 780 │ │ │ │ +V 33 w(SYMMETRIC)p Fo(,)e Fn(SPOOLES)p 3326 780 V 33 │ │ │ │ +w(HERMITIAN)g Fo(or)227 893 y Fn(SPOOLES)p 569 893 V │ │ │ │ +33 w(NONSYMMETRIC)p Fo(.)227 1049 y Fj(Err)-5 b(or)35 │ │ │ │ +b(che)-5 b(cking:)42 b Fo(If)31 b Fn(etree)f Fo(or)h │ │ │ │ +Fn(tree)f Fo(is)h Fn(NULL)p Fo(,)g(or)g(if)g Fn(nfront)25 │ │ │ │ +b Fg(<)i Fo(1,)32 b(or)f(if)g Fn(type)f Fo(or)i Fn(symflag)d │ │ │ │ +Fo(is)i(in)m(v)-5 b(alid,)227 1162 y(or)31 b(if)f Fn(J)25 │ │ │ │ +b Fg(<)g Fo(0,)31 b(or)f(if)h Fn(J)25 b Ff(\025)g Fn(nfront)n │ │ │ │ +Fo(,)30 b(an)h(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program) │ │ │ │ +f(exits.)111 1360 y(7.)46 b Fn(double)g(ETree_nExternalOpsInFront)41 │ │ │ │ +b(\()48 b(ETree)e(*etree,)g(int)h(type,)f(int)h(symflag,)f(int)h(J)g │ │ │ │ +(\))g(;)227 1516 y Fo(This)36 b(metho)s(d)g(returns)f(the)i(n)m(um)m(b) │ │ │ │ +s(er)e(of)h(op)s(erations)h(p)s(erformed)e(b)m(y)h(fron)m(t)h │ │ │ │ +Fn(J)f Fo(on)g(its)h(\(2)p Fg(;)15 b Fo(2\))38 b(blo)s(c)m(k)f(for)227 │ │ │ │ 1629 y(an)29 b Fg(LU)39 b Fo(factorization.)k(The)29 │ │ │ │ b Fn(type)f Fo(parameter)i(can)f(b)s(e)g(one)g(of)h Fn(SPOOLES)p │ │ │ │ 2816 1629 V 32 w(REAL)e Fo(or)h Fn(SPOOLES)p 3514 1629 │ │ │ │ V 33 w(COMPLEX)p Fo(.)227 1742 y Fn(symflag)20 b Fo(m)m(ust)h(b)s(e)g │ │ │ │ (one)h(of)g Fn(SPOOLES)p 1509 1742 V 32 w(SYMMETRIC)p │ │ │ │ Fo(,)e Fn(SPOOLES)p 2354 1742 V 32 w(HERMITIAN)f Fo(or)j │ │ │ │ Fn(SPOOLES)p 3276 1742 V 32 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ @@ -6003,17 +6011,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 │ │ │ │ Fn(eqmapIV)d Fo(ob)5 b(ject.)227 5294 y Fj(Err)-5 b(or)39 │ │ │ │ b(che)-5 b(cking:)50 b Fo(If)34 b Fn(etree)g Fo(or)h │ │ │ │ Fn(eqmapIV)e Fo(is)j Fn(NULL)p Fo(,)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 Fo(8)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(ETree)28 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 66 399 a Fo(12.)46 b Fn(ETree)h(*)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 66 399 a Fo(12.)46 b Fn(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 Fo(This)38 │ │ │ │ b(metho)s(d)h(creates)h(and)e(returns)g(an)h Fn(ETree)e │ │ │ │ Fo(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 Fn(etree0)c │ │ │ │ Fo(for)j(the)f(v)m(ertices)i(the)f(eliminated)g(domains,)g │ │ │ │ Fn(etree1)e Fo(for)h(the)h(v)m(ertices)h(the)f(Sc)m(h)m(ur)227 │ │ │ │ @@ -6082,42 +6090,43 @@ │ │ │ │ b(che)-5 b(cking:)45 b Fo(If)32 b Fn(etree)f Fo(is)i │ │ │ │ Fn(NULL)p Fo(,)f(or)h(if)g Fn(nfront)28 b Fg(<)h Fo(1,)34 │ │ │ │ b(or)f(if)f Fn(nvtx)d Fg(<)g Fo(1,)34 b(or)f(if)g Fn(type)e │ │ │ │ Fo(or)i Fn(symflag)e Fo(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 1106 4 v 1287 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ -b(metho)s(ds)0 604 y Fo(F)-8 b(requen)m(tly)30 b(an)f │ │ │ │ -Fn(ETree)f Fo(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 │ │ │ │ -(the)g(v)m(ertices)h(b)m(y)e(longest)i(c)m(hains)f([)p │ │ │ │ -Fe(?)p Fo(].)42 b(In)0 942 y(b)s(oth)37 b(cases,)j(w)m(e)f(can)e │ │ │ │ -(construct)h(a)g(map)g(from)f(eac)m(h)h(no)s(de)f(to)i(a)f(set)g(of)g │ │ │ │ -(no)s(des)e(to)j(de\014ne)e(a)h(smaller,)i(more)0 1055 │ │ │ │ -y(compact)32 b Fn(ETree)d Fo(ob)5 b(ject.)41 b(Giv)m(en)31 │ │ │ │ -b(suc)m(h)f(a)h(map,)g(w)m(e)f(construct)h(the)g(smaller)g(etree.)141 │ │ │ │ -1198 y(A)g(fundamen)m(tal)f(c)m(hain)h(is)f(a)h(set)g(of)f(v)m(ertices) │ │ │ │ -i Fg(v)1790 1212 y Fd(1)1830 1198 y Fg(;)15 b(:)g(:)g(:)i(;)e(v)2076 │ │ │ │ -1212 y Fc(m)2173 1198 y Fo(suc)m(h)30 b(that)111 1428 │ │ │ │ -y(1.)46 b Fg(v)271 1442 y Fd(1)341 1428 y Fo(is)30 b(a)h(leaf)g(or)g │ │ │ │ -(has)f(t)m(w)m(o)i(or)e(more)h(c)m(hildren,)111 1634 │ │ │ │ -y(2.)46 b Fg(v)271 1648 y Fc(i)330 1634 y Fo(is)30 b(the)h(only)f(c)m │ │ │ │ -(hild)h(of)g Fg(v)1145 1648 y Fc(i)p Fd(+1)1293 1634 │ │ │ │ -y Fo(for)f(1)c Ff(\024)f Fg(i)h(<)f(m)p Fo(,)111 1839 │ │ │ │ -y(3.)46 b Fg(v)271 1853 y Fc(m)368 1839 y Fo(is)31 b(either)f(a)h(ro)s │ │ │ │ -(ot)g(or)f(has)g(a)h(sibling.)0 2069 y(The)j(set)h(of)g(fundamen)m(tal) │ │ │ │ -f(c)m(hains)h(is)g(uniquely)f(de\014ned.)52 b(In)33 b(the)i(con)m(text) │ │ │ │ -i(of)d(elimination)i(etrees,)h(a)e(funda-)0 2182 y(men)m(tal)29 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1067 4 v 1248 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(9)0 399 y Fh(1.2.6)112 │ │ │ │ +b(Compression)39 b(metho)s(ds)0 604 y Fo(F)-8 b(requen)m(tly)30 │ │ │ │ +b(an)f Fn(ETree)f Fo(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(the)g(v)m(ertices)h(b)m(y)e │ │ │ │ +(longest)i(c)m(hains)f([)p Fe(?)p Fo(].)42 b(In)0 942 │ │ │ │ +y(b)s(oth)37 b(cases,)j(w)m(e)f(can)e(construct)h(a)g(map)g(from)f(eac) │ │ │ │ +m(h)h(no)s(de)f(to)i(a)f(set)g(of)g(no)s(des)e(to)j(de\014ne)e(a)h │ │ │ │ +(smaller,)i(more)0 1055 y(compact)32 b Fn(ETree)d Fo(ob)5 │ │ │ │ +b(ject.)41 b(Giv)m(en)31 b(suc)m(h)f(a)h(map,)g(w)m(e)f(construct)h │ │ │ │ +(the)g(smaller)g(etree.)141 1198 y(A)g(fundamen)m(tal)f(c)m(hain)h(is)f │ │ │ │ +(a)h(set)g(of)f(v)m(ertices)i Fg(v)1790 1212 y Fd(1)1830 │ │ │ │ +1198 y Fg(;)15 b(:)g(:)g(:)i(;)e(v)2076 1212 y Fc(m)2173 │ │ │ │ +1198 y Fo(suc)m(h)30 b(that)111 1428 y(1.)46 b Fg(v)271 │ │ │ │ +1442 y Fd(1)341 1428 y Fo(is)30 b(a)h(leaf)g(or)g(has)f(t)m(w)m(o)i(or) │ │ │ │ +e(more)h(c)m(hildren,)111 1634 y(2.)46 b Fg(v)271 1648 │ │ │ │ +y Fc(i)330 1634 y Fo(is)30 b(the)h(only)f(c)m(hild)h(of)g │ │ │ │ +Fg(v)1145 1648 y Fc(i)p Fd(+1)1293 1634 y Fo(for)f(1)c │ │ │ │ +Ff(\024)f Fg(i)h(<)f(m)p Fo(,)111 1839 y(3.)46 b Fg(v)271 │ │ │ │ +1853 y Fc(m)368 1839 y Fo(is)31 b(either)f(a)h(ro)s(ot)g(or)f(has)g(a)h │ │ │ │ +(sibling.)0 2069 y(The)j(set)h(of)g(fundamen)m(tal)f(c)m(hains)h(is)g │ │ │ │ +(uniquely)f(de\014ned.)52 b(In)33 b(the)i(con)m(text)i(of)d │ │ │ │ +(elimination)i(etrees,)h(a)e(funda-)0 2182 y(men)m(tal)29 │ │ │ │ b(c)m(hain)f(is)f(v)m(ery)h(close)h(to)f(a)g(fundamen)m(tal)f(sup)s │ │ │ │ (erno)s(de,)f(and)h(in)g(man)m(y)g(cases,)j(fundamen)m(tal)d(c)m(hains) │ │ │ │ h(can)0 2295 y(b)s(e)i(used)f(to)i(con)m(truct)h(the)e(fron)m(ts)h │ │ │ │ (with)f(little)i(added)e(\014ll)g(and)g(factor)h(op)s(erations.)141 │ │ │ │ 2438 y(A)g(fundamen)m(tal)f(sup)s(erno)s(de)e([)p Fe(?)q │ │ │ │ Fo(])i(is)h(a)f(set)h(of)g(v)m(ertices)h Fg(v)2116 2452 │ │ │ │ y Fd(1)2155 2438 y Fg(;)15 b(:)g(:)g(:)i(;)e(v)2401 2452 │ │ │ │ @@ -6160,18 +6169,18 @@ │ │ │ │ b(then)j(returned.)227 5294 y Fj(Err)-5 b(or)35 b(che)-5 │ │ │ │ b(cking:)41 b Fo(If)31 b Fn(etree)e Fo(or)i Fn(tree)f │ │ │ │ Fo(is)h Fn(NULL)p Fo(,)f(or)h(if)g Fn(nfront)24 b Fg(<)i │ │ │ │ Fo(1,)32 b(or)f(if)g Fn(nvtx)25 b Fg(<)h Fo(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 Fo(10)p 182 100 1083 4 │ │ │ │ -v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 111 399 a Fo(3.)46 b Fn(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 Fo(10)p 182 100 1044 4 │ │ │ │ +v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2857 100 V 111 399 a Fo(3.)46 b Fn(ETree)h(*)g │ │ │ │ +(ETree_compress)d(\()j(ETree)g(*etree,)f(IV)h(*frontMapIV)e(\))i(;)227 │ │ │ │ 562 y Fo(Using)41 b Fn(frontMapIV)p Fo(,)d(a)j(new)f │ │ │ │ Fn(ETree)f Fo(ob)5 b(ject)41 b(is)g(created)g(and)f(returned.)70 │ │ │ │ b(If)40 b Fn(frontMapIV)e Fo(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 Fn(ETree)e │ │ │ │ Fo(ob)5 b(ject,)227 788 y(the)31 b(new)f Fn(ETree)f Fo(ob)5 │ │ │ │ b(ject)31 b(will)g(not)f(b)s(e)g(w)m(ell)h(de\014ned.)227 │ │ │ │ @@ -6234,40 +6243,41 @@ │ │ │ │ (ectiv)m(e)g Fn(Tree)e Fo(metho)s(ds.)227 5294 y Fj(Err)-5 │ │ │ │ b(or)31 b(che)-5 b(cking:)38 b Fo(If)26 b Fn(etree)e │ │ │ │ Fo(is)j Fn(NULL)p Fo(,)e(or)h(if)h Fn(nfront)c Fg(<)i │ │ │ │ Fo(1,)j(or)e(if)h Fn(nvtx)d Fg(<)h Fo(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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(11)111 399 y(2.)46 b Fn(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 Fo(An)29 b Fn(IV)f Fo(ob)5 b(ject)30 b(is)g(created)g │ │ │ │ -(with)f(size)h Fn(nvtx)p Fo(.)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 │ │ │ │ -(erm)m(utation)227 888 y(v)m(ector.)68 b(The)39 b(old-to-new)h(v)m │ │ │ │ -(ertex)g(p)s(erm)m(utation)f(v)m(ector)h(is)f(found)f(b)m(y)h(\014rst)f │ │ │ │ -(\014nding)g(the)h(new-to-old)227 1001 y(v)m(ertex)32 │ │ │ │ -b(p)s(erm)m(utation)e(v)m(ector,)i(then)f(in)m(v)m(erting)g(it.)227 │ │ │ │ -1153 y Fj(Err)-5 b(or)31 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ -b Fn(etree)e Fo(is)j Fn(NULL)p Fo(,)e(or)h(if)h Fn(nfront)c │ │ │ │ -Fg(<)i Fo(1,)j(or)e(if)h Fn(nvtx)d Fg(<)h Fo(1,)i(an)g(error)f(message) │ │ │ │ -h(is)f(prin)m(ted)227 1265 y(and)k(the)h(program)f(exits.)111 │ │ │ │ -1455 y(3.)46 b Fn(void)h(ETree_permuteVertices)42 b(\()47 │ │ │ │ -b(ETree)g(*etree,)f(IV)h(*vtxOldToNewIV)d(\))j(;)227 │ │ │ │ -1606 y Fo(This)32 b(metho)s(d)f(p)s(erm)m(utes)h(the)g(v)m(ertices)i(|) │ │ │ │ -f(the)f Fn(vtxToFrontIV)d Fo(map)j(is)g(up)s(dated)f(to)i(re\015ect)g │ │ │ │ -(the)f(new)227 1719 y(v)m(ertex)g(n)m(um)m(b)s(ering.)227 │ │ │ │ -1870 y Fj(Err)-5 b(or)44 b(che)-5 b(cking:)61 b Fo(If)41 │ │ │ │ -b Fn(etree)e Fo(or)i Fn(vtxOldToNewIV)d Fo(is)j Fn(NULL)p │ │ │ │ -Fo(,)f(or)h(if)g Fn(nvtx)g Fg(<)i Fo(1,)h(an)d(error)g(message)h(is)227 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(11)111 399 y(2.)46 │ │ │ │ +b Fn(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 Fo(An)29 b Fn(IV)f │ │ │ │ +Fo(ob)5 b(ject)30 b(is)g(created)g(with)f(size)h Fn(nvtx)p │ │ │ │ +Fo(.)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(erm)m(utation)227 │ │ │ │ +888 y(v)m(ector.)68 b(The)39 b(old-to-new)h(v)m(ertex)g(p)s(erm)m │ │ │ │ +(utation)f(v)m(ector)h(is)f(found)f(b)m(y)h(\014rst)f(\014nding)g(the)h │ │ │ │ +(new-to-old)227 1001 y(v)m(ertex)32 b(p)s(erm)m(utation)e(v)m(ector,)i │ │ │ │ +(then)f(in)m(v)m(erting)g(it.)227 1153 y Fj(Err)-5 b(or)31 │ │ │ │ +b(che)-5 b(cking:)38 b Fo(If)26 b Fn(etree)e Fo(is)j │ │ │ │ +Fn(NULL)p Fo(,)e(or)h(if)h Fn(nfront)c Fg(<)i Fo(1,)j(or)e(if)h │ │ │ │ +Fn(nvtx)d Fg(<)h Fo(1,)i(an)g(error)f(message)h(is)f(prin)m(ted)227 │ │ │ │ +1265 y(and)k(the)h(program)f(exits.)111 1455 y(3.)46 │ │ │ │ +b Fn(void)h(ETree_permuteVertices)42 b(\()47 b(ETree)g(*etree,)f(IV)h │ │ │ │ +(*vtxOldToNewIV)d(\))j(;)227 1606 y Fo(This)32 b(metho)s(d)f(p)s(erm)m │ │ │ │ +(utes)h(the)g(v)m(ertices)i(|)f(the)f Fn(vtxToFrontIV)d │ │ │ │ +Fo(map)j(is)g(up)s(dated)f(to)i(re\015ect)g(the)f(new)227 │ │ │ │ +1719 y(v)m(ertex)g(n)m(um)m(b)s(ering.)227 1870 y Fj(Err)-5 │ │ │ │ +b(or)44 b(che)-5 b(cking:)61 b Fo(If)41 b Fn(etree)e │ │ │ │ +Fo(or)i Fn(vtxOldToNewIV)d Fo(is)j Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ +Fn(nvtx)g Fg(<)i Fo(1,)h(an)d(error)g(message)h(is)227 │ │ │ │ 1983 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.)0 │ │ │ │ 2254 y Fh(1.2.9)112 b(Multisector)38 b(metho)s(ds)0 2452 │ │ │ │ y Fo(One)f(of)g(our)g(goals)h(is)g(to)f(impro)m(v)m(e)h(a)g(matrix)g │ │ │ │ (ordering)e(using)h(the)g(m)m(ultisection)i(ordering)e(algorithm.)62 │ │ │ │ b(T)-8 b(o)0 2565 y(do)31 b(this,)h(w)m(e)f(need)g(to)h(extract)h(a)e │ │ │ │ (m)m(ultisector)i(from)e(the)g(v)m(ertices,)i(i.e.,)g(a)f(set)f(of)h │ │ │ │ (no)s(des)e(that)i(when)e(remo)m(v)m(ed)0 2677 y(from)38 │ │ │ │ @@ -6316,26 +6326,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 Fo(12)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 227 399 a Fo(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 │ │ │ │ -Fn(cutoff)e Fo(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 Fn(symflag)e Fo(parameter)i(can)g(b)s(e)f(one)i(of)f │ │ │ │ -Fn(SPOOLES)p 3419 624 29 4 v 32 w(SYMMETRIC)p Fo(,)227 │ │ │ │ -737 y Fn(SPOOLES)p 569 737 V 33 w(HERMITIAN)d Fo(or)i │ │ │ │ -Fn(SPOOLES)p 1509 737 V 32 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 227 399 a Fo(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 Fn(cutoff)e Fo(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 Fn(symflag)e Fo(parameter)i(can)g(b)s(e)f │ │ │ │ +(one)i(of)f Fn(SPOOLES)p 3419 624 29 4 v 32 w(SYMMETRIC)p │ │ │ │ +Fo(,)227 737 y Fn(SPOOLES)p 569 737 V 33 w(HERMITIAN)d │ │ │ │ +Fo(or)i Fn(SPOOLES)p 1509 737 V 32 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ 905 y Fj(Err)-5 b(or)37 b(che)-5 b(cking:)47 b Fo(If)33 │ │ │ │ b Fn(etree)f Fo(is)h Fn(NULL)p Fo(,)g(or)h(if)f Fn(nfront)c │ │ │ │ Fg(<)h Fo(1,)35 b(or)f(if)f Fn(nvtx)d Fg(<)g Fo(1,)35 │ │ │ │ b(or)e(if)h Fn(symflag)e Fo(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 Fn(IV)h(*)h(ETree_msByNopsCutoff)42 │ │ │ │ b(\()48 b(ETree)e(*etree,)g(double)g(cutoff,)g(int)h(type,)f(int)h │ │ │ │ @@ -6419,23 +6429,23 @@ │ │ │ │ b Fo(means)227 5127 y(that)31 b Fn(J)f Fo(is)h(in)f(domain)g │ │ │ │ Fn(compids[J])p Fo(.)227 5294 y Fj(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)41 b Fo(If)30 b Fn(etree)p Fo(,)g Fn(graph)f │ │ │ │ Fo(or)h Fn(symbfacIVL)e Fo(is)j Fn(NULL)p Fo(,)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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(13)0 399 y Fh(1.2.10)113 b(T)-9 │ │ │ │ -b(ransformation)38 b(metho)s(ds)0 592 y Fo(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.)137 │ │ │ │ -898 y Fl(\210)45 b Fo(Near)h(the)g(lea)m(v)m(es)i(of)d(the)h(tree)g │ │ │ │ +TeXDict begin 13 12 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(13)0 399 y Fh(1.2.10)113 │ │ │ │ +b(T)-9 b(ransformation)38 b(metho)s(ds)0 592 y Fo(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.) │ │ │ │ +137 898 y Fl(\210)45 b Fo(Near)h(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 │ │ │ │ b(There)45 b(is)g(an)h(o)m(v)m(erhead)227 1011 y(asso)s(ciated)36 │ │ │ │ b(with)d(eac)m(h)i(fron)m(t,)g(and)e(though)h(the)g(o)m(v)m(erhead)h(v) │ │ │ │ -5 b(aries)34 b(with)g(regard)g(to)g(the)g(factorization)227 │ │ │ │ 1123 y(algorithm,)28 b(it)e(can)g(b)s(e)g(b)s(ene\014cial)f(to)i(group) │ │ │ │ e(small)h(subtrees)f(together)j(in)m(to)e(one)g(fron)m(t.)39 │ │ │ │ b(The)26 b(exp)s(ense)f(is)227 1236 y(added)i(storage)h(for)f(the)g │ │ │ │ @@ -6518,17 +6528,17 @@ │ │ │ │ (recom-)0 5294 y(mend)32 b(\014rst)g(using)h Fn(ETree)p │ │ │ │ 927 5294 V 33 w(mergeFrontsOne\(\))c Fo(follo)m(w)m(ed)34 │ │ │ │ b(b)m(y)f Fn(ETree)p 2479 5294 V 33 w(mergeFrontsAll\(\))p │ │ │ │ Fo(.)45 b(See)33 b(the)g(driv)m(er)0 5407 y(programs)d │ │ │ │ Fn(testTransform)d Fo(and)j Fn(mkNDETree)d Fo(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 Fo(14)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 111 399 a Fo(1.)46 b Fn(ETree)h(*)g │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 111 399 a Fo(1.)46 b Fn(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 Fo(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 Fn(ETree)f Fo(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 │ │ │ │ @@ -6608,20 +6618,20 @@ │ │ │ │ b(or)f(if)f Fn(maxfrontsize)26 b Ff(\024)i Fo(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 Fn(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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(15)227 399 y Fn(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 Fo(These)37 b(metho)s(ds)g(returns)f(an)i Fn(ETree)e │ │ │ │ +TeXDict begin 15 14 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(15)227 399 y Fn(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 Fo(These)37 b(metho)s(ds)g(returns)f(an)i Fn(ETree)e │ │ │ │ Fo(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 │ │ │ │ 901 y(in)m(to)38 b(smaller)g(fron)m(ts.)60 b(The)36 b(t)m(w)m(o)j │ │ │ │ (metho)s(ds)d(di\013er)g(sligh)m(tly)-8 b(.)63 b Fn(ETree)p │ │ │ │ 2651 901 29 4 v 33 w(transform2\(\))33 b Fo(is)k(b)s(etter)g(suited)227 │ │ │ │ @@ -6683,51 +6693,51 @@ │ │ │ │ 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 Fo(16)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ -Fj(domain)k(de)-5 b(c)g(omp)g(osition)34 b(map)c Fo(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 │ │ │ │ -Fn(ETree)p 1884 624 29 4 v 33 w(ddMapNew\(\))e Fo(is)i(more)g(robust)g │ │ │ │ -(than)g Fn(ETree)p 3514 624 V 33 w(ddMap\(\))p Fo(,)427 │ │ │ │ -737 y(and)c(is)h(more)g(general)g(in)g(the)f(sense)h(that)g(it)g(tak)m │ │ │ │ -(es)h(a)f(m)m(ultisector)h(v)m(ector)h(as)e(input.)49 │ │ │ │ -b(The)33 b Fn(msIV)427 850 y Fo(ob)5 b(ject)41 b(is)f(a)g(map)g(from)f │ │ │ │ -(the)h(v)m(ertices)h(to)g Ff(f)p Fo(0)p Fg(;)15 b Fo(1)p │ │ │ │ -Ff(g)p Fo(.)71 b(A)40 b(v)m(ertex)h(mapp)s(ed)e(to)h(0)g(lies)h(in)e │ │ │ │ -(the)i(Sc)m(h)m(ur)427 963 y(complemen)m(t,)32 b(a)f(v)m(ertex)g(mapp)s │ │ │ │ -(ed)e(to)i(1)g(lies)g(in)f(a)h(domain.)227 1196 y Fj(Err)-5 │ │ │ │ -b(or)44 b(che)-5 b(cking:)61 b Fo(If)41 b Fn(etree)f │ │ │ │ -Fo(or)g Fn(cumopsDV)f Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ -Fn(type)f Fo(or)h Fn(symflag)e Fo(is)i(in)m(v)-5 b(alid,)44 │ │ │ │ -b(an)d(error)227 1309 y(message)32 b(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ -(program)h(exits.)0 1600 y Fh(1.2.12)113 b(Storage)37 │ │ │ │ -b(pro\014le)h(metho)s(ds)0 1804 y Fo(These)33 b(metho)s(ds)f(\014ll)h │ │ │ │ -(a)h(v)m(ector)g(with)f(the)g(total)i(amoun)m(t)e(of)h(w)m(orking)f │ │ │ │ -(storage)h(necessary)g(during)e(the)h(factor)0 1917 y(and)d(solv)m(es.) │ │ │ │ -111 2175 y(1.)46 b Fn(void)h(ETree_MFstackProfile)42 │ │ │ │ -b(\()48 b(ETree)e(*etree,)g(int)h(type,)f(double)g(dvec[])g(\))i(;)227 │ │ │ │ -2333 y Fo(On)38 b(return,)h Fn(dvec[J])d Fo(con)m(tains)k(the)e(amoun)m │ │ │ │ -(t)h(of)f(activ)m(e)j(storage)e(to)g(eliminate)h Fn(J)e │ │ │ │ -Fo(using)g(the)g(m)m(ulti-)227 2446 y(fron)m(tal)c(metho)s(d)e(and)g │ │ │ │ -(the)h(natural)g(p)s(ost-order)f(tra)m(v)m(ersal.)50 │ │ │ │ -b(The)32 b Fn(symflag)e Fo(parameter)k(can)f(b)s(e)f(one)h(of)227 │ │ │ │ -2559 y Fn(SPOOLES)p 569 2559 V 33 w(SYMMETRIC)p Fo(,)28 │ │ │ │ -b Fn(SPOOLES)p 1423 2559 V 32 w(HERMITIAN)g Fo(or)i Fn(SPOOLES)p │ │ │ │ -2362 2559 V 33 w(NONSYMMETRIC)p Fo(.)227 2717 y Fj(Err)-5 │ │ │ │ -b(or)28 b(che)-5 b(cking:)37 b Fo(If)23 b Fn(etree)f │ │ │ │ -Fo(or)h Fn(dvec)g Fo(are)g Fn(NULL)p Fo(,)g(or)h(if)f │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 337 399 a Fl(\210)45 b │ │ │ │ +Fo(The)28 b Fj(domain)k(de)-5 b(c)g(omp)g(osition)34 │ │ │ │ +b(map)c Fo(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 Fn(ETree)p 1884 624 29 4 v 33 │ │ │ │ +w(ddMapNew\(\))e Fo(is)i(more)g(robust)g(than)g Fn(ETree)p │ │ │ │ +3514 624 V 33 w(ddMap\(\))p Fo(,)427 737 y(and)c(is)h(more)g(general)g │ │ │ │ +(in)g(the)f(sense)h(that)g(it)g(tak)m(es)h(a)f(m)m(ultisector)h(v)m │ │ │ │ +(ector)h(as)e(input.)49 b(The)33 b Fn(msIV)427 850 y │ │ │ │ +Fo(ob)5 b(ject)41 b(is)f(a)g(map)g(from)f(the)h(v)m(ertices)h(to)g │ │ │ │ +Ff(f)p Fo(0)p Fg(;)15 b Fo(1)p Ff(g)p Fo(.)71 b(A)40 │ │ │ │ +b(v)m(ertex)h(mapp)s(ed)e(to)h(0)g(lies)h(in)e(the)i(Sc)m(h)m(ur)427 │ │ │ │ +963 y(complemen)m(t,)32 b(a)f(v)m(ertex)g(mapp)s(ed)e(to)i(1)g(lies)g │ │ │ │ +(in)f(a)h(domain.)227 1196 y Fj(Err)-5 b(or)44 b(che)-5 │ │ │ │ +b(cking:)61 b Fo(If)41 b Fn(etree)f Fo(or)g Fn(cumopsDV)f │ │ │ │ +Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g Fn(type)f Fo(or)h │ │ │ │ +Fn(symflag)e Fo(is)i(in)m(v)-5 b(alid,)44 b(an)d(error)227 │ │ │ │ +1309 y(message)32 b(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)0 │ │ │ │ +1600 y Fh(1.2.12)113 b(Storage)37 b(pro\014le)h(metho)s(ds)0 │ │ │ │ +1804 y Fo(These)33 b(metho)s(ds)f(\014ll)h(a)h(v)m(ector)g(with)f(the)g │ │ │ │ +(total)i(amoun)m(t)e(of)h(w)m(orking)f(storage)h(necessary)g(during)e │ │ │ │ +(the)h(factor)0 1917 y(and)d(solv)m(es.)111 2175 y(1.)46 │ │ │ │ +b Fn(void)h(ETree_MFstackProfile)42 b(\()48 b(ETree)e(*etree,)g(int)h │ │ │ │ +(type,)f(double)g(dvec[])g(\))i(;)227 2333 y Fo(On)38 │ │ │ │ +b(return,)h Fn(dvec[J])d Fo(con)m(tains)k(the)e(amoun)m(t)h(of)f(activ) │ │ │ │ +m(e)j(storage)e(to)g(eliminate)h Fn(J)e Fo(using)g(the)g(m)m(ulti-)227 │ │ │ │ +2446 y(fron)m(tal)c(metho)s(d)e(and)g(the)h(natural)g(p)s(ost-order)f │ │ │ │ +(tra)m(v)m(ersal.)50 b(The)32 b Fn(symflag)e Fo(parameter)k(can)f(b)s │ │ │ │ +(e)f(one)h(of)227 2559 y Fn(SPOOLES)p 569 2559 V 33 w(SYMMETRIC)p │ │ │ │ +Fo(,)28 b Fn(SPOOLES)p 1423 2559 V 32 w(HERMITIAN)g Fo(or)i │ │ │ │ +Fn(SPOOLES)p 2362 2559 V 33 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ +2717 y Fj(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fo(If)23 │ │ │ │ +b Fn(etree)f Fo(or)h Fn(dvec)g Fo(are)g Fn(NULL)p Fo(,)g(or)h(if)f │ │ │ │ Fn(symflag)f Fo(is)h(in)m(v)-5 b(alid,)26 b(an)d(error)g(message)i(is)e │ │ │ │ (prin)m(ted)227 2830 y(and)30 b(the)h(program)f(exits.)111 │ │ │ │ 3034 y(2.)46 b Fn(void)h(ETree_GSstorageProfile)42 b(\()47 │ │ │ │ b(ETree)f(*etree,)g(int)h(type,)g(IVL)f(*symbfacIVL,)1659 │ │ │ │ 3147 y(int)h(*vwghts,)f(double)g(dvec[])g(\))h(;)227 │ │ │ │ 3305 y Fo(On)23 b(return,)h Fn(dvec[J])d Fo(con)m(tains)k(the)f(amoun)m │ │ │ │ (t)g(of)f(activ)m(e)j(storage)f(to)f(eliminate)h Fn(J)e │ │ │ │ @@ -6762,41 +6772,41 @@ │ │ │ │ (of)f(stac)m(k)i(storage)g(to)f(solv)m(e)h(for)e Fn(J)g │ │ │ │ Fo(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 Fj(Err)-5 b(or)29 │ │ │ │ b(che)-5 b(cking:)38 b Fo(If)25 b Fn(etree)e Fo(or)j │ │ │ │ Fn(dvec)d Fo(are)j Fn(NULL)p Fo(,)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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(17)111 399 y(5.)46 b Fn(void)h │ │ │ │ -(ETree_backSolveProfile)42 b(\()47 b(ETree)f(*etree,)g(double)g(dvec[]) │ │ │ │ -g(\))i(;)227 555 y Fo(On)24 b(return,)g Fn(dvec[J])f │ │ │ │ -Fo(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 Fn(J)g Fo(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 │ │ │ │ -Fj(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fo(If)25 b Fn(etree)e │ │ │ │ -Fo(or)j Fn(dvec)d Fo(are)j Fn(NULL)p Fo(,)e(an)h(error)g(message)h(is)f │ │ │ │ -(prin)m(ted)g(and)g(the)g(program)g(exits.)0 1112 y Fh(1.2.13)113 │ │ │ │ -b(IO)37 b(metho)s(ds)0 1315 y Fo(There)31 b(are)h(the)f(usual)g(eigh)m │ │ │ │ -(t)i(IO)e(routines.)43 b(The)31 b(\014le)g(structure)g(of)h(a)f(tree)h │ │ │ │ -(ob)5 b(ject)33 b(is)e(simple:)43 b Fn(nfront)p Fo(,)30 │ │ │ │ -b Fn(nvtx)p Fo(,)0 1428 y(a)h Fn(Tree)e Fo(ob)5 b(ject)31 │ │ │ │ -b(follo)m(w)m(ed)h(b)m(y)e(the)h Fn(nodwghtsIV)p Fo(,)d │ │ │ │ -Fn(bndwghtsIV)f Fo(and)j Fn(vtxToFrontIV)d Fo(ob)5 b(jects.)111 │ │ │ │ -1682 y(1.)46 b Fn(int)h(ETree_readFromFile)c(\()k(ETree)g(*etree,)f │ │ │ │ -(char)g(*fn)h(\))h(;)227 1838 y Fo(This)g(metho)s(d)g(reads)g(an)h │ │ │ │ -Fn(ETree)e Fo(ob)5 b(ject)49 b(from)f(a)h(\014le)g(whose)f(name)h(is)g │ │ │ │ -(stored)f(in)g Fn(*fn)p Fo(.)95 b(It)49 b(tries)227 1951 │ │ │ │ -y(to)c(op)s(en)e(the)g(\014le)h(and)f(if)h(it)g(is)f(successful,)k(it)e │ │ │ │ -(then)e(calls)i Fn(ETree)p 2651 1951 29 4 v 33 w │ │ │ │ -(readFromFormattedFile\(\))37 b Fo(or)227 2064 y Fn(ETree)p │ │ │ │ -473 2064 V 33 w(readFromBinaryFile\(\))p Fo(,)24 b(closes)30 │ │ │ │ -b(the)f(\014le)g(and)f(returns)g(the)h(v)-5 b(alue)29 │ │ │ │ -b(returned)e(from)i(the)g(called)227 2177 y(routine.)227 │ │ │ │ +TeXDict begin 17 16 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(17)111 399 y(5.)46 │ │ │ │ +b Fn(void)h(ETree_backSolveProfile)42 b(\()47 b(ETree)f(*etree,)g │ │ │ │ +(double)g(dvec[])g(\))i(;)227 555 y Fo(On)24 b(return,)g │ │ │ │ +Fn(dvec[J])f Fo(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 Fn(J)g Fo(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 Fj(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fo(If)25 │ │ │ │ +b Fn(etree)e Fo(or)j Fn(dvec)d Fo(are)j Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ +(message)h(is)f(prin)m(ted)g(and)g(the)g(program)g(exits.)0 │ │ │ │ +1112 y Fh(1.2.13)113 b(IO)37 b(metho)s(ds)0 1315 y Fo(There)31 │ │ │ │ +b(are)h(the)f(usual)g(eigh)m(t)i(IO)e(routines.)43 b(The)31 │ │ │ │ +b(\014le)g(structure)g(of)h(a)f(tree)h(ob)5 b(ject)33 │ │ │ │ +b(is)e(simple:)43 b Fn(nfront)p Fo(,)30 b Fn(nvtx)p Fo(,)0 │ │ │ │ +1428 y(a)h Fn(Tree)e Fo(ob)5 b(ject)31 b(follo)m(w)m(ed)h(b)m(y)e(the)h │ │ │ │ +Fn(nodwghtsIV)p Fo(,)d Fn(bndwghtsIV)f Fo(and)j Fn(vtxToFrontIV)d │ │ │ │ +Fo(ob)5 b(jects.)111 1682 y(1.)46 b Fn(int)h(ETree_readFromFile)c(\()k │ │ │ │ +(ETree)g(*etree,)f(char)g(*fn)h(\))h(;)227 1838 y Fo(This)g(metho)s(d)g │ │ │ │ +(reads)g(an)h Fn(ETree)e Fo(ob)5 b(ject)49 b(from)f(a)h(\014le)g(whose) │ │ │ │ +f(name)h(is)g(stored)f(in)g Fn(*fn)p Fo(.)95 b(It)49 │ │ │ │ +b(tries)227 1951 y(to)c(op)s(en)e(the)g(\014le)h(and)f(if)h(it)g(is)f │ │ │ │ +(successful,)k(it)e(then)e(calls)i Fn(ETree)p 2651 1951 │ │ │ │ +29 4 v 33 w(readFromFormattedFile\(\))37 b Fo(or)227 │ │ │ │ +2064 y Fn(ETree)p 473 2064 V 33 w(readFromBinaryFile\(\))p │ │ │ │ +Fo(,)24 b(closes)30 b(the)f(\014le)g(and)f(returns)g(the)h(v)-5 │ │ │ │ +b(alue)29 b(returned)e(from)i(the)g(called)227 2177 y(routine.)227 │ │ │ │ 2334 y Fj(Err)-5 b(or)31 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ b Fn(etree)f Fo(or)h Fn(fn)g Fo(are)g Fn(NULL)p Fo(,)g(or)g(if)g │ │ │ │ Fn(fn)g Fo(is)h(not)f(of)h(the)f(form)g Fn(*.etreef)e │ │ │ │ Fo(\(for)j(a)f(formatted)227 2447 y(\014le\))i(or)g Fn(*.etreeb)d │ │ │ │ Fo(\(for)i(a)h(binary)f(\014le\),)h(an)g(error)f(message)h(is)g(prin)m │ │ │ │ (ted)e(and)h(the)h(metho)s(d)f(returns)f(zero.)111 2647 │ │ │ │ y(2.)46 b Fn(int)h(ETree_readFromFormattedFi)o(le)42 │ │ │ │ @@ -6846,17 +6856,17 @@ │ │ │ │ e(v)-5 b(alue)34 b Fn(1)e Fo(is)i(returned.)47 b(If)33 │ │ │ │ b(an)g(IO)f(error)h(is)227 5250 y(encoun)m(tered)e(from)f │ │ │ │ Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 5407 y │ │ │ │ Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)p Fo(,)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 Fo(18)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 111 399 a Fo(6.)46 b Fn(int)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 111 399 a Fo(6.)46 b Fn(int)h │ │ │ │ (ETree_writeToBinaryFile)42 b(\()47 b(ETree)f(*etree,)g(FILE)h(*fp)g │ │ │ │ (\))g(;)227 557 y Fo(This)37 b(metho)s(d)g(writes)g(an)h │ │ │ │ Fn(ETree)e Fo(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 Fn(1)f Fo(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fn(fwrite)p Fo(,)f(zero)i(is)g(returned.)227 829 y Fj(Err)-5 │ │ │ │ @@ -6927,21 +6937,21 @@ │ │ │ │ w(writeToFile\(\))22 b Fo(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 │ │ │ │ Fn(outIVfile)427 5407 y Fo(is)31 b(of)f(the)h(form)f │ │ │ │ Fn(*.ivf)p Fo(\),)f(or)i(a)f(binary)g(\014le)g(\(if)h │ │ │ │ Fn(outIVfile)d Fo(is)i(of)h(the)f(form)g Fn(*.ivb)p Fo(\).)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(19)337 399 y Fl(\210)45 b Fo(The)24 │ │ │ │ -b Fn(outETreeFile)d Fo(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ -(the)h Fn(ETree)d Fo(ob)5 b(ject.)40 b(If)24 b Fn(outETreeFile)d │ │ │ │ -Fo(is)427 511 y Fn(none)g Fo(then)h(the)g Fn(ETree)f │ │ │ │ -Fo(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(19)337 399 y Fl(\210)45 │ │ │ │ +b Fo(The)24 b Fn(outETreeFile)d Fo(parameter)k(is)f(the)h(output)f │ │ │ │ +(\014le)g(for)g(the)h Fn(ETree)d Fo(ob)5 b(ject.)40 b(If)24 │ │ │ │ +b Fn(outETreeFile)d Fo(is)427 511 y Fn(none)g Fo(then)h(the)g │ │ │ │ +Fn(ETree)f Fo(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ b(Otherwise,)23 b(the)g Fn(ETree)p 3253 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fo(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 │ │ │ │ Fn(outETreeFile)c Fo(is)k(of)g(the)f(form)427 737 y Fn(*.etreef)p │ │ │ │ Fo(\),)f(or)h(a)h(binary)f(\014le)g(\(if)h Fn(outETreeFile)c │ │ │ │ Fo(is)j(of)h(the)f(form)g Fn(*.etreeb)p Fo(\).)111 951 │ │ │ │ y(2.)46 b Fn(extractTopSep)e(msglvl)j(msgFile)e(inETreeFile)g │ │ │ │ @@ -7009,29 +7019,29 @@ │ │ │ │ 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 Fo(20)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ -Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f(output)h │ │ │ │ -(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ -511 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 b(is)f(written)h(to)g(the)g │ │ │ │ -(message)g(\014le.)337 660 y Fl(\210)45 b Fo(The)33 b │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ -773 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ -b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 885 │ │ │ │ -y(data.)337 1034 y Fl(\210)45 b Fn(n1)30 b Fo(is)g(the)h(n)m(um)m(b)s │ │ │ │ -(er)e(of)i(grid)f(p)s(oin)m(ts)g(in)g(the)h(\014rst)e(direction.)337 │ │ │ │ -1182 y Fl(\210)45 b Fn(n2)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fo(20)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 337 399 a Fl(\210)45 b │ │ │ │ +Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ +(of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ +b Fo(means)427 511 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 │ │ │ │ +b(is)f(written)h(to)g(the)g(message)g(\014le.)337 660 │ │ │ │ +y Fl(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f │ │ │ │ +(the)h(message)g(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i │ │ │ │ +Fn(stdout)p Fo(,)g(then)g(the)427 773 y(message)27 b(\014le)f(is)g │ │ │ │ +Fj(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ +Fj(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ +885 y(data.)337 1034 y Fl(\210)45 b Fn(n1)30 b Fo(is)g(the)h(n)m(um)m │ │ │ │ +(b)s(er)e(of)i(grid)f(p)s(oin)m(ts)g(in)g(the)h(\014rst)e(direction.) │ │ │ │ +337 1182 y Fl(\210)45 b Fn(n2)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i │ │ │ │ (grid)f(p)s(oin)m(ts)g(in)g(the)h(second)f(direction.)337 │ │ │ │ 1330 y Fl(\210)45 b Fn(n3)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i │ │ │ │ (grid)f(p)s(oin)m(ts)g(in)g(the)h(third)e(direction.)337 │ │ │ │ 1478 y Fl(\210)45 b Fo(The)27 b Fn(maxzeros)e Fo(parameter)j(is)f(an)g │ │ │ │ (upp)s(er)f(b)s(ound)f(on)i(the)h(n)m(um)m(b)s(er)e(of)h(logically)j │ │ │ │ (zero)e(en)m(tries)g(that)427 1591 y(will)j(b)s(e)f(allo)m(w)m(ed)i(in) │ │ │ │ e(a)h(new)f(fron)m(t.)337 1740 y Fl(\210)45 b Fo(The)31 │ │ │ │ @@ -7089,22 +7099,22 @@ │ │ │ │ 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 │ │ │ │ Fn(maxsize)f Fo(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.)337 5407 y Fl(\210)45 │ │ │ │ b Fo(The)30 b Fn(nthread)f Fo(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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(21)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ -b Fn(maptype)f Fo(parameter)h(is)h(the)f(t)m(yp)s(e)h(of)f(map.)500 │ │ │ │ -540 y Fe({)45 b Fn(1)30 b Fo(|)h(wrap)e(map)500 667 y │ │ │ │ -Fe({)45 b Fn(2)30 b Fo(|)h(balanced)f(map)500 794 y Fe({)45 │ │ │ │ -b Fn(3)30 b Fo(|)h(subtree-subset)e(map)500 921 y Fe({)45 │ │ │ │ -b Fn(4)30 b Fo(|)h(domain)f(decomp)s(osition)h(map)337 │ │ │ │ +TeXDict begin 21 20 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(21)337 399 y Fl(\210)45 │ │ │ │ +b Fo(The)30 b Fn(maptype)f Fo(parameter)h(is)h(the)f(t)m(yp)s(e)h(of)f │ │ │ │ +(map.)500 540 y Fe({)45 b Fn(1)30 b Fo(|)h(wrap)e(map)500 │ │ │ │ +667 y Fe({)45 b Fn(2)30 b Fo(|)h(balanced)f(map)500 794 │ │ │ │ +y Fe({)45 b Fn(3)30 b Fo(|)h(subtree-subset)e(map)500 │ │ │ │ +921 y Fe({)45 b Fn(4)30 b Fo(|)h(domain)f(decomp)s(osition)h(map)337 │ │ │ │ 1062 y Fl(\210)45 b Fo(The)d Fn(cutoff)e Fo(parameter)i(is)g(used)f(b)m │ │ │ │ (y)h(the)g(domain)g(decomp)s(osition)g(map)g(only)-8 │ │ │ │ b(.)75 b(T)-8 b(ry)42 b(setting)427 1175 y Fn(cutoff)k(=)i(1/nthread)28 │ │ │ │ b Fo(or)i Fn(cutoff)46 b(=)i(1/\(2*nthread\))p Fo(.)337 │ │ │ │ 1316 y Fl(\210)d Fo(The)24 b Fn(outETreeFile)d Fo(parameter)k(is)f(the) │ │ │ │ h(output)f(\014le)g(for)g(the)h Fn(ETree)d Fo(ob)5 b(ject.)40 │ │ │ │ b(If)24 b Fn(outETreeFile)d Fo(is)427 1429 y Fn(none)g │ │ │ │ @@ -7182,18 +7192,18 @@ │ │ │ │ b(Otherwise,)37 b(the)g Fn(IV)p 3252 5181 V 34 w(writeToFile\(\))427 │ │ │ │ 5294 y Fo(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 Fn(outIVFile)d │ │ │ │ Fo(is)j(of)g(the)f(form)427 5407 y Fn(*.ivf)p Fo(\),)30 │ │ │ │ b(or)g(a)h(binary)f(\014le)g(\(if)h Fn(outIVFile)d Fo(is)i(of)g(the)h │ │ │ │ (form)f Fn(*.ivb)p Fo(\).)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 111 399 a Fo(6.)46 b Fn(testExpand)f(msglvl)h │ │ │ │ -(msgFile)g(inETreeFile)f(inEqmapFile)g(outETreeFile)227 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 111 399 a Fo(6.)46 b Fn(testExpand)f │ │ │ │ +(msglvl)h(msgFile)g(inETreeFile)f(inEqmapFile)g(outETreeFile)227 │ │ │ │ 553 y Fo(This)39 b(driv)m(er)h(program)g(is)g(used)f(to)i(translate)g │ │ │ │ (an)f Fn(ETree)e Fo(ob)5 b(ject)41 b(for)f(a)g(compressed)g(graph)f(in) │ │ │ │ m(to)i(an)227 666 y Fn(ETree)29 b Fo(ob)5 b(ject)31 b(for)g(the)f(unit) │ │ │ │ g(w)m(eigh)m(t)i(graph.)337 888 y Fl(\210)45 b Fo(The)28 │ │ │ │ b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ (output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ 1001 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 b(is)f(written)h(to)g(the)g │ │ │ │ @@ -7267,19 +7277,19 @@ │ │ │ │ h(t)m(w)m(o)g(plots.)337 5058 y Fl(\210)45 b Fo(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 │ │ │ │ Fn(radius)p Fo(.)337 5208 y Fl(\210)45 b Fo(The)34 b │ │ │ │ Fn(firstEPSfile)e Fo(and)i Fn(secondEPSfile)d Fo(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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ -Fa(GRD7x7)p Fo(:)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 │ │ │ │ +TeXDict begin 23 22 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(23)0 453 y(Figure)26 │ │ │ │ +b(1.1:)40 b Fa(GRD7x7)p Fo(:)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 Fg(J)38 │ │ │ │ b Fo(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 │ │ │ │ Fg(J)39 b Fo(and)30 b(all)h(of)g(its)g(ancestors.)41 │ │ │ │ b(Both)31 b(plots)g(ha)m(v)m(e)h(the)e(same)h(scale.)p │ │ │ │ 18 808 1918 4 v 18 2658 4 1850 v 76 2633 a @beginspecial │ │ │ │ @@ -7676,20 +7686,20 @@ │ │ │ │ 5053 y(information)d(\(see)g(the)g Fn(ETree)p 1305 5053 │ │ │ │ V 33 w(writeStats\(\))c Fo(metho)s(d\).)337 5294 y Fl(\210)45 │ │ │ │ b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ (of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ b Fo(means)427 5407 y(the)j Fn(ETree)e Fo(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 Fo(24)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)33 b │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ -511 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fo(24)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 337 399 a Fl(\210)45 b │ │ │ │ +Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g │ │ │ │ +(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the) │ │ │ │ +427 511 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)337 770 y Fl(\210)45 b Fo(The)37 b Fn(inFile)f │ │ │ │ Fo(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ Fn(ETree)e Fo(ob)5 b(ject.)64 b(It)37 b(m)m(ust)h(b)s(e)f(of)h(the)f │ │ │ │ (form)427 883 y Fn(*.etreef)18 b Fo(or)j Fn(*.etreeb)p │ │ │ │ Fo(.)35 b(The)19 b Fn(ETree)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ @@ -7767,21 +7777,21 @@ │ │ │ │ Fo(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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(25)227 399 y(the)g Fn(flag)e Fo(and)h │ │ │ │ -Fn(cutoff)f Fo(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 │ │ │ │ +TeXDict begin 25 24 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(25)227 399 y(the)g │ │ │ │ +Fn(flag)e Fo(and)h Fn(cutoff)f Fo(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 Fn(IV)27 b │ │ │ │ Fo(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 Fn(BCSSTK30)e │ │ │ │ Fo(ordered)i(b)m(y)227 737 y(nested)i(dissection,)i(where)d(the)h(m)m │ │ │ │ (ultisector)i(is)e(de\014ned)f(b)m(y)h(subtree)f(v)m(ertex)i(w)m(eigh)m │ │ │ │ (t)h(\()p Fn(flag)47 b(=)g(2)p Fo(\))29 b(with)227 850 │ │ │ │ y Fn(cutoff)46 b(=)i(0.125)p Fo(.)275 1092 y Fn(region)94 │ │ │ │ @@ -7841,19 +7851,19 @@ │ │ │ │ (\014le.)40 b(Otherwise,)30 b(the)f Fn(IV)p 2832 5181 │ │ │ │ V 34 w(writeToFile\(\))c Fo(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 Fn(outIVFile)d Fo(is)i(of)h(the)g(form)f Fn(*.ivf)p │ │ │ │ Fo(\),)g(or)h(a)427 5407 y(binary)c(\014le)g(\(if)h Fn(outIVFile)d │ │ │ │ Fo(is)i(of)h(the)f(form)g Fn(*.ivb)p Fo(\).)p eop end │ │ │ │ %%Page: 26 26 │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)30 b │ │ │ │ -Fn(flag)f Fo(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 Fn(flag)i(==)g(1)30 │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 337 399 a Fl(\210)45 b │ │ │ │ +Fo(The)30 b Fn(flag)f Fo(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 Fn(flag)i(==)g(1)30 │ │ │ │ b Fo(|)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 Fn(depth)f Fo(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 Fn(flag)i(==)g(2)32 b Fo(|)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 │ │ │ │ (subtree,)h(i.e.,)597 905 y(if)e(the)g(subtree)f(ro)s(oted)h(at)g(a)h │ │ │ │ @@ -7921,23 +7931,23 @@ │ │ │ │ (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 │ │ │ │ 5294 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 5294 V 33 w(readFromFile\(\))427 │ │ │ │ 5407 y Fo(metho)s(d.)p eop end │ │ │ │ %%Page: 27 27 │ │ │ │ -TeXDict begin 27 26 bop 91 100 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(27)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ -b Fn(outEPSfile)e Fo(parameter)j(is)f(the)h(name)f(of)h(the)f(EPS)g │ │ │ │ -(\014le)g(to)h(hold)f(the)h(tree.)337 542 y Fl(\210)45 │ │ │ │ -b Fo(The)34 b Fn(metricType)e Fo(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.)337 799 │ │ │ │ -y Fl(\210)45 b Fo(F)-8 b(or)31 b(information)g(ab)s(out)f(the)h │ │ │ │ +TeXDict begin 27 26 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(27)337 399 y Fl(\210)45 │ │ │ │ +b Fo(The)30 b Fn(outEPSfile)e Fo(parameter)j(is)f(the)h(name)f(of)h │ │ │ │ +(the)f(EPS)g(\014le)g(to)h(hold)f(the)h(tree.)337 542 │ │ │ │ +y Fl(\210)45 b Fo(The)34 b Fn(metricType)e Fo(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.)337 │ │ │ │ +799 y Fl(\210)45 b Fo(F)-8 b(or)31 b(information)g(ab)s(out)f(the)h │ │ │ │ Fn(heightflag)c Fo(and)j Fn(coordflag)e Fo(parameters,)j(see)g(Section) │ │ │ │ g Fe(??)q Fo(.)337 943 y Fl(\210)45 b Fo(If)30 b Fn(labelflag)45 │ │ │ │ b(=)j(1)p Fo(,)30 b(the)h(no)s(de)e(ids)h(are)h(written)g(on)f(the)g │ │ │ │ (no)s(des)g(in)g(the)h(t)m(w)m(o)g(plots.)337 1087 y │ │ │ │ Fl(\210)45 b Fo(The)30 b Fn(fontscale)e Fo(parameter)j(is)f(the)h(fon)m │ │ │ │ (t)g(size)g(when)e(lab)s(els)i(are)g(dra)m(wn.)66 1332 │ │ │ │ y(13.)46 b Fn(testStorage)f(msglvl)h(msgFile)g(inETreeFile)f │ │ │ │ @@ -9734,18 +9744,18 @@ │ │ │ │ b Fj(Mer)-5 b(ging)31 b Fo(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 Fn(maxzeros)e │ │ │ │ Fo(zero)k(en)m(tries)f(in)f(a)h(fron)m(t.)40 b(\(See)26 │ │ │ │ b([)p Fe(?)p Fo(])g(and)f([)p Fe(?)q Fo(])h(for)f(a)h(description)p │ │ │ │ eop end │ │ │ │ %%Page: 28 28 │ │ │ │ -TeXDict begin 28 27 bop 0 100 a Fo(28)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 0 731 a Fo(Figure)27 b(1.2:)39 b Fa(GRD7x7x7)p │ │ │ │ -Fo(:)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 Fo(28)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 0 731 a Fo(Figure)27 b(1.2:)39 │ │ │ │ +b Fa(GRD7x7x7)p Fo(:)h(F)-8 b(our)26 b(tree)h(plots)g(for)f(a)g(7)12 │ │ │ │ b Ff(\002)g Fo(7)g Ff(\002)g Fo(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 │ │ │ │ @@ -12015,47 +12025,47 @@ │ │ │ │ 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 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(29)227 399 y(of)i(this)g(sup)s(erno)s(de)d │ │ │ │ -(amalgamation)36 b(or)e(relaxation.\))53 b Fj(Splitting)34 │ │ │ │ -b Fo(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 │ │ │ │ -b(for)g(the)h Fn(R3D13824)d Fo(matrix)j(using)f Fn(maxzeros)45 │ │ │ │ -b(=)j(1000)29 b Fo(and)h Fn(maxsize)45 b(=)j(64)p Fo(.)1086 │ │ │ │ -931 y Fn(CPU)95 b(#fronts)f(#indices)f(#entries)332 b(#ops)275 │ │ │ │ -1044 y(original)93 b(:)668 b(6001)190 b(326858)142 b(3459359)f │ │ │ │ -(1981403337)275 1157 y(merge)46 b(one)h(:)191 b(0.209)237 │ │ │ │ -b(3477)190 b(158834)142 b(3497139)f(2000297117)275 1270 │ │ │ │ -y(merge)46 b(all)h(:)191 b(0.136)285 b(748)238 b(95306)142 │ │ │ │ -b(3690546)f(2021347776)275 1383 y(merge)46 b(any)h(:)191 │ │ │ │ -b(0.073)285 b(597)238 b(85366)142 b(3753241)f(2035158539)275 │ │ │ │ -1496 y(split)237 b(:)191 b(0.202)285 b(643)190 b(115139)142 │ │ │ │ -b(3753241)f(2035158539)275 1609 y(final)237 b(:)191 b(3.216)285 │ │ │ │ -b(643)190 b(115128)142 b(3752694)f(2034396840)227 1803 │ │ │ │ -y Fo(Note)27 b(ho)m(w)e(the)g(n)m(um)m(b)s(er)e(of)i(fron)m(ts,)i(fron) │ │ │ │ -m(t)e(indices,)h(factor)g(en)m(tries)g(and)e(factor)i(op)s(erations)f │ │ │ │ -(c)m(hange)h(after)227 1915 y(eac)m(h)31 b(step.)41 b(Merging)31 │ │ │ │ -b(c)m(hains)f(\(the)h Fn(merge)46 b(one)29 b Fo(line\))i(halv)m(es)g │ │ │ │ -(the)f(n)m(um)m(b)s(er)e(of)i(fron)m(ts)g(while)g(increasing)227 │ │ │ │ -2028 y(op)s(erations)45 b(b)m(y)g(1\045.)83 b(Merging)46 │ │ │ │ -b(all)g(c)m(hildren)e(when)g(p)s(ossible)g(\(the)h Fn(merge)h(all)e │ │ │ │ -Fo(line\))h(reduces)g(the)227 2141 y(n)m(um)m(b)s(er)35 │ │ │ │ -b(of)g(fron)m(ts)h(b)m(y)f(a)h(factor)h(of)f(5)g(while)f(increasing)h │ │ │ │ -(op)s(erations)g(b)m(y)g(another)g(1\045.)56 b(Merging)37 │ │ │ │ -b(an)m(y)227 2254 y(other)21 b(c)m(hildren)g(\(the)g │ │ │ │ +TeXDict begin 29 28 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(29)227 399 y(of)i(this)g(sup)s │ │ │ │ +(erno)s(de)d(amalgamation)36 b(or)e(relaxation.\))53 │ │ │ │ +b Fj(Splitting)34 b Fo(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 b(for)g(the)h Fn(R3D13824)d Fo(matrix)j(using)f │ │ │ │ +Fn(maxzeros)45 b(=)j(1000)29 b Fo(and)h Fn(maxsize)45 │ │ │ │ +b(=)j(64)p Fo(.)1086 931 y Fn(CPU)95 b(#fronts)f(#indices)f(#entries) │ │ │ │ +332 b(#ops)275 1044 y(original)93 b(:)668 b(6001)190 │ │ │ │ +b(326858)142 b(3459359)f(1981403337)275 1157 y(merge)46 │ │ │ │ +b(one)h(:)191 b(0.209)237 b(3477)190 b(158834)142 b(3497139)f │ │ │ │ +(2000297117)275 1270 y(merge)46 b(all)h(:)191 b(0.136)285 │ │ │ │ +b(748)238 b(95306)142 b(3690546)f(2021347776)275 1383 │ │ │ │ +y(merge)46 b(any)h(:)191 b(0.073)285 b(597)238 b(85366)142 │ │ │ │ +b(3753241)f(2035158539)275 1496 y(split)237 b(:)191 b(0.202)285 │ │ │ │ +b(643)190 b(115139)142 b(3753241)f(2035158539)275 1609 │ │ │ │ +y(final)237 b(:)191 b(3.216)285 b(643)190 b(115128)142 │ │ │ │ +b(3752694)f(2034396840)227 1803 y Fo(Note)27 b(ho)m(w)e(the)g(n)m(um)m │ │ │ │ +(b)s(er)e(of)i(fron)m(ts,)i(fron)m(t)e(indices,)h(factor)g(en)m(tries)g │ │ │ │ +(and)e(factor)i(op)s(erations)f(c)m(hange)h(after)227 │ │ │ │ +1915 y(eac)m(h)31 b(step.)41 b(Merging)31 b(c)m(hains)f(\(the)h │ │ │ │ +Fn(merge)46 b(one)29 b Fo(line\))i(halv)m(es)g(the)f(n)m(um)m(b)s(er)e │ │ │ │ +(of)i(fron)m(ts)g(while)g(increasing)227 2028 y(op)s(erations)45 │ │ │ │ +b(b)m(y)g(1\045.)83 b(Merging)46 b(all)g(c)m(hildren)e(when)g(p)s │ │ │ │ +(ossible)g(\(the)h Fn(merge)h(all)e Fo(line\))h(reduces)g(the)227 │ │ │ │ +2141 y(n)m(um)m(b)s(er)35 b(of)g(fron)m(ts)h(b)m(y)f(a)h(factor)h(of)f │ │ │ │ +(5)g(while)f(increasing)h(op)s(erations)g(b)m(y)g(another)g(1\045.)56 │ │ │ │ +b(Merging)37 b(an)m(y)227 2254 y(other)21 b(c)m(hildren)g(\(the)g │ │ │ │ Fn(merge)47 b(any)20 b Fo(line\))h(has)g(another)g(additional)g │ │ │ │ (e\013ect.)39 b(Splitting)22 b(the)e(fron)m(ts)h(increases)227 │ │ │ │ 2367 y(the)j(n)m(um)m(b)s(er)f(of)h(fron)m(ts)g(sligh)m(tly)-8 │ │ │ │ b(,)27 b(but)c(app)s(ears)g(not)h(to)h(c)m(hange)g(the)f(factor)g(en)m │ │ │ │ (tries)h(or)f(op)s(eration)g(coun)m(ts.)227 2480 y(This)30 │ │ │ │ b(is)g(false,)h(as)f(the)h(\014nal)e(step)h(computes)h(the)f(sym)m(b)s │ │ │ │ (olic)h(factorization)h(for)e(the)h(last)g(fron)m(t)f(tree)h(and)227 │ │ │ │ @@ -12186,23 +12196,23 @@ │ │ │ │ Fo(,)d(8)1992 4950 y Fn(ETree)p 2238 4950 V 33 w(splitFronts\(\))p │ │ │ │ Fo(,)i(14)1992 5064 y Fn(ETree)p 2238 5064 V 33 w(subtreeSubsetMap\(\)) │ │ │ │ p Fo(,)e(15)1992 5178 y Fn(ETree)p 2238 5178 V 33 w(transform\(\))p │ │ │ │ Fo(,)i(15)1992 5293 y Fn(ETree)p 2238 5293 V 33 w(transform2\(\))p │ │ │ │ Fo(,)g(15)1992 5407 y Fn(ETree)p 2238 5407 V 33 w(tree\(\))p │ │ │ │ Fo(,)h(3)1905 5656 y(30)p eop end │ │ │ │ %%Page: 31 31 │ │ │ │ -TeXDict begin 31 30 bop 91 100 1083 4 v 1264 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(31)0 399 y Fn(ETree)p 246 399 29 │ │ │ │ -4 v 33 w(vtxToFront\(\))p Fo(,)27 b(4)0 511 y Fn(ETree)p │ │ │ │ -246 511 V 33 w(vtxToFrontIV\(\))p Fo(,)g(4)0 624 y Fn(ETree)p │ │ │ │ -246 624 V 33 w(wrapMap\(\))p Fo(,)h(15)0 737 y Fn(ETree)p │ │ │ │ -246 737 V 33 w(writeForHumanEye\(\))p Fo(,)e(18)0 850 │ │ │ │ -y Fn(ETree)p 246 850 V 33 w(writeStats\(\))p Fo(,)h(18)0 │ │ │ │ -963 y Fn(ETree)p 246 963 V 33 w(writeToBinaryFile\(\))p │ │ │ │ +TeXDict begin 31 30 bop 91 100 1044 4 v 1225 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(31)0 399 y Fn(ETree)p │ │ │ │ +246 399 29 4 v 33 w(vtxToFront\(\))p Fo(,)27 b(4)0 511 │ │ │ │ +y Fn(ETree)p 246 511 V 33 w(vtxToFrontIV\(\))p Fo(,)g(4)0 │ │ │ │ +624 y Fn(ETree)p 246 624 V 33 w(wrapMap\(\))p Fo(,)h(15)0 │ │ │ │ +737 y Fn(ETree)p 246 737 V 33 w(writeForHumanEye\(\))p │ │ │ │ +Fo(,)e(18)0 850 y Fn(ETree)p 246 850 V 33 w(writeStats\(\))p │ │ │ │ +Fo(,)h(18)0 963 y Fn(ETree)p 246 963 V 33 w(writeToBinaryFile\(\))p │ │ │ │ Fo(,)e(18)0 1076 y Fn(ETree)p 246 1076 V 33 w(writeToFile\(\))p │ │ │ │ Fo(,)i(17)0 1189 y Fn(ETree)p 246 1189 V 33 w(writeToFormattedFile\(\)) │ │ │ │ p Fo(,)e(17)p eop end │ │ │ │ %%Trailer │ │ │ │ │ │ │ │ userdict /end-hook known{end-hook}if │ │ │ │ %%EOF │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 ETree : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 15 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 ETree : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 17 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 19 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 ETree : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 21 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 22 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 23 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 24 ETree : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 25 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 26 ETree : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 27 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 28 ETree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 29 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 October 18, 2025 31 │ │ │ │ │ + ETree : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Eigen.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1745 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1597,23 +1597,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1787,90 +1786,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6534,20 +6542,19 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 74 /J put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ @@ -6736,190 +6743,186 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ -98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ -7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ -5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ -8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ -9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ -CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ -AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8CC30D683C461 │ │ │ │ -AD9C4BDC977B04018DEACFD28A494A97EA00BAEA3EC87A55A4A443515B0AF101 │ │ │ │ -B7D5B60ACDA971F89630C5CC19878930158C50457F7C5A5BB17C51B847C0104F │ │ │ │ -FC6A24E01DFBBE38D0C2EB515147F88C5F8686799909779F22074AD8B869B5C5 │ │ │ │ -AB16E955F051B0CDE308F51C53C411B5A1F345AD252ACE84A5A4C362EA070955 │ │ │ │ -4FDC64B1E47CE12C3AECEEE68623F3C1CCB36CD3E55D11D97595874D7ECB1FC3 │ │ │ │ -1C3469C3045E80C6E99ECCBEF59092AE5E66CCAE3B89FB8037B6705151D7E62B │ │ │ │ -86809B7FEC9C7A242A8B369F6EF0D06F7CCF47D5458F960A2AA1FAABCABBACA9 │ │ │ │ -F2F33876F9C61FAC3B10FB6AD648E27DB482CDC5DFEBA251002DDA29686D7513 │ │ │ │ -88071E86B1D8C780863E73226E34B7636F6C9B0A1A3DCD1CCF175EA67B2740B0 │ │ │ │ -E78071E5FE6402317474D179D05EFE1ADB5000021C65B15E00610A0BF6A7DDBD │ │ │ │ -2BFF3B997734AE6FB52D4CE40010373491A70C412483250CE35ABEA693614EB9 │ │ │ │ -484ACD4D96D6393F0E9AE117DDAAA14205F3A7B1F655B2A26106016F32C7A5C1 │ │ │ │ -9C82315C947861F1FA5DC517C21F471FCA2AEF505B2C9984F71093EFCE59E581 │ │ │ │ -5B83212ED710AE172F026C8E091CC5FEE1C8D5026A43F3B42134B3D0C47B6FC3 │ │ │ │ -DDD73B9253FA9955932CFF099C5AB34641677E777B5CA37272CF5738EECC05BE │ │ │ │ -29C10056BB5338C6826561AA3369FB210065CFF850CB84BA6C47E027629CCA0D │ │ │ │ -A9B21FEAA0B44D521B1E4C945CC9D0F1FFA29EF87B516D7A7138818E4722A0D2 │ │ │ │ -23CB86BCED8A56157B02A26FA2E073D7D6D12C85782A6DEDF2C4197A22A45F4C │ │ │ │ -9C4670DB8A537E91FF6A05598716FB720C9086419D4CE4AA05D10E914E734BC4 │ │ │ │ -A7557643841476FCC0A5DEF317AC0E4159E4F73ED716A7F9B2025F687F5ABBF6 │ │ │ │ -E8512809C427C03C8EE1570EC2001DF551BDD5DB73004579846401AFEE84CAAE │ │ │ │ -3C34B369671A543B77E69392C29D4FB0E046352689EC1F35F36E3E259DA35743 │ │ │ │ -7C65C2DF42D5E0B416582B44939A4EBFDBEB939417D9DE7C27C92CA9B32B7FAD │ │ │ │ -65E1DEAD635CA05B32624B06CF99D75ABB9AE2CD328A99A29EA103946C94AFB2 │ │ │ │ -0220225C323071303A260A44FDA16EE98DFB108531232F063DDBBEB6CB011F0F │ │ │ │ -C9277E1854AF6F2CA84F1254847CB52355680048A7B69321D79941CB5317984F │ │ │ │ -8A2CAC941D1B4B02DEB64152FB8D9DF631D41F393B67AEE3526AC8F91B67DB0E │ │ │ │ -CFB19D319B6BFDA72CED58E3F213DD2E945C3BCC0CA70A629E9A9250F891BE97 │ │ │ │ -DEC8C5D8221F5D6689FF375E455BE3768EDB8436626E9E3FA09C8041F83C74BA │ │ │ │ -38E7ECE73E71311B9C0ABB5571CA95CD87F0EE072DDF65DA3414EA8F5FA0B5AA │ │ │ │ -BCC4C425F63D4B940BF9377C91F9E00D96C782926B75384413F606017BDF1E7E │ │ │ │ -863972A92DF89A57D5078B4F79C03623862E68D74AC7E464217DCA2D0AA1F260 │ │ │ │ -DAAFF729A4EE268B19FCC88AF68A70CEE6B00D7642A1B464CB90FEC415EF0286 │ │ │ │ -CD4BCE9A415C9CAA0139B552ABFC27E2E696752AEBCBB0128EBE65E3530D7BDE │ │ │ │ -71E57013976B41C2DBA14C79BD2D3A4223D2D3243608AEA9A842D818F977EE8B │ │ │ │ -EC8A655C9597DFE809BB68E0F89E5792101FFBE16AF1B98575A0A6B4634C7D2E │ │ │ │ -5EE774C8FE021C580436011CC22CA13548D0F54FDC153FD7DF6741774E11BC8D │ │ │ │ -D2C69C4758E242256C054618FA63086989E5C4B2A7DC521920523100E0997D07 │ │ │ │ -A48EBE35DD1332171836B5194EDFC7F049BF646B9BE7C0855A446D63A855EE0D │ │ │ │ -3D753BE66A6194455A1D4EEC7988D1BA34DC05A4EDFE9DE49E6D16DC5C69099C │ │ │ │ -0EC423A5D4037E900EA85BF1B801C8124045014A6FB8943B4678B97F1657BD30 │ │ │ │ -D7FFC70C97A863C0ABD2C8FC275A97FB8E7EDDFEA1AB805DEF48B4D41FEBAF2A │ │ │ │ -1ED158999CA195E7CDDB87DA048E9A99F04DD8E0DA2E682A2FE9038B091555FA │ │ │ │ -39D56A95D5A7371904F8943AF7CA648A174FE3B7E8BAA18F77DB5186AE54F67F │ │ │ │ -D8DCD004C8134A5F5DAB90A60953CDE6C88C6868CCCE090434CF0142A10C1B2F │ │ │ │ -0CB38A21BE63EF2AAFAB80674110A7C3CD8C50223011F5F0C8471BEC1A2A9275 │ │ │ │ -1C86D6AD04D97F924D51081B57847EB7A9D9A5F762F93FBE59E50AFB22F767DE │ │ │ │ -E8B6371B45687456E18B940A944196A4E2577DEBD0FE6DE6D52611B7007DBC43 │ │ │ │ -4F11531792EC0253B06C644B8095174BEF90DDEE6776BB3F87D6BF7BC712A232 │ │ │ │ -2DD305164FB364D0C4832E065326B0A3E6804E4637E4EEA45752E023E4B40C20 │ │ │ │ -A68DEEDE9ED2135D6972764804F09ED0BC43C711C01AE5B801D170EB73772D29 │ │ │ │ -7CCA604ED822F9DC0251A91A595EE330AB2320B690808BAFDE9266AF1A653442 │ │ │ │ -9C2C24D236E0D5DA8310BE6825E7ABA1626B5147E0527A6395DEA5B0657CBF9D │ │ │ │ -442918BE69D3D12B58842B857C6FC2C1E3CB2BB2D0709B22EEA04DDA9D550962 │ │ │ │ -557A845E782FCB12D1BC486CAF81E8A0DCF9C6700AA3D0A8CABD09531BF0CA5B │ │ │ │ -C9EACE7F6D8B14048FB3C89EEE4A2912768DCF5638A5666AA4E05B8DA62E8FAA │ │ │ │ -F13DE286DB91ED425282BECE5F48BC59461740DCFDAF484EAFA45D3677D24E6B │ │ │ │ -3FE0410B3376DA60DF35CEC3ACAAD94DF466E605B1A358A419D43E0A7976A6DE │ │ │ │ -FA5D9F3BB5A26D84A5FFA4EDAFCE97928645D9D9427B3411533CA4B6BC7D46A1 │ │ │ │ -7A3D259F2E06269381456B6C081300AD68F8918D00F66650CD5197D3734A1A33 │ │ │ │ -876554EDE2810101EC1961E820FE6FA45B0755037238A9F4FD193F92A5782DE9 │ │ │ │ -FC3F154C8369520C91750E75DF8E6E27803BAC306DA708E6CDA9AE06C0A6D811 │ │ │ │ -DDFCAC32DDCCB79D1F7848A90F29FC8B0FE95B0CB9CB5D6D2A62CDD324D5E74E │ │ │ │ -8C58932F42231664ABD20FF9712948DF3CE7B78E28BA1D44DAADD2ABF2858B32 │ │ │ │ -91DD86358D3D288EDA67A034E18204680124575C04BCDA974A1DC8AAE326B0C5 │ │ │ │ -3B578AC6D87D662431816500480803BBF53166AA7C73F2058F7900761677286C │ │ │ │ -98D9A9D2144B8767E794E9C2CA90BD42537FC11B16B35FE6F8021792DF988671 │ │ │ │ -C412FBFBE07720B80CD7B8D4FC0E72089057B98F84D25B9024A0065D10F7CFD8 │ │ │ │ -8E8EA42BBC37034BF96B525C669700BB3BD8F7FABDDB157B94941EA3BEBE89A9 │ │ │ │ -18373D0915E2EFFF5ECBF2BB61FC3E039A4D45392C9E918D6D20D9020AF82AF5 │ │ │ │ -50FD0EA12C008C28249D29640035DA1F347CB22222169A1364D0F58ABFEAAE79 │ │ │ │ -0F6E2849DB8C6E7D6DC8B3F3FACD77A8A7B4FE7B075D42BE2F6F916C619AE875 │ │ │ │ -D3152FB564784240158C8D246B04D5EF0D621828A08BCAD14208EBF82534B302 │ │ │ │ -AF62746675B4B86952E3444D41692A9C8D73DCE622F8B9739B8BCCF52C77671B │ │ │ │ -3031907442AE5270AE7F95B1961E51E005C104B6ED72DE0C83353D0BB072C6BB │ │ │ │ -504B16807291B75C1190A683E7A6FED81E7EE27D5DE398C926B8F8E3D1A23B24 │ │ │ │ -10DBE3C1F9C70D7EEAB4B879473604A71EABE671E3C7311CBF643873D2ADF34D │ │ │ │ -8063383BD0C8BC7A95806295DE8760AEAD6B2F95FA7869634240F9A7C54BA3F3 │ │ │ │ -A22AA9BA29BB5DB948D8E19C25CC95E2A649918950DED5B9C221B0E876FDC855 │ │ │ │ -13C5E9DDD24FD10BCFE1880518D5E92FC2D1EBD43C23ED60FFB5C5DF4C0C86B2 │ │ │ │ -DBCD5D1DE521D6222B867F3C54AEEEB607E94FC28E20EA13280F12C3984743D0 │ │ │ │ -940841DADFD8071197367510DF1454DCD41DD5D5404745A678E89D5C4034C2DA │ │ │ │ -B277C0D50684DCC7080A6B1A90C6A6EE9DDBA6DC4160A20D089D9BB1FD0676A0 │ │ │ │ -4A5CACAF145E8AF3C34417031BA06BA70B0230DE52CFDB5273F10C639A55CC03 │ │ │ │ -B4716D9642CBFE26F7E9E4A46099CA6C842BAA64CC9F62C0523700226F9B2524 │ │ │ │ -A93059A121A49680C0C507CE3F64235D50A7D0B937B24A050682F8A5C56FF6D3 │ │ │ │ -0098AB55F3C5CF8F8BC171566C0788D38B763B9B36CAAA73266CBB8372BFF204 │ │ │ │ -3F72FB65714731927FAF542FD18E12F564075BFDAE49223646F0A0040E6B6E10 │ │ │ │ -F21436D273B3245A281B99ED99FD462EB7953B6578BCFC29A2D69FB5CEBB34FF │ │ │ │ -01A21346EBA5717E45458BEC517EF5C0A825430E9DD61D4ABB41AA528B4980DC │ │ │ │ -58A39005DA1D077B31F13366DD656325A6158910C90FF9A5EFED859D0D639461 │ │ │ │ -DBF31AB00D1B2CF62D5F0037ECEF6C31ACCAD6CBC5262DBFD638B5685BC4904F │ │ │ │ -E8CE0E80E472370B005D39891F30432CDF889CBF1814E1D9EEADBE9D070D5795 │ │ │ │ -7424143BC6641EC713AE85B59BF7D7F400F531DA519C11550B7EA8480BD12E1C │ │ │ │ -C121A5BCE044B2F5359C79865A480278785CE1BA6BCDDC62F8B0252E3272EB4E │ │ │ │ -B9DB917810412EE89A08FC1E2409A19BA050249C1CE8837B1F1B100620A8FFA0 │ │ │ │ -750C0FAB765DF300FA5D30AD4E0D1CBDD727F0D62DA8EC1962D31BCDA7D502AA │ │ │ │ -608E744DC3B7E0F97AB870FF1A471E6BB3610D938FF43855870A4ACE1A889F2C │ │ │ │ -C672EBEFC0DA8A8B905C5A26C166580CEB24BACFD1B3ACE399AF84A7370037F3 │ │ │ │ -49FD831C5267A7C65AE29F0FB4C5647DC12B99A5E22FF85C13CC4FFC2D156CD2 │ │ │ │ -F57739666ED1DF6401CDA1A6CB3BFD957AFBC3EA8075D441E271EC38A3C611A4 │ │ │ │ -03F99DF98AA3AFE3845E7944027528B2B951D9366326420B7AFCC23A256B0D11 │ │ │ │ -A4A97261F4D794F92858D8F9A1A2B42D2C0666A8E3EDAD689661DA3F47616006 │ │ │ │ -21AEA0F133F80D6150DA9710654CB465FB499BE309D78DCCA49EFC08EEBCB17B │ │ │ │ -EBBE28C30FEF9BD0BB9AA324F84325C39AFF9D6E796610DCA4B4B9DC6CD8C260 │ │ │ │ -4519D7E831260FE824C939EA406E49A0C93C9D20D9878223D4FB0CA74577A8BD │ │ │ │ -3C15BD709AAAE8DFA74A6F89F94793C73BA90BB6CC97F07A80FA2007DA175FD3 │ │ │ │ -B055291DE5E9473B415DF66F22AF294B72EF9BB34EB7507D45EC03B64631E9FC │ │ │ │ -088EF994F2E66C48395653A66AEE604B8F263D6C37B917D8B6F522D17076A52A │ │ │ │ -7E8A190324BB34F458B4C0CECA59422657D4C7634D32D1A102DF02691626E654 │ │ │ │ -9F6CDDB642F8F88BD3400848227F8B51A776EF6DA06D74A477EBEE3DDEA82417 │ │ │ │ -BC5E34EBAD7A6AD9F801CE9FA91EE33BC18E5D251A59731461508D4F286F58CF │ │ │ │ -8EF9B7D1614E816A11D21176EAEFE5E6FF5D87289D33270FB5C1CA45A4C43579 │ │ │ │ -7DE29B9891E7DA85927E7FE743B9D7551406808A6000AE678F0F9F367FAF600C │ │ │ │ -A3303C70FA7A3D46386B3B34EBE33C26AF2D75D6AF73C0737635F84471DEDEED │ │ │ │ -78DB2BA475FF35B11E5DA13E7EE3EC091F98BBD34929D3BDFC41081BBD4560FE │ │ │ │ -1CC0F21C5867654A257844B120DA05442081FB960D3B6669F23C5E99960F5396 │ │ │ │ -56BBC9CBE03C5ACF9BA657F384390A18914C0E7BD100FC95C5D537AF037F92A6 │ │ │ │ -C8D29E7142E703331880865087FD8683030D8C7E7647AB6A57C933E85125C1D2 │ │ │ │ -6EA0895CC3559E07050DD42B460D732A32A43DEFBFA9704A4EE69EF659B447FB │ │ │ │ -1A84F0F5918B7841F683FB55D1CF9F5F9F1FFEBC016FC5AF9E5A58C7472E3BC3 │ │ │ │ -AC8CA78A6BBA18459D97DF86EFE4521B6AEE0A9E379A201183FF3136D7490C74 │ │ │ │ -4B917C15D5E25D1379550B7D9EE5B586AFFBAD8E773C7FA4A8EED2738CEF4102 │ │ │ │ -4B72E03182E30DB62A4F07307819AFCE31039497677725363914659DC739ACEA │ │ │ │ -B464EFD46B6528644182FC902B52AE74D740D614014655B9A51334986BEBB532 │ │ │ │ -72DBFEE2FEE87D33D94744453B1DC08473D4C5E07C8A78CAB6C7C4A15FD0B934 │ │ │ │ -105B01B7293119B162E5D54FC09A9B20F5153FA3291A3892CA2C1000800C3F67 │ │ │ │ -E9AA9E85A2E602587D214743912500BEBA368208687FF3D9C940A64AD1B5B91D │ │ │ │ -EFC3C0781A58A31918A4719775465C3D180BB97051621CF9D15A5B027663EB8D │ │ │ │ -422FD37E61AC3D27D8E80E1D6106CFA3EA2E2CDC79B29F14A0E25DE79C2378E8 │ │ │ │ -31BF0653015005CE4E3CECFCB6F7A67A87C67976E9F861A23B6793B26BC1C9BE │ │ │ │ -21EA5CD67B3CE91E7975A43A4CFBE3635FBEFDA9CA7D1FE2CB577EB293DBC5E1 │ │ │ │ -93F2618E5AC6C9015FCBEEE0F57217E6A934FEDAEA5E871424647F9FFF79EFEC │ │ │ │ -1704D68BE07F43C8D4C67A384BC3CC8BC7B4C3737F30CBC083A627CCEB148C40 │ │ │ │ -C03C704C0481F45F94A12F4E6289D226AA5D095D943B648A527BCFA81846988D │ │ │ │ -C164D5CF9F3116DD9B71302E700F40493834952027BCE5C372C2C067857D7F30 │ │ │ │ -6BA8B66025D735C12A6618C46E7E339DC6131E9F9D522F025DBD5B369C55A5CF │ │ │ │ -096DD271162FA23C30082B76D53015B1FA758E70428C0CD907F66BB6A6A7DE77 │ │ │ │ -438EE2F12DC3B71BCBED619D8B4A6246A39DEFFC19CE568EEFFFC6D03A050D84 │ │ │ │ -5F89C6FFEC66FDEEEBE52BDAE631CD90171A3574FAD5058CCF8AAFAAE6EA9522 │ │ │ │ -3C992D807729073CFAC939FDF7509364304E580332340BEAB010745D741A7028 │ │ │ │ -EA1510698554E250E52194A565933D1F6D3EE1E3217BF5F8E8E1B721841D7F4F │ │ │ │ -5A040D65688A5899FF4927869A8E9EEFE1E0A743DDBA61BC37D1879C4B097D7A │ │ │ │ -974BA22082F03E5195DD2703ABAD32609A6E13D31ECF5F8633F97FA53755396F │ │ │ │ -E092A726B5C74DA7565A62AD333EBF2E6B9C97C32556BB70F956D7B836367902 │ │ │ │ -C17AF93605FDDDE9F532CE85D0F1F4943B19FD1EB727D0613E119B96E2A4CE2D │ │ │ │ -EA2FFE0733ACB440E6A8CCA2D1DE3E1BD37DFB9E340BB16ED063E857CF540C1F │ │ │ │ -97E99145F569E8512ED44B36116B66C311313578E134F50F17EE58A30C514677 │ │ │ │ -0C0BDC5F3ED4658238AB6418AFA1B6F27551A128FE99D5A3AAAB59D32EDD6B09 │ │ │ │ -DEBF643A42622031B403FDF83A1E9978B9BC650DC773689111554296B812D3A6 │ │ │ │ -2AB8D877C6363B5BAA1C0BAF65BA79097C66418CC92E19E86F81B5D7FD7C1C35 │ │ │ │ -2C6BEEC865FE7465F807C77CA771EE41118E8ED69104BCD1E785D7AC0289A923 │ │ │ │ -493858F913A6F3B40F33330D35EA7D40FF331529B44A8E14399CA1ED39827AA9 │ │ │ │ -B5FEFC8C815BAB29824FA4282C474A7A8AD90EA5F99B1613574E98A9B5147E0B │ │ │ │ -EB7AFAA3521FA5EC4FE90A4CAECFE2BE6F679C2710E92B9CB2BAAD30718990A0 │ │ │ │ -BF628B8B62483307AB91152A98BF1A8F9917447E9CBA4BF378A9B75C54CCF9FE │ │ │ │ -EB521723CD8001F1EFD6FED6F7DCB1BB05FD4DD6C50803A45477F584C3693714 │ │ │ │ -04C10B0139FE29FAA4D139C4219A43929DF4D12D13021A90BF2CD419EA464399 │ │ │ │ -3737CB229D521AFA19724D2E819E4478AC00581CC516B835747A4094789AEA90 │ │ │ │ -F2275C7B24275AAE27E600ADFAFD81116BC2566C5F1BB21232E2901569228F42 │ │ │ │ -A472793D28A523199DB2DE53CE9B1AE4577F2A8A2664287CC7CFCC4D2F09E642 │ │ │ │ -5BF59AAEB6CCEB5E7C2AC6FF5D79092D3C1D4794F48B4AED3A22B319C7FE8F2D │ │ │ │ -1AF01182C2DCCE8239038D81D8C759257D8C6693DFBA55A27275DB90EF45D3F6 │ │ │ │ -74E5A9C2B936055DD394B371FEEDE3B7001D011571EC31218F4FEBC634D4EE56 │ │ │ │ -4C5C861705B3AC2F7FBEF9C92D047B50C138F93F0CE19F92FA4F190B199680BC │ │ │ │ -D85623823CE3DDFA3762483F2E4E35C186E5E9D35D921426EA4234ABC765A957 │ │ │ │ -DDD5588C069FF83F51B7D0A7863A3EF5FA3CEB511409CB9AB1580906405E9EB5 │ │ │ │ -7DACC19CAC2EAD47E71EA2DB90176E058103B559846FE4BAB4FC0E6FC361EF │ │ │ │ +BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ +7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ +2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ +54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ +2F3AD7547F9B0793E20128D03B122C74288283D9B583378FBA48950DCBDF887D │ │ │ │ +0A4C231FE009050F8A0C02473587E1D076F0BDC5458931FB26937C4EF7A7AB76 │ │ │ │ +DF14BDA8C5E27BDD9EC959C6F3FCF0C55E52847705744EE3D80EF426B9760775 │ │ │ │ +F4BD72DF213B715BE0AB9CEF5A9038E3EED7AF454E08ACBBD037E6307A04F331 │ │ │ │ +224C39B55908AC9FA0B8E560F8E78D5027B8266331C62EDF750CC08C0E2EB573 │ │ │ │ +082BB774BD853932B7C0C88BBE5F6E5E9D985792FA21B3180EE9911F823439DE │ │ │ │ +C430774263982682D4B1B76C287D1856702887A9A99B2B5A466FE6CC5B0851DF │ │ │ │ +EFBE62D59C80A0B97E81D0EEF577494C78F03924465B9042C7C6C1FD732CA57D │ │ │ │ +099755095F57ED2389501E3BF0969584ECE08D55FD8D7E95F92B4A0D405E5D61 │ │ │ │ +D10A7CF6B540B64594532EF90FA00CF28271462CB7F96D210E554AE285907A38 │ │ │ │ +EF66F57A40E2302CA4D3864994EC113AA35017C6D9890D1F4990AED4E5E395BA │ │ │ │ +51A1FED7F0E799614AEEFBD6FA24180F06F18DAC1D48FCC97C637130FF5C49AB │ │ │ │ +65E3E993F2CF6A2ED14A5A5CB71EDDAC41F58897B17750F761C131E1951F0F61 │ │ │ │ +1F97660E665F72B8E5106D357D7F673A61FA9399DF549ED13478B0335D7E97DA │ │ │ │ +DB74852BFFEBA827ACFD99EAD434BC753CF4E821275943118CF97A260781E068 │ │ │ │ +B184EEDC5879DC8787E93AAF61C0A4D418A86C33B89A2B8AAF6F49094930434D │ │ │ │ +D0C2E3E47E4C849694F27DD241F3BE91C3DB064D79677FE30BB4275A02AB5703 │ │ │ │ +C2264DE0968934F25B5A855A153CFC062AA83B31F1C6E8FB1AFEB58A64A14B09 │ │ │ │ +67E7B6AF2DA17860B7543EEB6ADCDD16D4B7D4F18E69E31952448A6A9756F119 │ │ │ │ +7D8B120EFF05305932CE00ED125F0466F4DE62C643C19479AF8AB7F837E39E47 │ │ │ │ +CB51E36704926D956B712D1BAB3E0D55764DC4901E0033AAE45F8F7A837D1F58 │ │ │ │ +94E160468FA5623D2493379ACD32B56C277B8A7FC45CEBB73AF8343F383AC2D1 │ │ │ │ +2AA7F26F6A6C50CCF5481A225B456EB17B8CB2B0DA93CA4705AE4C89B0A0FBAD │ │ │ │ +ED6EE13F80A0CB2FCE88E04E713899D89BBA083EE7190F402327C421211F3BF7 │ │ │ │ +795752EA6A5D45CB8A1A703B4C32640C7DB05A3A2E8189FCFB06A9E3FF71827E │ │ │ │ +0BE026EF3E1727FE71F1FE630BA88B6EC44292E10449A4034B581281244C4858 │ │ │ │ +5D6AB8AFC8B82550AFB6E32674CEDBC02609BCDD6D20303B5B19D482FAFFD62E │ │ │ │ +71C03297558037A3A547C8FC387348160322EA5BECB000BCA511314231CB4B03 │ │ │ │ +EA0F8D1CEC1E16F7C80B96DAD10A82882E88BD1DFEC488DA453CB6AB7F7FB3C5 │ │ │ │ +564BD56E417484AE98718E995219BBF15C50A4B6B656C01F9DA7D73CF7F19BD8 │ │ │ │ +6432191A24817876D1176C965618734EC8D69AD7623689836B8F5076DF2A7A79 │ │ │ │ +6566C7E1927231120FF80AD26AED6AD17C9683ACDC99B8910CF38594421DE843 │ │ │ │ +12BE7587261AF384E780D3AC9EF4B833D9EC603AE79D54707D588D8D1320B132 │ │ │ │ +DC860AD64F8FAEB702E264B31766E9E4F65FFA192EC8F4318670FE1DB84FCBFF │ │ │ │ +A4D515C454D06EAAACD7E11EF072CA195F5912241B89833157F4588CFF38D4ED │ │ │ │ +49C832DCD0D7F88A70D7DFA00E12E4E18172FF9B1F4E863DAD7AA751D7E1CBEF │ │ │ │ +057B379B0D80B0273FA21A8E1955F24229CBB47C5382812ACF89C1407B37D831 │ │ │ │ +91DFD0C105CB6F0F5316664067B171DA2E533285741A62168340FF81939366E1 │ │ │ │ +80203CFD32C1CCE3DC9A39C2179BF11103CD1E9E77D52B8E4E1CF99D01ED1FD5 │ │ │ │ +44727107756D023F0E7E41022DCDFFCA8974E349D0C45A6AC84DC39F52BF57EE │ │ │ │ +5E6F48F024F342C3806A7C45F51527A43C810011B526B806D92BB9C5CD5251DA │ │ │ │ +8A97BAC06C4BAC0F195DC940CD1C63A44D125456BA17D80CAED84FC7BF05C84D │ │ │ │ +B3A54F5AB213A2A919684A86CCC56BF78FCE8F39FE949D0186DFAAF89ABFA5DA │ │ │ │ +AE72D2F4C5D5F0DCB5AE8E091DD1D0111C3B0B772373DEBAF251C1A19AD5C286 │ │ │ │ +774DCC2DE46F02D2C7EC8B3CBEE88DF658CCE1A9AF9E2DCC48C1EE09E6922FB5 │ │ │ │ +0A631BA2403FD48362D68DA266B2CA3FC42CB76EF7D080733EFD6BFB15071E36 │ │ │ │ +7F5C6A45F68F09714D92031E4877E44303F83E9426D9B791125538D8D0CC35FF │ │ │ │ +EB9EAD579E5AD3E452482D7F6E08527DFB408D35E8489ECF944CF53C862616A9 │ │ │ │ +6CB48E4E288A84C635AC2F2FAB3862499298875317B3D97B6F3DB5A200AA2900 │ │ │ │ +70D7A6445F219BBFC9CD6A5B3FAD5419DD92F065ADB80612191193A546852BFA │ │ │ │ +88702081313F51362EEFF460ED599466A2CEBBE6A677BA30B75153E17BEE06FC │ │ │ │ +45D423A15ED6BDDFF4817D2516911A975AC6EF659191CD205EE65DD5F6062BD1 │ │ │ │ +10BFAAC274A0B744E0FC62E841A2AB7A6E992CA5971F46F5F8830809636D8DFE │ │ │ │ +49F75A1F544DC3E83216A3A77C3D033EF48D24281FF583F2A1EBAB3CBC885987 │ │ │ │ +95A293A509098F72376711ABF71718F4C3FCDA1BFBD6ECFEF994A98A8F163E31 │ │ │ │ +691773E45F326D9E40FFD9C51FFD22B23B73D9A7C877EDF07880E38E63814597 │ │ │ │ +8004EFE3AB7B4500A1C1EFA86165237B330748C0D25BE93A7C9335652F9C193B │ │ │ │ +6084CC2124CE6C1F9921EC338863121F3F67B8000E9EBF2093E1D56516E98D12 │ │ │ │ +BDD13132EE110B540C82CE4A8357725232569B0A7F522680C255F938F8C96F5A │ │ │ │ +140366B53EF74A0E2001DC43A878ECF4C9D121F456EA98CAC4960F0E19CA1E42 │ │ │ │ +8E810AF11FBBE37CA32933A992C98C15A3D9F4B89B7A8D7A2235A384059E3EFC │ │ │ │ +E27A6924FB37BF27F6C64DFD45FF2449E6FD27FC523A59641B3941B0E0762398 │ │ │ │ +005A6C0A7FD219E816DA2ABF12D067B0A3D5EA7E849070469BC846935F2BEFC3 │ │ │ │ +B47821B4D7EBB7F89C5FD9455CAB7A95103442AED5E3F1EF6FBD7A9050283FD3 │ │ │ │ +FC637DF884BBBFEB893C65F50F5DDA30530DFC8E770C54A19E56A435F6E1CC11 │ │ │ │ +DC2BB32CA215AF13C6FCB4ED5A7C632FB925533942DEA9640C27BC6706154049 │ │ │ │ +AF01B504E680EEB765252424A0938D3EA9854D8BB3AD82ACA400AB9A98619A17 │ │ │ │ +4168C90EF48A396E0F541FF488E62F8AE15D02F7171B917BF8A87F7958A5565F │ │ │ │ +EB1867A1526B2B6DDACB85FECEFF4A7A9DF3214CEA33F285D9E13AA5F194EC21 │ │ │ │ +6E85F9A69F47C016BA10637DB59EBC53C10CEBFAB3EE81EE126D3179D492A64A │ │ │ │ +02C3AA2E403811D35B1B7FB7279ACA4E5CD19343142F8A31953A0C11E968557B │ │ │ │ +3337DFF17B7998680C47CA56711DA3B183227DFF07EFD97DFA781CB0DE820F84 │ │ │ │ +258B58F5A0C0059E2DF7D03D298D7B429A9FE13CC9716314BE5FA97C20AF72F6 │ │ │ │ +F2111786177C3E638115F48D4C7B414A39B0EEA406562A814A9FEA30CE682C55 │ │ │ │ +D38FD59431BAF43794549ACBC4C76324B59464E29A3EFDBF7BC312F15489B0B5 │ │ │ │ +3099D1500353CFDD9B4229AAFE85C19971D688FD7E6494716438D7ACF5DA43BF │ │ │ │ +3486311B1C30D68477A2D18ADAC4946EB40A20B9FD5B409CC7B7C05A9C9E3480 │ │ │ │ +61B3C8E8C58E94496868245FD93DDC9CBF703A351272935EFB4809D4BABA3B6A │ │ │ │ +901F80B7D7B3EEDA7B21ABC3D1D69B05E2C7652396CDC34F407C9CCE4F8EF0C9 │ │ │ │ +87D17B0490C1EED5C3F4DDCF76F6ADDF307862B884C59CD339AE0E110D827D23 │ │ │ │ +D66E93C2C23ACC30E1A70AC93BDF4B184F45BB997FA87D8A9487E58A2CB3174D │ │ │ │ +A566B9D519D4D4EB3C3AFC26A548DF90C0F8061A8ACE7B652F636E5EAE52BB4E │ │ │ │ +8AAA61F415A48B0F77561C8D971909C6693B914AED4289980839DB77B9674CB7 │ │ │ │ +1191C9081B738E6DB28E2ADBA5BF54264E22EAA84AEE3F6FE24A46EB6466D949 │ │ │ │ +DE2BD9F965FCFF11E406E569F2E823953915F4BC4C4C492AE255BE4EC82A1024 │ │ │ │ +5CED5CEE6F1880090836D4A4D3FCA0DAB0E3CB80A89D2456017A3B8D644E1248 │ │ │ │ +1CDDD1FE7A73DCEC0DAB8AD7B838CC2BA29DEEE4F1F1A1D18E9CF199314C2F56 │ │ │ │ +4223504182B99FC412C7748BDB952AD7446E3CEEAA7D3EBA7358B72B6AB79C15 │ │ │ │ +94DFCEA1E926037E72C3D69A8DCCCA871FFE6A3928C47A381FAA9CF8101D0236 │ │ │ │ +B06EDED9DCCBF9D1D167A5B2D8BC3FDC3907F35DBC82400A8B07CF8109A5599D │ │ │ │ +DFC24641CEDE0C98C8111AD610B72ED7D65955D438EE6863BD90F82248E79C83 │ │ │ │ +3CE2B2C0E510FE9C270BE9F4B41D05554B354F62041601E741936079E5F18DC8 │ │ │ │ +113018FCC6693D88060FA22DBD7E02BB591299AA3DD756F9C4DA19576053B55A │ │ │ │ +E9E656C83130C727EE250A4E1A2E6BE911512952EE04228DA35072A4891CB938 │ │ │ │ +C8826D2B97F5DFA7E6A9689BDB8B6BE3650A8ED707F085E2A13DC918C293B943 │ │ │ │ +9F6E74747B130EC8646D49D5380BBDC7110A6D9FF2D0D60878C27C2A425864D7 │ │ │ │ +221B35A53EAC96408B60C67F30435095703778C06E27797548B18F6AE4216A5D │ │ │ │ +A31F8514B94076A0A3291FDE87518CF2BFCE05E42C807D4C2638BFAC3255DB41 │ │ │ │ +13A11B76FD2145E4C3747EB7752F48D0D23564C7367543DEC7DC63C5825671E7 │ │ │ │ +E8BC7CBF9F2ADB528CE633841114AA97B975CAE79BB766C0EC3B0655A03F8AC2 │ │ │ │ +2DE323917F5A2060E66B90B109B106FC320ED758F78CF144EB266480FE346CC3 │ │ │ │ +AC9466CCC3BBD6BCFC8A9392E47D07361B22D1D35E53AB18FEAEC7B12B53D76F │ │ │ │ +7A800997D24BD2CF84AE2DC7B9EC79CA3B5E0F3DECFDBE8A32CFC348D60A836A │ │ │ │ +329A8EE0A3D4E794AF2EC248E829B7A4E2F765D596166299B42FA24518907ECD │ │ │ │ +A4CF5383F1EFC43CF9A6ACED7D91058076B5398819F004F0580C798B4F3FE628 │ │ │ │ +D901B08F81E525C90C30E6F2D133AFCE56B04601F1BEF7FF5B6A52361F27181F │ │ │ │ +0A8E9D20DD6F7BF5B3026983F7B3F434AE16BF605883DA1D9E3A839BD4DAC9B7 │ │ │ │ +B0F3348A1A5D68F3D7BCB97D8BC8BF32B02D9468A8E9E118ACF3FDA69A6DC671 │ │ │ │ +ECB9C19888AE795A751FE40FDEBAC7A906F8B407F1EF9053C1205E52F26EE914 │ │ │ │ +6DCB8DC67F72E40B24A89EA5C63FB5DCE0B90AAF43296CEBE2E3338EB5907A33 │ │ │ │ +1B381A474F576763A01F4297A7E7EE790A7558F5A9D646BF6E2D8E74FFD40D95 │ │ │ │ +AC38EA97E39DC304BA1C18590A9C8CA18842F151D0198B87B0B2E6C191C1FCFD │ │ │ │ +34D4499163074CD886BA83C488295F617BC3169A110347C713B4E514A703A23B │ │ │ │ +C4EDA623CFB21D657130E8CCEA64F80898BE759413A8732895B90CB3A43B4D3F │ │ │ │ +60E0C2E397220181ED8E544C370664F40A90D891FD100C0465A1E51CAB41CC92 │ │ │ │ +E3997753DC0E4892E5B1073402D74BA80A251B26D96B946E6C45EBBC4F12C0EF │ │ │ │ +51CAD3D484C11C6C54799AB9A861980D456E906067E8BD258C4600A04935AA52 │ │ │ │ +7B1DD8EEC3C63ABA6358B6463ACFBABBFBC088AC770B221628FF24B496542B8D │ │ │ │ +4A1F5C9059FA96BFB1B5F6320D157E5C0360A505642D3F89CAB10E6A6C38A6C6 │ │ │ │ +3411C966BBDA9E70D9D562ACEB382031E2F2D8735FA2767E9181BDBA6DE4BC3E │ │ │ │ +F4F26630E01F09C3F6BD9B6A7EFB1E0AC3F3F55F286C402FCEEC33E64F7527E8 │ │ │ │ +A0D4C383567F41D18DE5CF1DCFDFC0200C7E32AA253693A04A4FDDB3AB939646 │ │ │ │ +2C0181126DEDE20E97E19F45A771DEA33C5D5134814B0518B12212028FAABEE4 │ │ │ │ +7B71306ACC3408F35DD845BAE4CC2325DD56CB79B751F9A3B9C450CDCCE958EA │ │ │ │ +DE2453EB64F33611E0BF622DB6D72AD91CFC3DD33BB952E47F0CE8EAF6A988DE │ │ │ │ +E46719FB4C5A05B61026EAFE45176C435C9829F0788699B841047D1586647590 │ │ │ │ +38CD63395D1731847BD5EB081EB6FAFA8E147136A2647600F468F7E5FBB93CBA │ │ │ │ +2B9123B50D7F868797D6B02B625EEDCF408F92B0BDFEFD02982E79997123B088 │ │ │ │ +5EDE35FE6DF8521A3739658F475E5E7E0F47D180C6F6311FC26F22711C70A7FD │ │ │ │ +6900F5D222E102062296D9E93019A9012619BA8976A403509C9779F5244439C6 │ │ │ │ +8C917AD079A8BE1781863C5C398D2E4AC1B71CB34F492BEAE8CF1C2262C74EC6 │ │ │ │ +DD355EBBC6935C8FA27435A1E63AC8669D9F397D095C8AA53E44A6E4CCE513C3 │ │ │ │ +7E4BFEF2B0164503E9E10D19945A6AA989E7B52067AEDD7B137ABB51DFEC1ABE │ │ │ │ +ED9E395F1F1D798C43774542196E0E0062D02082BA20702E2D05805E77AAE7D1 │ │ │ │ +76AFD8A2F777ED40637184F542A43F189EA7962510EDCE01CFE11DC4C2413A5C │ │ │ │ +EB97F74FE61F44BC90594930BA47B6F2AAAEC0CE08929EC9CF3AADEBD3A955B5 │ │ │ │ +19724B492B58BD24CCD5BEAFF54C9D85D65DC9338D75C7745E5ABA36A3397D96 │ │ │ │ +AFD34A47226A729CA54905200B25BE8F91DF69585DBE4291449B9444A6FF3E85 │ │ │ │ +A79F071CB6A90800F95EA388631FE78E9E482B14DB4B0D3947A4C29E31722549 │ │ │ │ +768D8AEA3EFDC40CAA9EB2BDF0E9D295490E609184BBC69F2BC1FA11191A8B5D │ │ │ │ +CB11C373EC0987CC6053CEBB3BE6989CCC1E314C94F0668166CE7C5F60EE109A │ │ │ │ +71B5F3E712E4A7F4B3C1FE46F5D73A1940C17B4ADEC51EFA54E6E6597E28582C │ │ │ │ +12147B2CE51B455DDCED3341B8B9DAF81C4AAAFC2F2A84BB3F611EBC4FF75EB3 │ │ │ │ +F078528332645D086BBD7DB99C12CFBB068455BA5176C89EB590EABA89FE4E63 │ │ │ │ +D756C731A4E2AEFD8EC3C8D75D07ABD53C4E4DEEB1CD73846FB996B6D117E53A │ │ │ │ +D040AECF22715ECE65FC7C6ACBA37A2C1B6B191CA468A8017F13E707DC0A217D │ │ │ │ +A977C9598BBC521173C304532CCFEF0282CAEE2878BFA704EEF4B2FFDB4C8312 │ │ │ │ +3887F1A70E74513B993705AD671839A7E1235C83B57997CFD4FD9F68EAA827E2 │ │ │ │ +5108F0BE3FA61E40D0D72B3DFE2207255F8D137CE0137EBDDC1F92B98CAC8956 │ │ │ │ +1C37924764E307651075AF70B0FE0A8EAA94F656D7280B9AF228F82B9E45300F │ │ │ │ +7C35ED34202902C67D150AC2D52602079C4E99F4EE908FB3888857F60ECFE47C │ │ │ │ +72079829F6B6649C01BD6A74740C8FEEE3816F529183EE95BE6C1DD74B93CB7B │ │ │ │ +3DA95999B1F6C6F2F8B18A93395957E10DDAEDCA5E3ED05AEE05F413B7DEE0AE │ │ │ │ +F72D8B280DF1F863C2952F71972AB566452360D09FDE5CFF4127E3AD76299FC8 │ │ │ │ +E5EA397214696A7C2AE3ED97F4536469AE02139E4CD92E15F61666DBC12E6F22 │ │ │ │ +0100EB0BAB01571C8D6C5FC46AD360E7DF52207AF5F6F428E9F3A989439D6194 │ │ │ │ +17E730E8BEE6C937CCA2C525340CC8EDBD7288A7EB8DDF520FFBF4BFB63F8A4A │ │ │ │ +4FC170BE4C5BA91FEF412E5FE92F46628E616303770CBF92246F6D114B56EA21 │ │ │ │ +4211173F7504A6075014AD7338A2DDFB587EFE9C11BAEAB87EEEF5209EBC77A9 │ │ │ │ +3CF6CF7BA681B3C2EB09C7AA798A705C4499235BE2B9BB7B88A953CA3799327C │ │ │ │ +1C59D5B0B0A46CBB43C3C372E6A080C770AB34F8C15E7E77428AB47469C98BC3 │ │ │ │ +29A57DB7E5981A69BFB1D7EFE320A661B580B76307073BE2AC61DB73ECAE695E │ │ │ │ +FFEAD86EAE40C83941F2C8625B691DB362165A447E9642EA96015590B2BEE080 │ │ │ │ +37EE1D45833500ABFB1D76ECE8370CF4A939ED8022646ACB9801CD88FBA2FCD9 │ │ │ │ +6216DAF2AAAAF9BB5A9EF25C29DBC4210329801FEF1C82AB7390E9826A8849C8 │ │ │ │ +5228F18CE1AF12B70253DE2FB477BA75ACF5BCB1B4B6FC6E5CA846802FEB278C │ │ │ │ +E8C37271E588C6875DE99148E798182BD7BFC73E48907B7C7C3820AD5AF2FDCF │ │ │ │ +DC2454F34F4A136D948A4CF9EC7EAD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7344,18 +7347,19 @@ │ │ │ │ 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 139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 │ │ │ │ -1[42 2[42 2[42 42 42 3[23 44[{}14 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 29[42 2[65{}3 83.022 /CMSY10 rf │ │ │ │ +/CMBX12 rf /Fe 137[44 3[33 2[42 1[69 7[37 2[46 19[62 │ │ │ │ +19[23 4[42 2[42 42 42 3[23 44[{}13 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 29[42 2[65{}3 83.022 /CMSY10 │ │ │ │ +rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -7411,16 +7415,16 @@ │ │ │ │ 39 39 2[39 39 39 39 39 39 39 39 39 32[39 17[39 46[{}21 │ │ │ │ 74.7198 /CMTT9 rf /Fq 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 /Fr 205[30 30 49[{}2 49.8132 /CMR6 rf /Fs 205[35 35 │ │ │ │ 49[{}2 66.4176 /CMR8 rf /Ft 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 76 4[50 │ │ │ │ -6[70 69 73 8[49 2[49 2[49 49 49 3[27 44[{}30 99.6264 │ │ │ │ +81 27 51 1[27 54 49 30 43 1[43 54 49 9[100 6[66 1[73 │ │ │ │ +3[50 6[70 69 73 11[49 2[49 49 49 3[27 44[{}29 99.6264 │ │ │ │ /CMR12 rf /Fu 165[99 6[90 2[110 121 126 1[97 6[106 1[117 │ │ │ │ 1[122 65[{}9 143.462 /CMBX12 rf /Fv 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 │ │ │ │ @@ -7437,22 +7441,22 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 109 1940 a Fv(In)l(tegrating)43 │ │ │ │ b(the)g Fu(SPOOLES)h Fv(2.2)e(Sparse)i(Linear)f(Algebra)g(Library)326 │ │ │ │ 2123 y(in)l(to)g(the)h Fu(LANCZOS)e Fv(Blo)t(c)l(k-shifted)h(Lanczos)g │ │ │ │ (Eigensolv)l(er)950 2513 y Ft(Clev)m(e)35 b(Ashcraft)737 │ │ │ │ 2629 y(Bo)s(eing)d(Phan)m(tom)i(W)-8 b(orks)1753 2593 │ │ │ │ y Fs(1)2334 2513 y Ft(Jim)33 b(P)m(atterson)2107 2629 │ │ │ │ -y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fs(2)1586 │ │ │ │ -2891 y Ft(Octob)s(er)32 b(18,)g(2025)104 4919 y Fr(1)138 │ │ │ │ -4951 y Fq(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 Fp │ │ │ │ -(cleve.ashcraft@boeing.com)p Fq(.)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 │ │ │ │ +y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fs(2)1544 │ │ │ │ +2891 y Ft(No)m(v)m(em)m(b)s(er)34 b(15,)e(2025)104 4919 │ │ │ │ +y Fr(1)138 4951 y Fq(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 Fp(cleve.ashcraft@boeing.com)p Fq(.)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 │ │ │ │ (e.)104 5193 y Fr(2)138 5224 y Fq(P)-6 b(.)27 b(O.)g(Bo)n(x)h(24346,)h │ │ │ │ (Mail)g(Stop)d(7L-22,)j(Seattle,)f(W)-6 b(ashington)27 │ │ │ │ b(98124,)i Fp(pattersn@redwood.rt.cs.boei)q(ng.co)q(m)p │ │ │ │ Fq(.)44 b(This)28 b(re-)0 5316 y(searc)n(h)18 b(w)n(as)h(supp)r(orted)e │ │ │ │ (in)h(part)g(b)n(y)f(the)g(D)n(ARP)-6 b(A)16 b(Con)n(tract)j(D)n │ │ │ │ (ABT63-95-C-0122)h(and)d(the)h(DoD)f(High)h(P)n(erformance)i(Computing) │ │ │ │ @@ -7577,21 +7581,21 @@ │ │ │ │ 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 781 4 v 946 100 a Fn(SPOOLES)32 │ │ │ │ +TeXDict begin 3 3 bop 83 100 745 4 v 910 100 a Fn(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(18,)f(2025)p 3080 100 V 781 w Fm(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 Fj(A)g Fm(and)g │ │ │ │ -Fj(B)k Fm(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 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fm(3)0 390 y(and)h(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 │ │ │ │ +Fj(A)g Fm(and)g Fj(B)k Fm(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 Fn(SPOOLES)g Fm(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 │ │ │ │ (terface)e(b)r(et)n(w)n(een)g(the)i(linear)e(system)g(solv)n(er)f(and)i │ │ │ │ (the)g(eigensolv)n(er.)0 814 y(Eac)n(h)i(of)i(the)g Fl(Bridge)p │ │ │ │ Fm(,)g Fl(BridgeMT)c Fm(and)k Fl(BridgeMPI)c Fm(ob)5 │ │ │ │ @@ -7652,59 +7656,59 @@ │ │ │ │ (utation)i(v)n(ector.)125 5243 y Fi(\210)42 b Fl(DenseMtx)e(*X)27 │ │ │ │ b Fm(:)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 Fi(\210)42 b Fl(DenseMtx)e(*Y)27 b Fm(:)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 781 4 v 946 100 a Fn(SPOOLES)32 │ │ │ │ +TeXDict begin 5 5 bop 83 100 745 4 v 910 100 a Fn(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(18,)f(2025)p 3080 100 V 781 w Fm(5)125 │ │ │ │ -390 y Fi(\210)42 b Fl(int)g(msglvl)30 b Fm(:)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 Fi(\210)42 b Fl(FILE)f(*msgFile)25 b Fm(:)37 b(message)26 │ │ │ │ -b(\014le)i(for)f(output.)37 b(When)28 b Fl(msglvl)e Fj(>)h │ │ │ │ -Fm(0,)g Fl(msgFile)e Fm(m)n(ust)j(not)f(b)r(e)h Fl(NULL)p │ │ │ │ -Fm(.)0 952 y Fd(2.2)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 1158 y Fm(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 Fm(ob)5 b(ject.)101 1360 y(1.)42 b Fl(int)g(Setup)f(\()j │ │ │ │ -(void)e(*data,)f(int)h(*pprbtype,)d(int)k(*pneqns,)d(int)i(*pmxbsz,)731 │ │ │ │ -1459 y(InpMtx)f(*A,)h(InpMtx)f(*B,)h(int)h(*pseed,)e(int)h(*pmsglvl,)e │ │ │ │ -(FILE)i(*msgFile)e(\))j(;)208 1591 y Fm(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 1756 y │ │ │ │ -Fi(\210)42 b Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h │ │ │ │ -Fl(Bridge)d Fm(ob)5 b(ject.)307 1887 y Fi(\210)42 b Fl(int)h(*pprbtype) │ │ │ │ -23 b Fm(|)28 b Fl(*pprbtype)c Fm(holds)j(the)h(problem)f(t)n(yp)r(e.) │ │ │ │ -456 2018 y Fn({)41 b Fl(1)28 b Fm(|)f(vibration,)g(a)g(m)n(ultiply)h │ │ │ │ -(with)h Fj(B)i Fm(is)d(required.)456 2133 y Fn({)41 b │ │ │ │ -Fl(2)28 b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g │ │ │ │ -Fj(A)g Fm(is)f(required.)456 2248 y Fn({)41 b Fl(3)28 │ │ │ │ -b Fm(|)f(simple,)h(no)g(m)n(ultiply)g(is)f(required.)307 │ │ │ │ -2379 y Fi(\210)42 b Fl(int)h(*pneqns)24 b Fm(|)k Fl(*pneqns)d │ │ │ │ -Fm(is)i(the)h(n)n(um)n(b)r(er)g(of)f(equations.)307 2510 │ │ │ │ -y Fi(\210)42 b Fl(int)h(*pmxbsz)24 b Fm(|)k Fl(*pmxbsz)d │ │ │ │ -Fm(is)i(an)h(upp)r(er)f(b)r(ound)h(on)g(the)g(blo)r(c)n(k)f(size.)307 │ │ │ │ -2641 y Fi(\210)42 b Fl(InpMtx)f(*A)27 b Fm(|)h Fl(A)f │ │ │ │ -Fm(is)h(a)f Fn(SPOOLES)g Fm(ob)5 b(ject)28 b(that)g(holds)f(the)h │ │ │ │ -(matrix)f Fj(A)p Fm(.)307 2772 y Fi(\210)42 b Fl(InpMtx)f(*B)27 │ │ │ │ -b Fm(|)h Fl(B)f Fm(is)h(a)f Fn(SPOOLES)h Fm(ob)5 b(ject)28 │ │ │ │ -b(that)g(holds)f(the)h(matrix)f Fj(B)t Fm(.)38 b(F)-7 │ │ │ │ -b(or)27 b(an)g(ordinary)f(eigenproblem,)390 2872 y Fj(B)32 │ │ │ │ -b Fm(is)27 b(the)h(iden)n(tit)n(y)g(and)g Fl(B)f Fm(is)g │ │ │ │ -Fl(NULL)p Fm(.)307 3003 y Fi(\210)42 b Fl(int)h(*pseed)25 │ │ │ │ -b Fm(|)i Fl(*pseed)f Fm(is)h(a)g(random)g(n)n(um)n(b)r(er)g(seed.)307 │ │ │ │ -3134 y Fi(\210)42 b Fl(int)h(*pmsglvl)15 b Fm(|)k Fl(*pmsglvl)d │ │ │ │ -Fm(is)j(a)f(message)g(lev)n(el)g(for)g(the)i(bridge)e(metho)r(ds)h(and) │ │ │ │ -g(the)g Fn(SPOOLES)g Fm(metho)r(ds)390 3234 y(they)28 │ │ │ │ -b(call.)307 3365 y Fi(\210)42 b Fl(FILE)g(*pmsglvl)21 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fm(5)125 390 y Fi(\210)42 b Fl(int)g(msglvl)30 b Fm(:)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 Fi(\210)42 b Fl(FILE)f(*msgFile)25 │ │ │ │ +b Fm(:)37 b(message)26 b(\014le)i(for)f(output.)37 b(When)28 │ │ │ │ +b Fl(msglvl)e Fj(>)h Fm(0,)g Fl(msgFile)e Fm(m)n(ust)j(not)f(b)r(e)h │ │ │ │ +Fl(NULL)p Fm(.)0 952 y Fd(2.2)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 │ │ │ │ +1158 y Fm(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 Fm(ob)5 b(ject.)101 1360 │ │ │ │ +y(1.)42 b Fl(int)g(Setup)f(\()j(void)e(*data,)f(int)h(*pprbtype,)d(int) │ │ │ │ +k(*pneqns,)d(int)i(*pmxbsz,)731 1459 y(InpMtx)f(*A,)h(InpMtx)f(*B,)h │ │ │ │ +(int)h(*pseed,)e(int)h(*pmsglvl,)e(FILE)i(*msgFile)e(\))j(;)208 │ │ │ │ +1591 y Fm(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 1756 y Fi(\210)42 b Fl(void)g(*data)26 │ │ │ │ +b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h Fl(Bridge)d Fm(ob)5 │ │ │ │ +b(ject.)307 1887 y Fi(\210)42 b Fl(int)h(*pprbtype)23 │ │ │ │ +b Fm(|)28 b Fl(*pprbtype)c Fm(holds)j(the)h(problem)f(t)n(yp)r(e.)456 │ │ │ │ +2018 y Fn({)41 b Fl(1)28 b Fm(|)f(vibration,)g(a)g(m)n(ultiply)h(with)h │ │ │ │ +Fj(B)i Fm(is)d(required.)456 2133 y Fn({)41 b Fl(2)28 │ │ │ │ +b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fj(A)g │ │ │ │ +Fm(is)f(required.)456 2248 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g │ │ │ │ +(m)n(ultiply)g(is)f(required.)307 2379 y Fi(\210)42 b │ │ │ │ +Fl(int)h(*pneqns)24 b Fm(|)k Fl(*pneqns)d Fm(is)i(the)h(n)n(um)n(b)r │ │ │ │ +(er)g(of)f(equations.)307 2510 y Fi(\210)42 b Fl(int)h(*pmxbsz)24 │ │ │ │ +b Fm(|)k Fl(*pmxbsz)d Fm(is)i(an)h(upp)r(er)f(b)r(ound)h(on)g(the)g │ │ │ │ +(blo)r(c)n(k)f(size.)307 2641 y Fi(\210)42 b Fl(InpMtx)f(*A)27 │ │ │ │ +b Fm(|)h Fl(A)f Fm(is)h(a)f Fn(SPOOLES)g Fm(ob)5 b(ject)28 │ │ │ │ +b(that)g(holds)f(the)h(matrix)f Fj(A)p Fm(.)307 2772 │ │ │ │ +y Fi(\210)42 b Fl(InpMtx)f(*B)27 b Fm(|)h Fl(B)f Fm(is)h(a)f │ │ │ │ +Fn(SPOOLES)h Fm(ob)5 b(ject)28 b(that)g(holds)f(the)h(matrix)f │ │ │ │ +Fj(B)t Fm(.)38 b(F)-7 b(or)27 b(an)g(ordinary)f(eigenproblem,)390 │ │ │ │ +2872 y Fj(B)32 b Fm(is)27 b(the)h(iden)n(tit)n(y)g(and)g │ │ │ │ +Fl(B)f Fm(is)g Fl(NULL)p Fm(.)307 3003 y Fi(\210)42 b │ │ │ │ +Fl(int)h(*pseed)25 b Fm(|)i Fl(*pseed)f Fm(is)h(a)g(random)g(n)n(um)n │ │ │ │ +(b)r(er)g(seed.)307 3134 y Fi(\210)42 b Fl(int)h(*pmsglvl)15 │ │ │ │ +b Fm(|)k Fl(*pmsglvl)d Fm(is)j(a)f(message)g(lev)n(el)g(for)g(the)i │ │ │ │ +(bridge)e(metho)r(ds)h(and)g(the)g Fn(SPOOLES)g Fm(metho)r(ds)390 │ │ │ │ +3234 y(they)28 b(call.)307 3365 y Fi(\210)42 b Fl(FILE)g(*pmsglvl)21 │ │ │ │ b Fm(|)k Fl(msgFile)c Fm(is)j(the)h(message)e(\014le)i(for)f(the)g │ │ │ │ (bridge)g(metho)r(ds)h(and)f(the)g Fn(SPOOLES)h Fm(meth-)390 │ │ │ │ 3464 y(o)r(ds)j(they)f(call.)208 3628 y(This)39 b(metho)r(d)h(m)n(ust)g │ │ │ │ (b)r(e)g(called)f(in)h(the)f(driv)n(er)g(program)e(prior)h(to)i(in)n(v) │ │ │ │ n(oking)e(the)i(eigensolv)n(er)d(via)i(a)g(call)g(to)208 │ │ │ │ 3728 y Fl(lanczos)p 521 3728 27 4 v 28 w(run\(\))p Fm(.)c(It)28 │ │ │ │ b(then)g(follo)n(ws)f(this)g(sequence)h(of)f(action.)307 │ │ │ │ @@ -7736,48 +7740,49 @@ │ │ │ │ (in)n(to)f(the)i(upp)r(er)e(triangle,)i(and)e(the)i(storage)c(mo)r(des) │ │ │ │ j(of)g Fl(A)f Fm(and)h Fl(B)f Fm(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 Fi(\210)42 b Fm(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 Fl(Bridge)d Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 6 7 │ │ │ │ -TeXDict begin 6 6 bop 83 100 781 4 v 946 100 a Fn(SPOOLES)32 │ │ │ │ +TeXDict begin 6 6 bop 83 100 745 4 v 910 100 a Fn(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(18,)f(2025)p 3080 100 V 781 w Fm(6)307 │ │ │ │ -390 y Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d Fm(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 Fl(Bridge)d Fm(ob)5 b(ject.)307 523 y Fi(\210)42 │ │ │ │ -b Fm(A)30 b Fl(SubMtxManager)24 b Fm(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 Fl(Bridge)390 622 y Fm(ob)5 b(ject.)307 755 y │ │ │ │ -Fi(\210)42 b Fm(Tw)n(o)27 b Fl(DenseMtx)d Fm(ob)5 b(jects)27 │ │ │ │ -b(are)g(created)g(to)g(b)r(e)h(used)g(during)f(the)h(matrix)f(m)n │ │ │ │ -(ultiplies)h(and)g(solv)n(es.)208 921 y(The)f Fl(A)f │ │ │ │ -Fm(and)h Fl(B)g Fm(matrices)f(are)g(no)n(w)g(in)h(their)g(p)r(erm)n │ │ │ │ -(uted)h(ordering,)d(i.e.,)i Fj(P)12 b(AP)2688 891 y Ff(T)2768 │ │ │ │ -921 y Fm(and)26 b Fj(P)12 b(B)t(P)3125 891 y Ff(T)3178 │ │ │ │ -921 y Fm(,)27 b(and)g(all)f(data)h(struc-)208 1020 y(tures)i(are)h │ │ │ │ -(with)g(resp)r(ect)g(to)g(this)h(ordering.)43 b(After)31 │ │ │ │ -b(the)f(Lanczos)f(run)h(completes,)h(an)n(y)e(generated)g(eigen)n(v)n │ │ │ │ -(ectors)208 1120 y(m)n(ust)e(b)r(e)h(p)r(erm)n(uted)g(bac)n(k)f(in)n │ │ │ │ -(to)g(their)h(original)e(ordering)g(using)h(the)h Fl(oldToNewIV)23 │ │ │ │ -b Fm(and)28 b Fl(newToOldIV)23 b Fm(ob)5 b(jects.)208 │ │ │ │ -1253 y Fb(R)l(eturn)28 b(value:)860 1451 y Fm(1)99 b(normal)27 │ │ │ │ -b(return)832 1551 y(-1)99 b Fl(data)26 b Fm(is)i Fl(NULL)832 │ │ │ │ -1651 y Fm(-2)99 b Fl(pprbtype)24 b Fm(is)k Fl(NULL)832 │ │ │ │ -1750 y Fm(-3)99 b Fl(*pprbtype)24 b Fm(is)j(in)n(v)-5 │ │ │ │ -b(alid)832 1850 y(-4)99 b Fl(pneqns)25 b Fm(is)j Fl(NULL)832 │ │ │ │ -1949 y Fm(-5)99 b Fl(*pneqns)25 b Fm(is)i(in)n(v)-5 b(alid)1913 │ │ │ │ -1451 y(-6)99 b Fl(pmxbsz)25 b Fm(is)j Fl(NULL)1913 1551 │ │ │ │ -y Fm(-7)99 b Fl(*pmxbsz)25 b Fm(is)i(in)n(v)-5 b(alid)1913 │ │ │ │ -1651 y(-8)99 b Fl(A)27 b Fm(and)h Fl(B)f Fm(are)f Fl(NULL)1913 │ │ │ │ -1750 y Fm(-9)99 b Fl(seed)26 b Fm(is)h Fl(NULL)1872 1850 │ │ │ │ -y Fm(-10)98 b Fl(msglvl)25 b Fm(is)j Fl(NULL)1872 1949 │ │ │ │ -y Fm(-11)98 b Fl(msglvl)20 b Fj(>)j Fm(0)k(and)h Fl(msgFile)d │ │ │ │ -Fm(is)i Fl(NULL)101 2144 y Fm(2.)42 b Fl(void)f(Factor)h(\()h(double)e │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fm(6)307 390 y Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d │ │ │ │ +Fm(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 Fl(Bridge)d Fm(ob)5 b(ject.)307 │ │ │ │ +523 y Fi(\210)42 b Fm(A)30 b Fl(SubMtxManager)24 b Fm(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 Fl(Bridge)390 622 y Fm(ob)5 │ │ │ │ +b(ject.)307 755 y Fi(\210)42 b Fm(Tw)n(o)27 b Fl(DenseMtx)d │ │ │ │ +Fm(ob)5 b(jects)27 b(are)g(created)g(to)g(b)r(e)h(used)g(during)f(the)h │ │ │ │ +(matrix)f(m)n(ultiplies)h(and)g(solv)n(es.)208 921 y(The)f │ │ │ │ +Fl(A)f Fm(and)h Fl(B)g Fm(matrices)f(are)g(no)n(w)g(in)h(their)g(p)r │ │ │ │ +(erm)n(uted)h(ordering,)d(i.e.,)i Fj(P)12 b(AP)2688 891 │ │ │ │ +y Ff(T)2768 921 y Fm(and)26 b Fj(P)12 b(B)t(P)3125 891 │ │ │ │ +y Ff(T)3178 921 y Fm(,)27 b(and)g(all)f(data)h(struc-)208 │ │ │ │ +1020 y(tures)i(are)h(with)g(resp)r(ect)g(to)g(this)h(ordering.)43 │ │ │ │ +b(After)31 b(the)f(Lanczos)f(run)h(completes,)h(an)n(y)e(generated)g │ │ │ │ +(eigen)n(v)n(ectors)208 1120 y(m)n(ust)e(b)r(e)h(p)r(erm)n(uted)g(bac)n │ │ │ │ +(k)f(in)n(to)g(their)h(original)e(ordering)g(using)h(the)h │ │ │ │ +Fl(oldToNewIV)23 b Fm(and)28 b Fl(newToOldIV)23 b Fm(ob)5 │ │ │ │ +b(jects.)208 1253 y Fb(R)l(eturn)28 b(value:)860 1451 │ │ │ │ +y Fm(1)99 b(normal)27 b(return)832 1551 y(-1)99 b Fl(data)26 │ │ │ │ +b Fm(is)i Fl(NULL)832 1651 y Fm(-2)99 b Fl(pprbtype)24 │ │ │ │ +b Fm(is)k Fl(NULL)832 1750 y Fm(-3)99 b Fl(*pprbtype)24 │ │ │ │ +b Fm(is)j(in)n(v)-5 b(alid)832 1850 y(-4)99 b Fl(pneqns)25 │ │ │ │ +b Fm(is)j Fl(NULL)832 1949 y Fm(-5)99 b Fl(*pneqns)25 │ │ │ │ +b Fm(is)i(in)n(v)-5 b(alid)1913 1451 y(-6)99 b Fl(pmxbsz)25 │ │ │ │ +b Fm(is)j Fl(NULL)1913 1551 y Fm(-7)99 b Fl(*pmxbsz)25 │ │ │ │ +b Fm(is)i(in)n(v)-5 b(alid)1913 1651 y(-8)99 b Fl(A)27 │ │ │ │ +b Fm(and)h Fl(B)f Fm(are)f Fl(NULL)1913 1750 y Fm(-9)99 │ │ │ │ +b Fl(seed)26 b Fm(is)h Fl(NULL)1872 1850 y Fm(-10)98 │ │ │ │ +b Fl(msglvl)25 b Fm(is)j Fl(NULL)1872 1949 y Fm(-11)98 │ │ │ │ +b Fl(msglvl)20 b Fj(>)j Fm(0)k(and)h Fl(msgFile)d Fm(is)i │ │ │ │ +Fl(NULL)101 2144 y Fm(2.)42 b Fl(void)f(Factor)h(\()h(double)e │ │ │ │ (*psigma,)f(double)h(*ppvttol,)f(void)i(*data,)f(int)h(*pinertia,)e │ │ │ │ (int)i(*perror)f(\))i(;)208 2277 y Fm(This)31 b(metho)r(d)h(computes)g │ │ │ │ (the)g(factorization)e(of)i Fj(A)21 b Fh(\000)g Fj(\033)s(B)t │ │ │ │ Fm(.)49 b(All)33 b(calling)e(sequence)g(parameters)f(are)g(p)r(oin)n │ │ │ │ (ters)h(to)208 2377 y(more)26 b(easily)h(allo)n(w)g(an)g(in)n(terface)g │ │ │ │ (with)h(F)-7 b(ortran.)307 2542 y Fi(\210)42 b Fl(double)f(*psigma)25 │ │ │ │ b Fm(|)j(the)g(shift)g(parameter)e Fj(\033)31 b Fm(is)d(found)g(in)g │ │ │ │ @@ -7829,70 +7834,70 @@ │ │ │ │ Fj(B)i Fm(is)d(required.)456 5159 y Fn({)41 b Fl(2)28 │ │ │ │ b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fj(A)g │ │ │ │ Fm(is)f(required.)456 5275 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g │ │ │ │ (m)n(ultiply)g(is)f(required.)307 5407 y Fi(\210)42 b │ │ │ │ Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h │ │ │ │ Fl(Bridge)d Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 7 8 │ │ │ │ -TeXDict begin 7 7 bop 83 100 781 4 v 946 100 a Fn(SPOOLES)32 │ │ │ │ +TeXDict begin 7 7 bop 83 100 745 4 v 910 100 a Fn(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(18,)f(2025)p 3080 100 V 781 w Fm(7)101 │ │ │ │ -390 y(4.)42 b Fl(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 Fm(This)22 b(metho)r(d)i(solv)n(es)d(\()p │ │ │ │ -Fj(A)9 b Fh(\000)g Fj(\033)s(B)t Fm(\))p Fj(X)30 b Fm(=)23 │ │ │ │ -b Fj(Y)c Fm(,)24 b(where)e(\()p Fj(A)9 b Fh(\000)g Fj(\033)s(B)t │ │ │ │ -Fm(\))24 b(has)e(b)r(een)h(factored)f(b)n(y)h(a)f(previous)g(call)h(to) │ │ │ │ -f Fl(Factor\(\))p Fm(.)208 722 y(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 │ │ │ │ -Fi(\210)42 b Fl(int)h(*pnrows)24 b Fm(|)k Fl(*pnrows)d │ │ │ │ -Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f(ro)n(ws)f(in)i │ │ │ │ -Fj(X)34 b Fm(and)28 b Fj(Y)18 b Fm(.)307 1021 y Fi(\210)42 │ │ │ │ -b Fl(int)h(*pncols)24 b Fm(|)k Fl(*pncols)d Fm(con)n(tains)h(the)i(n)n │ │ │ │ -(um)n(b)r(er)g(of)f(columns)h(in)f Fj(X)34 b Fm(and)28 │ │ │ │ -b Fj(Y)19 b Fm(.)307 1154 y Fi(\210)42 b Fl(double)f(X[])27 │ │ │ │ -b Fm(|)g(this)h(is)g(the)g Fj(X)34 b Fm(matrix,)27 b(stored)g(column)g │ │ │ │ -(ma)5 b(jor)27 b(with)h(leading)f(dimension)g Fl(*pnrows)p │ │ │ │ -Fm(.)307 1287 y Fi(\210)42 b Fl(double)f(Y[])27 b Fm(|)g(this)h(is)g │ │ │ │ -(the)g Fj(Y)46 b Fm(matrix,)27 b(stored)g(column)h(ma)5 │ │ │ │ -b(jor)26 b(with)i(leading)f(dimension)h Fl(*pnrows)p │ │ │ │ -Fm(.)307 1420 y Fi(\210)42 b Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n │ │ │ │ -(ter)f(to)g(the)h Fl(Bridge)d Fm(ob)5 b(ject.)307 1553 │ │ │ │ -y Fi(\210)42 b Fl(int)h(*perror)24 b Fm(|)k(on)f(return,)h │ │ │ │ -Fl(*perror)c Fm(holds)k(an)f(error)e(co)r(de.)1437 1702 │ │ │ │ -y(1)99 b(normal)27 b(return)1409 1802 y(-1)99 b Fl(pnrows)25 │ │ │ │ -b Fm(is)j Fl(NULL)1409 1901 y Fm(-2)99 b Fl(pncols)25 │ │ │ │ -b Fm(is)j Fl(NULL)2252 1702 y Fm(-3)99 b Fl(X)27 b Fm(is)h │ │ │ │ -Fl(NULL)2252 1802 y Fm(-4)99 b Fl(Y)27 b Fm(is)h Fl(NULL)2252 │ │ │ │ -1901 y Fm(-5)99 b Fl(data)26 b Fm(is)i Fl(NULL)101 2063 │ │ │ │ -y Fm(5.)42 b Fl(int)g(Cleanup)f(\()i(void)f(*data)f(\))i(;)208 │ │ │ │ -2196 y Fm(This)27 b(metho)r(d)h(releases)e(all)h(the)h(storage)e(used)i │ │ │ │ -(b)n(y)f(the)h Fn(SPOOLES)g Fm(library)e(functions.)208 │ │ │ │ -2329 y Fb(R)l(eturn)i(value:)38 b Fm(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ -g(-1)g(if)h(a)f Fl(data)f Fm(is)h Fl(NULL)p Fm(.)0 2629 │ │ │ │ -y Fd(2.3)135 b(The)45 b Fc(testSerial)40 b Fd(Driv)l(er)46 │ │ │ │ -b(Program)0 2835 y Fm(A)38 b(complete)h(listing)f(of)g(the)g(serial)f │ │ │ │ -(driv)n(er)g(program)f(is)i(found)h(in)f(c)n(hapter)f(A.)69 │ │ │ │ -b(The)38 b(program)e(is)i(in)n(v)n(ok)n(ed)f(b)n(y)h(this)0 │ │ │ │ -2935 y(command)27 b(sequence.)0 3126 y Fl(testSerial)39 │ │ │ │ -b(msglvl)j(msgFile)e(parmFile)h(seed)g(inFileA)g(inFileB)0 │ │ │ │ -3317 y Fm(where)125 3508 y Fi(\210)h Fl(msglvl)25 b Fm(is)i(the)h │ │ │ │ -(message)e(lev)n(el)h(for)h(the)g Fl(Bridge)d Fm(metho)r(ds)j(and)f │ │ │ │ -(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 3674 y Fi(\210)42 │ │ │ │ -b Fl(msgFile)24 b Fm(is)k(the)g(message)e(\014le)i(for)f(the)h │ │ │ │ -Fl(Bridge)d Fm(metho)r(ds)j(and)f(the)h Fn(SPOOLES)g │ │ │ │ -Fm(soft)n(w)n(are.)125 3840 y Fi(\210)42 b Fl(parmFile)24 │ │ │ │ -b Fm(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 4006 y Fi(\210)42 │ │ │ │ -b Fl(seed)26 b Fm(is)h(a)g(random)g(n)n(um)n(b)r(er)g(seed)h(used)f(b)n │ │ │ │ -(y)g(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 4172 y │ │ │ │ -Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ -(\014le)j(for)f(the)h(matrix)f Fj(A)p Fm(.)125 4338 y │ │ │ │ -Fi(\210)42 b Fl(inFileB)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fm(7)101 390 y(4.)42 b Fl(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 Fm(This)22 b(metho)r(d)i(solv)n(es)d │ │ │ │ +(\()p Fj(A)9 b Fh(\000)g Fj(\033)s(B)t Fm(\))p Fj(X)30 │ │ │ │ +b Fm(=)23 b Fj(Y)c Fm(,)24 b(where)e(\()p Fj(A)9 b Fh(\000)g │ │ │ │ +Fj(\033)s(B)t Fm(\))24 b(has)e(b)r(een)h(factored)f(b)n(y)h(a)f │ │ │ │ +(previous)g(call)h(to)f Fl(Factor\(\))p Fm(.)208 722 │ │ │ │ +y(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 Fi(\210)42 b Fl(int)h(*pnrows)24 │ │ │ │ +b Fm(|)k Fl(*pnrows)d Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f(ro) │ │ │ │ +n(ws)f(in)i Fj(X)34 b Fm(and)28 b Fj(Y)18 b Fm(.)307 │ │ │ │ +1021 y Fi(\210)42 b Fl(int)h(*pncols)24 b Fm(|)k Fl(*pncols)d │ │ │ │ +Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f(columns)h(in)f │ │ │ │ +Fj(X)34 b Fm(and)28 b Fj(Y)19 b Fm(.)307 1154 y Fi(\210)42 │ │ │ │ +b Fl(double)f(X[])27 b Fm(|)g(this)h(is)g(the)g Fj(X)34 │ │ │ │ +b Fm(matrix,)27 b(stored)g(column)g(ma)5 b(jor)27 b(with)h(leading)f │ │ │ │ +(dimension)g Fl(*pnrows)p Fm(.)307 1287 y Fi(\210)42 │ │ │ │ +b Fl(double)f(Y[])27 b Fm(|)g(this)h(is)g(the)g Fj(Y)46 │ │ │ │ +b Fm(matrix,)27 b(stored)g(column)h(ma)5 b(jor)26 b(with)i(leading)f │ │ │ │ +(dimension)h Fl(*pnrows)p Fm(.)307 1420 y Fi(\210)42 │ │ │ │ +b Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h │ │ │ │ +Fl(Bridge)d Fm(ob)5 b(ject.)307 1553 y Fi(\210)42 b Fl(int)h(*perror)24 │ │ │ │ +b Fm(|)k(on)f(return,)h Fl(*perror)c Fm(holds)k(an)f(error)e(co)r(de.) │ │ │ │ +1437 1702 y(1)99 b(normal)27 b(return)1409 1802 y(-1)99 │ │ │ │ +b Fl(pnrows)25 b Fm(is)j Fl(NULL)1409 1901 y Fm(-2)99 │ │ │ │ +b Fl(pncols)25 b Fm(is)j Fl(NULL)2252 1702 y Fm(-3)99 │ │ │ │ +b Fl(X)27 b Fm(is)h Fl(NULL)2252 1802 y Fm(-4)99 b Fl(Y)27 │ │ │ │ +b Fm(is)h Fl(NULL)2252 1901 y Fm(-5)99 b Fl(data)26 b │ │ │ │ +Fm(is)i Fl(NULL)101 2063 y Fm(5.)42 b Fl(int)g(Cleanup)f(\()i(void)f │ │ │ │ +(*data)f(\))i(;)208 2196 y Fm(This)27 b(metho)r(d)h(releases)e(all)h │ │ │ │ +(the)h(storage)e(used)i(b)n(y)f(the)h Fn(SPOOLES)g Fm(library)e │ │ │ │ +(functions.)208 2329 y Fb(R)l(eturn)i(value:)38 b Fm(1)27 │ │ │ │ +b(for)g(a)g(normal)g(return,)g(-1)g(if)h(a)f Fl(data)f │ │ │ │ +Fm(is)h Fl(NULL)p Fm(.)0 2629 y Fd(2.3)135 b(The)45 b │ │ │ │ +Fc(testSerial)40 b Fd(Driv)l(er)46 b(Program)0 2835 y │ │ │ │ +Fm(A)38 b(complete)h(listing)f(of)g(the)g(serial)f(driv)n(er)g(program) │ │ │ │ +f(is)i(found)h(in)f(c)n(hapter)f(A.)69 b(The)38 b(program)e(is)i(in)n │ │ │ │ +(v)n(ok)n(ed)f(b)n(y)h(this)0 2935 y(command)27 b(sequence.)0 │ │ │ │ +3126 y Fl(testSerial)39 b(msglvl)j(msgFile)e(parmFile)h(seed)g(inFileA) │ │ │ │ +g(inFileB)0 3317 y Fm(where)125 3508 y Fi(\210)h Fl(msglvl)25 │ │ │ │ +b Fm(is)i(the)h(message)e(lev)n(el)h(for)h(the)g Fl(Bridge)d │ │ │ │ +Fm(metho)r(ds)j(and)f(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 │ │ │ │ +3674 y Fi(\210)42 b Fl(msgFile)24 b Fm(is)k(the)g(message)e(\014le)i │ │ │ │ +(for)f(the)h Fl(Bridge)d Fm(metho)r(ds)j(and)f(the)h │ │ │ │ +Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 3840 y Fi(\210)42 │ │ │ │ +b Fl(parmFile)24 b Fm(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 │ │ │ │ +4006 y Fi(\210)42 b Fl(seed)26 b Fm(is)h(a)g(random)g(n)n(um)n(b)r(er)g │ │ │ │ +(seed)h(used)f(b)n(y)g(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 │ │ │ │ +4172 y Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing) │ │ │ │ +d(\014le)j(for)f(the)h(matrix)f Fj(A)p Fm(.)125 4338 │ │ │ │ +y Fi(\210)42 b Fl(inFileB)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ (\014le)j(for)f(the)h(matrix)f Fj(B)t Fm(.)0 4529 y(This)h(program)d │ │ │ │ (is)j(executed)f(for)g(some)g(sample)h(matrices)e(b)n(y)i(the)g │ │ │ │ Fl(do)p 2246 4529 27 4 v 30 w(ST)p 2364 4529 V 31 w(*)f │ │ │ │ Fm(shell)h(scripts)f(in)g(the)h Fl(drivers)d Fm(directory)-7 │ │ │ │ b(.)125 4654 y(Here)27 b(is)g(a)g(short)g(description)g(of)h(the)g │ │ │ │ (steps)f(in)h(the)g(driv)n(er)f(program.)34 b(See)28 │ │ │ │ b(Chapter)f(A)h(for)f(the)h(listing.)101 4844 y(1.)42 │ │ │ │ @@ -7901,40 +7906,40 @@ │ │ │ │ (\014le)i(for)f Fj(A)h Fm(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 Fl(parmFile)c Fm(\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 781 4 v 946 100 a Fn(SPOOLES)32 │ │ │ │ +TeXDict begin 8 8 bop 83 100 745 4 v 910 100 a Fn(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(18,)f(2025)p 3080 100 V 781 w Fm(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 Fj(A)h Fm(and)g(p)r(ossibly)f Fj(B)k Fm(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 Fl(InpMtx)208 656 y Fm(ob)5 b(jects)27 │ │ │ │ -b(from)g(the)h Fn(SPOOLES)g Fm(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 │ │ │ │ -(initialized)g(via)f(a)g(call)g(to)h Fl(Setup\(\))p Fm(.)101 │ │ │ │ -988 y(8.)42 b(The)25 b(eigensolv)n(er)d(is)j(in)n(v)n(ok)n(ed)f(via)g │ │ │ │ -(a)h(call)f(to)h Fl(lanczos)p 1935 988 27 4 v 29 w(run\(\))p │ │ │ │ -Fm(.)34 b(The)25 b Fl(FactorMT\(\))p Fm(,)c Fl(SolveMT\(\))g │ │ │ │ -Fm(and)k Fl(MatMulMT\(\))208 1088 y Fm(metho)r(ds)i(are)g(passed)g(to)g │ │ │ │ -(this)h(routine.)101 1254 y(9.)42 b(The)27 b(eigen)n(v)-5 │ │ │ │ -b(alues)27 b(are)f(extracted)h(and)h(prin)n(ted)f(via)g(a)g(call)h(to)f │ │ │ │ -Fl(lanczos)p 2535 1254 V 28 w(eigenvalues\(\))p Fm(.)60 │ │ │ │ -1420 y(10.)41 b(The)27 b(eigen)n(v)n(ectors)e(are)i(extracted)g(and)g │ │ │ │ -(prin)n(ted)h(via)f(calls)g(to)g Fl(lanczos)p 2533 1420 │ │ │ │ -V 29 w(eigenvector\(\))p Fm(.)60 1586 y(11.)41 b(The)27 │ │ │ │ -b(eigensolv)n(er)f(w)n(orking)f(storage)h(is)i(free'd)f(via)g(a)g(call) │ │ │ │ -h(to)f Fl(lanczos)p 2483 1586 V 29 w(free\(\))p Fm(.)60 │ │ │ │ -1752 y(12.)41 b(The)27 b(linear)g(solv)n(er)f(w)n(orking)g(storage)g │ │ │ │ -(is)h(free'd)h(via)f(a)g(call)g(to)g Fl(Cleanup\(\))p │ │ │ │ -Fm(.)p eop end │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fm(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 Fj(A)h Fm(and)g(p)r(ossibly)f │ │ │ │ +Fj(B)k Fm(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 Fl(InpMtx)208 │ │ │ │ +656 y Fm(ob)5 b(jects)27 b(from)g(the)h Fn(SPOOLES)g │ │ │ │ +Fm(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(initialized)g(via)f(a)g(call)g(to)h │ │ │ │ +Fl(Setup\(\))p Fm(.)101 988 y(8.)42 b(The)25 b(eigensolv)n(er)d(is)j │ │ │ │ +(in)n(v)n(ok)n(ed)f(via)g(a)h(call)f(to)h Fl(lanczos)p │ │ │ │ +1935 988 27 4 v 29 w(run\(\))p Fm(.)34 b(The)25 b Fl(FactorMT\(\))p │ │ │ │ +Fm(,)c Fl(SolveMT\(\))g Fm(and)k Fl(MatMulMT\(\))208 │ │ │ │ +1088 y Fm(metho)r(ds)i(are)g(passed)g(to)g(this)h(routine.)101 │ │ │ │ +1254 y(9.)42 b(The)27 b(eigen)n(v)-5 b(alues)27 b(are)f(extracted)h │ │ │ │ +(and)h(prin)n(ted)f(via)g(a)g(call)h(to)f Fl(lanczos)p │ │ │ │ +2535 1254 V 28 w(eigenvalues\(\))p Fm(.)60 1420 y(10.)41 │ │ │ │ +b(The)27 b(eigen)n(v)n(ectors)e(are)i(extracted)g(and)g(prin)n(ted)h │ │ │ │ +(via)f(calls)g(to)g Fl(lanczos)p 2533 1420 V 29 w(eigenvector\(\))p │ │ │ │ +Fm(.)60 1586 y(11.)41 b(The)27 b(eigensolv)n(er)f(w)n(orking)f(storage) │ │ │ │ +h(is)i(free'd)f(via)g(a)g(call)h(to)f Fl(lanczos)p 2483 │ │ │ │ +1586 V 29 w(free\(\))p Fm(.)60 1752 y(12.)41 b(The)27 │ │ │ │ +b(linear)g(solv)n(er)f(w)n(orking)g(storage)g(is)h(free'd)h(via)f(a)g │ │ │ │ +(call)g(to)g Fl(Cleanup\(\))p Fm(.)p eop end │ │ │ │ %%Page: 9 10 │ │ │ │ TeXDict begin 9 9 bop 0 1038 a Fk(Chapter)65 b(3)0 1478 │ │ │ │ y Fo(The)75 b(Multithreaded)h(Bridge)g(Ob)13 b(ject)76 │ │ │ │ b(and)0 1727 y(Driv)-6 b(er)0 2233 y Fd(3.1)135 b(The)45 │ │ │ │ b Fc(BridgeMT)c Fd(Data)46 b(Structure)0 2440 y Fm(The)28 │ │ │ │ b Fl(BridgeMT)c Fm(structure)j(has)g(the)h(follo)n(wing)f(\014elds.)125 │ │ │ │ 2631 y Fi(\210)42 b Fl(int)g(prbtype)25 b Fm(:)37 b(problem)27 │ │ │ │ @@ -7972,21 +7977,21 @@ │ │ │ │ y Fi(\210)42 b Fl(FrontMtx)e(*frontmtx)24 b Fm(:)37 b(ob)5 │ │ │ │ b(ject)27 b(that)h(stores)e(the)i Fj(L)p Fm(,)g Fj(D)h │ │ │ │ Fm(and)f Fj(U)36 b Fm(factor)27 b(matrices.)125 5354 │ │ │ │ y Fi(\210)42 b Fl(IV)g(*oldToNewIV)23 b Fm(:)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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(10)125 │ │ │ │ -390 y Fi(\210)42 b Fl(IV)g(*newToOldIV)23 b Fm(:)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 Fi(\210)42 b Fl(DenseMtx)e(*X)27 b │ │ │ │ -Fm(:)g(dense)h(matrix)f(ob)5 b(ject)27 b(that)h(is)g(used)f(during)g │ │ │ │ +TeXDict begin 10 10 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(10)125 390 y Fi(\210)42 b Fl(IV)g(*newToOldIV)23 │ │ │ │ +b Fm(:)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 Fi(\210)42 b Fl(DenseMtx)e(*X)27 │ │ │ │ +b Fm(:)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 Fi(\210)42 b Fl(DenseMtx)e(*Y)27 b Fm(:)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 887 y Fi(\210)42 b Fl(IV)g(*ownersIV)22 │ │ │ │ b Fm(:)j(ob)5 b(ject)24 b(that)i(maps)e(fron)n(ts)g(to)h(o)n(wning)f │ │ │ │ (threads)h(for)f(the)h(factorization)f(and)h(matrix-m)n(ultiplies.)125 │ │ │ │ 1052 y Fi(\210)42 b Fl(SolveMap)e(*solvemap)24 b Fm(:)37 │ │ │ │ @@ -8047,49 +8052,50 @@ │ │ │ │ (sequence)h(of)f(action.)307 5175 y Fi(\210)42 b Fm(The)e(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 Fl(BridgeMT)25 b Fm(ob)5 b(ject.)307 5407 y Fi(\210)42 │ │ │ │ b Fm(The)28 b Fl(pencil)d Fm(ob)5 b(ject)27 b(is)h(initialized)g(with)g │ │ │ │ Fl(A)f Fm(and)h Fl(B)p Fm(.)p eop end │ │ │ │ %%Page: 11 12 │ │ │ │ -TeXDict begin 11 11 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(11)307 │ │ │ │ -390 y Fi(\210)42 b Fl(A)27 b Fm(and)h Fl(B)f Fm(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 Fi(\210)42 b Fm(A)28 b Fl(Graph)e Fm(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 Fl(A)g Fm(and)h Fl(B)p Fm(.)307 │ │ │ │ -642 y Fi(\210)42 b Fm(The)37 b(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 │ │ │ │ -(ev)-5 b(aluating)36 b(the)390 741 y(orderings)e(pro)r(duced)h(b)n(y)g │ │ │ │ -(nested)g(dissection)g(and)g(m)n(ultisection,)i(and)f(c)n(ho)r(osing)d │ │ │ │ -(the)j(b)r(etter)g(of)f(the)h(t)n(w)n(o.)390 841 y(The)28 │ │ │ │ -b Fl(frontETree)23 b Fm(ob)5 b(ject)28 b(is)f(pro)r(duced)h(and)f │ │ │ │ -(placed)g(in)n(to)h(the)g Fl(bridge)d Fm(ob)5 b(ject.)307 │ │ │ │ -966 y Fi(\210)42 b Fm(Old-to-new)32 b(and)i(new-to-old)e(p)r(erm)n │ │ │ │ -(utations)h(are)f(extracted)g(from)h(the)h(fron)n(t)f(tree)g(and)g │ │ │ │ -(loaded)g(in)n(to)g(the)390 1066 y Fl(BridgeMT)25 b Fm(ob)5 │ │ │ │ -b(ject.)307 1192 y Fi(\210)42 b Fm(The)27 b(v)n(ertices)e(in)h(the)h │ │ │ │ -(fron)n(t)f(tree)g(are)f(p)r(erm)n(uted,)i(as)f(w)n(ell)g(as)f(the)i │ │ │ │ -(en)n(tries)f(in)g Fl(A)g Fm(and)g Fl(B)p Fm(.)g(En)n(tries)f(in)i(the) │ │ │ │ -g(lo)n(w)n(er)390 1291 y(triangle)33 b(of)h Fl(A)f Fm(and)h │ │ │ │ -Fl(B)f Fm(are)g(mapp)r(ed)h(in)n(to)f(the)i(upp)r(er)e(triangle,)i(and) │ │ │ │ -e(the)i(storage)c(mo)r(des)j(of)g Fl(A)f Fm(and)h Fl(B)f │ │ │ │ -Fm(are)390 1391 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 │ │ │ │ -1517 y Fi(\210)42 b Fm(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 Fl(BridgeMT)c │ │ │ │ -Fm(ob)5 b(ject.)307 1642 y Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d │ │ │ │ -Fm(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 Fl(BridgeMT)c Fm(ob)5 │ │ │ │ -b(ject.)307 1768 y Fi(\210)42 b Fm(A)24 b Fl(SubMtxManager)17 │ │ │ │ -b Fm(ob)5 b(ject)23 b(is)g(created)f(to)h(hold)g(the)g(factor's)f │ │ │ │ -(submatrices)g(and)h(loaded)f(in)n(to)h(the)g Fl(BridgeMT)390 │ │ │ │ -1868 y Fm(ob)5 b(ject.)307 1993 y Fi(\210)42 b Fm(Tw)n(o)27 │ │ │ │ +TeXDict begin 11 11 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(11)307 390 y Fi(\210)42 b Fl(A)27 b Fm(and)h Fl(B)f │ │ │ │ +Fm(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 Fi(\210)42 b Fm(A)28 b Fl(Graph)e │ │ │ │ +Fm(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 Fl(A)g Fm(and)h │ │ │ │ +Fl(B)p Fm(.)307 642 y Fi(\210)42 b Fm(The)37 b(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(ev)-5 b(aluating)36 b(the)390 │ │ │ │ +741 y(orderings)e(pro)r(duced)h(b)n(y)g(nested)g(dissection)g(and)g(m)n │ │ │ │ +(ultisection,)i(and)f(c)n(ho)r(osing)d(the)j(b)r(etter)g(of)f(the)h(t)n │ │ │ │ +(w)n(o.)390 841 y(The)28 b Fl(frontETree)23 b Fm(ob)5 │ │ │ │ +b(ject)28 b(is)f(pro)r(duced)h(and)f(placed)g(in)n(to)h(the)g │ │ │ │ +Fl(bridge)d Fm(ob)5 b(ject.)307 966 y Fi(\210)42 b Fm(Old-to-new)32 │ │ │ │ +b(and)i(new-to-old)e(p)r(erm)n(utations)h(are)f(extracted)g(from)h(the) │ │ │ │ +h(fron)n(t)f(tree)g(and)g(loaded)g(in)n(to)g(the)390 │ │ │ │ +1066 y Fl(BridgeMT)25 b Fm(ob)5 b(ject.)307 1192 y Fi(\210)42 │ │ │ │ +b Fm(The)27 b(v)n(ertices)e(in)h(the)h(fron)n(t)f(tree)g(are)f(p)r(erm) │ │ │ │ +n(uted,)i(as)f(w)n(ell)g(as)f(the)i(en)n(tries)f(in)g │ │ │ │ +Fl(A)g Fm(and)g Fl(B)p Fm(.)g(En)n(tries)f(in)i(the)g(lo)n(w)n(er)390 │ │ │ │ +1291 y(triangle)33 b(of)h Fl(A)f Fm(and)h Fl(B)f Fm(are)g(mapp)r(ed)h │ │ │ │ +(in)n(to)f(the)i(upp)r(er)e(triangle,)i(and)e(the)i(storage)c(mo)r(des) │ │ │ │ +j(of)g Fl(A)f Fm(and)h Fl(B)f Fm(are)390 1391 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 1517 y Fi(\210)42 b Fm(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 Fl(BridgeMT)c Fm(ob)5 b(ject.)307 1642 y │ │ │ │ +Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d Fm(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 Fl(BridgeMT)c Fm(ob)5 b(ject.)307 1768 y │ │ │ │ +Fi(\210)42 b Fm(A)24 b Fl(SubMtxManager)17 b Fm(ob)5 │ │ │ │ +b(ject)23 b(is)g(created)f(to)h(hold)g(the)g(factor's)f(submatrices)g │ │ │ │ +(and)h(loaded)f(in)n(to)h(the)g Fl(BridgeMT)390 1868 │ │ │ │ +y Fm(ob)5 b(ject.)307 1993 y Fi(\210)42 b Fm(Tw)n(o)27 │ │ │ │ b Fl(DenseMtx)d Fm(ob)5 b(jects)27 b(are)g(created)g(to)g(b)r(e)h(used) │ │ │ │ g(during)f(the)h(matrix)f(m)n(ultiplies)h(and)g(solv)n(es.)307 │ │ │ │ 2119 y Fi(\210)42 b Fm(The)28 b(map)f(from)h(fron)n(ts)f(to)g(their)h │ │ │ │ (o)n(wning)e(threads)h(is)h(computed)f(and)h(stored)f(in)g(the)h │ │ │ │ Fl(ownersIV)d Fm(ob)5 b(ject.)307 2245 y Fi(\210)42 b │ │ │ │ Fm(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 │ │ │ │ @@ -8146,50 +8152,51 @@ │ │ │ │ 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 │ │ │ │ Fl(psigma)26 b Fm(is)h Fl(NULL)2341 5220 y Fm(-2)98 b │ │ │ │ Fl(ppvttol)25 b Fm(is)j Fl(NULL)2341 5319 y Fm(-3)98 │ │ │ │ b Fl(data)26 b Fm(is)i Fl(NULL)2341 5419 y Fm(-4)98 b │ │ │ │ Fl(pinertia)25 b Fm(is)i Fl(NULL)p eop end │ │ │ │ %%Page: 12 13 │ │ │ │ -TeXDict begin 12 12 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(12)101 │ │ │ │ -390 y(3.)42 b Fl(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 Fm(This)31 b(metho)r(d)i(computes)e(a) │ │ │ │ -h(m)n(ultiply)g(of)g(the)g(form)f Fj(Y)49 b Fm(=)30 b │ │ │ │ -Fj(I)7 b(X)g Fm(,)32 b Fj(Y)49 b Fm(=)29 b Fj(AX)39 b │ │ │ │ -Fm(or)31 b Fj(Y)49 b Fm(=)29 b Fj(B)t(X)7 b Fm(.)49 b(All)32 │ │ │ │ -b(calling)g(sequence)208 722 y(parameters)25 b(are)i(p)r(oin)n(ters)g │ │ │ │ -(to)g(more)g(easily)g(allo)n(w)f(an)i(in)n(terface)f(with)h(F)-7 │ │ │ │ -b(ortran.)307 888 y Fi(\210)42 b Fl(int)h(*pnrows)24 │ │ │ │ -b Fm(|)k Fl(*pnrows)d Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f(ro) │ │ │ │ -n(ws)f(in)i Fj(X)34 b Fm(and)28 b Fj(Y)18 b Fm(.)307 │ │ │ │ -1021 y Fi(\210)42 b Fl(int)h(*pncols)24 b Fm(|)k Fl(*pncols)d │ │ │ │ -Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f(columns)h(in)f │ │ │ │ -Fj(X)34 b Fm(and)28 b Fj(Y)19 b Fm(.)307 1154 y Fi(\210)42 │ │ │ │ -b Fl(double)f(X[])27 b Fm(|)g(this)h(is)g(the)g Fj(X)34 │ │ │ │ -b Fm(matrix,)27 b(stored)g(column)g(ma)5 b(jor)27 b(with)h(leading)f │ │ │ │ -(dimension)g Fl(*pnrows)p Fm(.)307 1287 y Fi(\210)42 │ │ │ │ -b Fl(double)f(Y[])27 b Fm(|)g(this)h(is)g(the)g Fj(Y)46 │ │ │ │ -b Fm(matrix,)27 b(stored)g(column)h(ma)5 b(jor)26 b(with)i(leading)f │ │ │ │ -(dimension)h Fl(*pnrows)p Fm(.)307 1420 y Fi(\210)42 │ │ │ │ -b Fl(int)h(*pprbtype)23 b Fm(|)28 b Fl(*pprbtype)c Fm(holds)j(the)h │ │ │ │ -(problem)f(t)n(yp)r(e.)456 1553 y Fn({)41 b Fl(1)28 b │ │ │ │ -Fm(|)f(vibration,)g(a)g(m)n(ultiply)h(with)h Fj(B)i Fm(is)d(required.) │ │ │ │ -456 1669 y Fn({)41 b Fl(2)28 b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h │ │ │ │ -(with)g Fj(A)g Fm(is)f(required.)456 1785 y Fn({)41 b │ │ │ │ -Fl(3)28 b Fm(|)f(simple,)h(no)g(m)n(ultiply)g(is)f(required.)307 │ │ │ │ -1918 y Fi(\210)42 b Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n(ter)f(to) │ │ │ │ -g(the)h Fl(BridgeMT)d Fm(ob)5 b(ject.)101 2084 y(4.)42 │ │ │ │ -b Fl(void)f(SolveMT)g(\()i(int)g(*pnrows,)d(int)i(*pncols,)f(double)g │ │ │ │ -(X[],)h(double)f(Y[],)861 2183 y(void)h(*data,)f(int)i(*perror)d(\))k │ │ │ │ -(;)208 2316 y Fm(This)22 b(metho)r(d)i(solv)n(es)d(\()p │ │ │ │ -Fj(A)9 b Fh(\000)g Fj(\033)s(B)t Fm(\))p Fj(X)30 b Fm(=)23 │ │ │ │ -b Fj(Y)c Fm(,)24 b(where)e(\()p Fj(A)9 b Fh(\000)g Fj(\033)s(B)t │ │ │ │ +TeXDict begin 12 12 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(12)101 390 y(3.)42 b Fl(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 │ │ │ │ +Fm(This)31 b(metho)r(d)i(computes)e(a)h(m)n(ultiply)g(of)g(the)g(form)f │ │ │ │ +Fj(Y)49 b Fm(=)30 b Fj(I)7 b(X)g Fm(,)32 b Fj(Y)49 b │ │ │ │ +Fm(=)29 b Fj(AX)39 b Fm(or)31 b Fj(Y)49 b Fm(=)29 b Fj(B)t(X)7 │ │ │ │ +b Fm(.)49 b(All)32 b(calling)g(sequence)208 722 y(parameters)25 │ │ │ │ +b(are)i(p)r(oin)n(ters)g(to)g(more)g(easily)g(allo)n(w)f(an)i(in)n │ │ │ │ +(terface)f(with)h(F)-7 b(ortran.)307 888 y Fi(\210)42 │ │ │ │ +b Fl(int)h(*pnrows)24 b Fm(|)k Fl(*pnrows)d Fm(con)n(tains)h(the)i(n)n │ │ │ │ +(um)n(b)r(er)g(of)f(ro)n(ws)f(in)i Fj(X)34 b Fm(and)28 │ │ │ │ +b Fj(Y)18 b Fm(.)307 1021 y Fi(\210)42 b Fl(int)h(*pncols)24 │ │ │ │ +b Fm(|)k Fl(*pncols)d Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f │ │ │ │ +(columns)h(in)f Fj(X)34 b Fm(and)28 b Fj(Y)19 b Fm(.)307 │ │ │ │ +1154 y Fi(\210)42 b Fl(double)f(X[])27 b Fm(|)g(this)h(is)g(the)g │ │ │ │ +Fj(X)34 b Fm(matrix,)27 b(stored)g(column)g(ma)5 b(jor)27 │ │ │ │ +b(with)h(leading)f(dimension)g Fl(*pnrows)p Fm(.)307 │ │ │ │ +1287 y Fi(\210)42 b Fl(double)f(Y[])27 b Fm(|)g(this)h(is)g(the)g │ │ │ │ +Fj(Y)46 b Fm(matrix,)27 b(stored)g(column)h(ma)5 b(jor)26 │ │ │ │ +b(with)i(leading)f(dimension)h Fl(*pnrows)p Fm(.)307 │ │ │ │ +1420 y Fi(\210)42 b Fl(int)h(*pprbtype)23 b Fm(|)28 b │ │ │ │ +Fl(*pprbtype)c Fm(holds)j(the)h(problem)f(t)n(yp)r(e.)456 │ │ │ │ +1553 y Fn({)41 b Fl(1)28 b Fm(|)f(vibration,)g(a)g(m)n(ultiply)h(with)h │ │ │ │ +Fj(B)i Fm(is)d(required.)456 1669 y Fn({)41 b Fl(2)28 │ │ │ │ +b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fj(A)g │ │ │ │ +Fm(is)f(required.)456 1785 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g │ │ │ │ +(m)n(ultiply)g(is)f(required.)307 1918 y Fi(\210)42 b │ │ │ │ +Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h │ │ │ │ +Fl(BridgeMT)d Fm(ob)5 b(ject.)101 2084 y(4.)42 b Fl(void)f(SolveMT)g │ │ │ │ +(\()i(int)g(*pnrows,)d(int)i(*pncols,)f(double)g(X[],)h(double)f(Y[],) │ │ │ │ +861 2183 y(void)h(*data,)f(int)i(*perror)d(\))k(;)208 │ │ │ │ +2316 y Fm(This)22 b(metho)r(d)i(solv)n(es)d(\()p Fj(A)9 │ │ │ │ +b Fh(\000)g Fj(\033)s(B)t Fm(\))p Fj(X)30 b Fm(=)23 b │ │ │ │ +Fj(Y)c Fm(,)24 b(where)e(\()p Fj(A)9 b Fh(\000)g Fj(\033)s(B)t │ │ │ │ Fm(\))24 b(has)e(b)r(een)h(factored)f(b)n(y)h(a)f(previous)g(call)h(to) │ │ │ │ f Fl(Factor\(\))p Fm(.)208 2416 y(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 2582 y │ │ │ │ Fi(\210)42 b Fl(int)h(*pnrows)24 b Fm(|)k Fl(*pnrows)d │ │ │ │ Fm(con)n(tains)h(the)i(n)n(um)n(b)r(er)g(of)f(ro)n(ws)f(in)i │ │ │ │ Fj(X)34 b Fm(and)28 b Fj(Y)18 b Fm(.)307 2715 y Fi(\210)42 │ │ │ │ @@ -8224,34 +8231,35 @@ │ │ │ │ 5011 y Fm(where)125 5201 y Fi(\210)i Fl(msglvl)25 b Fm(is)i(the)h │ │ │ │ (message)e(lev)n(el)h(for)h(the)g Fl(BridgeMT)c Fm(metho)r(ds)k(and)f │ │ │ │ (the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 5368 y Fi(\210)42 │ │ │ │ b Fl(msgFile)24 b Fm(is)k(the)g(message)e(\014le)i(for)f(the)h │ │ │ │ Fl(BridgeMT)c Fm(metho)r(ds)k(and)f(the)h Fn(SPOOLES)g │ │ │ │ Fm(soft)n(w)n(are.)p eop end │ │ │ │ %%Page: 13 14 │ │ │ │ -TeXDict begin 13 13 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(13)125 │ │ │ │ -390 y Fi(\210)42 b Fl(parmFile)24 b Fm(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 Fi(\210)42 b Fl(seed)26 b Fm(is)h(a)g(random)g(n)n(um)n(b)r │ │ │ │ -(er)g(seed)h(used)f(b)n(y)g(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 │ │ │ │ -722 y Fi(\210)42 b Fl(nthread)24 b Fm(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 Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw) │ │ │ │ -n(ell-Bo)r(eing)d(\014le)j(for)f(the)h(matrix)f Fj(A)p │ │ │ │ -Fm(.)125 1054 y Fi(\210)42 b Fl(inFileB)24 b Fm(is)k(the)g(Harw)n │ │ │ │ -(ell-Bo)r(eing)d(\014le)j(for)f(the)h(matrix)f Fj(B)t │ │ │ │ -Fm(.)0 1245 y(This)h(program)d(is)j(executed)f(for)g(some)g(sample)h │ │ │ │ -(matrices)e(b)n(y)i(the)g Fl(do)p 2246 1245 27 4 v 30 │ │ │ │ -w(ST)p 2364 1245 V 31 w(*)f Fm(shell)h(scripts)f(in)g(the)h │ │ │ │ -Fl(drivers)d Fm(directory)-7 b(.)125 1370 y(Here)27 b(is)g(a)g(short)g │ │ │ │ -(description)g(of)h(the)g(steps)f(in)h(the)g(driv)n(er)f(program.)34 │ │ │ │ -b(See)28 b(Chapter)f(A)h(for)f(the)h(listing.)101 1561 │ │ │ │ -y(1.)42 b(The)27 b(command)g(line)h(inputs)g(are)f(deco)r(ded.)101 │ │ │ │ +TeXDict begin 13 13 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(13)125 390 y Fi(\210)42 b Fl(parmFile)24 b Fm(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 Fi(\210)42 b Fl(seed)26 b Fm(is)h(a)g(random)g │ │ │ │ +(n)n(um)n(b)r(er)g(seed)h(used)f(b)n(y)g(the)h Fn(SPOOLES)g │ │ │ │ +Fm(soft)n(w)n(are.)125 722 y Fi(\210)42 b Fl(nthread)24 │ │ │ │ +b Fm(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 Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ +(\014le)j(for)f(the)h(matrix)f Fj(A)p Fm(.)125 1054 y │ │ │ │ +Fi(\210)42 b Fl(inFileB)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ +(\014le)j(for)f(the)h(matrix)f Fj(B)t Fm(.)0 1245 y(This)h(program)d │ │ │ │ +(is)j(executed)f(for)g(some)g(sample)h(matrices)e(b)n(y)i(the)g │ │ │ │ +Fl(do)p 2246 1245 27 4 v 30 w(ST)p 2364 1245 V 31 w(*)f │ │ │ │ +Fm(shell)h(scripts)f(in)g(the)h Fl(drivers)d Fm(directory)-7 │ │ │ │ +b(.)125 1370 y(Here)27 b(is)g(a)g(short)g(description)g(of)h(the)g │ │ │ │ +(steps)f(in)h(the)g(driv)n(er)f(program.)34 b(See)28 │ │ │ │ +b(Chapter)f(A)h(for)f(the)h(listing.)101 1561 y(1.)42 │ │ │ │ +b(The)27 b(command)g(line)h(inputs)g(are)f(deco)r(ded.)101 │ │ │ │ 1727 y(2.)42 b(The)27 b(header)g(of)h(the)f(Harw)n(ell-Bo)r(eing)f │ │ │ │ (\014le)i(for)f Fj(A)h Fm(is)f(read.)36 b(This)28 b(yields)f(the)h(n)n │ │ │ │ (um)n(b)r(er)g(of)f(equations.)101 1893 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 Fl(parmFile)c Fm(\014le.)101 │ │ │ │ 2059 y(4.)42 b(The)27 b(Lanczos)f(eigensolv)n(er)g(w)n(orkspace)f(is)j │ │ │ │ (initialized.)101 2225 y(5.)42 b(The)27 b(Lanczos)f(comm)n(unication)h │ │ │ │ @@ -8320,20 +8328,20 @@ │ │ │ │ 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 Fi(\210)42 b Fl(SubMtxManager)c(*mtxmanager)25 │ │ │ │ b Fm(:)41 b(ob)5 b(ject)30 b(that)g(manages)e(the)i Fl(SubMtx)e │ │ │ │ Fm(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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(15)125 │ │ │ │ -390 y Fi(\210)42 b Fl(FrontMtx)e(*frontmtx)24 b Fm(:)37 │ │ │ │ -b(ob)5 b(ject)27 b(that)h(stores)e(the)i Fj(L)p Fm(,)g │ │ │ │ -Fj(D)h Fm(and)f Fj(U)36 b Fm(factor)27 b(matrices.)125 │ │ │ │ +TeXDict begin 15 15 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(15)125 390 y Fi(\210)42 b Fl(FrontMtx)e(*frontmtx)24 │ │ │ │ +b Fm(:)37 b(ob)5 b(ject)27 b(that)h(stores)e(the)i Fj(L)p │ │ │ │ +Fm(,)g Fj(D)h Fm(and)f Fj(U)36 b Fm(factor)27 b(matrices.)125 │ │ │ │ 556 y Fi(\210)42 b Fl(IV)g(*oldToNewIV)23 b Fm(:)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 Fi(\210)42 b Fl(IV)g(*newToOldIV)23 │ │ │ │ b Fm(:)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 888 y Fi(\210)42 b Fl(DenseMtx)e(*Xloc)25 │ │ │ │ b Fm(:)37 b(dense)28 b Fb(lo)l(c)l(al)h Fm(matrix)e(ob)5 │ │ │ │ b(ject)27 b(that)h(is)f(used)h(during)f(the)h(matrix)f(m)n(ultiples)h │ │ │ │ @@ -8413,19 +8421,19 @@ │ │ │ │ (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 Fn(LANCZOS)g Fm(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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(16)101 │ │ │ │ -390 y(1.)42 b Fl(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 │ │ │ │ +TeXDict begin 16 16 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(16)101 390 y(1.)42 b Fl(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 Fm(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 Fi(\210)42 b Fl(void)g(*data)26 b │ │ │ │ Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h Fl(BridgeMPI)c │ │ │ │ Fm(ob)5 b(ject.)307 1021 y Fi(\210)42 b Fl(int)h(*pprbtype)23 │ │ │ │ @@ -8502,23 +8510,23 @@ │ │ │ │ (cessors)d(that)j(o)n(wn)f(them.)307 5272 y Fi(\210)42 │ │ │ │ b Fm(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 Fl(BridgeMPI)c Fm(ob)5 b(ject.)307 │ │ │ │ 5405 y Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d Fm(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 Fl(BridgeMPI)c Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 17 18 │ │ │ │ -TeXDict begin 17 17 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(17)307 │ │ │ │ -390 y Fi(\210)42 b Fm(A)20 b Fl(SubMtxManager)15 b Fm(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 Fl(BridgeMPI)390 490 │ │ │ │ -y Fm(ob)5 b(ject.)307 620 y Fi(\210)42 b Fm(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 Fl(solvemap)390 │ │ │ │ +TeXDict begin 17 17 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(17)307 390 y Fi(\210)42 b Fm(A)20 b Fl(SubMtxManager)15 │ │ │ │ +b Fm(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 Fl(BridgeMPI)390 │ │ │ │ +490 y Fm(ob)5 b(ject.)307 620 y Fi(\210)42 b Fm(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 Fl(solvemap)390 │ │ │ │ 720 y Fm(ob)5 b(ject.)307 850 y Fi(\210)42 b Fm(The)28 │ │ │ │ b(distributed)g(matrix-m)n(ultiplies)f(are)g(set)g(up.)208 │ │ │ │ 1014 y(The)g Fl(A)f Fm(and)h Fl(B)g Fm(matrices)f(are)g(no)n(w)g(in)h │ │ │ │ (their)g(p)r(erm)n(uted)h(ordering,)d(i.e.,)i Fj(P)12 │ │ │ │ b(AP)2688 984 y Ff(T)2768 1014 y Fm(and)26 b Fj(P)12 │ │ │ │ b(B)t(P)3125 984 y Ff(T)3178 1014 y Fm(,)27 b(and)g(all)f(data)h │ │ │ │ (struc-)208 1113 y(tures)i(are)h(with)g(resp)r(ect)g(to)g(this)h │ │ │ │ @@ -8595,19 +8603,19 @@ │ │ │ │ Fl(*pnrows)p Fm(.)307 5162 y Fi(\210)42 b Fl(int)h(*pprbtype)23 │ │ │ │ b Fm(|)28 b Fl(*pprbtype)c Fm(holds)j(the)h(problem)f(t)n(yp)r(e.)456 │ │ │ │ 5292 y Fn({)41 b Fl(1)28 b Fm(|)f(vibration,)g(a)g(m)n(ultiply)h(with)h │ │ │ │ Fj(B)i Fm(is)d(required.)456 5407 y Fn({)41 b Fl(2)28 │ │ │ │ b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fj(A)g │ │ │ │ Fm(is)f(required.)p eop end │ │ │ │ %%Page: 18 19 │ │ │ │ -TeXDict begin 18 18 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(18)456 │ │ │ │ -390 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g(m)n(ultiply)g(is)f │ │ │ │ -(required.)307 518 y Fi(\210)42 b Fl(void)g(*data)26 │ │ │ │ +TeXDict begin 18 18 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(18)456 390 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g(m)n │ │ │ │ +(ultiply)g(is)f(required.)307 518 y Fi(\210)42 b Fl(void)g(*data)26 │ │ │ │ b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h Fl(BridgeMPI)c │ │ │ │ Fm(ob)5 b(ject.)101 678 y(4.)42 b Fl(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 Fm(This)31 b(metho)r(d)i(computes)e(a)h(m)n(ultiply)g(of)g(the)g │ │ │ │ (form)f Fj(Y)49 b Fm(=)30 b Fj(I)7 b(X)g Fm(,)32 b Fj(Y)49 │ │ │ │ b Fm(=)29 b Fj(AX)39 b Fm(or)31 b Fj(Y)49 b Fm(=)29 b │ │ │ │ @@ -8693,42 +8701,42 @@ │ │ │ │ y(1)99 b(normal)27 b(return)1409 5319 y(-1)99 b Fl(pnrows)25 │ │ │ │ b Fm(is)j Fl(NULL)1409 5419 y Fm(-2)99 b Fl(pncols)25 │ │ │ │ b Fm(is)j Fl(NULL)2252 5220 y Fm(-3)99 b Fl(X)27 b Fm(is)h │ │ │ │ Fl(NULL)2252 5319 y Fm(-4)99 b Fl(Y)27 b Fm(is)h Fl(NULL)2252 │ │ │ │ 5419 y Fm(-5)99 b Fl(data)26 b Fm(is)i Fl(NULL)p eop │ │ │ │ end │ │ │ │ %%Page: 19 20 │ │ │ │ -TeXDict begin 19 19 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(19)101 │ │ │ │ -390 y(7.)42 b Fl(int)g(CleanupMPI)d(\()44 b(void)d(*data)h(\))h(;)208 │ │ │ │ -520 y Fm(This)27 b(metho)r(d)h(releases)e(all)h(the)h(storage)e(used)i │ │ │ │ -(b)n(y)f(the)h Fn(SPOOLES)g Fm(library)e(functions.)208 │ │ │ │ -649 y Fb(R)l(eturn)i(value:)38 b Fm(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ -(-1)g(if)h(a)f Fl(data)f Fm(is)h Fl(NULL)p Fm(.)0 942 │ │ │ │ -y Fd(4.3)135 b(The)45 b Fc(testMPI)c Fd(Driv)l(er)46 │ │ │ │ -b(Program)0 1145 y Fm(A)31 b(complete)f(listing)h(of)f(the)h(m)n │ │ │ │ -(ultithreaded)f(driv)n(er)g(program)e(is)i(found)h(in)g(c)n(hapter)e │ │ │ │ -(C.)46 b(The)31 b(program)d(is)i(in)n(v)n(ok)n(ed)f(b)n(y)0 │ │ │ │ -1245 y(this)f(command)f(sequence.)0 1418 y Fl(testMPI)41 │ │ │ │ -b(msglvl)g(msgFile)f(parmFile)h(seed)h(inFileA)e(inFileB)0 │ │ │ │ -1592 y Fm(where)125 1765 y Fi(\210)i Fl(msglvl)25 b Fm(is)i(the)h │ │ │ │ -(message)e(lev)n(el)h(for)h(the)g Fl(BridgeMPI)23 b Fm(metho)r(ds)28 │ │ │ │ -b(and)g(the)g Fn(SPOOLES)f Fm(soft)n(w)n(are.)125 1924 │ │ │ │ -y Fi(\210)42 b Fl(msgFile)24 b Fm(is)k(the)g(message)e(\014le)i(for)f │ │ │ │ -(the)h Fl(BridgeMPI)c Fm(metho)r(ds)k(and)f(the)h Fn(SPOOLES)g │ │ │ │ -Fm(soft)n(w)n(are.)125 2084 y Fi(\210)42 b Fl(parmFile)24 │ │ │ │ -b Fm(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 2243 y Fi(\210)42 │ │ │ │ -b Fl(seed)26 b Fm(is)h(a)g(random)g(n)n(um)n(b)r(er)g(seed)h(used)f(b)n │ │ │ │ -(y)g(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 2402 y │ │ │ │ -Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ -(\014le)j(for)f(the)h(matrix)f Fj(A)p Fm(.)125 2561 y │ │ │ │ -Fi(\210)42 b Fl(inFileB)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing)d │ │ │ │ -(\014le)j(for)f(the)h(matrix)f Fj(B)t Fm(.)0 2734 y(This)h(program)d │ │ │ │ +TeXDict begin 19 19 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(19)101 390 y(7.)42 b Fl(int)g(CleanupMPI)d(\()44 │ │ │ │ +b(void)d(*data)h(\))h(;)208 520 y Fm(This)27 b(metho)r(d)h(releases)e │ │ │ │ +(all)h(the)h(storage)e(used)i(b)n(y)f(the)h Fn(SPOOLES)g │ │ │ │ +Fm(library)e(functions.)208 649 y Fb(R)l(eturn)i(value:)38 │ │ │ │ +b Fm(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)h(a)f │ │ │ │ +Fl(data)f Fm(is)h Fl(NULL)p Fm(.)0 942 y Fd(4.3)135 b(The)45 │ │ │ │ +b Fc(testMPI)c Fd(Driv)l(er)46 b(Program)0 1145 y Fm(A)31 │ │ │ │ +b(complete)f(listing)h(of)f(the)h(m)n(ultithreaded)f(driv)n(er)g │ │ │ │ +(program)e(is)i(found)h(in)g(c)n(hapter)e(C.)46 b(The)31 │ │ │ │ +b(program)d(is)i(in)n(v)n(ok)n(ed)f(b)n(y)0 1245 y(this)f(command)f │ │ │ │ +(sequence.)0 1418 y Fl(testMPI)41 b(msglvl)g(msgFile)f(parmFile)h(seed) │ │ │ │ +h(inFileA)e(inFileB)0 1592 y Fm(where)125 1765 y Fi(\210)i │ │ │ │ +Fl(msglvl)25 b Fm(is)i(the)h(message)e(lev)n(el)h(for)h(the)g │ │ │ │ +Fl(BridgeMPI)23 b Fm(metho)r(ds)28 b(and)g(the)g Fn(SPOOLES)f │ │ │ │ +Fm(soft)n(w)n(are.)125 1924 y Fi(\210)42 b Fl(msgFile)24 │ │ │ │ +b Fm(is)k(the)g(message)e(\014le)i(for)f(the)h Fl(BridgeMPI)c │ │ │ │ +Fm(metho)r(ds)k(and)f(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 │ │ │ │ +2084 y Fi(\210)42 b Fl(parmFile)24 b Fm(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 2243 y Fi(\210)42 b Fl(seed)26 b Fm(is)h(a)g(random)g(n)n(um)n │ │ │ │ +(b)r(er)g(seed)h(used)f(b)n(y)g(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.) │ │ │ │ +125 2402 y Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r │ │ │ │ +(eing)d(\014le)j(for)f(the)h(matrix)f Fj(A)p Fm(.)125 │ │ │ │ +2561 y Fi(\210)42 b Fl(inFileB)24 b Fm(is)k(the)g(Harw)n(ell-Bo)r(eing) │ │ │ │ +d(\014le)j(for)f(the)h(matrix)f Fj(B)t Fm(.)0 2734 y(This)h(program)d │ │ │ │ (is)j(executed)f(for)g(some)g(sample)h(matrices)e(b)n(y)i(the)g │ │ │ │ Fl(do)p 2246 2734 27 4 v 30 w(ST)p 2364 2734 V 31 w(*)f │ │ │ │ Fm(shell)h(scripts)f(in)g(the)h Fl(drivers)d Fm(directory)-7 │ │ │ │ b(.)125 2855 y(Here)27 b(is)g(a)g(short)g(description)g(of)h(the)g │ │ │ │ (steps)f(in)h(the)g(driv)n(er)f(program.)34 b(See)28 │ │ │ │ b(Chapter)f(A)h(for)f(the)h(listing.)101 3029 y(1.)42 │ │ │ │ b(Eac)n(h)26 b(pro)r(cessor)f(determines)j(the)g(n)n(um)n(b)r(er)f(of)h │ │ │ │ @@ -8798,18 +8806,18 @@ │ │ │ │ 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 Fm(20)p │ │ │ │ eop end │ │ │ │ %%Page: 21 22 │ │ │ │ -TeXDict begin 21 21 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(21)0 │ │ │ │ -390 y Fl(int)304 b(*lanczos_wksp;)0 490 y(InpMtx)172 │ │ │ │ +TeXDict begin 21 21 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(21)0 390 y Fl(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 │ │ │ │ y("\\n)173 b(msglvl)129 b(--)42 b(message)f(level")87 │ │ │ │ @@ -8844,22 +8852,22 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(22)131 │ │ │ │ -390 y Fl(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 │ │ │ │ +TeXDict begin 22 22 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(22)131 390 y Fl(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 │ │ │ │ (--)o(-*/)0 1187 y(/*)131 1287 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(---)o(-)131 1386 y(read)g(in)g(eigenvalue)e(problem)h(data)131 │ │ │ │ 1486 y(neigvl)g(--)i(#)g(of)g(desired)d(eigenvalues)131 │ │ │ │ 1586 y(which)85 b(--)43 b(which)e(eigenvalues)e(to)k(compute)218 │ │ │ │ @@ -8898,22 +8906,22 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(23)0 │ │ │ │ -390 y Fl(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 │ │ │ │ +TeXDict begin 23 23 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(23)0 390 y Fl(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 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)131 1386 │ │ │ │ y(Initialize)f(Lanczos)i(workspace)131 1486 y(----------------)o(--)o │ │ │ │ (--)o(---)o(--)o(---)0 1586 y(*/)0 1685 y(MARKTIME\(t1\))e(;)0 │ │ │ │ 1785 y(lanczos_init_)f(\()43 b(&lanczos_wksp)c(\))k(;)0 │ │ │ │ 1885 y(MARKTIME\(t2\))c(;)0 1984 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ @@ -8948,28 +8956,28 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(24)0 │ │ │ │ -390 y Fl(})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 │ │ │ │ -(from"\))f(;)262 1187 y(exit\(0\))f(;)131 1287 y(})131 │ │ │ │ -1386 y(MARKTIME\(t1\))e(;)131 1486 y(inpmtxB)i(=)k(InpMtx_new\(\))38 │ │ │ │ -b(;)131 1586 y(InpMtx_readFromH)o(Bf)o(il)o(e)g(\()43 │ │ │ │ -b(inpmtxB,)d(inFileName_B)f(\))k(;)131 1685 y(MARKTIME\(t2\))38 │ │ │ │ +TeXDict begin 24 24 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(24)0 390 y Fl(})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(from"\))f(;)262 1187 y(exit\(0\))f(;)131 │ │ │ │ +1287 y(})131 1386 y(MARKTIME\(t1\))e(;)131 1486 y(inpmtxB)i(=)k │ │ │ │ +(InpMtx_new\(\))38 b(;)131 1586 y(InpMtx_readFromH)o(Bf)o(il)o(e)g(\() │ │ │ │ +43 b(inpmtxB,)d(inFileName_B)f(\))k(;)131 1685 y(MARKTIME\(t2\))38 │ │ │ │ b(;)131 1785 y(fprintf\(msgFile,)f("\\n)42 b(CPU)g(\0458.3f)g(:)h(read) │ │ │ │ f(in)h(B",)f(t2)h(-)g(t1\))f(;)0 1885 y(})h(else)f({)131 │ │ │ │ 1984 y(MARKTIME\(t1\))c(;)131 2084 y(inpmtxB)i(=)k(NULL)e(;)131 │ │ │ │ 2183 y(lanczos_set_parm)o(\()37 b(&lanczos_wksp,)h("matrix-type",)g │ │ │ │ (&c__4,)j(&retc)h(\);)131 2283 y(MARKTIME\(t2\))c(;)131 │ │ │ │ 2383 y(fprintf\(msgFile,)f("\\n)42 b(CPU)g(\0458.3f)g(:)h(set)f(B's)h │ │ │ │ (parameters",)38 b(t2)43 b(-)g(t1\))g(;)0 2482 y(})0 │ │ │ │ @@ -8995,36 +9003,36 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(25)218 │ │ │ │ -390 y Fl(&rfinit,)40 b(&rhtend,)g(¢er,)h(&lanczos_wksp,)d(&bridge,) │ │ │ │ -i(&nfound,)218 490 y(&ndiscd,)g(&warnng,)g(&error,)h(Factor,)g(MatMul,) │ │ │ │ -g(Solve)g(\))i(;)0 589 y(MARKTIME\(t2\))c(;)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 1187 y(*/)0 1287 y(MARKTIME\(t1\))d(;)0 │ │ │ │ -1386 y(neig)129 b(=)43 b(nfound)e(+)j(ndiscd)d(;)0 1486 │ │ │ │ -y(lstevl)g(=)i(nfound)e(;)0 1586 y(lanczos_eigenval)o(ues)c │ │ │ │ -(\(&lanczos_wksp,)g(eigval,)k(&neig,)g(&retc\);)0 1685 │ │ │ │ -y(fstevl)g(=)i(1)g(;)0 1785 y(if)g(\()g(nfound)e(==)i(0)g(\))g(fstevl)e │ │ │ │ -(=)i(-1)g(;)0 1885 y(if)g(\()g(ndiscd)e(>)i(0)g(\))h(lstevl)d(=)i │ │ │ │ -(-ndiscd)e(;)0 1984 y(hdslp5_)g(\("computed)e(eigenvalues)g(returned)h │ │ │ │ -(by)j(hdserl",)392 2084 y(&neig,)e(eigval,)g(&output,)f(39L)j(\))g(;)0 │ │ │ │ -2183 y(MARKTIME\(t2\))c(;)0 2283 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ -b(CPU)h(\0458.3f)e(:)i(get)g(and)f(print)g(eigenvalues)d(",)j(t2)h(-)g │ │ │ │ -(t1\))g(;)0 2383 y(/*)131 2482 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ -131 2582 y(get)f(eigenvectors)d(and)j(print)131 2682 │ │ │ │ -y(----------------)o(--)o(--)o(---)o(--)0 2781 y(*/)0 │ │ │ │ +TeXDict begin 25 25 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(25)218 390 y Fl(&rfinit,)40 b(&rhtend,)g(¢er,)h │ │ │ │ +(&lanczos_wksp,)d(&bridge,)i(&nfound,)218 490 y(&ndiscd,)g(&warnng,)g │ │ │ │ +(&error,)h(Factor,)g(MatMul,)g(Solve)g(\))i(;)0 589 y(MARKTIME\(t2\))c │ │ │ │ +(;)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 1187 y(*/)0 1287 y(MARKTIME\(t1\))d(;)0 1386 y(neig)129 │ │ │ │ +b(=)43 b(nfound)e(+)j(ndiscd)d(;)0 1486 y(lstevl)g(=)i(nfound)e(;)0 │ │ │ │ +1586 y(lanczos_eigenval)o(ues)c(\(&lanczos_wksp,)g(eigval,)k(&neig,)g │ │ │ │ +(&retc\);)0 1685 y(fstevl)g(=)i(1)g(;)0 1785 y(if)g(\()g(nfound)e(==)i │ │ │ │ +(0)g(\))g(fstevl)e(=)i(-1)g(;)0 1885 y(if)g(\()g(ndiscd)e(>)i(0)g(\))h │ │ │ │ +(lstevl)d(=)i(-ndiscd)e(;)0 1984 y(hdslp5_)g(\("computed)e(eigenvalues) │ │ │ │ +g(returned)h(by)j(hdserl",)392 2084 y(&neig,)e(eigval,)g(&output,)f │ │ │ │ +(39L)j(\))g(;)0 2183 y(MARKTIME\(t2\))c(;)0 2283 y(fprintf\(msgFile,)e │ │ │ │ +("\\n)42 b(CPU)h(\0458.3f)e(:)i(get)g(and)f(print)g(eigenvalues)d(",)j │ │ │ │ +(t2)h(-)g(t1\))g(;)0 2383 y(/*)131 2482 y(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)131 2582 y(get)f(eigenvectors)d(and)j(print)131 │ │ │ │ +2682 y(----------------)o(--)o(--)o(---)o(--)0 2781 y(*/)0 │ │ │ │ 2881 y(/*)0 2980 y(MARKTIME\(t1\))d(;)0 3080 y(neig)j(=)h(min)f(\()i │ │ │ │ (50,)e(nrow)g(\);)0 3180 y(Lncz_ALLOCATE\(ev)o(ec,)37 │ │ │ │ b(double,)j(nrow,)i(retc\);)0 3379 y(for)g(\()i(i)f(=)g(1)g(;)g(i)g(<=) │ │ │ │ g(nfound)e(;)i(i++)g(\))g({)131 3479 y(lanczos_eigenvec)o(to)o(r)37 │ │ │ │ b(\()44 b(&lanczos_wksp,)37 b(&i,)43 b(&i,)f(newToOld,)1046 │ │ │ │ 3578 y(evec,)g(&nrow,)f(&retc)g(\))i(;)131 3678 y(hdslp5_)d(\()k │ │ │ │ ("computed)39 b(eigenvector)h(returned)g(by)j(hdserc",)567 │ │ │ │ @@ -9037,23 +9045,23 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(26)0 │ │ │ │ -390 y Fl(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 │ │ │ │ +TeXDict begin 26 26 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(26)0 390 y Fl(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 │ │ │ │ %%Page: 27 28 │ │ │ │ TeXDict begin 27 27 bop 0 1038 a Fk(App)5 b(endix)64 │ │ │ │ b(B)0 1478 y Fa(testMT.c)80 b Fo(|)e(A)g(Multithreaded)g(Driv)-6 │ │ │ │ b(er)0 1727 y(Program)0 2183 y Fl(/*)86 b(testMT.c)e(*/)0 │ │ │ │ 2383 y(#include)40 b("../BridgeMT.h")0 2582 y(void)i(FactorMT)e(\()j │ │ │ │ (\))h(;)0 2682 y(void)e(MatMulMT)e(\()j(\))h(;)0 2781 │ │ │ │ @@ -9080,21 +9088,21 @@ │ │ │ │ 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 Fm(27)p eop end │ │ │ │ %%Page: 28 29 │ │ │ │ -TeXDict begin 28 28 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(28)0 │ │ │ │ -390 y Fl(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 │ │ │ │ +TeXDict begin 28 28 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(28)0 390 y Fl(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 │ │ │ │ b(--)43 b(message)e(level")0 1088 y("\\n)173 b(msgFile)84 │ │ │ │ b(--)43 b(message)e(file")0 1187 y("\\n)173 b(parmFile)40 │ │ │ │ b(--)j(input)f(parameters)d(file")0 1287 y("\\n)173 b(seed)216 │ │ │ │ b(--)43 b(random)e(number)g(seed,)h(used)g(for)g(ordering")0 │ │ │ │ @@ -9130,25 +9138,25 @@ │ │ │ │ (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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(29)0 │ │ │ │ -390 y Fl(})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 │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1187 y(/*)131 │ │ │ │ +TeXDict begin 29 29 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(29)0 390 y Fl(})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(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1187 y(/*)131 │ │ │ │ 1287 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)131 │ │ │ │ 1386 y(read)42 b(in)g(eigenvalue)e(problem)h(data)131 │ │ │ │ 1486 y(neigvl)g(--)i(#)g(of)g(desired)d(eigenvalues)131 │ │ │ │ 1586 y(which)85 b(--)43 b(which)e(eigenvalues)e(to)k(compute)218 │ │ │ │ 1685 y('l')f(or)h('L')f(lowest)f(\(smallest)f(magnitude\))218 │ │ │ │ 1785 y('h')i(or)h('H')f(highest)f(\(largest)f(magnitude\))218 │ │ │ │ @@ -9186,18 +9194,18 @@ │ │ │ │ (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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(30)0 │ │ │ │ -390 y Fl(*/)0 490 y(switch)41 b(\()i(pbtype[1])d(\))j({)0 │ │ │ │ +TeXDict begin 30 30 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(30)0 390 y Fl(*/)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 │ │ │ │ (problem)g(type)h(\045s",)g(pbtype\))e(;)131 1984 y(exit\(-1\))g(;)0 │ │ │ │ @@ -9229,20 +9237,20 @@ │ │ │ │ (--)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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(31)131 │ │ │ │ -390 y Fl(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 │ │ │ │ +TeXDict begin 31 31 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(31)131 390 y Fl(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 │ │ │ │ 1287 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)87 1386 y │ │ │ │ (fprintf\(msgFile,)37 b("\\n\\n)42 b(InpMtx)f(A)i(object)e(after)h │ │ │ │ (loading"\))d(;)87 1486 y(InpMtx_writeForHu)o(ma)o(nE)o(ye\()o(in)o │ │ │ │ @@ -9275,44 +9283,45 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(32)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(--)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 │ │ │ │ -(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)0 │ │ │ │ -1088 y(*/)0 1187 y(MARKTIME\(t1\))g(;)0 1287 y(lanczos_run)g(\()k │ │ │ │ -(&neigvl,)d(&which[1])g(,)k(&pbtype[1],)39 b(&lfinit,)h(&lftend,)131 │ │ │ │ -1386 y(&rfinit,)g(&rhtend,)g(¢er,)h(&lanczos_wksp,)c(&bridge,)k │ │ │ │ -(&nfound,)131 1486 y(&ndiscd,)f(&warnng,)g(&error,)h(FactorMT,)f │ │ │ │ -(MatMulMT,)g(SolveMT)g(\))k(;)0 1586 y(MARKTIME\(t2\))39 │ │ │ │ -b(;)0 1685 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(time)f │ │ │ │ -(for)h(lanczos_run",)38 b(t2)43 b(-)g(t1\))f(;)0 1785 │ │ │ │ -y(fflush\(msgFile\))37 b(;)0 1885 y(/*)131 1984 y(----------------)o │ │ │ │ -(--)o(--)o(---)o(--)131 2084 y(get)42 b(eigenvalues)d(and)j(print)131 │ │ │ │ -2183 y(----------------)o(--)o(--)o(---)o(--)0 2283 y(*/)0 │ │ │ │ -2383 y(MARKTIME\(t1\))d(;)0 2482 y(neig)129 b(=)43 b(nfound)e(+)j │ │ │ │ -(ndiscd)d(;)0 2582 y(lstevl)g(=)i(nfound)e(;)0 2682 y(lanczos_eigenval) │ │ │ │ -o(ues)c(\(&lanczos_wksp,)g(eigval,)k(&neig,)g(&retc\);)0 │ │ │ │ -2781 y(fstevl)g(=)i(1)g(;)0 2881 y(if)g(\()g(nfound)e(==)i(0)g(\))g │ │ │ │ -(fstevl)e(=)i(-1)g(;)0 2980 y(if)g(\()g(ndiscd)e(>)i(0)g(\))h(lstevl)d │ │ │ │ -(=)i(-ndiscd)e(;)0 3080 y(hdslp5_)g(\("computed)e(eigenvalues)g │ │ │ │ -(returned)h(by)j(hdserl",)392 3180 y(&neig,)e(eigval,)g(&output,)f(39L) │ │ │ │ -j(\))g(;)0 3279 y(MARKTIME\(t2\))c(;)0 3379 y(fprintf\(msgFile,)e("\\n) │ │ │ │ -42 b(CPU)h(\0458.3f)e(:)i(get)g(and)f(print)g(eigenvalues",)c(t2)43 │ │ │ │ +TeXDict begin 32 32 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(32)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(--)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(--)o(---)o(--)o(---)o(--)o(--) │ │ │ │ +o(---)o(--)o(---)o(--)0 1088 y(*/)0 1187 y(MARKTIME\(t1\))g(;)0 │ │ │ │ +1287 y(lanczos_run)g(\()k(&neigvl,)d(&which[1])g(,)k(&pbtype[1],)39 │ │ │ │ +b(&lfinit,)h(&lftend,)131 1386 y(&rfinit,)g(&rhtend,)g(¢er,)h │ │ │ │ +(&lanczos_wksp,)c(&bridge,)k(&nfound,)131 1486 y(&ndiscd,)f(&warnng,)g │ │ │ │ +(&error,)h(FactorMT,)f(MatMulMT,)g(SolveMT)g(\))k(;)0 │ │ │ │ +1586 y(MARKTIME\(t2\))39 b(;)0 1685 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ +b(CPU)h(\0458.3f)e(:)i(time)f(for)h(lanczos_run",)38 │ │ │ │ +b(t2)43 b(-)g(t1\))f(;)0 1785 y(fflush\(msgFile\))37 │ │ │ │ +b(;)0 1885 y(/*)131 1984 y(----------------)o(--)o(--)o(---)o(--)131 │ │ │ │ +2084 y(get)42 b(eigenvalues)d(and)j(print)131 2183 y(----------------)o │ │ │ │ +(--)o(--)o(---)o(--)0 2283 y(*/)0 2383 y(MARKTIME\(t1\))d(;)0 │ │ │ │ +2482 y(neig)129 b(=)43 b(nfound)e(+)j(ndiscd)d(;)0 2582 │ │ │ │ +y(lstevl)g(=)i(nfound)e(;)0 2682 y(lanczos_eigenval)o(ues)c │ │ │ │ +(\(&lanczos_wksp,)g(eigval,)k(&neig,)g(&retc\);)0 2781 │ │ │ │ +y(fstevl)g(=)i(1)g(;)0 2881 y(if)g(\()g(nfound)e(==)i(0)g(\))g(fstevl)e │ │ │ │ +(=)i(-1)g(;)0 2980 y(if)g(\()g(ndiscd)e(>)i(0)g(\))h(lstevl)d(=)i │ │ │ │ +(-ndiscd)e(;)0 3080 y(hdslp5_)g(\("computed)e(eigenvalues)g(returned)h │ │ │ │ +(by)j(hdserl",)392 3180 y(&neig,)e(eigval,)g(&output,)f(39L)j(\))g(;)0 │ │ │ │ +3279 y(MARKTIME\(t2\))c(;)0 3379 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ +b(CPU)h(\0458.3f)e(:)i(get)g(and)f(print)g(eigenvalues",)c(t2)43 │ │ │ │ b(-)g(t1\))f(;)0 3479 y(fflush\(msgFile\))37 b(;)0 3578 │ │ │ │ y(/*)131 3678 y(----------------)o(--)o(--)o(---)o(--)131 │ │ │ │ 3778 y(get)42 b(eigenvectors)d(and)j(print)131 3877 y(----------------) │ │ │ │ o(--)o(--)o(---)o(--)0 3977 y(*/)0 4076 y(/*)0 4176 y(MARKTIME\(t1\))d │ │ │ │ (;)0 4276 y(neig)j(=)h(min)f(\()i(50,)e(nrow)g(\);)0 │ │ │ │ 4375 y(Lncz_ALLOCATE\(ev)o(ec,)37 b(double,)j(nrow,)i(retc\);)0 │ │ │ │ 4475 y(for)g(\(i)h(=)g(1;)g(i<=)f(nfound;)f(i++\))h({d)131 │ │ │ │ @@ -9321,20 +9330,20 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(33)0 │ │ │ │ -390 y Fl(/*)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 │ │ │ │ +TeXDict begin 33 33 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(33)0 390 y Fl(/*)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 │ │ │ │ 1486 y(CleanupMT\(&bridg)o(e\))e(;)0 1586 y(MARKTIME\(t2\))i(;)0 │ │ │ │ 1685 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (solver)f(workspace",)e(t2)k(-)g(t1\))g(;)0 1785 y(fflush\(msgFile\))37 │ │ │ │ @@ -9371,37 +9380,37 @@ │ │ │ │ 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 Fm(34)p eop end │ │ │ │ %%Page: 35 36 │ │ │ │ -TeXDict begin 35 35 bop 83 100 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(35)0 │ │ │ │ -390 y Fl(/*)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 │ │ │ │ -(&comm\))k(;)0 1088 y(MPI_Comm_rank\(co)o(mm,)c(&myid\))k(;)0 │ │ │ │ -1187 y(MPI_Comm_size\(co)o(mm,)c(&nproc\))j(;)0 1287 │ │ │ │ -y(fprintf\(stdout,)d("\\n)43 b(myid)f(=)h(\045d",)f(myid\))f(;)0 │ │ │ │ -1386 y(fflush\(stdout\))d(;)0 1486 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 1586 y(/*)131 │ │ │ │ -1685 y(----------------)o(--)o(--)o(---)o(--)o(---)o(-)131 │ │ │ │ -1785 y(decode)j(the)h(command)f(line)h(input)131 1885 │ │ │ │ -y(----------------)o(--)o(--)o(---)o(--)o(---)o(-)0 1984 │ │ │ │ -y(*/)0 2084 y(if)h(\()g(argc)f(!=)h(7)g(\))g({)131 2183 │ │ │ │ -y(fprintf\(stdout,)262 2283 y("\\n\\n)e(usage)h(:)h(\045s)f(msglvl)g │ │ │ │ -(msgFile)e(parmFile)h(seed)g(inFileA)g(inFileB")262 2383 │ │ │ │ -y("\\n)173 b(msglvl)128 b(--)43 b(message)d(level")262 │ │ │ │ +TeXDict begin 35 35 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(35)0 390 y Fl(/*)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(&comm\))k(;)0 │ │ │ │ +1088 y(MPI_Comm_rank\(co)o(mm,)c(&myid\))k(;)0 1187 y │ │ │ │ +(MPI_Comm_size\(co)o(mm,)c(&nproc\))j(;)0 1287 y(fprintf\(stdout,)d │ │ │ │ +("\\n)43 b(myid)f(=)h(\045d",)f(myid\))f(;)0 1386 y(fflush\(stdout\))d │ │ │ │ +(;)0 1486 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 1586 y(/*)131 1685 y(----------------)o(--)o(--)o(---) │ │ │ │ +o(--)o(---)o(-)131 1785 y(decode)j(the)h(command)f(line)h(input)131 │ │ │ │ +1885 y(----------------)o(--)o(--)o(---)o(--)o(---)o(-)0 │ │ │ │ +1984 y(*/)0 2084 y(if)h(\()g(argc)f(!=)h(7)g(\))g({)131 │ │ │ │ +2183 y(fprintf\(stdout,)262 2283 y("\\n\\n)e(usage)h(:)h(\045s)f │ │ │ │ +(msglvl)g(msgFile)e(parmFile)h(seed)g(inFileA)g(inFileB")262 │ │ │ │ +2383 y("\\n)173 b(msglvl)128 b(--)43 b(message)d(level")262 │ │ │ │ 2482 y("\\n)173 b(msgFile)84 b(--)43 b(message)d(file")262 │ │ │ │ 2582 y("\\n)173 b(parmFile)40 b(--)j(input)e(parameters)f(file")262 │ │ │ │ 2682 y("\\n)173 b(seed)216 b(--)43 b(random)e(number)g(seed,)g(used)h │ │ │ │ (for)h(ordering")262 2781 y("\\n)173 b(inFileA)84 b(--)43 │ │ │ │ b(stiffness)d(matrix,)g(in)j(Harwell-Boeing)38 b(format")262 │ │ │ │ 2881 y("\\n)173 b(inFileB)84 b(--)43 b(mass)f(matrix,)e(in)j │ │ │ │ (Harwell-Boeing)38 b(format")262 2980 y("\\n)696 b(used)42 │ │ │ │ @@ -9419,21 +9428,21 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(36)349 │ │ │ │ -390 y Fl("\\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 │ │ │ │ +TeXDict begin 36 36 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(36)349 390 y Fl("\\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 │ │ │ │ (inFileName_A,)349 1187 y(inFileName_B,)g(seed\))j(;)0 │ │ │ │ 1287 y(fflush\(msgFile\))c(;)0 1386 y(if)43 b(\()g(strcmp\(inFileNam)o │ │ │ │ (e_)o(A,)37 b("none"\))k(==)i(0)g(\))g({)131 1486 y(fprintf\(msgFile,) │ │ │ │ 37 b("\\n)42 b(no)h(file)f(to)h(read)e(from"\))h(;)131 │ │ │ │ @@ -9472,44 +9481,45 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(37)567 │ │ │ │ -390 y Fl(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(--) │ │ │ │ -o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ -o(--)o(---)o(-)0 1088 y(*/)0 1187 y(MARKTIME\(t1\))e(;)0 │ │ │ │ -1287 y(parmFile)h(=)j(fopen\(parmFileNam)o(e,)37 b("r"\);)0 │ │ │ │ -1386 y(fscanf\(parmFile,)g("\045d)42 b(\045s)h(\045s)g(\045d)g(\045le)f │ │ │ │ -(\045d)h(\045le)f(\045le)g(\045d)h(\045le",)305 1486 │ │ │ │ -y(&neigvl,)d(which,)h(pbtype,)g(&lfinit,)f(&lftend,)305 │ │ │ │ -1586 y(&rfinit,)g(&rhtend,)h(¢er,)f(&mxbksz,)g(&shfscl\))g(;)0 │ │ │ │ -1685 y(fclose\(parmFile\))o(;)0 1785 y(MARKTIME\(t2\))f(;)0 │ │ │ │ -1885 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h │ │ │ │ -(eigenvalue)c(problem)i(data",)349 1984 y(t2)h(-)i(t1\))e(;)0 │ │ │ │ -2084 y(fflush\(msgFile\))37 b(;)0 2183 y(/*)131 2283 │ │ │ │ -y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ -(---)131 2383 y(check)k(and)i(set)f(the)g(problem)f(type)h(parameter) │ │ │ │ -131 2482 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--) │ │ │ │ -o(--)o(---)0 2582 y(*/)0 2682 y(switch)f(\()i(pbtype[1])d(\))j({)0 │ │ │ │ -2781 y(case)f('v')g(:)h(case)f('V')h(:)g(prbtyp)e(=)i(1)g(;)h(break)d │ │ │ │ -(;)0 2881 y(case)h('b')g(:)h(case)f('B')h(:)g(prbtyp)e(=)i(2)g(;)h │ │ │ │ -(break)d(;)0 2980 y(case)h('o')g(:)h(case)f('O')h(:)g(prbtyp)e(=)i(3)g │ │ │ │ -(;)h(break)d(;)0 3080 y(default)g(:)131 3180 y(fprintf\(stderr,)c("\\n) │ │ │ │ -42 b(invalid)f(problem)g(type)h(\045s",)g(pbtype\))e(;)131 │ │ │ │ +TeXDict begin 37 37 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(37)567 390 y Fl(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(--)o(---)o(--)o(---)o(--)o(--) │ │ │ │ +o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)0 │ │ │ │ +1088 y(*/)0 1187 y(MARKTIME\(t1\))e(;)0 1287 y(parmFile)h(=)j │ │ │ │ +(fopen\(parmFileNam)o(e,)37 b("r"\);)0 1386 y(fscanf\(parmFile,)g │ │ │ │ +("\045d)42 b(\045s)h(\045s)g(\045d)g(\045le)f(\045d)h(\045le)f(\045le)g │ │ │ │ +(\045d)h(\045le",)305 1486 y(&neigvl,)d(which,)h(pbtype,)g(&lfinit,)f │ │ │ │ +(&lftend,)305 1586 y(&rfinit,)g(&rhtend,)h(¢er,)f(&mxbksz,)g │ │ │ │ +(&shfscl\))g(;)0 1685 y(fclose\(parmFile\))o(;)0 1785 │ │ │ │ +y(MARKTIME\(t2\))f(;)0 1885 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ +b(CPU)h(\0458.3f)e(:)i(read)f(in)h(eigenvalue)c(problem)i(data",)349 │ │ │ │ +1984 y(t2)h(-)i(t1\))e(;)0 2084 y(fflush\(msgFile\))37 │ │ │ │ +b(;)0 2183 y(/*)131 2283 y(----------------)o(--)o(--)o(---)o(--)o(---) │ │ │ │ +o(--)o(---)o(--)o(--)o(---)131 2383 y(check)k(and)i(set)f(the)g │ │ │ │ +(problem)f(type)h(parameter)131 2482 y(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)0 2582 y(*/)0 │ │ │ │ +2682 y(switch)f(\()i(pbtype[1])d(\))j({)0 2781 y(case)f('v')g(:)h(case) │ │ │ │ +f('V')h(:)g(prbtyp)e(=)i(1)g(;)h(break)d(;)0 2881 y(case)h('b')g(:)h │ │ │ │ +(case)f('B')h(:)g(prbtyp)e(=)i(2)g(;)h(break)d(;)0 2980 │ │ │ │ +y(case)h('o')g(:)h(case)f('O')h(:)g(prbtyp)e(=)i(3)g(;)h(break)d(;)0 │ │ │ │ +3080 y(default)g(:)131 3180 y(fprintf\(stderr,)c("\\n)42 │ │ │ │ +b(invalid)f(problem)g(type)h(\045s",)g(pbtype\))e(;)131 │ │ │ │ 3279 y(exit\(-1\))g(;)0 3379 y(})0 3479 y(/*)131 3578 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)131 3678 │ │ │ │ y(Initialize)f(Lanczos)i(workspace)131 3778 y(----------------)o(--)o │ │ │ │ (--)o(---)o(--)o(---)0 3877 y(*/)0 3977 y(MARKTIME\(t1\))e(;)0 │ │ │ │ 4076 y(lanczos_init_)f(\()43 b(&lanczos_wksp)c(\))k(;)0 │ │ │ │ 4176 y(MARKTIME\(t2\))c(;)0 4276 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(initialize)d(Lanczos)g(workspace",)349 │ │ │ │ @@ -9520,71 +9530,71 @@ │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(38)0 │ │ │ │ -390 y Fl(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) │ │ │ │ -o(\()d(&lanczos_wksp,)f("evfil-pathname",)g("evcfil",)j(&retc)h(\);)0 │ │ │ │ -988 y(MARKTIME\(t2\))e(;)0 1088 y(fprintf\(msgFile,)349 │ │ │ │ -1187 y("\\n)j(CPU)g(\0458.3f)g(:)h(init)f(the)g(lanczos)f │ │ │ │ -(communication)d(structure",)349 1287 y(t2)k(-)i(t1\))e(;)0 │ │ │ │ -1386 y(fflush\(msgFile\))37 b(;)0 1486 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 1586 y(if)43 │ │ │ │ -b(\()g(myid)f(==)h(0)g(\))g({)0 1685 y(/*)131 1785 y(----------------)o │ │ │ │ -(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(-)131 1885 │ │ │ │ -y(processor)d(zero)i(reads)f(in)i(the)f(matrices)131 │ │ │ │ -1984 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(-) │ │ │ │ -0 2084 y(*/)131 2183 y(MARKTIME\(t1\))c(;)131 2283 y(inpmtxA)i(=)k │ │ │ │ -(InpMtx_new\(\))38 b(;)131 2383 y(InpMtx_readFromH)o(Bf)o(il)o(e)g(\() │ │ │ │ -43 b(inpmtxA,)d(inFileName_A)f(\))k(;)131 2482 y(MARKTIME\(t2\))38 │ │ │ │ -b(;)131 2582 y(fprintf\(msgFile,)f("\\n)42 b(CPU)g(\0458.3f)g(:)h(read) │ │ │ │ -f(in)h(first)e(matrix",)g(t2)h(-)i(t1\))e(;)131 2682 │ │ │ │ -y(fflush\(msgFile\))37 b(;)131 2781 y(if)43 b(\()g(msglvl)e(>)i(2)g(\)) │ │ │ │ -g({)262 2881 y(fprintf\(msgFile)o(,)37 b("\\n\\n)42 b(InpMtx)f(A)i │ │ │ │ -(object)e(after)h(loading"\))e(;)262 2980 y(InpMtx_writeFor)o(Hu)o(man) │ │ │ │ -o(Ey)o(e\(i)o(np)o(mtx)o(A,)d(msgFile\))j(;)262 3080 │ │ │ │ -y(fflush\(msgFile\))d(;)131 3180 y(})131 3279 y(lanczos_set_parm)o(\()g │ │ │ │ -(&lanczos_wksp,)h("matrix-type",)g(&c__1,)j(&retc)h(\);)131 │ │ │ │ -3379 y(if)h(\()g(prbtyp)e(!=)i(3)g(\))g({)262 3479 y(if)f(\()h │ │ │ │ -(strcmp\(inFileName)o(_B,)37 b("none"\))j(==)j(0)g(\))h({)392 │ │ │ │ -3578 y(fprintf\(msgFile,)37 b("\\n)43 b(no)f(file)g(to)h(read)f │ │ │ │ -(from"\))f(;)392 3678 y(exit\(0\))g(;)262 3778 y(})262 │ │ │ │ -3877 y(MARKTIME\(t1\))d(;)262 3977 y(inpmtxB)i(=)j(InpMtx_new\(\))c(;) │ │ │ │ -262 4076 y(InpMtx_readFrom)o(HB)o(fil)o(e)e(\()44 b(inpmtxB,)c │ │ │ │ -(inFileName_B)e(\))44 b(;)262 4176 y(MARKTIME\(t2\))38 │ │ │ │ +TeXDict begin 38 38 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(38)0 390 y Fl(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)o(\()d(&lanczos_wksp,)f("evfil-pathname",)g │ │ │ │ +("evcfil",)j(&retc)h(\);)0 988 y(MARKTIME\(t2\))e(;)0 │ │ │ │ +1088 y(fprintf\(msgFile,)349 1187 y("\\n)j(CPU)g(\0458.3f)g(:)h(init)f │ │ │ │ +(the)g(lanczos)f(communication)d(structure",)349 1287 │ │ │ │ +y(t2)k(-)i(t1\))e(;)0 1386 y(fflush\(msgFile\))37 b(;)0 │ │ │ │ +1486 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 1586 y(if)43 b(\()g(myid)f(==)h(0)g(\))g({)0 │ │ │ │ +1685 y(/*)131 1785 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(-)131 1885 y(processor)d(zero)i(reads)f(in)i(the)f │ │ │ │ +(matrices)131 1984 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ +(---)o(--)o(-)0 2084 y(*/)131 2183 y(MARKTIME\(t1\))c(;)131 │ │ │ │ +2283 y(inpmtxA)i(=)k(InpMtx_new\(\))38 b(;)131 2383 y(InpMtx_readFromH) │ │ │ │ +o(Bf)o(il)o(e)g(\()43 b(inpmtxA,)d(inFileName_A)f(\))k(;)131 │ │ │ │ +2482 y(MARKTIME\(t2\))38 b(;)131 2582 y(fprintf\(msgFile,)f("\\n)42 │ │ │ │ +b(CPU)g(\0458.3f)g(:)h(read)f(in)h(first)e(matrix",)g(t2)h(-)i(t1\))e │ │ │ │ +(;)131 2682 y(fflush\(msgFile\))37 b(;)131 2781 y(if)43 │ │ │ │ +b(\()g(msglvl)e(>)i(2)g(\))g({)262 2881 y(fprintf\(msgFile)o(,)37 │ │ │ │ +b("\\n\\n)42 b(InpMtx)f(A)i(object)e(after)h(loading"\))e(;)262 │ │ │ │ +2980 y(InpMtx_writeFor)o(Hu)o(man)o(Ey)o(e\(i)o(np)o(mtx)o(A,)d │ │ │ │ +(msgFile\))j(;)262 3080 y(fflush\(msgFile\))d(;)131 3180 │ │ │ │ +y(})131 3279 y(lanczos_set_parm)o(\()g(&lanczos_wksp,)h("matrix-type",) │ │ │ │ +g(&c__1,)j(&retc)h(\);)131 3379 y(if)h(\()g(prbtyp)e(!=)i(3)g(\))g({) │ │ │ │ +262 3479 y(if)f(\()h(strcmp\(inFileName)o(_B,)37 b("none"\))j(==)j(0)g │ │ │ │ +(\))h({)392 3578 y(fprintf\(msgFile,)37 b("\\n)43 b(no)f(file)g(to)h │ │ │ │ +(read)f(from"\))f(;)392 3678 y(exit\(0\))g(;)262 3778 │ │ │ │ +y(})262 3877 y(MARKTIME\(t1\))d(;)262 3977 y(inpmtxB)i(=)j │ │ │ │ +(InpMtx_new\(\))c(;)262 4076 y(InpMtx_readFrom)o(HB)o(fil)o(e)e(\()44 │ │ │ │ +b(inpmtxB,)c(inFileName_B)e(\))44 b(;)262 4176 y(MARKTIME\(t2\))38 │ │ │ │ b(;)262 4276 y(fprintf\(msgFile)o(,)f("\\n)43 b(CPU)f(\0458.3f)g(:)h │ │ │ │ (read)f(in)h(first)e(matrix",)f(t2)j(-)g(t1\))g(;)262 │ │ │ │ 4375 y(fflush\(msgFile\))37 b(;)262 4475 y(if)42 b(\()h(msglvl)f(>)h(2) │ │ │ │ g(\))g({)392 4575 y(fprintf\(msgFile,)37 b("\\n\\n)42 │ │ │ │ b(InpMtx)f(B)i(object)e(after)h(loading"\))e(;)392 4674 │ │ │ │ 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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(39)0 │ │ │ │ -390 y Fl(/*)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 │ │ │ │ +TeXDict begin 39 39 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(39)0 390 y Fl(/*)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 │ │ │ │ 1088 y(lanczos_set_parm)o(\()37 b(&lanczos_wksp,)h("matrix-type",)g │ │ │ │ (&c__1,)j(&retc)h(\);)131 1187 y(if)h(\()g(prbtyp)e(==)i(1)g(||)f │ │ │ │ (prbtyp)g(==)g(2)i(\))f({)262 1287 y(inpmtxB)d(=)j(InpMtx_new\(\))c(;) │ │ │ │ @@ -9620,36 +9630,37 @@ │ │ │ │ 4774 y(JimSolveMPI)g(\))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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(40)131 │ │ │ │ -390 y Fl(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 │ │ │ │ -(fstevl)e(=)i(-1)g(;)131 1287 y(if)g(\()g(ndiscd)e(>)i(0)g(\))g(lstevl) │ │ │ │ -e(=)j(-ndiscd)c(;)131 1386 y(hdslp5_)g(\("computed)g(eigenvalues)f │ │ │ │ -(returned)h(by)j(hdserl",)523 1486 y(&neig,)e(eigval,)g(&output,)f(39L) │ │ │ │ -i(\))i(;)131 1586 y(MARKTIME\(t2\))38 b(;)131 1685 y(fprintf\(msgFile,) │ │ │ │ -f("\\n)42 b(CPU)g(\0458.3f)g(:)h(get)f(and)h(print)e(eigenvalues",)479 │ │ │ │ -1785 y(t2)i(-)g(t1\))g(;)131 1885 y(fflush\(msgFile\))37 │ │ │ │ -b(;)0 1984 y(/*)131 2084 y(----------------)o(--)o(--)o(---)o(--)131 │ │ │ │ -2183 y(get)42 b(eigenvectors)d(and)j(print)131 2283 y(----------------) │ │ │ │ -o(--)o(--)o(---)o(--)0 2383 y(*/)0 2482 y(/*)131 2582 │ │ │ │ -y(MARKTIME\(t1\))c(;)131 2682 y(neig)k(=)h(min)f(\()h(50,)g(nrow)f(\);) │ │ │ │ -131 2781 y(Lncz_ALLOCATE\(ev)o(ec)o(,)37 b(double,)k(nrow,)h(retc\);) │ │ │ │ -131 2881 y(for)g(\(i)h(=)g(1;)g(i<=)f(nfound;)f(i++\))h({)262 │ │ │ │ +TeXDict begin 40 40 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(40)131 390 y Fl(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(fstevl)e(=)i(-1)g(;)131 1287 y(if)g(\()g(ndiscd)e(>)i(0) │ │ │ │ +g(\))g(lstevl)e(=)j(-ndiscd)c(;)131 1386 y(hdslp5_)g(\("computed)g │ │ │ │ +(eigenvalues)f(returned)h(by)j(hdserl",)523 1486 y(&neig,)e(eigval,)g │ │ │ │ +(&output,)f(39L)i(\))i(;)131 1586 y(MARKTIME\(t2\))38 │ │ │ │ +b(;)131 1685 y(fprintf\(msgFile,)f("\\n)42 b(CPU)g(\0458.3f)g(:)h(get)f │ │ │ │ +(and)h(print)e(eigenvalues",)479 1785 y(t2)i(-)g(t1\))g(;)131 │ │ │ │ +1885 y(fflush\(msgFile\))37 b(;)0 1984 y(/*)131 2084 │ │ │ │ +y(----------------)o(--)o(--)o(---)o(--)131 2183 y(get)42 │ │ │ │ +b(eigenvectors)d(and)j(print)131 2283 y(----------------)o(--)o(--)o │ │ │ │ +(---)o(--)0 2383 y(*/)0 2482 y(/*)131 2582 y(MARKTIME\(t1\))c(;)131 │ │ │ │ +2682 y(neig)k(=)h(min)f(\()h(50,)g(nrow)f(\);)131 2781 │ │ │ │ +y(Lncz_ALLOCATE\(ev)o(ec)o(,)37 b(double,)k(nrow,)h(retc\);)131 │ │ │ │ +2881 y(for)g(\(i)h(=)g(1;)g(i<=)f(nfound;)f(i++\))h({)262 │ │ │ │ 2980 y(lanczos_eigenve)o(ct)o(or\()o(&l)o(anc)o(zo)o(s_w)o(ks)o(p,)37 │ │ │ │ b(&i,)42 b(&i,)h(newToOld,)1133 3080 y(evec,)f(&nrow,)f(&retc\))g(;)262 │ │ │ │ 3180 y(hdslp5_\("comput)o(ed)c(eigenvector)i(returned)h(by)j(hdserc",) │ │ │ │ 610 3279 y(&neig,)e(evec,)h(&output,)e(39L)i(\))i(;)131 │ │ │ │ 3379 y(})131 3479 y(MARKTIME\(t2\))38 b(;)131 3578 y(fprintf\(msgFile,) │ │ │ │ f("\\n)42 b(CPU)g(\0458.3f)g(:)h(get)f(and)h(print)e(eigenvectors",)479 │ │ │ │ 3678 y(t2)i(-)g(t1\))g(;)131 3778 y(fflush\(msgFile\))37 │ │ │ │ @@ -9660,20 +9671,20 @@ │ │ │ │ (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 760 4 v 925 100 a Fn(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(18,)g(2025)p 3060 100 V 760 w Fm(41)0 │ │ │ │ -390 y Fl(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 │ │ │ │ +TeXDict begin 41 41 bop 83 100 724 4 v 890 100 a Fn(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fm(41)0 390 y Fl(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 Fo(Index)0 1281 y Fl(Cleanup\(\))p │ │ │ │ Fm(,)24 b(7)0 1380 y Fl(CleanupMPI\(\))p Fm(,)f(19)0 │ │ │ │ 1480 y Fl(CleanupMT\(\))p Fm(,)g(12)0 1663 y Fl(Factor\(\))p │ │ │ │ Fm(,)h(6)0 1762 y Fl(FactorMPI\(\))p Fm(,)f(17)0 1862 │ │ │ │ y Fl(FactorMT\(\))p Fm(,)h(11)0 2045 y Fl(JimMatMulMPI\(\))p │ │ │ │ Fm(,)e(17)0 2144 y Fl(JimSolveMPI\(\))p Fm(,)g(18)0 2327 │ │ │ │ ├── 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 │ │ │ │ │ - October 18, 2025 │ │ │ │ │ + November 15, 2025 │ │ │ │ │ 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 : October 18, 2025 3 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 5 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 6 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 7 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 8 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 12 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 16 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 18 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 19 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 21 │ │ │ │ │ - int *lanczos_wksp; │ │ │ │ │ - InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ - FILE *msgFile, *parmFile; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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") ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 22 │ │ │ │ │ - exit(0) ; │ │ │ │ │ + fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 23 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 24 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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, │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 25 │ │ │ │ │ - &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ - &ndiscd, &warnng, &error, Factor, MatMul, Solve ) ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 26 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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 18, 2025 29 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 : November 15, 2025 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 │ │ │ │ │ - ---------------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 30 │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ + check and set the problem type parameter │ │ │ │ │ + ---------------------------------------- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 ) { │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 31 │ │ │ │ │ - fprintf(msgFile, "\n no file to read A from") ; │ │ │ │ │ - exit(-1) ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ + 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) ; │ │ │ │ │ } │ │ │ │ │ - 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) ; │ │ │ │ │ } │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 32 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 33 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 35 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 " │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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 18, 2025 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 │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 : November 15, 2025 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 ); │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 38 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 { │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 39 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 ) { │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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) ; │ │ │ │ │ + ---------------------------------------------- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 41 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 41 │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ fprintf(msgFile, "\n") ; │ │ │ │ │ fclose(msgFile) ; │ │ │ │ │ return ; } │ │ │ │ │ Index │ │ │ │ │ Cleanup(), 7 │ │ ├── ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ ├── FrontMtx.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o FrontMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1761,23 +1761,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1951,90 +1950,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5001,16 +5009,16 @@ │ │ │ │ 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 │ │ │ │ -139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 │ │ │ │ -45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fg 148[45 3[45 │ │ │ │ +137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 │ │ │ │ +45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fg 148[45 3[45 │ │ │ │ 45 9[61 61 31[45 4[0 51[71 1[71{}9 90.9091 /CMSY10 rf │ │ │ │ /Fh 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 │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ @@ -5146,19 +5154,19 @@ │ │ │ │ Fk(P)43 b Fm(and)30 b Fk(Q)g Fm(are)h(the)f(iden)m(tit)m(y)-8 │ │ │ │ b(.)111 5294 y(3.)46 b Fk(A)k Fm(=)e Fk(QR)e Fm(for)e(square)g(or)h │ │ │ │ (rectangular)h Fk(A)p Fm(.)84 b Fk(Q)44 b Fm(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 Fk(R)31 b Fm(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 Fm(2)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 141 399 a Fm(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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 995 4 v │ │ │ │ +1177 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 141 399 a Fm(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 │ │ │ │ Fh(fr)-5 b(ont)31 b Fm(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 │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.0 0.0 100.0 100.0 │ │ │ │ @@ -5240,44 +5248,45 @@ │ │ │ │ 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 │ │ │ │ Fl(ETree)227 5407 y Fm(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 │ │ │ │ Fl(ETree)e Fm(ob)5 b(ject)31 b(sim)m(ultaneously)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1034 4 v 1215 100 a Fl(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(3)137 399 y Fi(\210)45 b Fm(An)35 │ │ │ │ -b Fl(IVL)g Fm(ob)5 b(ject)36 b(\()p Fl(I)p Fm(n)m(teger)g │ │ │ │ -Fl(V)p Fm(ector)h Fl(L)p Fm(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 │ │ │ │ -b(ject)35 b(stores)g(the)f(index)g(information)227 737 │ │ │ │ -y(for)i(the)g(factors,)i(and)d(so)h(is)g(used)f(during)g(the)h(forw)m │ │ │ │ -(ard)f(and)g(bac)m(ksolv)m(es.)59 b(F)-8 b(or)37 b(a)f(factorization)i │ │ │ │ -(with)227 850 y(piv)m(oting,)32 b(the)f(index)f(information)g(for)h(a)f │ │ │ │ -(fron)m(t)h(ma)m(y)g(c)m(hange,)h(so)e(this)h(ob)5 b(ject)31 │ │ │ │ -b(is)f(not)h(used)f(during)f(the)227 963 y(solv)m(es.)53 │ │ │ │ -b(As)34 b(for)g(the)g Fl(ETree)f Fm(ob)5 b(ject,)36 b(the)e(sym)m(b)s │ │ │ │ -(olic)g(factorization)j(is)d(neither)g(mo)s(di\014ed)f(or)h(o)m(wned)g │ │ │ │ -(b)m(y)227 1076 y(the)d(fron)m(t)f(matrix)h(ob)5 b(ject.)137 │ │ │ │ -1259 y Fi(\210)45 b Fm(W)-8 b(orking)42 b(storage)h(is)e(necessary)h │ │ │ │ -(during)e(the)h(factor)h(and)f(solv)m(es.)74 b(Instead)41 │ │ │ │ -b(of)h(forcing)f(one)h(w)m(a)m(y)g(of)227 1372 y(managing)27 │ │ │ │ -b(w)m(orking)e(storage,)k(\(e.g.,)f(simple)e Fl(malloc)d │ │ │ │ -Fm(and)i Fl(free's)f Fm(or)i(a)g(complex)g(managemen)m(t)h(of)f(one)227 │ │ │ │ -1485 y(large)32 b(w)m(ork)e(arra)m(y\),)i(w)m(e)f(ha)m(v)m(e)g │ │ │ │ -(abstracted)g(this)g(b)s(eha)m(vior)f(in)m(to)h(t)m(w)m(o)h(ob)5 │ │ │ │ -b(jects.)330 1668 y Fe({)45 b Fm(The)31 b Fl(SubMtxManager)d │ │ │ │ -Fm(ob)5 b(ject)33 b(manages)f(instances)g(of)g(the)g │ │ │ │ -Fl(SubMtx)e Fm(ob)5 b(ject,)33 b(used)d(to)j(store)f(sub-)427 │ │ │ │ -1781 y(matrices)41 b(of)g(the)f(factors)h(and)e(w)m(orking)h(storage)i │ │ │ │ +TeXDict begin 3 2 bop 91 100 995 4 v 1176 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(3)137 399 y Fi(\210)45 │ │ │ │ +b Fm(An)35 b Fl(IVL)g Fm(ob)5 b(ject)36 b(\()p Fl(I)p │ │ │ │ +Fm(n)m(teger)g Fl(V)p Fm(ector)h Fl(L)p Fm(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 b(ject)35 b(stores)g(the)f(index)g(information)227 │ │ │ │ +737 y(for)i(the)g(factors,)i(and)d(so)h(is)g(used)f(during)g(the)h │ │ │ │ +(forw)m(ard)f(and)g(bac)m(ksolv)m(es.)59 b(F)-8 b(or)37 │ │ │ │ +b(a)f(factorization)i(with)227 850 y(piv)m(oting,)32 │ │ │ │ +b(the)f(index)f(information)g(for)h(a)f(fron)m(t)h(ma)m(y)g(c)m(hange,) │ │ │ │ +h(so)e(this)h(ob)5 b(ject)31 b(is)f(not)h(used)f(during)f(the)227 │ │ │ │ +963 y(solv)m(es.)53 b(As)34 b(for)g(the)g Fl(ETree)f │ │ │ │ +Fm(ob)5 b(ject,)36 b(the)e(sym)m(b)s(olic)g(factorization)j(is)d │ │ │ │ +(neither)g(mo)s(di\014ed)f(or)h(o)m(wned)g(b)m(y)227 │ │ │ │ +1076 y(the)d(fron)m(t)f(matrix)h(ob)5 b(ject.)137 1259 │ │ │ │ +y Fi(\210)45 b Fm(W)-8 b(orking)42 b(storage)h(is)e(necessary)h(during) │ │ │ │ +e(the)h(factor)h(and)f(solv)m(es.)74 b(Instead)41 b(of)h(forcing)f(one) │ │ │ │ +h(w)m(a)m(y)g(of)227 1372 y(managing)27 b(w)m(orking)e(storage,)k │ │ │ │ +(\(e.g.,)f(simple)e Fl(malloc)d Fm(and)i Fl(free's)f │ │ │ │ +Fm(or)i(a)g(complex)g(managemen)m(t)h(of)f(one)227 1485 │ │ │ │ +y(large)32 b(w)m(ork)e(arra)m(y\),)i(w)m(e)f(ha)m(v)m(e)g(abstracted)g │ │ │ │ +(this)g(b)s(eha)m(vior)f(in)m(to)h(t)m(w)m(o)h(ob)5 b(jects.)330 │ │ │ │ +1668 y Fe({)45 b Fm(The)31 b Fl(SubMtxManager)d Fm(ob)5 │ │ │ │ +b(ject)33 b(manages)f(instances)g(of)g(the)g Fl(SubMtx)e │ │ │ │ +Fm(ob)5 b(ject,)33 b(used)d(to)j(store)f(sub-)427 1781 │ │ │ │ +y(matrices)41 b(of)g(the)f(factors)h(and)e(w)m(orking)h(storage)i │ │ │ │ (during)d(the)h(solv)m(es.)71 b(The)39 b Fl(FrontMtx)f │ │ │ │ Fm(ob)5 b(ject)427 1894 y(con)m(tains)32 b(a)f(p)s(oin)m(ter)f(to)h │ │ │ │ (this)f(manager)h(ob)5 b(ject,)32 b(set)f(up)s(on)e(initialization.)330 │ │ │ │ 2036 y Fe({)45 b Fm(The)26 b Fl(ChvManager)e Fm(ob)5 │ │ │ │ b(ject)28 b(manages)f(instances)g(of)g(the)g Fl(Chv)f │ │ │ │ Fm(ob)5 b(ject,)28 b(used)e(to)h(store)h(fron)m(ts)e(during)427 │ │ │ │ 2149 y(the)33 b(factorization.)48 b(This)32 b(manager)g(ob)5 │ │ │ │ @@ -5334,21 +5343,21 @@ │ │ │ │ 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 │ │ │ │ Fl(SubMtx)227 5407 y Fm(ob)5 b(jects.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 137 399 a Fi(\210)45 b Fm(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 Fk(I)31 b Fm(and)24 b Fk(J)9 b │ │ │ │ -Fm(.)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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 995 4 v │ │ │ │ +1177 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 137 399 a Fi(\210)45 b │ │ │ │ +Fm(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 Fk(I)31 b Fm(and)24 │ │ │ │ +b Fk(J)9 b Fm(.)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 │ │ │ │ Fl(I2Ohash)d Fm(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 Fl(void)47 b(*)30 b Fm(p)s(oin)m(ter.)137 808 │ │ │ │ y Fi(\210)45 b Fm(The)39 b(set)h(of)g(nonzero)f(submatrices,)j(i.e.,)h │ │ │ │ (the)d(nonzero)g(couplings)f(b)s(et)m(w)m(een)h(t)m(w)m(o)h(fron)m(ts,) │ │ │ │ h(is)d(k)m(ept)h(in)227 920 y(one)33 b(or)f(t)m(w)m(o)h │ │ │ │ Fl(IVL)e Fm(ob)5 b(jects.)47 b(This)31 b(information)i(is)f(necessary)h │ │ │ │ @@ -5406,21 +5415,21 @@ │ │ │ │ (sparsityflag)27 b Fm(:)41 b(\015ag)31 b(to)g(sp)s(ecify)f(storage)i │ │ │ │ (of)e(factors.)330 5153 y Fe({)45 b Fl(0)30 b Fm(|)h(eac)m(h)g(fron)m │ │ │ │ (t)g(is)f(dense)330 5294 y Fe({)45 b Fl(1)g Fm(|)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 1034 4 v 1215 100 a Fl(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(5)137 399 y Fi(\210)45 b Fl(int)i(dataMode)28 │ │ │ │ -b Fm(:)41 b(\015ag)31 b(to)g(sp)s(ecify)f(data)h(storage.)330 │ │ │ │ -583 y Fe({)45 b Fl(1)30 b Fm(|)h(one-dimensional,)g(used)f(during)f │ │ │ │ -(the)h(factorization.)330 727 y Fe({)45 b Fl(2)30 b Fm(|)h(t)m(w)m │ │ │ │ -(o-dimensional,)h(used)e(during)f(the)h(solv)m(es.)137 │ │ │ │ +TeXDict begin 5 4 bop 91 100 995 4 v 1176 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(5)137 399 y Fi(\210)45 │ │ │ │ +b Fl(int)i(dataMode)28 b Fm(:)41 b(\015ag)31 b(to)g(sp)s(ecify)f(data)h │ │ │ │ +(storage.)330 583 y Fe({)45 b Fl(1)30 b Fm(|)h(one-dimensional,)g(used) │ │ │ │ +f(during)f(the)h(factorization.)330 727 y Fe({)45 b Fl(2)30 │ │ │ │ +b Fm(|)h(t)m(w)m(o-dimensional,)h(used)e(during)f(the)h(solv)m(es.)137 │ │ │ │ 911 y Fi(\210)45 b Fl(int)i(nentD)29 b Fm(:)i(n)m(um)m(b)s(er)e(of)h │ │ │ │ (en)m(tries)h(in)f Fk(D)137 1096 y Fi(\210)45 b Fl(int)i(nentL)29 │ │ │ │ b Fm(:)i(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f Fk(L)137 │ │ │ │ 1281 y Fi(\210)45 b Fl(int)i(nentU)29 b Fm(:)i(n)m(um)m(b)s(er)e(of)h │ │ │ │ (en)m(tries)h(in)f Fk(U)137 1466 y Fi(\210)45 b Fl(Tree)i(*tree)19 │ │ │ │ b Fm(:)35 b(T)-8 b(ree)21 b(ob)5 b(ject)21 b(that)g(holds)f(the)g(tree) │ │ │ │ h(of)g(fron)m(ts.)37 b(Note,)24 b(normally)c(this)h(is)f │ │ │ │ @@ -5473,21 +5482,21 @@ │ │ │ │ (submatrices)g(in)g Fk(L)p Fm(,)i(used)d(during)227 5110 │ │ │ │ y(the)c(solv)m(es.)137 5294 y Fi(\210)45 b Fl(I2Ohash)h(*upperhash)33 │ │ │ │ b Fm(:)51 b(p)s(oin)m(ter)35 b(to)i(a)f Fl(I2Ohash)d │ │ │ │ Fm(hash)i(table)h(for)g(submatrices)f(in)g Fk(U)10 b │ │ │ │ Fm(,)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 Fm(6)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 137 399 a Fi(\210)45 b Fl(SubMtxManager)f(*manager) │ │ │ │ -30 b Fm(:)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.)137 719 │ │ │ │ -y Fi(\210)45 b Fl(Lock)i(*lock)27 b Fm(:)40 b(p)s(oin)m(ter)30 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 995 4 v │ │ │ │ +1177 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 137 399 a Fi(\210)45 b │ │ │ │ +Fl(SubMtxManager)f(*manager)30 b Fm(:)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.)137 │ │ │ │ +719 y Fi(\210)45 b Fl(Lock)i(*lock)27 b Fm(:)40 b(p)s(oin)m(ter)30 │ │ │ │ b(to)f(a)h Fl(Lock)e Fm(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 │ │ │ │ Fl(IV)g Fm(and)f Fl(IVL)g Fm(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 │ │ │ │ y(en)m(vironmen)m(t.)137 1153 y Fi(\210)45 b Fl(int)i(nlocks)29 │ │ │ │ b Fm(:)41 b(n)m(um)m(b)s(er)29 b(of)h(times)h(the)g(lo)s(c)m(k)g(has)f │ │ │ │ @@ -5543,27 +5552,27 @@ │ │ │ │ (ost-pro)s(cessed\),)i(and)f Fl(0)g Fm(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 Fm(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 Fl(FrontMtx)28 │ │ │ │ b Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1034 4 v 1215 100 a Fl(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ -b(metho)s(ds)0 593 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 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 Fl(FrontMtx)g(*)h(FrontMtx_new)e(\()i(void)g(\))g(;)227 │ │ │ │ -1078 y Fm(This)35 b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e │ │ │ │ -(the)h Fl(FrontMtx)d Fm(structure)i(and)g(then)g(sets)h(the)g(default) │ │ │ │ -227 1191 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fl(FrontMtx)p │ │ │ │ -1330 1191 29 4 v 32 w(setDefaultFields\(\))p Fm(.)111 │ │ │ │ -1374 y(2.)46 b Fl(void)h(FrontMtx_setDefaultField)o(s)42 │ │ │ │ +TeXDict begin 7 6 bop 91 100 995 4 v 1176 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(7)0 399 y Fb(1.2.1)112 │ │ │ │ +b(Basic)38 b(metho)s(ds)0 593 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 │ │ │ │ +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 Fl(FrontMtx)g(*)h(FrontMtx_new)e(\()i(void)g │ │ │ │ +(\))g(;)227 1078 y Fm(This)35 b(metho)s(d)g(simply)g(allo)s(cates)j │ │ │ │ +(storage)f(for)e(the)h Fl(FrontMtx)d Fm(structure)i(and)g(then)g(sets)h │ │ │ │ +(the)g(default)227 1191 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f │ │ │ │ +Fl(FrontMtx)p 1330 1191 29 4 v 32 w(setDefaultFields\(\))p │ │ │ │ +Fm(.)111 1374 y(2.)46 b Fl(void)h(FrontMtx_setDefaultField)o(s)42 │ │ │ │ b(\()47 b(FrontMtx)f(*frontmtx)f(\))j(;)227 1523 y Fm(The)40 │ │ │ │ b(structure's)g(\014elds)g(are)h(set)g(to)g(default)g(v)-5 │ │ │ │ b(alues:)61 b Fl(nfront)p Fm(,)41 b Fl(neqns)p Fm(,)h │ │ │ │ Fl(nentD)p Fm(,)d Fl(nentL)p Fm(,)h Fl(nentU)f Fm(and)227 │ │ │ │ 1636 y Fl(nlocks)29 b Fm(are)i(set)g(to)g(zero.)41 b(Fiv)m(e)32 │ │ │ │ b(scalars)f(are)g(set)g(to)g(their)f(default)h(v)-5 b(alues,)1155 │ │ │ │ 1841 y Fl(type)480 b Fm(=)99 b Fl(SPOOLES)p 2339 1841 │ │ │ │ @@ -5612,17 +5621,17 @@ │ │ │ │ (exits.)111 5111 y(2.)46 b Fl(int)h(FrontMtx_neqns)d(\()k(FrontMtx)d │ │ │ │ (*frontmtx)g(\))j(;)227 5259 y Fm(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 Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)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 Fm(8)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 111 399 a Fm(3.)46 b Fl(Tree)h(*)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 995 4 v │ │ │ │ +1177 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 111 399 a Fm(3.)46 b Fl(Tree)h(*)g │ │ │ │ (FrontMtx_frontTree)c(\()48 b(FrontMtx)d(*frontmtx)g(\))j(;)227 │ │ │ │ 552 y Fm(This)30 b(metho)s(d)g(returns)f(the)h Fl(Tree)g │ │ │ │ Fm(ob)5 b(ject)31 b(for)f(the)h(fron)m(ts.)227 706 y │ │ │ │ Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(frontmtx)e │ │ │ │ Fm(is)j Fl(NULL)p Fm(,)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 Fl(void)h │ │ │ │ (FrontMtx_initialFrontDim)o(ensi)o(ons)41 b(\()48 b(FrontMtx)d │ │ │ │ @@ -5690,24 +5699,24 @@ │ │ │ │ (submatrix)f Fk(D)3073 5155 y Fj(J)n(;J)3179 5141 y Fm(.)227 │ │ │ │ 5294 y Fh(Err)-5 b(or)31 b(che)-5 b(cking:)38 b Fm(If)27 │ │ │ │ b Fl(frontmtx)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g Fl(J)f │ │ │ │ Fm(is)h(not)g(in)g Fl([0,nfront\))p Fm(,)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 1034 4 v 1215 100 a Fl(FrontMtx)29 │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i │ │ │ │ -(FrontMtx_upperMtx)43 b(\()k(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g │ │ │ │ -(K)g(\))h(;)227 554 y Fm(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 │ │ │ │ -Fk(U)3087 568 y Fj(J)n(;K)3212 554 y Fm(.)48 b(If)32 │ │ │ │ -b Fk(K)k Fm(=)29 b Fk(nf)10 b(r)s(ont)p Fm(,)227 667 │ │ │ │ -y(then)30 b(the)h(ob)5 b(ject)31 b(con)m(taining)h Fk(U)1370 │ │ │ │ -682 y Fj(J)n(;@)t(J)1547 667 y Fm(is)e(returned.)227 │ │ │ │ +TeXDict begin 9 8 bop 91 100 995 4 v 1176 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(9)66 399 y(10.)46 │ │ │ │ +b Fl(SubMtx)g(*)i(FrontMtx_upperMtx)43 b(\()k(FrontMtx)f(*frontmtx,)f │ │ │ │ +(int)i(J,)g(int)g(K)g(\))h(;)227 554 y Fm(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 Fk(U)3087 568 y Fj(J)n(;K)3212 │ │ │ │ +554 y Fm(.)48 b(If)32 b Fk(K)k Fm(=)29 b Fk(nf)10 b(r)s(ont)p │ │ │ │ +Fm(,)227 667 y(then)30 b(the)h(ob)5 b(ject)31 b(con)m(taining)h │ │ │ │ +Fk(U)1370 682 y Fj(J)n(;@)t(J)1547 667 y Fm(is)e(returned.)227 │ │ │ │ 823 y Fh(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fm(If)24 │ │ │ │ b Fl(frontmtx)e Fm(is)i Fl(NULL)p Fm(,)f(or)h(if)g Fl(J)f │ │ │ │ Fm(is)h(not)h(in)e Fl([0,nfront\))p Fm(,)g(or)h(if)g │ │ │ │ Fl(K)g Fm(is)g(not)g(in)f Fl([0,nfront])p Fm(,)227 936 │ │ │ │ y(an)31 b(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ (exits.)66 1134 y(11.)46 b Fl(SubMtx)g(*)i(FrontMtx_lowerMtx)43 │ │ │ │ b(\()k(FrontMtx)f(*frontmtx,)f(int)i(K,)g(int)g(J)g(\))h(;)227 │ │ │ │ @@ -5772,17 +5781,17 @@ │ │ │ │ b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ Fl(IVL)e Fm(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 Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fm(If)30 b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)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 Fm(10)p 182 100 1011 4 │ │ │ │ -v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f(18,)h │ │ │ │ -(2025)p 2889 100 V 0 399 a Fb(1.2.3)112 b(Initialization)39 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 0 399 a Fb(1.2.3)112 b(Initialization)39 │ │ │ │ b(metho)s(ds)111 604 y Fm(1.)46 b Fl(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 Fm(This)23 │ │ │ │ b(metho)s(d)h(initializes)i(the)e(ob)5 b(ject,)26 b(allo)s(cating)h │ │ │ │ @@ -5850,21 +5859,21 @@ │ │ │ │ (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 Fl(Chv)p 1317 │ │ │ │ 5248 V 34 w(zero\(\))p Fm(.)227 5407 y Fh(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(11)111 399 y(2.)46 b Fl(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 │ │ │ │ +TeXDict begin 11 10 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(11)111 399 y(2.)46 │ │ │ │ +b Fl(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 │ │ │ │ (*msgFile)g(\))h(;)227 996 y Fm(This)32 b(metho)s(d)g(is)h(called)h │ │ │ │ (during)e(the)h(serial,)h(m)m(ultithreaded)f(and)g(MPI)f │ │ │ │ (factorizations)k(when)31 b(fron)m(t)i Fl(J)227 1109 │ │ │ │ y Fm(is)e(visited)g(during)e(the)h(b)s(ottom-up)g(tra)m(v)m(ersal)j(of) │ │ │ │ @@ -5923,17 +5932,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 Fh(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1011 │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ -(18,)h(2025)p 2889 100 V 111 399 a Fm(8.)46 b Fl(ChvList)g(*)i │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 111 399 a Fm(8.)46 b Fl(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 Fm(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 Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ @@ -6001,54 +6010,54 @@ │ │ │ │ b(.)227 5098 y Fh(Err)j(or)34 b(che)-5 b(cking:)40 b │ │ │ │ Fm(None)31 b(presen)m(tly)-8 b(.)66 5294 y(13.)46 b Fl │ │ │ │ (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 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(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 Fl(frontJ)227 511 y Fm(in)m(to)f(a)g │ │ │ │ -Fl(Chv)e Fm(ob)5 b(ject)27 b(obtained)f(from)f(the)i │ │ │ │ -Fl(chvmanager)c Fm(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 Fl(K)p Fm(,)g(its)h(paren)m(t,)i(found)c(in)h(the)h │ │ │ │ -Fl(postponedlist)c Fm(ob)5 b(ject.)39 b(The)23 b Fl(frontJ)f │ │ │ │ -Fm(ob)5 b(ject)25 b(is)e(unc)m(hanged)227 737 y(b)m(y)31 │ │ │ │ -b(this)f(metho)s(d.)227 891 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)66 1087 │ │ │ │ -y(14.)46 b Fl(FrontMtx_storeFront)d(\()k(FrontMtx)f(*frontmtx,)f(Chv)i │ │ │ │ -(*frontJ,)e(IV)i(*pivotsizesIV,)1277 1200 y(double)f(droptol,)g(int)h │ │ │ │ -(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 1354 y Fm(This)35 │ │ │ │ -b(metho)s(d)g(is)g(used)f(to)i(store)g(the)g(eliminated)g(ro)m(ws)f │ │ │ │ -(and)g(columns)g(of)h(the)f(curren)m(t)g(fron)m(t)h Fl(frontJ)227 │ │ │ │ -1467 y Fm(in)m(to)c(the)e(factor)i(matrix)e(storage.)227 │ │ │ │ -1621 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ -b(presen)m(tly)-8 b(.)0 1900 y Fb(1.2.5)112 b(Serial)39 │ │ │ │ -b(F)-9 b(actorization)37 b(metho)s(d)0 2100 y Fm(There)j(are)g(t)m(w)m │ │ │ │ -(o)i(factorization)h(metho)s(ds:)60 b(the)40 b(\014rst)g(is)g(for)g │ │ │ │ -(factoring)h(a)g(matrix)g Fk(A)f Fm(stored)g(in)g(a)h │ │ │ │ -Fl(DInpMtx)0 2213 y Fm(ob)5 b(ject,)32 b(the)e(second)h(factors)g(a)f │ │ │ │ -(linear)h(com)m(bination)h Fk(A)20 b Fm(+)g Fk(\033)s(B)35 │ │ │ │ -b Fm(stored)c(in)f(a)h Fl(DPencil)d Fm(ob)5 b(ject.)111 │ │ │ │ -2460 y(1.)46 b Fl(Chv)h(*)h(FrontMtx_factorInpMtx)42 │ │ │ │ -b(\()47 b(FrontMtx)f(*frontmtx,)f(InpMtx)h(*inpmtx,)f(double)h(tau,) │ │ │ │ -1134 2573 y(double)g(droptol,)g(ChvManager)f(*chvmanager,)f(int)j │ │ │ │ -(*perror,)1134 2686 y(double)f(cpus[],)g(int)h(stats[],)93 │ │ │ │ -b(int)47 b(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 2799 │ │ │ │ -y(Chv)f(*)h(FrontMtx_factorPencil)42 b(\()47 b(FrontMtx)f(*frontmtx,)f │ │ │ │ -(Pencil)h(*pencil,)f(double)h(tau,)1134 2912 y(double)g(droptol,)g │ │ │ │ -(ChvManager)f(*chvmanager,)f(int)j(*perror,)1134 3025 │ │ │ │ -y(double)f(cpus[],)g(int)h(stats[],)93 b(int)47 b(msglvl,)f(FILE)h │ │ │ │ -(*msgFile)e(\))j(;)227 3179 y Fm(These)41 b(t)m(w)m(o)i(serial)g │ │ │ │ -(factorization)h(metho)s(ds)c(factor)j(a)f(matrix)g Fk(A)f │ │ │ │ -Fm(\(stored)h(in)f Fl(inpmtx)p Fm(\))f(or)i(a)g(matrix)227 │ │ │ │ -3292 y(p)s(encil)28 b Fk(A)15 b Fm(+)g Fk(\033)s(B)33 │ │ │ │ +TeXDict begin 13 12 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(13)227 399 y(This)27 │ │ │ │ +b(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 │ │ │ │ +Fl(frontJ)227 511 y Fm(in)m(to)f(a)g Fl(Chv)e Fm(ob)5 │ │ │ │ +b(ject)27 b(obtained)f(from)f(the)i Fl(chvmanager)c Fm(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 Fl(K)p Fm(,)g(its)h(paren)m(t,) │ │ │ │ +i(found)c(in)h(the)h Fl(postponedlist)c Fm(ob)5 b(ject.)39 │ │ │ │ +b(The)23 b Fl(frontJ)f Fm(ob)5 b(ject)25 b(is)e(unc)m(hanged)227 │ │ │ │ +737 y(b)m(y)31 b(this)f(metho)s(d.)227 891 y Fh(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 │ │ │ │ +b(.)66 1087 y(14.)46 b Fl(FrontMtx_storeFront)d(\()k(FrontMtx)f │ │ │ │ +(*frontmtx,)f(Chv)i(*frontJ,)e(IV)i(*pivotsizesIV,)1277 │ │ │ │ +1200 y(double)f(droptol,)g(int)h(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ +1354 y Fm(This)35 b(metho)s(d)g(is)g(used)f(to)i(store)g(the)g │ │ │ │ +(eliminated)g(ro)m(ws)f(and)g(columns)g(of)h(the)f(curren)m(t)g(fron)m │ │ │ │ +(t)h Fl(frontJ)227 1467 y Fm(in)m(to)c(the)e(factor)i(matrix)e │ │ │ │ +(storage.)227 1621 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fm(None)31 b(presen)m(tly)-8 b(.)0 1900 y Fb(1.2.5)112 │ │ │ │ +b(Serial)39 b(F)-9 b(actorization)37 b(metho)s(d)0 2100 │ │ │ │ +y Fm(There)j(are)g(t)m(w)m(o)i(factorization)h(metho)s(ds:)60 │ │ │ │ +b(the)40 b(\014rst)g(is)g(for)g(factoring)h(a)g(matrix)g │ │ │ │ +Fk(A)f Fm(stored)g(in)g(a)h Fl(DInpMtx)0 2213 y Fm(ob)5 │ │ │ │ +b(ject,)32 b(the)e(second)h(factors)g(a)f(linear)h(com)m(bination)h │ │ │ │ +Fk(A)20 b Fm(+)g Fk(\033)s(B)35 b Fm(stored)c(in)f(a)h │ │ │ │ +Fl(DPencil)d Fm(ob)5 b(ject.)111 2460 y(1.)46 b Fl(Chv)h(*)h │ │ │ │ +(FrontMtx_factorInpMtx)42 b(\()47 b(FrontMtx)f(*frontmtx,)f(InpMtx)h │ │ │ │ +(*inpmtx,)f(double)h(tau,)1134 2573 y(double)g(droptol,)g(ChvManager)f │ │ │ │ +(*chvmanager,)f(int)j(*perror,)1134 2686 y(double)f(cpus[],)g(int)h │ │ │ │ +(stats[],)93 b(int)47 b(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 │ │ │ │ +2799 y(Chv)f(*)h(FrontMtx_factorPencil)42 b(\()47 b(FrontMtx)f │ │ │ │ +(*frontmtx,)f(Pencil)h(*pencil,)f(double)h(tau,)1134 │ │ │ │ +2912 y(double)g(droptol,)g(ChvManager)f(*chvmanager,)f(int)j(*perror,) │ │ │ │ +1134 3025 y(double)f(cpus[],)g(int)h(stats[],)93 b(int)47 │ │ │ │ +b(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 3179 y Fm(These)41 │ │ │ │ +b(t)m(w)m(o)i(serial)g(factorization)h(metho)s(ds)c(factor)j(a)f │ │ │ │ +(matrix)g Fk(A)f Fm(\(stored)h(in)f Fl(inpmtx)p Fm(\))f(or)i(a)g │ │ │ │ +(matrix)227 3292 y(p)s(encil)28 b Fk(A)15 b Fm(+)g Fk(\033)s(B)33 │ │ │ │ b Fm(\(stored)28 b(in)g Fl(pencil)p Fm(\).)38 b(The)28 │ │ │ │ b Fl(tau)f Fm(parameter)h(is)g(used)f(when)g(piv)m(oting)i(is)f │ │ │ │ (enabled,)h(eac)m(h)227 3405 y(en)m(try)j(in)f Fk(U)42 │ │ │ │ b Fm(and)31 b Fk(L)g Fm(\(when)g(nonsymmetric\))h(will)g(ha)m(v)m(e)h │ │ │ │ (magnitude)f(less)f(than)h(or)f(equal)i(to)f Fl(tau)p │ │ │ │ Fm(.)43 b(The)227 3518 y Fl(droptol)35 b Fm(parameter)i(is)f(used)g │ │ │ │ (when)g(the)g(fron)m(ts)h(are)g(stored)f(in)h(a)g(sparse)f(format,)i │ │ │ │ @@ -6079,42 +6088,43 @@ │ │ │ │ (ulating)i(up)s(dates)d(from)h(descenden)m(ts.)337 5107 │ │ │ │ y Fi(\210)45 b Fl(cpus[3])29 b Fm(|)h(time)h(sp)s(en)m(t)f(assem)m │ │ │ │ (bling)h(p)s(ostp)s(oned)e(data.)337 5257 y Fi(\210)45 │ │ │ │ b Fl(cpus[4])29 b Fm(|)h(time)h(sp)s(en)m(t)f(to)h(factor)g(the)g(fron) │ │ │ │ m(ts.)337 5407 y Fi(\210)45 b Fl(cpus[5])29 b Fm(|)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 Fm(14)p 182 100 1011 │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ -(18,)h(2025)p 2889 100 V 337 399 a Fi(\210)45 b Fl(cpus[6])29 │ │ │ │ -b Fm(|)h(time)h(sp)s(en)m(t)f(to)h(store)g(the)g(factor)g(en)m(tries.) │ │ │ │ -337 550 y Fi(\210)45 b Fl(cpus[7])29 b Fm(|)h(miscellaneous)i(time.)337 │ │ │ │ -701 y Fi(\210)45 b Fl(cpus[8])29 b Fm(|)h(total)i(time)f(in)f(the)h │ │ │ │ -(metho)s(d.)227 900 y(On)f(return,)f(the)i Fl(stats[])d │ │ │ │ -Fm(v)m(ector)k(is)f(\014lled)f(with)g(the)h(follo)m(wing)g │ │ │ │ -(information.)337 1098 y Fi(\210)45 b Fl(stats[0])28 │ │ │ │ -b Fm(|)j(n)m(um)m(b)s(er)e(of)h(piv)m(ots.)337 1249 y │ │ │ │ -Fi(\210)45 b Fl(stats[1])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(piv)m(ot)i │ │ │ │ -(tests.)337 1401 y Fi(\210)45 b Fl(stats[2])28 b Fm(|)j(n)m(um)m(b)s │ │ │ │ -(er)e(of)h(dela)m(y)m(ed)i(ro)m(ws)e(and)g(columns.)337 │ │ │ │ -1552 y Fi(\210)45 b Fl(stats[3])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m │ │ │ │ -(tries)h(in)f Fk(D)s Fm(.)337 1704 y Fi(\210)45 b Fl(stats[4])28 │ │ │ │ -b Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f Fk(L)p │ │ │ │ -Fm(.)337 1855 y Fi(\210)45 b Fl(stats[5])28 b Fm(|)j(n)m(um)m(b)s(er)e │ │ │ │ -(of)h(en)m(tries)h(in)f Fk(U)10 b Fm(.)227 2054 y Fh(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)41 b Fm(If)30 b Fl(frontmtx)p │ │ │ │ -Fm(,)e Fl(pencil)p Fm(,)h Fl(cpus)g Fm(or)i Fl(stats)e │ │ │ │ -Fm(is)h Fl(NULL)p Fm(,)g(or)g(if)g Fl(msglvl)47 b(>)g(0)30 │ │ │ │ -b Fm(and)g Fl(msgFile)227 2167 y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g │ │ │ │ -(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)0 │ │ │ │ -2450 y Fb(1.2.6)112 b(QR)38 b(factorization)f(utilit)m(y)h(metho)s(ds) │ │ │ │ -111 2652 y Fm(1.)46 b Fl(void)h(FrontMtx_QR_setup)c(\()k(FrontMtx)f │ │ │ │ -(*frontmtx,)f(InpMtx)h(*mtxA,)g(IVL)h(**prowsIVL,)1420 │ │ │ │ -2765 y(int)g(**pfirstnz,)e(int)i(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ -2920 y Fm(This)27 b(metho)s(d)g(sets)g(up)f(the)i Fl(rowsIVL)d │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 337 399 a Fi(\210)45 b │ │ │ │ +Fl(cpus[6])29 b Fm(|)h(time)h(sp)s(en)m(t)f(to)h(store)g(the)g(factor)g │ │ │ │ +(en)m(tries.)337 550 y Fi(\210)45 b Fl(cpus[7])29 b Fm(|)h │ │ │ │ +(miscellaneous)i(time.)337 701 y Fi(\210)45 b Fl(cpus[8])29 │ │ │ │ +b Fm(|)h(total)i(time)f(in)f(the)h(metho)s(d.)227 900 │ │ │ │ +y(On)f(return,)f(the)i Fl(stats[])d Fm(v)m(ector)k(is)f(\014lled)f │ │ │ │ +(with)g(the)h(follo)m(wing)g(information.)337 1098 y │ │ │ │ +Fi(\210)45 b Fl(stats[0])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(piv)m(ots.) │ │ │ │ +337 1249 y Fi(\210)45 b Fl(stats[1])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h │ │ │ │ +(piv)m(ot)i(tests.)337 1401 y Fi(\210)45 b Fl(stats[2])28 │ │ │ │ +b Fm(|)j(n)m(um)m(b)s(er)e(of)h(dela)m(y)m(ed)i(ro)m(ws)e(and)g │ │ │ │ +(columns.)337 1552 y Fi(\210)45 b Fl(stats[3])28 b Fm(|)j(n)m(um)m(b)s │ │ │ │ +(er)e(of)h(en)m(tries)h(in)f Fk(D)s Fm(.)337 1704 y Fi(\210)45 │ │ │ │ +b Fl(stats[4])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f │ │ │ │ +Fk(L)p Fm(.)337 1855 y Fi(\210)45 b Fl(stats[5])28 b │ │ │ │ +Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f Fk(U)10 │ │ │ │ +b Fm(.)227 2054 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ +b Fm(If)30 b Fl(frontmtx)p Fm(,)e Fl(pencil)p Fm(,)h │ │ │ │ +Fl(cpus)g Fm(or)i Fl(stats)e Fm(is)h Fl(NULL)p Fm(,)g(or)g(if)g │ │ │ │ +Fl(msglvl)47 b(>)g(0)30 b Fm(and)g Fl(msgFile)227 2167 │ │ │ │ +y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g │ │ │ │ +(and)g(the)h(program)f(exits.)0 2450 y Fb(1.2.6)112 b(QR)38 │ │ │ │ +b(factorization)f(utilit)m(y)h(metho)s(ds)111 2652 y │ │ │ │ +Fm(1.)46 b Fl(void)h(FrontMtx_QR_setup)c(\()k(FrontMtx)f(*frontmtx,)f │ │ │ │ +(InpMtx)h(*mtxA,)g(IVL)h(**prowsIVL,)1420 2765 y(int)g(**pfirstnz,)e │ │ │ │ +(int)i(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 2920 y │ │ │ │ +Fm(This)27 b(metho)s(d)g(sets)g(up)f(the)i Fl(rowsIVL)d │ │ │ │ Fm(and)i Fl(firstnz[])e Fm(data)j(structures.)39 b(The)27 │ │ │ │ b(address)f(of)i Fl(rowsIVL)d Fm(is)227 3033 y(placed)32 │ │ │ │ b(in)g Fl(*prowsIVL)d Fm(and)i(the)h(address)f(of)h Fl(firstnz)e │ │ │ │ Fm(is)i(placed)g(in)f Fl(*pfirstnz)p Fm(.)43 b(List)32 │ │ │ │ b Fl(J)f Fm(of)h Fl(rowsIVL)227 3146 y Fm(con)m(tains)26 │ │ │ │ b(the)g(ro)m(ws)e(of)i Fk(A)f Fm(that)g(will)g(b)s(e)g(assem)m(bled)g │ │ │ │ (in)m(to)h(fron)m(t)f Fl(J)p Fm(.)g(The)f(leading)i(column)f(with)f(a)i │ │ │ │ @@ -6151,118 +6161,119 @@ │ │ │ │ (*msgFile)e(\))j(;)227 5294 y Fm(This)37 b(metho)s(d)g(creates)h(an)g │ │ │ │ Fl(A2)e Fm(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 Fk(A)h Fm(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 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(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 Fh(Err)j(or)28 b(che)-5 b(cking:)36 b Fm(If)23 │ │ │ │ -b Fl(frontmtx)p Fm(,)f Fl(mtxA)p Fm(,)h Fl(rowsIVL)p │ │ │ │ -Fm(,)e Fl(firstnz)p Fm(,)i Fl(colmap)e Fm(or)j Fl(workDV)d │ │ │ │ -Fm(is)i Fl(NULL)p Fm(,)f(or)i(if)f Fl(msglvl)227 773 │ │ │ │ -y(>)48 b(0)30 b Fm(and)g Fl(msgFile)e Fm(is)i Fl(NULL)p │ │ │ │ -Fm(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ -(exits.)111 957 y(4.)46 b Fl(void)h(FrontMtx_QR_storeFront)42 │ │ │ │ -b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(A2)g(*frontJ,)1659 │ │ │ │ -1070 y(int)g(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 1218 │ │ │ │ -y Fm(This)29 b(metho)s(d)f(tak)m(es)j(as)e(input)g Fl(frontJ)p │ │ │ │ -Fm(,)e(the)j(fron)m(t)f(in)g(trap)s(ezoidal)h(or)g(triangular)f(form.) │ │ │ │ -40 b(It)29 b(scales)i(the)227 1331 y(strict)j(upp)s(er)c(triangle)k(or) │ │ │ │ -f(trap)s(ezoid)g(b)m(y)f(the)h(diagonal)h(en)m(tries,)g(then)e(squares) │ │ │ │ -g(the)h(diagonal)h(en)m(tries.)227 1444 y(\(This)27 b(transforms)f │ │ │ │ -Fk(R)987 1411 y Fj(T)1041 1444 y Fk(R)i Fm(in)m(to)f(\()p │ │ │ │ -Fk(U)1425 1411 y Fj(T)1494 1444 y Fm(+)13 b Fk(I)7 b │ │ │ │ -Fm(\))p Fk(D)s Fm(\()p Fk(I)20 b Fm(+)13 b Fk(U)d Fm(\))27 │ │ │ │ -b(or)g Fk(R)2229 1411 y Fj(H)2296 1444 y Fk(R)g Fm(in)m(to)h(\()p │ │ │ │ -Fk(U)2680 1411 y Fj(H)2760 1444 y Fm(+)13 b Fk(I)7 b │ │ │ │ -Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)13 b Fk(U)d Fm(\))26 │ │ │ │ -b(for)h(our)f(solv)m(es.\))227 1557 y(It)31 b(then)f(stores)h(the)f(en) │ │ │ │ -m(tries)h(in)m(to)h(the)e(factor)i(matrix.)227 1705 y │ │ │ │ -Fh(Err)-5 b(or)39 b(che)-5 b(cking:)50 b Fm(If)34 b Fl(frontmtx)f │ │ │ │ -Fm(or)j Fl(frontJ)d Fm(is)i Fl(NULL)p Fm(,)g(or)g(if)g │ │ │ │ -Fl(msglvl)46 b(>)i(0)35 b Fm(and)f Fl(msgFile)f Fm(is)j │ │ │ │ -Fl(NULL)p Fm(,)e(an)227 1818 y(error)c(message)i(is)e(prin)m(ted)g(and) │ │ │ │ -g(the)g(program)h(exits.)111 2002 y(5.)46 b Fl(Chv)h(*)h │ │ │ │ -(FrontMtx_QR_storeUpdate)41 b(\()48 b(FrontMtx)d(*frontmtx,)g(int)i(J,) │ │ │ │ -g(A2)g(*frontJ,)1755 2115 y(ChvManager)e(*chvmanager,)f(int)j(msglvl,)f │ │ │ │ -(FILE)g(*msgFile)g(\))h(;)227 2263 y Fm(This)33 b(metho)s(d)f(tak)m(es) │ │ │ │ -j(as)f(input)e Fl(frontJ)p Fm(,)g(the)h(fron)m(t)h(in)f(trap)s(ezoidal) │ │ │ │ -h(or)g(triangular)f(form.)49 b(It)34 b(extracts)227 2376 │ │ │ │ -y(the)j(up)s(date)f(matrix,)j(stores)e(the)g(en)m(tries)g(in)f(a)h │ │ │ │ -Fl(Chv)f Fm(ob)5 b(ject,)39 b(and)e(returns)e(the)i Fl(Chv)e │ │ │ │ -Fm(ob)5 b(ject.)61 b(en)m(tries,)227 2489 y(then)30 b(squares)g(the)h │ │ │ │ -(diagonal)h(en)m(tries.)227 2638 y Fh(Err)-5 b(or)35 │ │ │ │ +TeXDict begin 15 14 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(15)227 399 y(and)27 │ │ │ │ +b(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 Fh(Err)j(or)28 │ │ │ │ +b(che)-5 b(cking:)36 b Fm(If)23 b Fl(frontmtx)p Fm(,)f │ │ │ │ +Fl(mtxA)p Fm(,)h Fl(rowsIVL)p Fm(,)e Fl(firstnz)p Fm(,)i │ │ │ │ +Fl(colmap)e Fm(or)j Fl(workDV)d Fm(is)i Fl(NULL)p Fm(,)f(or)i(if)f │ │ │ │ +Fl(msglvl)227 773 y(>)48 b(0)30 b Fm(and)g Fl(msgFile)e │ │ │ │ +Fm(is)i Fl(NULL)p Fm(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ +(the)g(program)g(exits.)111 957 y(4.)46 b Fl(void)h │ │ │ │ +(FrontMtx_QR_storeFront)42 b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)g │ │ │ │ +(A2)g(*frontJ,)1659 1070 y(int)g(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ +1218 y Fm(This)29 b(metho)s(d)f(tak)m(es)j(as)e(input)g │ │ │ │ +Fl(frontJ)p Fm(,)e(the)j(fron)m(t)f(in)g(trap)s(ezoidal)h(or)g │ │ │ │ +(triangular)f(form.)40 b(It)29 b(scales)i(the)227 1331 │ │ │ │ +y(strict)j(upp)s(er)c(triangle)k(or)f(trap)s(ezoid)g(b)m(y)f(the)h │ │ │ │ +(diagonal)h(en)m(tries,)g(then)e(squares)g(the)h(diagonal)h(en)m │ │ │ │ +(tries.)227 1444 y(\(This)27 b(transforms)f Fk(R)987 │ │ │ │ +1411 y Fj(T)1041 1444 y Fk(R)i Fm(in)m(to)f(\()p Fk(U)1425 │ │ │ │ +1411 y Fj(T)1494 1444 y Fm(+)13 b Fk(I)7 b Fm(\))p Fk(D)s │ │ │ │ +Fm(\()p Fk(I)20 b Fm(+)13 b Fk(U)d Fm(\))27 b(or)g Fk(R)2229 │ │ │ │ +1411 y Fj(H)2296 1444 y Fk(R)g Fm(in)m(to)h(\()p Fk(U)2680 │ │ │ │ +1411 y Fj(H)2760 1444 y Fm(+)13 b Fk(I)7 b Fm(\))p Fk(D)s │ │ │ │ +Fm(\()p Fk(I)21 b Fm(+)13 b Fk(U)d Fm(\))26 b(for)h(our)f(solv)m(es.\)) │ │ │ │ +227 1557 y(It)31 b(then)f(stores)h(the)f(en)m(tries)h(in)m(to)h(the)e │ │ │ │ +(factor)i(matrix.)227 1705 y Fh(Err)-5 b(or)39 b(che)-5 │ │ │ │ +b(cking:)50 b Fm(If)34 b Fl(frontmtx)f Fm(or)j Fl(frontJ)d │ │ │ │ +Fm(is)i Fl(NULL)p Fm(,)g(or)g(if)g Fl(msglvl)46 b(>)i(0)35 │ │ │ │ +b Fm(and)f Fl(msgFile)f Fm(is)j Fl(NULL)p Fm(,)e(an)227 │ │ │ │ +1818 y(error)c(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h │ │ │ │ +(exits.)111 2002 y(5.)46 b Fl(Chv)h(*)h(FrontMtx_QR_storeUpdate)41 │ │ │ │ +b(\()48 b(FrontMtx)d(*frontmtx,)g(int)i(J,)g(A2)g(*frontJ,)1755 │ │ │ │ +2115 y(ChvManager)e(*chvmanager,)f(int)j(msglvl,)f(FILE)g(*msgFile)g │ │ │ │ +(\))h(;)227 2263 y Fm(This)33 b(metho)s(d)f(tak)m(es)j(as)f(input)e │ │ │ │ +Fl(frontJ)p Fm(,)g(the)h(fron)m(t)h(in)f(trap)s(ezoidal)h(or)g │ │ │ │ +(triangular)f(form.)49 b(It)34 b(extracts)227 2376 y(the)j(up)s(date)f │ │ │ │ +(matrix,)j(stores)e(the)g(en)m(tries)g(in)f(a)h Fl(Chv)f │ │ │ │ +Fm(ob)5 b(ject,)39 b(and)e(returns)e(the)i Fl(Chv)e Fm(ob)5 │ │ │ │ +b(ject.)61 b(en)m(tries,)227 2489 y(then)30 b(squares)g(the)h(diagonal) │ │ │ │ +h(en)m(tries.)227 2638 y Fh(Err)-5 b(or)35 b(che)-5 b(cking:)41 │ │ │ │ +b Fm(If)31 b Fl(frontmtx)p Fm(,)e Fl(frontJ)g Fm(or)i │ │ │ │ +Fl(chvmanager)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g Fl(msglvl)46 │ │ │ │ +b(>)i(0)31 b Fm(and)f Fl(msgFile)227 2751 y Fm(is)h Fl(NULL)p │ │ │ │ +Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ +(exits.)0 3015 y Fb(1.2.7)112 b(Serial)39 b Fa(QR)f Fb(F)-9 │ │ │ │ +b(actorization)38 b(metho)s(d)111 3210 y Fm(1.)46 b Fl(void)h │ │ │ │ +(FrontMtx_QR_factor)c(\()k(FrontMtx)f(*frontmtx,)f(InpMtx)h(*mtxA,)1468 │ │ │ │ +3323 y(ChvManager)f(*chvmanager,)g(double)h(cpus[],)1468 │ │ │ │ +3436 y(double)g(*pfacops,)93 b(int)47 b(msglvl,)f(FILE)h(*msgFile)e(\)) │ │ │ │ +j(;)227 3584 y Fm(This)38 b(metho)s(d)f(computes)i(the)f(\()p │ │ │ │ +Fk(U)1465 3551 y Fj(T)1546 3584 y Fm(+)25 b Fk(I)7 b │ │ │ │ +Fm(\))p Fk(D)s Fm(\()p Fk(I)33 b Fm(+)25 b Fk(U)10 b │ │ │ │ +Fm(\))39 b(factorization)i(of)d Fk(A)2867 3551 y Fj(T)2922 │ │ │ │ +3584 y Fk(A)h Fm(if)f Fk(A)g Fm(is)g(real)h(or)f(\()p │ │ │ │ +Fk(U)3736 3551 y Fj(H)3829 3584 y Fm(+)227 3697 y Fk(I)7 │ │ │ │ +b Fm(\))p Fk(D)s Fm(\()p Fk(I)36 b Fm(+)28 b Fk(U)10 │ │ │ │ +b Fm(\))43 b(factorization)i(of)e Fk(A)1471 3664 y Fj(H)1538 │ │ │ │ +3697 y Fk(A)g Fm(if)f Fk(A)h Fm(is)g(complex.)77 b(The)42 │ │ │ │ +b Fl(chvmanager)e Fm(ob)5 b(ject)43 b(manages)h(the)227 │ │ │ │ +3810 y(w)m(orking)31 b(storage.)42 b(On)30 b(return,)f(the)i │ │ │ │ +Fl(cpus[])d Fm(v)m(ector)k(is)f(\014lled)f(as)h(follo)m(ws.)337 │ │ │ │ +3994 y Fi(\210)45 b Fl(cpus[0])29 b Fm({)h(setup)g(time,)i(time)f(to)g │ │ │ │ +(compute)g(the)f Fl(rowsIVL)e Fm(and)i Fl(firstnz[])e │ │ │ │ +Fm(ob)5 b(jects)337 4137 y Fi(\210)45 b Fl(cpus[1])29 │ │ │ │ +b Fm({)h(time)h(to)h(initialize)g(and)e(load)h(the)g(staircase)h │ │ │ │ +(matrices)337 4279 y Fi(\210)45 b Fl(cpus[2])29 b Fm({)h(time)h(to)h │ │ │ │ +(factor)f(the)g(matrices)337 4422 y Fi(\210)45 b Fl(cpus[3])29 │ │ │ │ +b Fm({)h(time)h(to)h(scale)f(and)f(store)h(the)g(factor)g(en)m(tries) │ │ │ │ +337 4564 y Fi(\210)45 b Fl(cpus[4])29 b Fm({)h(time)h(to)h(store)f(the) │ │ │ │ +f(up)s(date)g(en)m(tries)337 4706 y Fi(\210)45 b Fl(cpus[5])29 │ │ │ │ +b Fm({)h(miscellaneous)i(time)337 4849 y Fi(\210)45 b │ │ │ │ +Fl(cpus[6])29 b Fm({)h(total)j(time)227 5033 y(On)28 │ │ │ │ +b(return,)g Fl(*pfacops)f Fm(con)m(tains)i(the)g(n)m(um)m(b)s(er)f(of)g │ │ │ │ +(\015oating)i(p)s(oin)m(t)f(op)s(erations)g(done)f(b)m(y)h(the)g │ │ │ │ +(factoriza-)227 5146 y(tion.)227 5294 y Fh(Err)-5 b(or)35 │ │ │ │ b(che)-5 b(cking:)41 b Fm(If)31 b Fl(frontmtx)p Fm(,)e │ │ │ │ Fl(frontJ)g Fm(or)i Fl(chvmanager)d Fm(is)j Fl(NULL)p │ │ │ │ Fm(,)f(or)h(if)g Fl(msglvl)46 b(>)i(0)31 b Fm(and)f Fl(msgFile)227 │ │ │ │ -2751 y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted) │ │ │ │ -g(and)g(the)h(program)f(exits.)0 3015 y Fb(1.2.7)112 │ │ │ │ -b(Serial)39 b Fa(QR)f Fb(F)-9 b(actorization)38 b(metho)s(d)111 │ │ │ │ -3210 y Fm(1.)46 b Fl(void)h(FrontMtx_QR_factor)c(\()k(FrontMtx)f │ │ │ │ -(*frontmtx,)f(InpMtx)h(*mtxA,)1468 3323 y(ChvManager)f(*chvmanager,)g │ │ │ │ -(double)h(cpus[],)1468 3436 y(double)g(*pfacops,)93 b(int)47 │ │ │ │ -b(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 3584 y Fm(This)38 │ │ │ │ -b(metho)s(d)f(computes)i(the)f(\()p Fk(U)1465 3551 y │ │ │ │ -Fj(T)1546 3584 y Fm(+)25 b Fk(I)7 b Fm(\))p Fk(D)s Fm(\()p │ │ │ │ -Fk(I)33 b Fm(+)25 b Fk(U)10 b Fm(\))39 b(factorization)i(of)d │ │ │ │ -Fk(A)2867 3551 y Fj(T)2922 3584 y Fk(A)h Fm(if)f Fk(A)g │ │ │ │ -Fm(is)g(real)h(or)f(\()p Fk(U)3736 3551 y Fj(H)3829 3584 │ │ │ │ -y Fm(+)227 3697 y Fk(I)7 b Fm(\))p Fk(D)s Fm(\()p Fk(I)36 │ │ │ │ -b Fm(+)28 b Fk(U)10 b Fm(\))43 b(factorization)i(of)e │ │ │ │ -Fk(A)1471 3664 y Fj(H)1538 3697 y Fk(A)g Fm(if)f Fk(A)h │ │ │ │ -Fm(is)g(complex.)77 b(The)42 b Fl(chvmanager)e Fm(ob)5 │ │ │ │ -b(ject)43 b(manages)h(the)227 3810 y(w)m(orking)31 b(storage.)42 │ │ │ │ -b(On)30 b(return,)f(the)i Fl(cpus[])d Fm(v)m(ector)k(is)f(\014lled)f │ │ │ │ -(as)h(follo)m(ws.)337 3994 y Fi(\210)45 b Fl(cpus[0])29 │ │ │ │ -b Fm({)h(setup)g(time,)i(time)f(to)g(compute)g(the)f │ │ │ │ -Fl(rowsIVL)e Fm(and)i Fl(firstnz[])e Fm(ob)5 b(jects)337 │ │ │ │ -4137 y Fi(\210)45 b Fl(cpus[1])29 b Fm({)h(time)h(to)h(initialize)g │ │ │ │ -(and)e(load)h(the)g(staircase)h(matrices)337 4279 y Fi(\210)45 │ │ │ │ -b Fl(cpus[2])29 b Fm({)h(time)h(to)h(factor)f(the)g(matrices)337 │ │ │ │ -4422 y Fi(\210)45 b Fl(cpus[3])29 b Fm({)h(time)h(to)h(scale)f(and)f │ │ │ │ -(store)h(the)g(factor)g(en)m(tries)337 4564 y Fi(\210)45 │ │ │ │ -b Fl(cpus[4])29 b Fm({)h(time)h(to)h(store)f(the)f(up)s(date)g(en)m │ │ │ │ -(tries)337 4706 y Fi(\210)45 b Fl(cpus[5])29 b Fm({)h(miscellaneous)i │ │ │ │ -(time)337 4849 y Fi(\210)45 b Fl(cpus[6])29 b Fm({)h(total)j(time)227 │ │ │ │ -5033 y(On)28 b(return,)g Fl(*pfacops)f Fm(con)m(tains)i(the)g(n)m(um)m │ │ │ │ -(b)s(er)f(of)g(\015oating)i(p)s(oin)m(t)f(op)s(erations)g(done)f(b)m(y) │ │ │ │ -h(the)g(factoriza-)227 5146 y(tion.)227 5294 y Fh(Err)-5 │ │ │ │ -b(or)35 b(che)-5 b(cking:)41 b Fm(If)31 b Fl(frontmtx)p │ │ │ │ -Fm(,)e Fl(frontJ)g Fm(or)i Fl(chvmanager)d Fm(is)j Fl(NULL)p │ │ │ │ -Fm(,)f(or)h(if)g Fl(msglvl)46 b(>)i(0)31 b Fm(and)f Fl(msgFile)227 │ │ │ │ 5407 y Fm(is)h Fl(NULL)p Fm(,)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 Fm(16)p 182 100 1011 │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ -(18,)h(2025)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 Fm(1.)46 b Fl(void)h(FrontMtx_postProcess)42 │ │ │ │ -b(\()48 b(FrontMtx)d(*frontmtx,)g(int)i(msglvl,)f(FILE)h(*msgFile)e(\)) │ │ │ │ -j(;)227 743 y Fm(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 │ │ │ │ -(and)227 969 y(upp)s(er)36 b(matrices,)41 b(and)c(up)s(dates)g(the)h │ │ │ │ -(blo)s(c)m(k)h(adjacency)f(ob)5 b(jects.)64 b(The)38 │ │ │ │ -b(c)m(hevron)g(submatrices)g Fk(L)3746 984 y Fj(@)t(J)5 │ │ │ │ -b(;J)227 1082 y Fm(and)30 b Fk(U)466 1097 y Fj(J)n(;@)t(J)643 │ │ │ │ -1082 y Fm(are)h(split)f(in)m(to)i Fk(L)1244 1096 y Fj(K)q(;J)1403 │ │ │ │ -1082 y Fm(and)d Fk(U)1641 1096 y Fj(J)n(;K)1797 1082 │ │ │ │ -y Fm(where)h Fk(K)c Fg(\\)20 b Fk(@)5 b(J)35 b Fg(6)p │ │ │ │ -Fm(=)25 b Fg(;)p Fm(.)227 1231 y Fh(Err)-5 b(or)33 b(che)-5 │ │ │ │ -b(cking:)39 b Fm(If)29 b Fl(frontmtx)d Fm(is)j Fl(NULL)p │ │ │ │ -Fm(,)f(or)h(if)g Fl(msglvl)e Fm(>)i(0)g(and)f Fl(msgFile)f │ │ │ │ -Fm(is)i Fl(NULL)p Fm(,)f(an)g(error)h(message)227 1344 │ │ │ │ -y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 0 399 a Fb(1.2.8)112 b(P)m(ostpro)s │ │ │ │ +(cessing)38 b(metho)s(ds)111 594 y Fm(1.)46 b Fl(void)h │ │ │ │ +(FrontMtx_postProcess)42 b(\()48 b(FrontMtx)d(*frontmtx,)g(int)i │ │ │ │ +(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 743 y Fm(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(and)227 969 y(upp)s(er)36 │ │ │ │ +b(matrices,)41 b(and)c(up)s(dates)g(the)h(blo)s(c)m(k)h(adjacency)f(ob) │ │ │ │ +5 b(jects.)64 b(The)38 b(c)m(hevron)g(submatrices)g Fk(L)3746 │ │ │ │ +984 y Fj(@)t(J)5 b(;J)227 1082 y Fm(and)30 b Fk(U)466 │ │ │ │ +1097 y Fj(J)n(;@)t(J)643 1082 y Fm(are)h(split)f(in)m(to)i │ │ │ │ +Fk(L)1244 1096 y Fj(K)q(;J)1403 1082 y Fm(and)d Fk(U)1641 │ │ │ │ +1096 y Fj(J)n(;K)1797 1082 y Fm(where)h Fk(K)c Fg(\\)20 │ │ │ │ +b Fk(@)5 b(J)35 b Fg(6)p Fm(=)25 b Fg(;)p Fm(.)227 1231 │ │ │ │ +y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)39 b Fm(If)29 b │ │ │ │ +Fl(frontmtx)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g Fl(msglvl)e │ │ │ │ +Fm(>)i(0)g(and)f Fl(msgFile)f Fm(is)i Fl(NULL)p Fm(,)f(an)g(error)h │ │ │ │ +(message)227 1344 y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ 1530 y(2.)46 b Fl(void)h(FrontMtx_permuteUpperAdj)41 │ │ │ │ b(\()48 b(FrontMtx)d(*frontmtx,)1755 1642 y(int)h(msglvl,)g(FILE)h │ │ │ │ (*msgFile)e(\))j(;)227 1755 y(void)f(FrontMtx_permuteLowerAdj)41 │ │ │ │ b(\()48 b(FrontMtx)d(*frontmtx,)1755 1868 y(int)h(msglvl,)g(FILE)h │ │ │ │ (*msgFile)e(\))j(;)227 2018 y Fm(These)28 b(metho)s(ds)g(are)h(called)g │ │ │ │ (during)e(the)i(p)s(ostpro)s(cessing)f(step,)h(where)e(they)i(p)s(erm)m │ │ │ │ (ute)f(the)g(upp)s(er)f(and)227 2130 y(lo)m(w)m(er)34 │ │ │ │ @@ -6313,18 +6324,18 @@ │ │ │ │ (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 Fl(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 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(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 │ │ │ │ +TeXDict begin 17 16 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(17)227 399 y(This)c(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 │ │ │ │ Fl(SubMtx)e Fm(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 Fh(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 │ │ │ │ b(.)111 878 y(2.)46 b Fl(void)h(FrontMtx_forwardVisit)42 │ │ │ │ b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(nrhs,)370 │ │ │ │ 991 y(int)g(*owners,)f(int)h(myid,)f(SubMtxManager)e(*mtxmanager,)h │ │ │ │ @@ -6391,17 +6402,17 @@ │ │ │ │ 5261 y Fj(J)578 5247 y Fm(:=)c Fk(Z)762 5261 y Fj(J)831 │ │ │ │ 5247 y Fg(\000)20 b Fk(U)984 5261 y Fj(J)n(;K)1109 5247 │ │ │ │ y Fk(X)1184 5261 y Fj(K)1283 5247 y Fm(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 Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ b(presen)m(tly)-8 b(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1011 │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ -(18,)h(2025)p 2889 100 V 111 399 a Fm(8.)46 b Fl(void)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 111 399 a Fm(8.)46 b Fl(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 Fm(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 Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ b(presen)m(tly)-8 b(.)0 1186 y Fb(1.2.10)113 b(Serial)38 │ │ │ │ @@ -6474,30 +6485,31 @@ │ │ │ │ b Fl(cpus[0])29 b Fm(|)h(set)h(up)e(the)i(solv)m(es)337 │ │ │ │ 5123 y Fi(\210)45 b Fl(cpus[1])29 b Fm(|)h(fetc)m(h)h(righ)m(t)g(hand)e │ │ │ │ (side)i(and)e(store)i(solution)337 5265 y Fi(\210)45 │ │ │ │ b Fl(cpus[2])29 b Fm(|)h(forw)m(ard)g(solv)m(e)337 5407 │ │ │ │ y Fi(\210)45 b Fl(cpus[3])29 b Fm(|)h(diagonal)i(solv)m(e)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 91 100 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(19)337 399 y Fi(\210)45 b Fl(cpus[4])29 │ │ │ │ -b Fm(|)h(bac)m(kw)m(ard)h(solv)m(e)337 551 y Fi(\210)45 │ │ │ │ -b Fl(cpus[5])29 b Fm(|)h(total)i(time)f(in)f(the)h(solv)m(e)g(metho)s │ │ │ │ -(d.)337 704 y Fi(\210)45 b Fl(cpus[6])29 b Fm(|)h(time)h(to)g(compute)g │ │ │ │ -Fk(A)1668 671 y Fj(T)1723 704 y Fk(B)k Fm(or)30 b Fk(A)2006 │ │ │ │ -671 y Fj(H)2074 704 y Fk(B)5 b Fm(.)337 856 y Fi(\210)45 │ │ │ │ -b Fl(cpus[7])29 b Fm(|)h(total)i(time.)227 1056 y Fh(Err)-5 │ │ │ │ -b(or)31 b(che)-5 b(cking:)38 b Fm(If)26 b Fl(frontmtx)p │ │ │ │ -Fm(,)g Fl(mtxA)p Fm(,)f Fl(mtxX)p Fm(,)h Fl(mtxB)g Fm(or)g │ │ │ │ -Fl(cpus)g Fm(is)g Fl(NULL)p Fm(,)g(or)h(if)f Fl(msglvl)f │ │ │ │ -Fm(>)i(0)g(and)f Fl(msgFile)227 1169 y Fm(is)31 b Fl(NULL)p │ │ │ │ -Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ -(exits.)0 1456 y Fb(1.2.12)113 b(Utilit)m(y)37 b(metho)s(ds)111 │ │ │ │ -1659 y Fm(1.)46 b Fl(IV)h(*)h(FrontMtx_colmapIV)43 b(\()k(FrontMtx)f │ │ │ │ +TeXDict begin 19 18 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(19)337 399 y Fi(\210)45 │ │ │ │ +b Fl(cpus[4])29 b Fm(|)h(bac)m(kw)m(ard)h(solv)m(e)337 │ │ │ │ +551 y Fi(\210)45 b Fl(cpus[5])29 b Fm(|)h(total)i(time)f(in)f(the)h │ │ │ │ +(solv)m(e)g(metho)s(d.)337 704 y Fi(\210)45 b Fl(cpus[6])29 │ │ │ │ +b Fm(|)h(time)h(to)g(compute)g Fk(A)1668 671 y Fj(T)1723 │ │ │ │ +704 y Fk(B)k Fm(or)30 b Fk(A)2006 671 y Fj(H)2074 704 │ │ │ │ +y Fk(B)5 b Fm(.)337 856 y Fi(\210)45 b Fl(cpus[7])29 │ │ │ │ +b Fm(|)h(total)i(time.)227 1056 y Fh(Err)-5 b(or)31 b(che)-5 │ │ │ │ +b(cking:)38 b Fm(If)26 b Fl(frontmtx)p Fm(,)g Fl(mtxA)p │ │ │ │ +Fm(,)f Fl(mtxX)p Fm(,)h Fl(mtxB)g Fm(or)g Fl(cpus)g Fm(is)g │ │ │ │ +Fl(NULL)p Fm(,)g(or)h(if)f Fl(msglvl)f Fm(>)i(0)g(and)f │ │ │ │ +Fl(msgFile)227 1169 y Fm(is)31 b Fl(NULL)p Fm(,)e(an)h(error)g(message) │ │ │ │ +i(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)0 1456 │ │ │ │ +y Fb(1.2.12)113 b(Utilit)m(y)37 b(metho)s(ds)111 1659 │ │ │ │ +y Fm(1.)46 b Fl(IV)h(*)h(FrontMtx_colmapIV)43 b(\()k(FrontMtx)f │ │ │ │ (*frontmtx)f(\))j(;)227 1772 y(IV)f(*)h(FrontMtx_rowmapIV)43 │ │ │ │ b(\()k(FrontMtx)f(*frontmtx)f(\))j(;)227 1928 y Fm(These)39 │ │ │ │ b(metho)s(ds)f(construct)h(and)f(return)g(an)h Fl(IV)f │ │ │ │ Fm(ob)5 b(ject)40 b(that)f(map)g(the)g(ro)m(ws)f(and)h(columns)f(to)i │ │ │ │ (the)227 2041 y(fron)m(ts)31 b(that)g(con)m(tains)g(them.)227 │ │ │ │ 2198 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ b(presen)m(tly)-8 b(.)111 2398 y(2.)46 b Fl(IV)h(*)h │ │ │ │ @@ -6546,19 +6558,19 @@ │ │ │ │ b Fl(frontmtx)p Fm(,)g Fl(pnneg)p Fm(,)g Fl(pnzero)f │ │ │ │ Fm(or)h Fl(pnpos)f Fm(is)h Fl(NULL)p Fm(,)g(or)g(if)h │ │ │ │ Fl(symmetryflag)31 b Fg(6)p Fm(=)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 Fl(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 Fm(20)p 182 100 1011 │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ -(18,)h(2025)p 2889 100 V 227 399 a Fm(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 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 227 399 a Fm(This)d(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 Fh(Err)-5 │ │ │ │ b(or)29 b(che)-5 b(cking:)37 b Fm(If)24 b Fl(frontmtx)e │ │ │ │ Fm(is)i Fl(NULL)p Fm(,)g(or)g(if)g Fl(type)f Fm(or)i │ │ │ │ Fl(symmetryflag)c Fm(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 │ │ │ │ 1053 y Fb(1.2.13)113 b(IO)37 b(metho)s(ds)111 1252 y │ │ │ │ Fm(1.)46 b Fl(int)h(FrontMtx_readFromFile)42 b(\()48 │ │ │ │ @@ -6633,26 +6645,27 @@ │ │ │ │ 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(fwrite)p Fm(,)f(zero)i(is)g(returned.)227 │ │ │ │ 5407 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 │ │ │ │ b Fl(frontmtx)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(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 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(21)111 399 y(7.)46 b Fl(int)h │ │ │ │ -(FrontMtx_writeForHumanEye)41 b(\()48 b(FrontMtx)d(*frontmtx,)g(FILE)i │ │ │ │ -(*fp)g(\))g(;)227 547 y Fm(This)36 b(metho)s(d)g(writes)h(a)g │ │ │ │ -Fl(FrontMtx)d Fm(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 │ │ │ │ -Fl(FrontMtx)p 617 660 29 4 v 32 w(writeStats\(\))41 b │ │ │ │ -Fm(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 Fl(1)f Fm(is)227 773 y(returned.)227 │ │ │ │ -921 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 │ │ │ │ -b Fl(frontmtx)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g │ │ │ │ +TeXDict begin 21 20 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(21)111 399 y(7.)46 │ │ │ │ +b Fl(int)h(FrontMtx_writeForHumanEye)41 b(\()48 b(FrontMtx)d │ │ │ │ +(*frontmtx,)g(FILE)i(*fp)g(\))g(;)227 547 y Fm(This)36 │ │ │ │ +b(metho)s(d)g(writes)h(a)g Fl(FrontMtx)d Fm(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 Fl(FrontMtx)p 617 660 │ │ │ │ +29 4 v 32 w(writeStats\(\))41 b Fm(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 Fl(1)f Fm(is)227 773 y(returned.)227 921 │ │ │ │ +y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 b │ │ │ │ +Fl(frontmtx)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g │ │ │ │ (message)h(is)f(prin)m(ted)f(and)h(zero)h(is)f(returned.)111 │ │ │ │ 1105 y(8.)46 b Fl(int)h(FrontMtx_writeStats)c(\()k(FrontMtx)f │ │ │ │ (*frontmtx,)f(FILE)h(*fp)h(\))h(;)227 1253 y Fm(The)30 │ │ │ │ b(header)g(and)g(statistics)i(are)f(written)g(to)g(a)f(\014le.)41 │ │ │ │ b(The)30 b(v)-5 b(alue)31 b Fl(1)f Fm(is)g(returned.)227 │ │ │ │ 1402 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 │ │ │ │ b Fl(frontmtx)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g │ │ │ │ @@ -6706,17 +6719,17 @@ │ │ │ │ 4980 y Fm(metho)s(d.)337 5122 y Fi(\210)45 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.) │ │ │ │ 337 5265 y Fi(\210)45 b Fm(The)30 b Fl(type)f Fm(parameter)i(sp)s │ │ │ │ (eci\014es)f(a)h(real)g(or)f(complex)h(linear)g(system.)500 │ │ │ │ 5407 y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 5407 │ │ │ │ V 32 w(REAL\))29 b Fm(for)h(real,)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1011 │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f │ │ │ │ -(18,)h(2025)p 2889 100 V 500 399 a Fe({)45 b Fl(type)i(=)g(2)h │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 972 4 │ │ │ │ +v 1154 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2928 100 V 500 399 a Fe({)45 b Fl(type)i(=)g(2)h │ │ │ │ (\(SPOOLES)p 1417 399 29 4 v 32 w(COMPLEX\))28 b Fm(for)i(complex.)337 │ │ │ │ 544 y Fi(\210)45 b Fm(The)30 b Fl(symmetryflag)d Fm(parameter)k(sp)s │ │ │ │ (eci\014es)f(the)h(symmetry)f(of)g(the)h(matrix.)500 │ │ │ │ 690 y Fe({)45 b Fl(type)i(=)g(0)h(\(SPOOLES)p 1417 690 │ │ │ │ V 32 w(SYMMETRIC\))28 b Fm(for)i Fk(A)g Fm(real)h(or)g(complex)g │ │ │ │ (symmetric,)500 820 y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p │ │ │ │ 1417 820 V 32 w(HERMITIAN\))28 b Fm(for)i Fk(A)g Fm(complex)h │ │ │ │ @@ -6786,19 +6799,19 @@ │ │ │ │ 5115 y Fi(\210)45 b Fl(n2)30 b Fm(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.)337 │ │ │ │ 5261 y Fi(\210)45 b Fl(n3)30 b Fm(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.)337 │ │ │ │ 5407 y Fi(\210)45 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.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(23)337 399 y Fi(\210)45 b Fm(The)30 │ │ │ │ -b Fl(nrhs)f Fm(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.)337 │ │ │ │ +TeXDict begin 23 22 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(23)337 399 y Fi(\210)45 │ │ │ │ +b Fm(The)30 b Fl(nrhs)f Fm(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.)337 │ │ │ │ 545 y Fi(\210)45 b Fm(The)30 b Fl(type)f Fm(parameter)i(sp)s(eci\014es) │ │ │ │ f(a)h(real)g(or)f(complex)h(linear)g(system.)500 691 │ │ │ │ y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 691 29 │ │ │ │ 4 v 32 w(REAL\))29 b Fm(for)h(real,)500 820 y Fe({)45 │ │ │ │ b Fl(type)i(=)g(2)h(\(SPOOLES)p 1417 820 V 32 w(COMPLEX\))28 │ │ │ │ b Fm(for)i(complex.)p eop end │ │ │ │ %%Page: 24 24 │ │ │ │ @@ -6886,16 +6899,16 @@ │ │ │ │ Fm(,)i(9)1992 5064 y Fl(FrontMtx)p 2382 5064 V 32 w │ │ │ │ (writeForHumanEye\(\))p Fm(,)d(20)1992 5178 y Fl(FrontMtx)p │ │ │ │ 2382 5178 V 32 w(writeStats\(\))p Fm(,)i(21)1992 5293 │ │ │ │ y Fl(FrontMtx)p 2382 5293 V 32 w(writeToBinaryFile\(\))p │ │ │ │ Fm(,)e(20)1992 5407 y Fl(FrontMtx)p 2382 5407 V 32 w(writeToFile\(\))p │ │ │ │ Fm(,)i(20)1905 5656 y(24)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 91 100 1011 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2796 100 V 1011 w Fm(25)0 399 y Fl(FrontMtx)p 390 399 │ │ │ │ -29 4 v 32 w(writeToFormattedFile\(\))p Fm(,)25 b(20)p │ │ │ │ -eop end │ │ │ │ +TeXDict begin 25 24 bop 91 100 972 4 v 1154 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)40 b Fh(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2836 100 V 972 w Fm(25)0 399 y Fl(FrontMtx)p │ │ │ │ +390 399 29 4 v 32 w(writeToFormattedFile\(\))p Fm(,)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 October 18, 2025 │ │ │ │ │ + 2 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 5 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 7 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 15 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 17 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 19 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 21 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 22 FrontMtx : DRAFT November 15, 2025 │ │ │ │ │ – 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 October 18, 2025 23 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 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 October 18, 2025 25 │ │ │ │ │ + FrontMtx : DRAFT November 15, 2025 25 │ │ │ │ │ FrontMtx writeToFormattedFile(), 20 │ │ ├── ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ ├── FrontTrees.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o FrontTrees.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -3347,30 +3347,31 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 70 /F put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3547,132 +3548,150 @@ │ │ │ │ 60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 │ │ │ │ 1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 │ │ │ │ F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 │ │ │ │ 1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C │ │ │ │ C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 │ │ │ │ 73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B │ │ │ │ E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 │ │ │ │ -2F2CF265A5AE5DF94A417B9C586F6B9C596D5A5CEFE74F770B8779D3CDEACF5E │ │ │ │ -4DEC459759D7D3D77E7B60A16227426FF8C81730EEBF03D84CCD2B72602D2A8F │ │ │ │ -76384DB473890FA5F27B754832C547717B04A1FC5EBFE112917604D7233B3B9F │ │ │ │ -FE133B09AAFC8C60E806F3A2A811EB19B57E9F174F71E74E1BF08845925D5CEE │ │ │ │ -D8B32184B962EEFF0432AE8F4ACD5D181C186B6C87AE283E6F3B6399730155B1 │ │ │ │ -34BC5A74637D22B4AC24A765F4CB1881306E9D114472DB2D8482D3E70456875D │ │ │ │ -74EC2A7E24F94C1B867EA193FADA6F132370A02A7F704404421DBBEEF4D377B0 │ │ │ │ -6FD3B44C4B53DF870E932BA700422DD125FC00D210197A2B78C149C9C3BF04A4 │ │ │ │ -E3EF6A6176E23204BCFB04D985B1196C831374A8CD31383AFB3C87043C72FA82 │ │ │ │ -A1B0ED2BA5E4D5BA203A2AA4BFD55326A66FCCDB12DCBD02B6ED0F28E45EECA8 │ │ │ │ -70BEDF7F2909377917D58E976F8283A3B798F7905E325CBCF79DC80AB64453B8 │ │ │ │ -5A622A384230B4229D6DE94BA7D1CFAAB8227EB9931552D0098567342D498AEA │ │ │ │ -D55F4826ED6ABA190A03260CF4D1B0C4836CE4EAD15879E10551DFD35A8C5E63 │ │ │ │ -97F7C2E5B1106EED3746A1716376B43FA6D812C42A0F4E7DC8228619785077D9 │ │ │ │ -91391138EA6A07CE358D213C09806D499A88D575358723E331CB230DD4CB1274 │ │ │ │ -7BDB660BA3129D27BE899A0764CA6BE06A84B08C9EA649010DAD65570A579F24 │ │ │ │ -1F3EB9F89B2155DDAF488C120BBE1D5076E650B4C5654ACB4DC2C72ED33769F8 │ │ │ │ -ED6B343D0711FB967996E7A9565B70A4C034294C82806EDD634136CE03248079 │ │ │ │ -1DA779C965AD668C8C5FFCBD07A47E02070040A5885DF629FFD3A7E76D5F0AFB │ │ │ │ -91FCB562AEEE089461296646262D0CA53DCCDEDE9A12AAFAC679D6F7DC8B56D0 │ │ │ │ -5BE898AE5E7B0CAD8627C449551A9482896F0A75D6329F11AC0936ED25638A94 │ │ │ │ -DF47760F13DEBEA5A2DFF0403F5AC6B146DD50C1A01821E8CFB0D4111B28BAA4 │ │ │ │ -374D9BF83C8FBA323F33672425C90A5953B273F8155890AC3D1975B19A78EC5E │ │ │ │ -53A64F6A76CC3CFFF8ECF9A5FE88628411D3B7D38A9ED260FECEE13F0A44E749 │ │ │ │ -756243095CB7BD5F06F2A501E50CA836641E4C8739AB78EB71F6A9A132F159DA │ │ │ │ -A6A5E936F0D3226DE9FDE9FFCD7C7C03A65503A9DC04DAE16579238FE6508F6A │ │ │ │ -3183BF1695FF0D94597702FCBA520FFE6DA2E96DECD16C306D1E66D98EB28F9F │ │ │ │ -81B5D3B7D2CD403CD11A9F785F0668A619845254EBEF399FF618A493CACC1153 │ │ │ │ -DB69293D25FB1328424D0F725268A48983514E537A24A5B15CFA6B6BF53D634D │ │ │ │ -DCCFA818DF91B2439B7B5717DC018C718BDADA6B803D26DBB545BC7A5C83486C │ │ │ │ -38E63B0B7A4FBA4BF962D23EE6D73EE6316496D3BE6169BDF9C9EBF567EE297D │ │ │ │ -AEB4AC336BF75AC8A82F2739F6074B0FEA017FC2D4A5BF90977CFD197DB27157 │ │ │ │ -872C908AFD2190A0D80439BAE0D50DBED9F8A10BE44C1F149A82019D579DA7FF │ │ │ │ -86EFAC7338394976AD56EBD2898737F734023B8990F21F7E965AEAC9796A8696 │ │ │ │ -B634F8BDED410B05B519DF9BDACBAE783C54D49205B274C269D50445791BCD81 │ │ │ │ -EB4F877E535ECC0573F5D70B2AE706C0ACB6DA313F725926E832341A65B12B21 │ │ │ │ -D566B2335AAA4249EEB3DC278F6C0CF361E535514AD8306FC13182D314F58DA2 │ │ │ │ -72A2C7AED0837D9F0860CC7B9C5D9F90BC975CD842D5853223CADF1D781A8354 │ │ │ │ -03B584F88E5F8D7505E5BBAC497001B805955DE01AF6B632AAFB38F5DC9BD9DA │ │ │ │ -C181432E0BC34FDB7299B56A9A237D456F5911F8F9B605C49B579435EE900CE9 │ │ │ │ -B89D026D4ACA25B1828051D3EDCA8D52D741FA4797942F9227920C569D3E596E │ │ │ │ -34001E5CEC9BD23E489C5BB5F95D19707E7DD00CF47570B3C067C8F77F0E30E3 │ │ │ │ -F22A058D1F10076D84F1CD21D2E7C539B1E85286A3A85C91BA31D690E47339EE │ │ │ │ -C517DE2B071092B62CDE9279ACC59480A8FDF759A5BF4D1D575977D8E29BF857 │ │ │ │ -85900ECB1132D8F6203437FD7B1C050AD809B4EC70F90E788BCBED920E44A2F3 │ │ │ │ -40A2FEB647D113ECDB20C85C001603543B5483C498EF62523A5788C3B5489E59 │ │ │ │ -68179D1B2B74428C18D7809EC8398BEF33A09124269D9568E8CDA413843B3A3A │ │ │ │ -7519FE2FBCA2E768D002DB471E2A88D4C78E87DC5ABC48D258106C0F1DEDE420 │ │ │ │ -4F5D97BAC879EFA5314EC67B2E86C3E90056383DAEBCA3E7D9D83CD541CDD548 │ │ │ │ -FCEA2298018E7C694127BE7A39791D2FC8E5106002731634EFD6609390C60A16 │ │ │ │ -31F932C0F85CF832DC901B51D67EF0D18644BFB8C21B2FBF4D1F750633B62372 │ │ │ │ -873BDB6C260A454C453E9EAB5BDE2FA10A84ED180169901688D9B3558E58B7E0 │ │ │ │ -6DA20004928A4FFA02DFDE27DD68E0F0C09379CDD6538E360562EFBC4F0DEB16 │ │ │ │ -CA1BB09D45847A0BD5999237C73050D2525C675B4EBBF221875C5EBCBD51F5BB │ │ │ │ -4620331636A1E681EEB5E510207C022BBB05B21B3A295ADCB6313B790318A7C0 │ │ │ │ -B7ED8C4A02F46C71B03C196D51DEC7D3E5512745A70001934DBC4827B52CFBFA │ │ │ │ -CE6ABE7E6CDC89C18A5B74E1864B7AD6E41D3C99BE62055DB7974A65663F20F6 │ │ │ │ -9B7DC47D10A7A9F18BCB5FF9CFEF793094786A8B030692AE2BFC1CF3B1D3BADE │ │ │ │ -3AE8F79F647B9DEDBD68B92C3ABDBABB81D80691ED54E85F044A7A77F4649B2F │ │ │ │ -BCEDA9A5B84ED8889D63E2C1401EDB6AE4AE3AD339C01BCE0FBB82C6A34EBA71 │ │ │ │ -A952C6D12F18E0FB4B32B0D2B8E174F05C5EFDABD4B046D148FF362C9DE802DA │ │ │ │ -E63C673F1295F0CD0F6418DB3A76B2FA986BD24C39E1432DBE405B33AA1D3C1C │ │ │ │ -8DC075A94F1C9F82B8D1AD4E8E1D51731275CE7D5F3496053E857CA44A94D37C │ │ │ │ -6647498685B8C3988CCD44B3E84D934BA847E514B7516C240852945573D6E5B7 │ │ │ │ -D8835B83562AD90DE9046F165886876B5D89E7FCB6B3FAB054DAED0A8BF4711E │ │ │ │ -FE3A7D64BD0B1E506F58C6A3686E80C78571F0AEAA80C58D174CE65270367A99 │ │ │ │ -4F7971BDE751CE6D294EB4B737D08C119F71B6DBC18E9309C5EC6218BC8E4893 │ │ │ │ -B2D70A2B0A36A226B7C4D82D941D228E0A8B9301F229A9F365044DDB3BBD5D3E │ │ │ │ -456AB25464B1313570436E0AADD107B6E177220F0B257C65F7F9DDBDB051BBC7 │ │ │ │ -8437AB568E5975AFD9C459503B0A7BBE9C1D6EFA6DDD7AACC10A694ABBB055D7 │ │ │ │ -DF7777375B2D20F7F684F8242E2AABE23D5D09DE119A19BA22E49C09745B6B31 │ │ │ │ -66DD51038CC66B6D354ADD83187A34D55A780868C9A265568617C24CFFA557FB │ │ │ │ -D80EE0D2A55BCA70FF6815C8212F9FC8C19C2655B76FC048029DB46194005B89 │ │ │ │ -6C42BAADA45EB03166A7B07FA73AB9BB614878705510CB71789D470F03C868E3 │ │ │ │ -24137C1BA456F2239782B738D57F441FE6A5D597B46777C352CE34BE55DAA6F6 │ │ │ │ -EC18725142C11CF91D361D79F1A81F45F0ACD9DC4273B73DAC515C3D4C45E438 │ │ │ │ -A54E95773EFA224F9C8CFD9C1357E1D0EBD5161F1B78904E690FD9262240903B │ │ │ │ -BB058327198421490F9CCB0D66DCECC7AFAE1D68DD4296379580F5C28D018040 │ │ │ │ -D85A9CCC55B27FE6A49F5E342B504B2F845FCE01BABE1CD39A83C5A955F0C907 │ │ │ │ -4E8D518E6967D67A3F5AD51DF6A3824BF31469F3A1CA8DDCABBA1A70E16D2F52 │ │ │ │ -3658CFB91B72800A9894E9C963927D1BA8B8239D29203772B30B51B2E69157DF │ │ │ │ -835E55FA590E03EAF1019EBEA53D3123EA2F39543A10F57C51644F1B07CA947A │ │ │ │ -8AB41E86FFB3F9C9B515B956B6348B9D80D55FC7F08F931FE5E87BB02EBA7F59 │ │ │ │ -B6BB32701216E798CDE9F5C9EBA5AB61A1E702E307829AD5BF7AA35C7D00C0FB │ │ │ │ -944A6CCB60C7AFC937C5B16CD4B6F3872AA99B9A75FBB67706AA98BAFEA02247 │ │ │ │ -7AF6C34024C9280F585D2E7DFF88D19B30F89239A8E522F831048DF04128F863 │ │ │ │ -48FB3A922EFDF8FA1BDAA265327FF1EDDABE82FC7506033DE0413DB2155879AE │ │ │ │ -E6D0652383593C4A608C29FAFD85D14AE789C4B30CB336F769212A3078C31920 │ │ │ │ -416462EC3EDAC2F7AB483B0806291AEFA8AF9BF5B7FB1AECF2B53272DEF71F7E │ │ │ │ -A07FC656ABB150DE2225E9B17CEB4AB19871C16E8A9491030D6820B8921AC965 │ │ │ │ -8A22262473D9E4757A0C12677CF74342A0E86CA14A0319C067644DFC866D961A │ │ │ │ -9C35BF2C4898FB8530CE80671C095DCA0AE666BC961A2320218F2BBD8D5FB2FB │ │ │ │ -CEE80579B3E1673D3F0C3646295A8D4086F12D3C97C4EBF5790952BFF543B03A │ │ │ │ -DE24198BE329BAC065069C94236618AD964ECF56A74FDFEC80E1ED44B77E9F4A │ │ │ │ -599F26ADC7DC8A32BCFEBFDB166CF5ABA2BE71E5E20A8194913E747815B90489 │ │ │ │ -E1D100013AC34EE367ACEDF0BA85AB0774D50180819B1B347ED8D8A5E7C855DB │ │ │ │ -A8A7A59FAF415086BA1196C96F04FE9F9225AEF179966971203B79EFAB8C7B74 │ │ │ │ -D725D5AA3B0D154B17A8EB5D16F2E43AA8E8C81908527A2F60812051C6FF5AB1 │ │ │ │ -98949FE7C59B1FD50BE5FD81EC3D397DA2983E846986C257D80E3736E4C28AC6 │ │ │ │ -07810CDA1C5413D66B2C8F057808605DDB5FB1368B2AC3293A10A333777D7A65 │ │ │ │ -16D14055CE750EDA4DFC58496B259A24479669E0785DEF9960876C1C33CECE4F │ │ │ │ -BC9041FAEF111DEFE87AA0B111F296858FEBFC51B2C6BD3B64796EA748673E29 │ │ │ │ -C7DEC2038EDCEAE2A3C5DC1B076B03EF60BA5AE70E6F3B91E7A541A5A0E7D856 │ │ │ │ -CE2EF368C9714E42220AC60114A5068F242107A3B166BD5CB5D8CFC94117B0B6 │ │ │ │ -70A6190039BD94F2BA141CAB6DF2134402CADB61D69E652E5AE36DB15E1F7BF7 │ │ │ │ -7E5C072F3D05B43F505A6C9DA3D3FCB1502AB3752F47C63E7BE808114BF7E2C4 │ │ │ │ -695C9453B008D69F53229E2414DAB72CA3FEAA8CD17AB48AC6E245336AFED7DE │ │ │ │ -4D64EEA3D1C8EE4CEAFF8E4BAD0AEE63034141640058359B1D43123466E30770 │ │ │ │ -134B61B5181E4F06DA46A96D1559FB1BA50BA0E2FF08840309F2213205FA9005 │ │ │ │ -CEE2A7D961F91ADA4A49E64C61AC2B3219C4B82912C1945BBAB6020D83622000 │ │ │ │ -198640F1640383B4FE9BF182E26CA82C9E8501B968E5685EA60B47BA7A8CA132 │ │ │ │ -45FB77524B0DDEA85A4FF8F406F7D7CF05965AB7DAFC2769A5FF24174568125A │ │ │ │ -52A47C8FB13C595CDC6674874066A02B8947E8E0E3A7E21246F083B15E85711E │ │ │ │ -75C80FD46CDCAF5A6A6F9C1E69E05734DBEEC9B29330E955CD3F6EC3430477B8 │ │ │ │ -B8F2C9CF14FF0DC389D15BAA7C4B06BA40E96205F0670A254DAC0C37DABD7653 │ │ │ │ -BCA05F704E35EBBAA15986251313CFD5E779D25C728CC48FDD4D1C057CF67BF1 │ │ │ │ -E567A10104CBE962F62A19481D9C1335879D3AC2D076CE0862222E14C3A15EF7 │ │ │ │ -481F9D85AAF1A6459657C71E174867F30B316691444A8B │ │ │ │ +2F2CF265A4E094BF8E56BDF529E8FF0649EF03063E72B0BCE9F013141F8D62DA │ │ │ │ +46B729E72BE7790A4CCE76813185B6D9D4D67BFEDF311BB29C4B24C0499FB161 │ │ │ │ +13F9F852F2C15C60438216CBE9BC5CBBC068A0CCE222B674F48A8E8B9C1F3980 │ │ │ │ +17B9A5EF8BAA5679F7D6212DE7034202A0758FA32010760DD18B75812BE917EB │ │ │ │ +A6D7538AFC9AD9B52D7FB64AFDCBF93E7A259756B6E5B9BF421E829032B0B9B6 │ │ │ │ +532327DC0AC3C84CFBC1E7AB62D3113892235AB8C5E06B9ED4DE87619014D121 │ │ │ │ +CB93A94E131BE8A5666742BC8A4A55C515831866499CECDC1CD65B310711EC1E │ │ │ │ +16719C4060617CF810EFBD29AD7ED8C600C5A5A514FF63D05CDB79E8B7F3287E │ │ │ │ +364A2088006E82BAC35EE1C95DD39BD16D50C26FA889B879CE56A3E02E6DA6CA │ │ │ │ +2BEA26EE8E974027A8E3CB2BF8524051645414BA621C61A22B83C594C9CFB223 │ │ │ │ +B30293D1B7E58F8A33087A504FACA94B6D1E29E30AFA84C3692A64C55A2BCC64 │ │ │ │ +08DEDBA3C08C02E68839D7F4BE7FAAA1E02C827318B197877AF9BCCE1672FEA3 │ │ │ │ +BE29CF70087D9173BFD000DD4A017C0A2DAECC5AF6087B2BA350D1878A5A28F3 │ │ │ │ +69D32483E9313AFFAFBC58467E9060722A237ADE5AB1277AD81CA46F4C961B3F │ │ │ │ +DFA1A6935CE12185CB35ECE23D3E794816EAD5145F477FBE824C0F0897FDEA08 │ │ │ │ +11CE02EDDD4B267C2613CED061A00B69BB7DA125058E7ECBD934C7E7BBC86873 │ │ │ │ +4631EE83B47CE83A4D156C193C0755D5E91438F660A3DB577C863662EF0841D1 │ │ │ │ +939DDC747B7995C76BA103919DE1937DEA40B571C1CA4A48B9D9C7B78DDC6F2E │ │ │ │ +615CF9403DF3BCE321EF1932E2F7EE17FE6F0C402F4DF304B9A1DB46B32FB4F1 │ │ │ │ +9444B496AC2EF8DBC323983FE3D5279BB682A2EC5318795A75C9AD2E0A94DB5A │ │ │ │ +69BA4D67D410D45D9C0851E976D75CF3FBE807DEDC3ECA4990994256B1012A91 │ │ │ │ +CC52EEB381F12FE24B7578E2ADAB4EF25D9D0FA3318BEFF0AABC613C3FC462B6 │ │ │ │ +00C69C22D6E9770394CCC68D60F04349FD12FC66D8FF8DC61E07E39122E27CDF │ │ │ │ +3E53FA42061430B43FE26F8DEE18CC578AAE977AE41DFE18388212516D0D66D8 │ │ │ │ +3DE54CD686D54B0E637FF98BF72164B02BAC5AE4D0E2AF2F8360E43938C78D37 │ │ │ │ +A8694F29EE7A2771ABB65F2423A19E6C0994C556A9290A008509EF021FA259BE │ │ │ │ +EDB8423EB4FCC8FC831BFBAB17ED556E3C87D0815215625964C008E483E8581E │ │ │ │ +497F4B43F054C6AF7E0952257565E2D9171D69DB8720B2B7604D423121ADD3EB │ │ │ │ +ECEC56F98DBE34FD695A2DCD508A696454A821101D7C843E1BC978F9F4A4BB6D │ │ │ │ +14F4A5B8789C6E396B5F7458F578EC2DA3F5D72510A7789B8771149DBD00E68E │ │ │ │ +CFB7C78BE6E1BEC9445E5DAB5DF491B3D75130078CC36F2FDB0BA8ECCE845DE2 │ │ │ │ +74448C489D768EB54CE9E25CE09387FC7EB74E79D433AC01582BC3A322CD12E7 │ │ │ │ +47F8E518A5DEBCA3E8E4DF661329FC27B71B2E414C3F56DE28ACB3A34035ACFE │ │ │ │ +6F209B294DE3529F2CDE5752740C592C509B462085547747DA829B271652C919 │ │ │ │ +EF7FB364ED07166688CD2C67781D173437B9487982F2C9B9414090361B6C9D12 │ │ │ │ +906F315A170F88DA04FA1E45C1CBB7F8CF3A4133B45ADF51C066AB56E35F75B7 │ │ │ │ +3E046E1E8A9B20CB89FC54B2D2CD259E9CDCFE1DA8E794025D7BB24D791B9F44 │ │ │ │ +5F2B3D19501A50D4028DE0266074F87E05452725F2CF0802A00C3222EFE93E43 │ │ │ │ +0AF586AA0B98110BF460C80104BD48D1DCC1EB6E5E4962FAF8E4DE20C3818B41 │ │ │ │ +534A9F9594D2CB51CBA1D90DA87D1848B5CECD4236899A8009DA6D6451EE574C │ │ │ │ +56722EC3CD4C3CD3A40D165D81CCA36FC6C111722FC7F5494B3B6EB778849A5A │ │ │ │ +83C33A6E3490846AA7C7A6ADA7600145A5BCD9D5A852CB1A4FDB02B2FBC48FC8 │ │ │ │ +256FE736DA6C6C7E4440B0BBF065176AD07D9131DA6FF8D59DF7DC721B1A4773 │ │ │ │ +CB2E4EBCF7018439791B2D2E7BB3AF2E7CCEB5D7AA5CE8D4FDE710C69E7DB543 │ │ │ │ +948E4E991916DD3581B87AE869BD2EA4DA441402E9B42960B240F8390B85A5EA │ │ │ │ +1D172875B131D1DD7FD4487C0AE595CA854B3073CF3E82D2F6BE6C18E1572B44 │ │ │ │ +0E9557C49B78209236A4C86E69AB371E2DAA6FD8634C685CDCE1294EE1D94D5B │ │ │ │ +1763CB82C50F77746713B399B1F846D3C4095E17786EA5DC7F516F22A84C8732 │ │ │ │ +3C1170863B5FD1D6CDAC54ABC2A289EC6A43C87698437012BAA163D1AE9BBED5 │ │ │ │ +6CE8E1A3D2E7FA785A2D96C4B15E1F9612529B63F8B175CF8F67556C78ECE321 │ │ │ │ +8EE83522074BD0C1A6966BCBABF67B52149100ACDF4DA4D3342AACED13A7AA50 │ │ │ │ +2D970557F59698569081DEDF15DD9E96643CCFB627C6862C08721DF1AF4175A0 │ │ │ │ +822FDD85E767B3A0050704F7A2AA2A85371F50BF8DD7B6BFB13C0C3C74744B67 │ │ │ │ +57EDDE086D228B6E4231D2B4665E605B8C2395787E88FA026622F45C24392415 │ │ │ │ +E0457051A0C0CE71C12B7E0313B36F96C13D03C9683B22C48311CB4CDECC976F │ │ │ │ +84D23250840C39AA478BE346BFF55DB6BC7E72A9B95D2DE4F5F44981AEF09653 │ │ │ │ +0106D804CC477892A36A192C0430BC514106E5F260F0210894D5863A079D7813 │ │ │ │ +4BF299FF93B4A73021651F5C20D09A1EF0A68BFAA877B6146C3D067E8FBF2C04 │ │ │ │ +2AE15380AFB52A8803A966A3574276BC1E4208F03FC0815D585E71EB94F2A17D │ │ │ │ +95F42EE128F9C96E30CDEF23ADC2FB2B6D3A0349B19A9CCFEB002640D36BB2C7 │ │ │ │ +362251C7A94A9CA6F00FF20B634446FACD1B7219DDEB832779CFFA49BBA1AFEC │ │ │ │ +236FB67126FE605F45C8D44220F853E8638DA2B29AF83EAC4415C83FBB845195 │ │ │ │ +1DB0C69928B68F6DDD80B5C55C71A55D5A3E1293617EF259BFF0718073366B62 │ │ │ │ +9EE9BD55FD99BC79A87B52C892B176799B7A3AF03494E773E537C9649891AE11 │ │ │ │ +6DAB1D627A16583B37D2C0B00C9EFC62F54614D21B175A2458F7E6760234D6B1 │ │ │ │ +0DEB8EE5088AD20D0BF32B3256436A1E7B3CB316D749DF0CFD43E438072C9B0E │ │ │ │ +5A98A30369B2FE0A278445735FA1BC053324062AB85EA3AE88D7FF6AB7BF48AA │ │ │ │ +C15188052A34D7787B8721C5CEB6CD0EA0DF5B45B0E2B45EE1DFBBC346BF3602 │ │ │ │ +21A006798519B871528FA34C8F1BB4C0DEA83C4CC7CC197B9D231D12BB0079F9 │ │ │ │ +E8BF4E435D2990C4F86B953810C65FE6767D005343BD61007ED33E5713928C0D │ │ │ │ +FBEA9F2EC53A2F35F65328FB85163B2E2D8F972AC632B0332FECE9E28D2EE877 │ │ │ │ +C919AFAE5377C9308B3B6199CD9A32DF34319C92794FE759D4657DD7AB44B8E5 │ │ │ │ +85065C84203542A2763565EE27EBFDD752B7FA2DE4EB38394A5080CD2516F9B8 │ │ │ │ +D8A1A1711E8A0ABEB35DC4F548884BAC750CB470B89E351E1B3435BC9A953060 │ │ │ │ +42DD49C53E3534CB0BE3A622D6C44C786ABB81E312050C4945F13095373FE08B │ │ │ │ +372C3B74B45738DC3C63D9C2D2E2CB67EC130DBE06265B64A0D672F7F811616E │ │ │ │ +E99B8512E4B9CB57F1A17318A48BF09D33E7113942885C6C4709A901497A015C │ │ │ │ +8EC9379DF5BA7D0A9F1060941B541F38DDB5A3D36C9CE525DDB862307AB473F0 │ │ │ │ +95C6E445A910DB40E2E2CD977489204F876F98639ED76BEED158DB3BE27BA921 │ │ │ │ +91471D0FCE024815553F398CF1B81C4D73954C48CADD93BB3502357E62B1EA8A │ │ │ │ +3A34672653C05AA2AB68EEAC94A153F5792EFEDE1AC43B41F0EBAC95DB55055A │ │ │ │ +0EF570963BD294743D00850EB3B8D20FEDDAA8D80425088E95AB202063D9ECA8 │ │ │ │ +46651CC6B240F8045629A96E070CE757B29E8C407E33B2BFA1A1BCD26F557EDB │ │ │ │ +245DE80EC0BAC321727A5040B14919657CE424CD10C7DBF1BF4D2E22933C091D │ │ │ │ +7A7F111402A2CB7DB2800FC273DC3DAE24DC26B773CDBC3653C935C58A4052ED │ │ │ │ +0101EE22EDD75FED767C29B729153740445D1350624A499ECB9947576EDB7D5B │ │ │ │ +AC00AE7CF2D02968811E2A45BF9B92B69B2B44F462677BCD288EA573088E8FA0 │ │ │ │ +E3CED7DE1E3E97FF3D8A41CB708B0C4BFF68E2F267426D0E9A5DA38DCDF0A7F4 │ │ │ │ +F1BB700041E0D362165D14A868BA9BE0ADA5231605AF5246D67F1DA0930B96F5 │ │ │ │ +54E62CE582D51EA55C9A19BFFCDD38472D8BB12A7E5D9A97EA41E8D09D759C7C │ │ │ │ +EB2FED7C5A4F25BDE144A97262DF635F2FEEEBF5960FC776D2D1493344E0F05E │ │ │ │ +ACCFADFE962E7C38126EAF076CD58C54E8C9680D3F3D4037E496CA22BED13C94 │ │ │ │ +3AD0491B0B2E29A8A3E7A8EF571A5DC9609D40147BE75DA674DD52821D29E33B │ │ │ │ +8E380D3977D489696649FB157CDD34940C9A4D8D10A44A083992C120602E47A5 │ │ │ │ +D806E7D88ED69BCBA71A75A7442F891A21C9B5ACA6194832A9EAFFADD819B07C │ │ │ │ +825C84005F4212594BEFF7E9D5BEBAF8E3F04B1FFD2B4AC977BE020A1F54C2DF │ │ │ │ +BA6628A6F47E50F610A9C1767686DFE0DEECD60C01DFB009FB8D31F776F63128 │ │ │ │ +A07BFD3341ADDE62E99464BD7811A6376DEE6930ED6CBC67A1A8154CFBAE82FE │ │ │ │ +121A843349FA4B7F4F2F9F594FC25FE5396C15225A9B17198E9BEE7744DCF92F │ │ │ │ +1E6742742C47BD7A5E63F4F1C4A1F4F07D487D0DF1E7E2D5AE4562CE364A40A9 │ │ │ │ +E46E36FCA6CD68C7F81F12AB8A741EB9D59372CA2DAE622B073F744E5AC0E8A0 │ │ │ │ +79653DB650778DBC7D457D6727FF82F670AAF69CDA0E10B97509689CFF5DCE27 │ │ │ │ +D610E9BF2BA2C1083541767F9D29FBFA2E6AB2E7B150545612D4DB4847167E57 │ │ │ │ +901A98032024CE4CA3C7D877F042E4A7E793748575FBE1E31A39782DCFE7BA46 │ │ │ │ +D9C66D8C16BEA91DFECAF7FE7049DE8DBD6D728E57DE4E634B6FDBCB3392C6AF │ │ │ │ +21DC1BFC18242E27D84153B80B5A7D156BB43CA7A768179D3ECC3A6954380596 │ │ │ │ +2284DD08E71FB1C471BE1C1D5500C0297E37054F6D87D9C142660140B95547A3 │ │ │ │ +9EE1637769A1DA6B5FF4803AA6B83AD3AFB46428787CE05A9231D60D67C27D68 │ │ │ │ +945F8A4AFAFF9CBBBA333ACE9FA8E452176DA4433DA0564454C370725C45D5CA │ │ │ │ +A5016C3D57DBC51139B57045ECE4C6D324A2922688AD23A98172BA1C6E0E8826 │ │ │ │ +E6083DC4BDADAAA592A9BFFE0EF3A8EFB07C449D896CF715C67AC5D7C1EA5D21 │ │ │ │ +6B3EABC31DC556D1D47FCAF9FD702F56DB0D26D23AD028FC42F2AF1DFEAF88C3 │ │ │ │ +41D661FAAA86151C0D12518DB6E58B227DC85A888E5DEA65AD55E15674D095F0 │ │ │ │ +2AB1DC89E4A49BD8220EF20F941C64C6D641924E474652D80509AFA6110893B5 │ │ │ │ +6BF93277A9AEFA9F747638F9A8441B68EC8429A6A4388CED08FD2148EC95F4E5 │ │ │ │ +3FD2A9E4E5A85396C3F6C1E78451F48A3D2686CAD73378E11B5BE1BF4EE0A89C │ │ │ │ +FAE1B080FE13A4A88E81834F325D6F0034B1638E68D6F59D2222E15E37D07728 │ │ │ │ +CDA8D0A5E72DE74C348CA8D592C90226A8209C6CA78F80D117DC2381602C45C0 │ │ │ │ +E2CAE2E72E05C76CD473C3413D41C60BEE2CD20ED75AA3164C517DA76AC9008C │ │ │ │ +D9CB62F0ED99FCA7F517D80E8645279AED47CC00E73EB1A7C82E43672C38EB3C │ │ │ │ +C2748510886DB749DF5328A3F9BE53E326406F09AFF77F9A0262F671122A436C │ │ │ │ +C292784E490ED3CAD1490C067F3EFCE6653EBE80EFDF8D2F0DFDDBAC49D2C34F │ │ │ │ +BDAE7A8FD0496721A26CA831D5E5DEEDB0B62C29A92317180F1DE60A3A97B7AB │ │ │ │ +A7EE470FC75016E1B4E9AD6B3074EDE57F9BBB84773FBF80BDA7EA14A58E451F │ │ │ │ +B9DB0602A793EA7AB10C11822DA93E1EDB335BD87C20A92D377ABEC491D1F28F │ │ │ │ +D49F92F98C1CE04F2E746BCF6D49D22F6C12F857C463E1F12A8731416F0D2257 │ │ │ │ +AD918525794D032A99B0421AD04A83D788E6CA59C4A681AA713B077FCD1002CC │ │ │ │ +7F1389C313D3C5B57F84DE47D70B573F14FC9F5C89E442385A2AD46E8517F9A1 │ │ │ │ +A38D118DE81906D9D7E5E76042B8851541E0727926A3DE6A09CED1963B61A934 │ │ │ │ +A0C31B390BAA4819BEC59D9BC5B3CB0368602A88432D60A785A23FF625EC5986 │ │ │ │ +31EC898A406509258F7EB76046F004CA9DC45ECA7F644F597610F2F3FA49533D │ │ │ │ +4E2C99AAD2536FD7D5052BFDB2262F3A6F81232B805C66B44BE53570CE3572D5 │ │ │ │ +BCB2CCC90602BF7BF5C7D2AB74196807182D85F2933229DE1210050EE4AFBAE6 │ │ │ │ +4B2C6CB57E6E657930DAF69E9EED2F7CE8F3580573680F25D395915AB77C83C6 │ │ │ │ +F3D7EE756570E5FE9E327286BF48485A6E2D847544D40A1B5FF156E742B1946C │ │ │ │ +6EEA │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6747,31 +6766,31 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 71 /G put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ @@ -6949,181 +6968,186 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ -98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ -7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ -5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ -8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ -9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ -CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ -AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8CC30D683C461 │ │ │ │ -AD9C4BDC977B04018DEACFD28A494A97EA00BAEA3EC87A55A4A443515B0AF101 │ │ │ │ -B7D5B60ACDA971F89630C5CC19878930158C50457F7C5A5BB17C51B847C0104F │ │ │ │ -FC6A24E01DFBBE38D0C2EB515147F88C5F8686799909779F22074AD8B869B5C5 │ │ │ │ -AB16E955F051B0CDE308F51C53C411B5A1F345AD252ACE84A5A4C362EA070955 │ │ │ │ -4FDC64B1E47CE12C3AECEEE68623F3C1CCB36CD3E55D11D97595874D7ECB1FC3 │ │ │ │ -1C3469C3045E80C6E99ECCBEF59092AE5E66CCAE3B89FB8037B6705151D7E62B │ │ │ │ -86809B7FEC9C7A242A8B369F6EF0D06F7CCF47D5458F960A2AA1FAABCABBACA9 │ │ │ │ -F2F33876F9C61FAC3B10FB6AD648E27DB482CDC5DFEBA251002DDA29686D7513 │ │ │ │ -88071E86B1D8C780863E73226E34B7636F6C9B0A1A3DCD1CCF175EA67B2740B0 │ │ │ │ -E78071E5FE6402317474D179D05EFE1ADB5000021C65B15E00610A0BF6A7DDBD │ │ │ │ -2BFF3B997734AE6FB52D4CE40010373491A70C412483250CE35ABEA693614EB9 │ │ │ │ -484ACD4D96D6393F0E9AE117DDAAA14205F3A7B1F655B2A26106016F32C7A5C1 │ │ │ │ -9C82315C947861F1FA5DC517C21F471FCA2AEF505B2C9984F71093EFCE59E581 │ │ │ │ -5B83212ED710AE172F026C8E091CC5FEE1C8D5026A43F3B42134B3D0C47B6FC3 │ │ │ │ -DDD73B9253FA9955932CFF099C5AB34641677E777B5CA37272CF5738EECC05BE │ │ │ │ -29C10056BB5338C6826561AA3369FB210065CFF850CB84BA6C47E027629CCA0D │ │ │ │ -A9B21FEAA0B44D521B1E4C945CC9D0F1FFA29EF87B516D7A7138818E4722A0D2 │ │ │ │ -23CB86BCED8A56157B02A26FA2E073D7D6D12C85782A6DEDF2C4197A22A45F4C │ │ │ │ -9C4670DB8A537E91FF6A05598716FB720C9086419D4CE4AA05D10E914E734BC4 │ │ │ │ -A7557643841476FCC0A5DEF317AC0E4159E4F73ED716A7F9B2025F687F5ABBF6 │ │ │ │ -E8512809C427C03C8EE1570EC2001DF551BDD5DB73004579846401AFEE84CAAE │ │ │ │ -3C34B369671A543B77E69392C29D4FB0E046352689EC1F35F36E3E259DA35743 │ │ │ │ -7C65C2DF42D5E0B416582B44939A4EBFDBEB939417D9DE7C27C92CA9B32B7FAD │ │ │ │ -65E1DEAD635CA05B32624B06CF99D75ABB9AE2CD328A99A29EA103946C94AFB2 │ │ │ │ -0220225C323071303A260A44FDA16EE98DFB108531232F063DDBBEB6CB011F0F │ │ │ │ -C9277E1854AF6F2CA84F1254847CB52355680048A7B69321D79941CB5317984F │ │ │ │ -8A2CAC941D1B4B02DEB64152FB8D9DF631D41F393B67AEE3526AC8F91B67DB0E │ │ │ │ -CFB19D319B6BFDA72CED58E3F213DD2E945C3BCC0CA70A629E9A9250F891BE97 │ │ │ │ -DEC8C5D8221F5D6689FF375E455BE3768EDB8436626E9E3FA09C8041F83C74BA │ │ │ │ -38E7ECE73E71311B9C0ABB5571CA95CD87F0EE072DDF65DA3414EA8F5FA0B5AA │ │ │ │ -BCC4C425F63D4B940BF9377C91F9E00D96C782926B75384413F606017BDF1E7E │ │ │ │ -863972A92DF89A57D5078B4F79C03623862E68D74AC7E464217DCA2D0AA1F260 │ │ │ │ -DAAFF729A4EE268B19FCC88AF68A70CEE6B00D7642A1B464CB90FEC415EF0286 │ │ │ │ -CD4BCE9A415C9CAA0139B552ABFC27E2E696752AEBCBB0128EBE65E3530D7BDE │ │ │ │ -71E57013976B41C2DBA14C79BD2D3A4223D2D3243608AEA9A842D818F977EE8B │ │ │ │ -EC8A655C9597DFE809BB68E0F89E5792101FFBE16AF1B98575A0A6B4634C7D2E │ │ │ │ -5EE774C8FE021C580436011CC22CA13548D0F54FDC153FD7DF6741774E11BC8D │ │ │ │ -D2C69C4758E242256C054618FA63086989E5C4B2A7DC521920523100E0997D07 │ │ │ │ -A48EBE35DD1332171836B5194EDFC7F049BF646B9BE7C0855A446D63A855EE0D │ │ │ │ -3D753BE66A6194455A1D4EEC7988D1BA34DC05A4EDFE9DE49E6D16DC5C69099C │ │ │ │ -0EC423A5D4037E900EA85BF1B801C8124045014A6FB8943B4678B97F1657BD30 │ │ │ │ -D7FFC70C97A863C0ABD2C8FC275A97FB8E7EDDFEA1AB805DEF48B4D41FEBAF2A │ │ │ │ -1ED158999CA195E7CDDB87DA048E9A99F04DD8E0DA2E682A2FE9038B091555FA │ │ │ │ -39D56A95D5A7371904F8943AF7CA648A174FE3B7E8BAA18F77DB5186AE54F67F │ │ │ │ -D8DCD004C8134A5F5DAB90A60953CDE6C88C6868CCCE090434CF0142A10C1B2F │ │ │ │ -0CB38A21BE63EF2AAFAB80674110A7C3CD8C50223011F5F0C8471BEC1A2A9275 │ │ │ │ -1C86D6AD0921C57E552241DD136479A659CFF8E13156C29E448D30479EFB88A3 │ │ │ │ -47DC1BE504D05DF2AA1F4AC28E84000F893E3250EB4B5148498146C211BA7D48 │ │ │ │ -B1C2B7FABC1B9BEEA91FA0FB8689D9072E675AADC6A4D23C7CA20474AB37BEBC │ │ │ │ -87071D1ADAD1B8207C00C4A2C17337BCB3A7F86822B8F986F0FD0DC74775D19A │ │ │ │ -6F17CBC0F3C0E0208704B443C277D47B8EAC51CFF7BEB62FC4377C7908E3A0AE │ │ │ │ -A13CCFC44AEFD9FB733BB6BE0F1F4F9AC650E3A7280E3F59CF96F5088A0295BE │ │ │ │ -B8633E71B86B1257C7CC0A4C6A5FE701E805BBDF3FAF155ECB672FCE8050AECF │ │ │ │ -9FCBE7552807EFCC5F5C23487C40D5C3769E3E0749982E88CBC2AA5C1A47CD0B │ │ │ │ -D5F45B019F2FA414135598AFD483C8FBA29F07E08FBA65B3D3038A5E342F5D58 │ │ │ │ -3A79DDC4D274B3DADB5A8304F8ED72CF2BFCD67580010C56757FB1480CCB63C8 │ │ │ │ -63EF95752E9810C9FE5E7923F300516EAC003A256FDBBC123DD5B48F7B1002AE │ │ │ │ -6EB46E3C28CD6045BCBA3DD90C6814E7F1542772CA2E9418E8942BF8A466ADF1 │ │ │ │ -82625CCE2BDB2E2BB5D97C0E085506C430E58709A4F1FAEC1AD6530AFD8D8194 │ │ │ │ -66D1705CEB26068A8CFCD7A9B878EF961B5543241E5637785CF34892841E8C26 │ │ │ │ -2C4A84C0A6131B2D3535966A3E40AF0E985659C9266514C2DBA1EA86B95EC1F0 │ │ │ │ -B4DABF9C566D7949AABA037F3E30F4E2D1C31619E65BC1478A7CFCE2E697B36C │ │ │ │ -33258800CEBF2730D812FD6149CCF34726E27211BB29120EE7CD21570A6FD669 │ │ │ │ -C50598FF694423412BDBCF70A6EE6B2D12F823FB88F241F4B4220701F7DDC062 │ │ │ │ -9F14B3F22844A35A548F71E0F64643FD98ECAF1B6961D9D5D0B6EE4E3274B14C │ │ │ │ -A06D6396F1D2F1D9FA5773E00537A5E8291BCCC2870ADB288EB9830A8E1F87E5 │ │ │ │ -598AB9CC81B4A803CFC7B177051A5B4F81B4E301C205310DC79034856AA13A16 │ │ │ │ -ED7DD08794ECB545E31FFE9EDEF88DDF2824D0AE624CB648EFA60990015872E4 │ │ │ │ -A071AE17CD5B20DBD256C0C797214873AB8AE114DE66A0FEDF8BCED4D2E5DA34 │ │ │ │ -A85ABF03721966AD53A3A1F2CC61F6CFB72631EAB1787512EAADE61E11161CA4 │ │ │ │ -0596C3931E9C602518D66C828240E1F46A3BBDE678EDA40CFE69FF136B8DAB8B │ │ │ │ -C180C41985ADC3BBAE88EC8D4CFC570B416DBC25D3E9BBF46341F9A28BD21FFB │ │ │ │ -F5E7D5A3E9D4BC6CCB2BF3DE8FCCEC2A8E4C41CF5BCFFE4A0544A38DA424B026 │ │ │ │ -034D109746BC7BF56712F5967D24EDF3BE7B4C00C1EEE2CFC0301F8D4A617E93 │ │ │ │ -A3A9FEA252D946B86D791C446CE09A2E9AEEAB25CAEE073F6269E7AEACA7023E │ │ │ │ -BAEF85B0D8BBF4C07FAF9AB02983504BD33219692F19BBC071FBE7AC49483D2C │ │ │ │ -D4751FAF8F95BDA8F401BC2AB3EE4C736B0D244D3BC0C16476FAE677FE320E51 │ │ │ │ -7608784AB794A645CA37B93253A07B444896FE3897B56C5644CC6CB9DB6BE371 │ │ │ │ -2C7E89CF806F37D3711F2560E004DDDC5CDB562F8F7ABC02CD350BF58994F35D │ │ │ │ -CDDFAEDF76F41B757BC1101B527FC584972B564D22420D2EAAA5C48132EF8C38 │ │ │ │ -CD97FAA63274C790DCC37B85BA78C0C2878DB0F1D23F064BAB74CEA461EF5CE5 │ │ │ │ -7425D2AE291D57D9933144574D127D985E9B83C385A6B761F0A6B75D38494701 │ │ │ │ -3BCC1D4AAEE4B46668DE04245CEEC7B5861BC1333001C36E03808D07E64D6FA3 │ │ │ │ -21711578570BC05B27F1EAD0831CC426FF490D5CE623D2A539789A86F67900A6 │ │ │ │ -E4A42820C56FC9CFC1BCFF8A1EDCAD2607C810A619501989420B2A0F91B238AE │ │ │ │ -514B57CBEE38642C9B3565C2D7E0917BE20E4BC2CFB3520F75AAE9EDFC9346EB │ │ │ │ -3C598B554015DE20B9E9A631039B093A556863CE5B2A1F08521F08FBECFB9A28 │ │ │ │ -FF37B68751248AE6704F6E16A1571AC1DD9228E87FDFBD4C0F8F26B257409AEF │ │ │ │ -13767B171BE8C82A7CE4163DBD6DABF75BE005319C50666C98A00B0F905D5738 │ │ │ │ -B520228D50736C7D4525FC38EFC9787732179264919E359FD821B8BDA584B7E3 │ │ │ │ -29A9D637C45CCE08D2103181F00DF80151F915DDCD0788B5BAEE17741F32932B │ │ │ │ -ECACFD1537920FF8A2EA0AA983176A75D4CE04E42DD3C142362E06868AB296E7 │ │ │ │ -1F1C87867329A6E15640F18C336EAC9AC373FA834B6E790A92C863A618DC4692 │ │ │ │ -CA402B5C7EEADED67DF4B3FD46815B2C609A053EE57E2E4F462BBA5CB6FBEBBD │ │ │ │ -AD4D6EF3400B256784C765D153832F1C1FF14265F28ACDED8694FA5BA23073D9 │ │ │ │ -11E50A1943624BAD5B68B449B817E0A9682707D5B26246419DF0B2604C0FD551 │ │ │ │ -F58FFA274CC7CBDFEAA4B3774FD8F09FBE0AC5DC3BCFAE405464ADFF7D190D95 │ │ │ │ -F4AD4FB5841ACD115CF9B52115C561F70AD00062A8E1217F4134792DE8EF051D │ │ │ │ -9CDECD881B186DC7E8ED9B0123D03D42AD470307F62E64E6DAE27613CF36DD92 │ │ │ │ -E2CF8880A9D1B1E43E8380E984EABF741185FBCBEFA5180044BF49EAD81321E6 │ │ │ │ -A863C5DFEFC9C038554AE488AE39AA8132636F82B693F52210652C62F0545CA4 │ │ │ │ -1A421459472BBCB8D514F3A7705700948327B90F1073A9C61480AEE9CCD5C347 │ │ │ │ -D11F49B599F7964C022FF7246DE826AFEA2CB29AC598907C5E141794D216481D │ │ │ │ -A55EBE81ED441E4547CECFBDF73C5DAEFAA02C244532A406A76EB5A89340B31E │ │ │ │ -3F57DB00F5237B0A6839F46C82AE99774555CDD15956BA11BA743A4F08CAF162 │ │ │ │ -B38516D820A2D138614E0512AAA6567B7F3E1893009FEBF69022B40043869CC3 │ │ │ │ -E15174637E6AC061F8554FB946D042B137A86D977BFC0AC68425F8BDB6AFEB43 │ │ │ │ -61BDBF9A1291C3754F64C3A7239DADB51FE8620D0606AB65A361E7EF74215BF0 │ │ │ │ -575FC9512D8668B08C6BD1099E4DA8FC2BCAC65FACAD37B5407144D04B73FE19 │ │ │ │ -3457ED5A6B59248BC6D7AF5681F64B8FCA0BE67B745EC4AABAEDC5CB894AF3BD │ │ │ │ -8F25528B2338B1572F7875CC54AEE9665B9F40B2750DB7E9AE9C66226925692F │ │ │ │ -579D344C2A7225EC6D9F903B883E9C15352238DDFBCD87AD746EC0311A2C7D28 │ │ │ │ -9D686F03CDD098BC8B8C6A8E32121A2E329CF383F006139C0EBE21B3696789F8 │ │ │ │ -6F31F72FC7BD25844123F404CF833DF759BAF560351C971695F0EF66FB2E7C7A │ │ │ │ -11A849CF26393C175F9079A2D9B1BDC641665DFE3617925EC254483176818324 │ │ │ │ -624FE1D27B9652E5B8D18FF4D71AB0CC510AED207ADEC1A874B538DE3CC57659 │ │ │ │ -7BB2834FE9C29D727692C852B53AEB670FC140D8899049F0137E3479329BFE41 │ │ │ │ -D010440FC7A0C1A8AF7E1C81FDF776E0DA7ABBF2B922C39DDD80DD05B811F35C │ │ │ │ -A43140E2C819E336CA6B6F0C932488495E1938C7503158D4D723E05C4386B461 │ │ │ │ -946B5D3E97F1AC3614DC8EB94B026F549CCD1ACCEE14833B3FA35EA0F9B8771F │ │ │ │ -709A53B7D26CC37CF4F252571F17988963678608AB402C4F7EB2093642D68F5D │ │ │ │ -51490E399E8467037E54E2B5870CBC85014CC15BAF5396FF09349C57DB0B5FEF │ │ │ │ -5C1ECF76D92EDBAFCE775E4550992D0456959E2C144ADE2912915F6C36431063 │ │ │ │ -93D8F2C135508CC0CB2C5490625629CB3DF16E5F2517077B43EF0243E45715E0 │ │ │ │ -9DBC7056EBDB0DC54A237DCA2B8D670BA42C7762AC27D370417A33CB5D20E56F │ │ │ │ -8B5A39E32EE873C36BE82C24E4424F079774323A63E552192DFCA37649642A34 │ │ │ │ -9BFF25E64EFEA841B8EA35A7DDC63DAD1266BCCC9B960822ADA75A81217DE527 │ │ │ │ -B544C0727CABB6384A0FCB8AA9436AC987F16D336CEF9F047E4086AF84A8729F │ │ │ │ -CA555B109ECAAA4CF9E228AF1D9176FA19E3C775B069594514F17C9578CD295A │ │ │ │ -1B26D030E825089BF3D4CEC107F70C2D264A3B840101BAC9269C24D148A3AC8F │ │ │ │ -9C87B10A7A8ABEBFB87274076DC69BEC509162C03CE799BEDE4F80E5CFFCA40B │ │ │ │ -18DF8911BD3480EADCC70EABA6113D1BA5B1F11F89717C0B12D48FD12CACC821 │ │ │ │ -67490B923A753CD18F1AA6D995EB10C1013E570B5099C1F9C939EF45E3D71C5C │ │ │ │ -3986BE5570A9EEC53725FF9901FFE089C9D09785BDDE82AB9B90173494280661 │ │ │ │ -1AAD28B258E60EE93FBE7D09C7E9A4DEB0D9C28C382EC350B24D3E26B6927272 │ │ │ │ -EE9FA03DEC64A27F367F2BDE6C3D1214DA0ACD6BB079E7C75CCE64A657C543DA │ │ │ │ -D1584173721CBC051E09C847FBDCDDD5DF3BBF62E3E2FD5E9526817358CDA723 │ │ │ │ -E55EB782D0C3D471EC5BEEA45C8AA3800955816E6C8E4AA0BD5EE6D6B62BECDC │ │ │ │ -5784978B667988816E83E51A87F86B267E8031D3FDAE85EDCFA0F7F155AB136C │ │ │ │ -53371DFD833ED75175BD7CE575A953DB9BE109100C83B2D2613CF62E236DCB64 │ │ │ │ -989FA9B5A59154600B77BB5AE7F316BDBF3BF8279D19D9E56CB4DEF15881A08A │ │ │ │ -3A6872C5A7F7483476BC45C3B281665C593D1E6594EC971D864AD7CF54F7E0FD │ │ │ │ -F84B5D532F221FD65D0138274CADCB03CC551EE6D55E7F16724CAA7D143452F5 │ │ │ │ -3A848081190B978FEC7FE4D8DDF8DB46FB40D2CEE74BFCCD75825CAD19D5F5D6 │ │ │ │ -3FF86B8A3F205ED68F7A1711B92005FA72A843B6AA4842D0FA2A9B51C599F9B5 │ │ │ │ -EF805F84328808443B77B5583016699A3FDC339BF5E949F13956F191E3EED360 │ │ │ │ -CC40E9EF0377F49C13AE3521AF1B2793A9EAB77F457C9C9188F9E348C10A881D │ │ │ │ -E6246E509EE419E26320AE8083A9AAB623A29A561B0F168BE711D3668B86BCAF │ │ │ │ -9EE429F5D46BE4CC8CCAE520CE9693EE49F8BBA498F6C38E17958582E4CB5A41 │ │ │ │ -8F47D273CF312F8BE4D2DBFC52FB68A1B1CFEFE8C704A701E00B3453B3D2889C │ │ │ │ -A94C015F3DFF9EC398BD29D233DD0F8180870EFB5B5768FBBF0FE5A87E24E485 │ │ │ │ -11B1D8860085A4DB3C9A0E008DF9395151A77B4B586C08D3944A7C8DD8E72C54 │ │ │ │ -6E39B69A6F712395C110E2CBB1742E43A92DB468C29B02B4703E53199B164DD1 │ │ │ │ -CABD1E96B0786E3E6A63CBA86B65A763B8CE3B06767791CB6768EFACC152E410 │ │ │ │ -CD9BF30094F9A54681F411C5F46841122E9BB2F681E4F75CBF50DC44F961350C │ │ │ │ -75E40FFA2DF3284ED49DDCA12FBADA1A507529BA0AF4BD2DC2681F0CAB94FB12 │ │ │ │ -F05F2881759D88CA1A2FBF926ED33259AF17261D11A88C9467100D1B4328B2DC │ │ │ │ -9A6C9A8F1ACA0E9DE45994C6B324EF3FB1BDF7E17CC30391975CB09D1800B2A4 │ │ │ │ -ED5A664B40 │ │ │ │ +BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ +7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ +2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ +54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ +2F3AD7547ECD7EB31108291A22BBC656F4D968DF891E4F87EF8FFE711A48FFD9 │ │ │ │ +94762E9918C42251D75772AC97BC15A4FF63D911D96AADA1CFAACE8D7001935C │ │ │ │ +9D7A0E6B35E1522780C2629D74057738FCE1BD41CD81D97BFD99D19FE03B2EFF │ │ │ │ +7B80B18DA5538D06A810DD315F31DE1331EDB82DAC760E6D8A855FCA3C8DD9E3 │ │ │ │ +61164D1386FCA2A0E7735AD69D7D9C6335F02064419B2296ADA17DC51A1E2195 │ │ │ │ +45FA3A158E075213ACD6607B07385F0D9F5F3C5C385624B43B10016D497FA569 │ │ │ │ +103C0A7CC701BF1558C587B15A8094D8E4524D74DC263BE9C5D1C96970A7324F │ │ │ │ +5514ED0576D79D5A7C8CC2859C832B0C5869166DA1DB8CAC589AC9EB48379CBB │ │ │ │ +33B840FDDADDDA5FFFC54678E901A33854A703C01C16945C99655BF1BEA74EDA │ │ │ │ +723B5FC176D9693ACA831C563CDB35C96C69575A510E33D5BB62701CDD2A759E │ │ │ │ +79C045541F511340C52E888907801E3548CEC3D2BC22BA40337B64A862929ECD │ │ │ │ +6D7C3F92B5C9AC4427AA6986DDB6A4A792F5FB6C969F50C5068CB2A5C9205191 │ │ │ │ +C19B22A4D9627E0304444D963FE2F3C6FE86818FF3A6B50130BCE2DF5DAE000D │ │ │ │ +658D411135E9DFB829BCF033FF4ABF1A3F3E6579537DB4D17EA4BF7F2F6ACA4D │ │ │ │ +6FA0858A09BDD229CF49A29030D280273CEACB3E72945F424D8AAF50E53187D0 │ │ │ │ +61786DA0263FE776D86CC33DF81D8C0325343665F9E6096EA072CD7F53C9FDA8 │ │ │ │ +74C647B762ABD1B70F4315247C13EAA98B41F80E9A3E62DC60C8FA85254E5239 │ │ │ │ +6F9D3EB9C81F9A4EB912388D4F56D56ECB4179475564C8665CDE38A211E518A0 │ │ │ │ +96C3577DF26ECCE018A8C4A547CA4D04E6CFF0CD0F55E9CB2B234226EA450CA2 │ │ │ │ +E00F1358FC983E109D4BF5B2A313FEC53F052CBB6AE8919BD0B6266CCCD054E6 │ │ │ │ +E032E60D464353F7D116A29875DF2BE318D0AF035ECC121628A04D8811E35A9F │ │ │ │ +20A9015A3699EFA7516A90DCE75E9F750E06119CB7ACA6083B4FBC84BE1AD91F │ │ │ │ +936E8C07237D300DEB08C6B1F8FDDD319A92FB432DD5DD69C5AED1166B6AE6AE │ │ │ │ +EA6BEF65BFEEC97CBDFB0AF00A6CF6A701E838A44665222BF08A35C3B5475CC4 │ │ │ │ +809D9EA6C88B59641FA858D350EAD8F6352AE314CAB0DFBCAE83DB1ED75E1F76 │ │ │ │ +21F274CA732B8FC2FD44A517057C03EFE10F06F1A231917A28EF29D7165FEF36 │ │ │ │ +9B0401538AB8B8B86A46EEB0847897876DEE0D2A8661B4D48F550D6CB79286E4 │ │ │ │ +3155792966FE5F7A49A6E18EB9595B9B6319729FB27C2797668948EABA9DCE4C │ │ │ │ +A1A8E2A08A3EEE3F131A59C301AD795D3DD88C5D6E9F1B40E1F4817DE06DFF2C │ │ │ │ +0BD1BCF2A51BCB1B827D06CBC195E18C635AAB4CC091B9682F5DB5127DB822D2 │ │ │ │ +0A3C35C4CD06EC08CB04E3FC95D75B1FC1F7487397635FDE8CA0E51395445668 │ │ │ │ +6D519A2590E32DDD145FABA7DDBF3B5B3DAC5D56B33C00CD2BAD7AC397DDCCD9 │ │ │ │ +2C7998A6BBFA9EFECAB1F9D62740A6C1E4110FBF2FA36B6344744F0ABC83B3C3 │ │ │ │ +0E3F0577643D888091E996C5AAC6619557BD6B9EDA89FF17BF6B78514AFF24C9 │ │ │ │ +756FD1CDABE4AE8B53AC4F13D1ED334937BC3FCBBCFF2010DC30D1898F2B4088 │ │ │ │ +A793E0FBF9BD1D554DDCC4EBF9738BB8E2AEDB978C82FEF53DA0F4063D99814D │ │ │ │ +B8120C39761A7699FB15D54CC789E96E77E7A37CB4D98BE71303BDF45D9FD75F │ │ │ │ +8D2B1B99B73FFE06A09307CB6913078D6FD69BC0A8114DEA331B0B22774066A5 │ │ │ │ +70A0B92BF9EF432828B4E9FF64DE4D15F95D34B3231B1580A098EB684BE5A40B │ │ │ │ +9CF8395222889E5550A986E66129178534A4F1D53C1335D24395B91188E80284 │ │ │ │ +4EF54916CD23740D5165C94CB9483FB141A6193BCAB3F7DBCEACE09DF8909DA6 │ │ │ │ +6E62D5D54FF88BAAA28780B8C8889757FBC99D4568025DD6E51887ECBEB1157E │ │ │ │ +4EEDEFAECF3E9BA33110F09E40BDC4093E46D46F7561E9E1B35ED22A53F60967 │ │ │ │ +A2B812241465D8FDE0127D6A641595A187CCA2D3BF4CEDE602C64EDF05D36365 │ │ │ │ +1CB1C04397F3D727F55CE5E4F866C288215D40C1F5870750B19EF7C22099E31F │ │ │ │ +FEE35D56E488E7C19E9162E795682FAE8B5D82B2B960AD0833DC37A150A2C058 │ │ │ │ +BD8E0537C49A2F70D9498626912D319F89AD07320288A610387A86E80107398C │ │ │ │ +16BFCE4362DF81429CFCB09B9BE427A1396E4AD2F033BE179E28D4FFE2E7FBF8 │ │ │ │ +3A744463998E506C7E1609FF201F866005FABEFEC03DEEE55B0DA074271B0C57 │ │ │ │ +04822338ED9198E3E40851677B8D07F1D236EB01C8932400BEAF5EFD278B2100 │ │ │ │ +31A70BC4F66E3022B6DBEC5C04EDD95DB5EA17A40AA3EA05BE7089297A0C777E │ │ │ │ +AA5C1E2D00BCEDAC0F1EF2AC09B0F5AC74A74AAFD15EB0CC7638DFC21E928DAC │ │ │ │ +9A76E83898B6769A1FBA710ED33B1F690C837FEE7EC187D0BDC9CEF44E2790D0 │ │ │ │ +5A3D526E616878A880E0F6C68BCC559F382494C15E0CB5C0DDEDE784EB3E9B8B │ │ │ │ +5C05BE57069408E59366C48D9DE02A47EA98955B6EEC9117A1592C94A43FCB54 │ │ │ │ +1391F45FC704F52A249CCED999797523ED975B02F792CB5D7D67F302371299FF │ │ │ │ +2CA43932B6302DE3495AD672881571D65F116803C57AB2200532B52627AF43F6 │ │ │ │ +3391A82C9731A9888B865C402571DA4AA29FA684CE2053BFCFBBD55C0ADE7123 │ │ │ │ +B2C55D6B1112C95BDAF748A19F33A739D561F358CE07903EDA79F5F242A58E35 │ │ │ │ +774E4CD52F0DDDC9EE8AA360073B79B65B61948DD41FC55BE74DD298B1CBC221 │ │ │ │ +A93F5AB24C1E890DBD0BE45B08803B078392185DB2F3CD856831244650398CEA │ │ │ │ +C27E8145AA156D7307A03ABBE1F79E8A721244BD58F0EC389FACAD1F02061DA3 │ │ │ │ +B9144BC26FD3F4DCCEBBF867CE4180058A6C653476F341C23F1BCA2AFC01FC74 │ │ │ │ +858EA09EE6E19F13EB41F8805AE09F73D6FC1489053DC11BE9F0C5AB808CD381 │ │ │ │ +325CBA993E22EA102A9E78E7F6C22732B5F15C5B2C45103821746A8BBEC1AADC │ │ │ │ +DBC156F7D67945C20AB88EF8A90460CE488B5E64A77B814CB5511C51CFA3CBED │ │ │ │ +51968670B7C2BDEDB673021C2DC244071EF7847D8C13890600DE0651CC04C805 │ │ │ │ +03277EC06FC91C4536BFEA1C7A7EA864E6F4342B7EE434B240432EA625E650A9 │ │ │ │ +C05614DC016284D79AC9D2B609791C4F289BFC1B7D5E22E20319EA880AFB2A1C │ │ │ │ +FB9BF43FBF658BBE4DA0C155182D33731DDB77CA4E49508CE5B7829CE2FCB52E │ │ │ │ +EA8499AF0832E98BD74DE7035A7F4ACDDC33BEA295B6AD7AE490093A2DD445B0 │ │ │ │ +B1F2BA510E4C176E8BE9F9E078F4A355CD50A0A1CF2DFE5D06470E7CD2B15126 │ │ │ │ +EE6844935F374ABD3291EFDE95C7358E574F7CAFAF0377C9E2FD689EC5FDADA5 │ │ │ │ +8504F47E24CFE68FB17227B88E170F198597C44199AED42F7F4BD81B07E9AA4D │ │ │ │ +FC82AF9337B4194110794F0B4033517D71CCFB43F2BB82C83CE693B7D81609AA │ │ │ │ +4B14E5503980838BE47FF0109AAEB67977BCFDE167B7324F231D9898D31CDE78 │ │ │ │ +0F1896D8DD762BD176D130C8F24387035FB37B41CE1753B660BC62FB9A1DACE8 │ │ │ │ +D46BF6E75F26EE379C5C9D26526921C42CB4D0471193C0C2086DE88CEAA83E58 │ │ │ │ +8BE7D05C0B48472C19AEB1AC963B7CBF32F4DF262D3993C48938439E0777BB63 │ │ │ │ +473B4F0CA3F91C4257CA52948ABFC9959F602F9D2497005B5142500B01F095A4 │ │ │ │ +4C9731F904D40000AF45E2232C6FFFAC43F14CED19142764711E485CA6E9BA04 │ │ │ │ +25A3FF000687D416F9BFFCC2D88E26C185071CA947CA66A12ECC753C89120447 │ │ │ │ +3AEF185F35FB9C47DA350B0FB1B59BC4BD1076C83D2F561DB8EA565E5CCC4F4F │ │ │ │ +FA65B2FA2E9244281D27FF51E7CD484EFBA30D12342FEF08FB5054BEB9051333 │ │ │ │ +CA64AEB1DD37CFE2DAA16B0A15857A57EFDD6BABBB2BB42C5484ED9D67EE549E │ │ │ │ +DCE9494E93397D990863EB77C4AED1E67909EC51E751EDB42EF8923377334F3F │ │ │ │ +C1772F79DCEA2654585093FCEA4235CD5ABCCA02014125EF8E3A32F25E290847 │ │ │ │ +E2238D9EE947809BC28B86B13749973E8410CDAB28640636F23912A7BB856890 │ │ │ │ +719652224925E1C05EA4BBA4AA5247B70C67AEEEB3A7A018B3F67E6130BAF8F6 │ │ │ │ +6537A7828FCD3962B0E78EE641F53243D054B30B5F6C67BEED88C4BFAA296A48 │ │ │ │ +3AEBB5CECC3E44980C38AF108D38689DA8AAED77EBC1951BE430187C2AA791F0 │ │ │ │ +F874EDC2352E08A3AE72A6A4376CA6DF8EE60E561DD79DB0D3B7B605D73C64EC │ │ │ │ +B17445EA56E4A5F46CEF8E4ECD64201EA7E4C8EFDAB790DE8E15A646CFCD8F54 │ │ │ │ +B895B970B9138F402A5FB9F61C49DE6C5547F7DFB7F44E1B2AD1470C8B73269B │ │ │ │ +2F7EF714566F1D6E9949CBD8EA978E6E65EF148D33126F618EC20C4C59183DFF │ │ │ │ +6A32BCAD9667C661B12C0B8CE32A0091C5518180E9877A2A2263317880BA0D2F │ │ │ │ +E14F40D338D5691C1F007083E49225FC66E0AF9C3F730BEE69A2B91A5ADC18E6 │ │ │ │ +96E18A06E9FD97B91DF2FB7FA22B4A345FABB9FA17154A27D8B0C6928F463148 │ │ │ │ +9CAC11691468BFE77074066206B3D05735331ADEF09B7D4250B9C3FF4FE7F46C │ │ │ │ +C2C57BA788045C159A4979CA287BA5AD6FAD0F129D08559F87126D8FE5F44673 │ │ │ │ +26384AE7419E8D8D14030F8EB4A7B286E1C56DDEDB8EB5EE4748376BA0C6597D │ │ │ │ +3A2DE06E3F2DAF59327FF2F9AFCD288D246135E240924AED18EA7BB81A47E17A │ │ │ │ +32BEE6916184EA6B101C7FAB9AE27A45330D5C63DE6225E620AAE6608B3B2F4F │ │ │ │ +8A852005E0481D5C9C0CFD06E947028D5BF93DBC7D3FC67F0E12CFE42E329BFD │ │ │ │ +66FA095D7D061788049424D95BEB00D815C746AC9FF3E91F8560C52D2B925843 │ │ │ │ +72C5D3CC124D23A7B565C1B0D787379E79F168B5FB4905AC6495151150312DFA │ │ │ │ +1C5A2ED3C632EC227D660AEC5D8FC6C337D679807A4F063D39DB530E5F766568 │ │ │ │ +0D9AEF6C5ED29A68475475A1BC126C90B8AC8A6B83B95098A0598424CB7D4FA4 │ │ │ │ +6B0CB04FFB71C2375EF7AD784F88A87E70BAF95D77D0850BC68E33F3D26ADDB8 │ │ │ │ +C069F30C9E34AE567DCCD3EDB5F30718C340BFC09B0B6C4DDC5626F8096FA971 │ │ │ │ +3664FF4CC528AAB1AD69693E09A7EC1E9CCF1E2FDA00D126DAF9A6ED58D180C3 │ │ │ │ +97D9F57667D4A7EFAE3DED4257938F71381341D832C3AF02AEA79FE09A5506DD │ │ │ │ +CB16242FABCBD9149336A3D7A6537FC71FC0E46359B467B5DCB32BCA188C226A │ │ │ │ +A15A7F5AF6EDCF2412B0A9388D5FFA2F57FB443E6036C33AA0B394935C0220D3 │ │ │ │ +85CF5FAF2227A4F8C6F9EAEEAD22B896314E91C3D58088A782CEC5C1D3B180F5 │ │ │ │ +F7142B33CDD50C9B9C9FA6563F5C40B422DE40E261C095600E86C8D66F40DAA4 │ │ │ │ +1337E9030A036E249B9A7F1B56DE6AC73DE8FA73F723A935149ADAD4132DB274 │ │ │ │ +26E9033A57CE9FD51D1032FF682A97AF931D486689CFC5BD6A02C88EB1FAA994 │ │ │ │ +FAA74E7291ABDD08AE86785D8C7ADEFC4E9B3DF09F4D3E95EEB85C40C15C9FF1 │ │ │ │ +8C4A18ED3888617FFF8B00A9DC30E259E5878BBD8B4D218AEF5918B5895B51EB │ │ │ │ +F0645025919292BE9E245CC62DC5104A3C05F7283133AF2DAC84D241B59289D5 │ │ │ │ +C6E088F1B2458F3958AFCA8475B7D25E08ADF6679DD4F23F4935A56B42BD5819 │ │ │ │ +E6DF0C573576220A36F0986527E9B8B75BFDB7D64D87E068C6A31BA5419B36AE │ │ │ │ +C3416A262B6D5ADF77EAE90AE32F798DB8EE2DE63E6440AA3B3E8BBD89D52664 │ │ │ │ +88D6302388B488025ED8B755B9E187CB141CDBDDDEFF48179EC91884E2B91AAC │ │ │ │ +7DA722426013E0F456E262B4DE33679EBFF40213F546A0B68139FD8A140421C6 │ │ │ │ +A608924DB685944850E51A3994FDBADE402F1ECB3B60E18F9D653A4E29B59FD8 │ │ │ │ +6E25AF96D650C44F5B9E16ABEE0BEDC76EE2FDB54A299AA32C8ADBA2A306BD4C │ │ │ │ +6EF2C291FC0AA1F259DBB736F7472AB92966E3360337665F7A8C716D2377C223 │ │ │ │ +6E2150FCCED4DF519608AFCF2A89A23535115200C6D6D21E52B571561E38820B │ │ │ │ +6DED8BDDA33FF096173CF0C8E9EA4536907BF31A775C90066D232D751C777DC1 │ │ │ │ +4407C3A37B77BCB283E85B9DBB80558F823853A8110558132CFD6F8ECC2E7595 │ │ │ │ +FB7B17ABADD484F5C87C12431391C3454722FB95A4738F044177D87A1AD6E658 │ │ │ │ +39089BB13CEDD236D75798FE5FB33BD8C64E127F4541FE0DF9146E082F5ECDCC │ │ │ │ +547D9FC5F748DA5F451F5F5CED0F64A63893F76D92BEBE20023ACA64703D737A │ │ │ │ +477CCC330B9107330636F6BA2817B6913F9ED526BC26578DA7995AAB1322F9D2 │ │ │ │ +4B7A1667B86AC6B578B1B374A2DEA7038F0FE77496D9E6AE3B4593DEDEFE744F │ │ │ │ +47843990D103AE4B10C63CE40E2BFB546204AEE182E6BF988B3BA9BFA7625548 │ │ │ │ +1DF55B2A8CCDE30B3C36F5514AF0E1153D5684DCF67DE8E9701FFA69DEC1DF7C │ │ │ │ +99F49BFA5C0C3D7DAD80D624A6112F14AE9BCE689F2118CBC52F0052A6652E6C │ │ │ │ +1AE3584F3AB59C19110E652D45E0284344F88407861CEC637FCA312DF547E198 │ │ │ │ +A416327CE0CDB3601B80DB09C4EBA87C68FEBBDE9FE1D95E3E1F314DFF6392A0 │ │ │ │ +87948A853AA3A5CCB845062FE919E251B9CA1095D7217E5399BBAF7B87B1ABB7 │ │ │ │ +9E65233397C1500DA9AA599EA21B83E3B106B11C4FB037C7D88E124423F8198E │ │ │ │ +19B063049FF93D4482A4572AB27B7699B4670DD63DF71692EB453A13A1479EFB │ │ │ │ +DCFDB98250132207973DDBBA322213AC1316FBA9B30676BD7D66B2E3390FD1B6 │ │ │ │ +E483F21BD633B4B964796F94CA491EB7D6EDA293CCA8137A460A38A93D3458D8 │ │ │ │ +D79F9EA0928F75796CF88423510D210F65EAE9179897C08CD8C0792FBA7BABD6 │ │ │ │ +C39A49F04E7C54C0920B5164A7B921AF8ADB64BB0B038BC26849B341A0BB0411 │ │ │ │ +75471E27C6D777E27EF06333EDE90CAA88CBC7F2F559CDBB18296D809044FDB8 │ │ │ │ +7D1C14A10EC250C3268FB81B3061B90AD20BC21CA518D5D92CA1AEFB82FDEE88 │ │ │ │ +41EEF28BCCC9663D6CED9D20E96364B1D053D7ED2EE04199474F7C16FC9A64C3 │ │ │ │ +28E85C9E01909821260A160584E5034C4B6050BD84890A3D41EEC6AB09C99CC6 │ │ │ │ +E9BED1141726DC7E8C04A44FFBB202976961E8ACF865480B2DA83DFCACFED8C9 │ │ │ │ +CCAE2A0DFA935A4D63491A20E41B80A4676D23FC0E90508A1E5E3B231B951681 │ │ │ │ +ED0E78495E8A44501F0B5580DC4536D1F6AAAAC368D94D15A02261341026E30D │ │ │ │ +185AD5ABA4D5C070022E741B4561079EE540A8C5A31339F8155D039440F61804 │ │ │ │ +22804D2CDEBD1F572D1DC84B6566B779DDF682F44F903463169A51A3E133096A │ │ │ │ +758AE9A8D9AB5F0301D6CC89C52E4241BB74EA1154F23505895B4C92FACEE5E1 │ │ │ │ +F584985DCA5161B348281542E821572352AF97D103AE53D91C03F8E9CFEDCC44 │ │ │ │ +955C6AF2DCD0A4D6A2E0C2328F3B78FB68568FE40518194F32C65909A2B430A1 │ │ │ │ +8871D7B56D917A4BDD6C6BBBCD9A28D697E05D2F69D61416BA6037BE15609EB1 │ │ │ │ +63FF34013C653278E9671CC26E81C9A990B1BE2B39A7B14010A95926AC7FE58A │ │ │ │ +41D10AD83D6778159CB901BE1866FAB21CC1D5407CE1A1B1582C17F6DEB6237A │ │ │ │ +8456C874BC806CCBD7111BE9B3115F9BA2F2F206ECC6CFC78B2F170615E6A023 │ │ │ │ +8D1A4A5D8269A4665A35823C70EB353A6EE1D3B58F324DE27FB02B2D9EF3C6E9 │ │ │ │ +F65F996A1C021CFAEE8A626D540E1B162A32C2065EA121EA4251EF10E24ACA0C │ │ │ │ +AE5F0FC449030321 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7535,21 +7559,22 @@ │ │ │ │ 44 44 44 44 44 44 44 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 /Fh 141[51 │ │ │ │ 1[51 7[51 6[51 25[51 71[{}5 99.6264 /CMTT12 rf /Fi 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 /Fj 139[32 33 33 │ │ │ │ -2[42 46 4[23 1[42 1[37 46 37 46 42 12[60 4[65 8[54 13[42 │ │ │ │ -2[42 2[42 42 42 3[23 44[{}21 83.022 /CMSL10 rf /Fk 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 │ │ │ │ +56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Fj 137[44 1[32 │ │ │ │ +33 33 2[42 46 69 3[23 1[42 1[37 46 1[46 42 12[60 4[65 │ │ │ │ +62 7[54 16[42 2[42 42 42 3[23 44[{}22 83.022 /CMSL10 │ │ │ │ +rf /Fk 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 │ │ │ │ %DVIPSBitmapFont: Fl tcrm0600 6 1 │ │ │ │ /EN0 load IEn S/IEn X FBB FMat/FMat[0.02 0 0 -0.02 0 │ │ │ │ 0]N/FBB[-11 -15 87 40]N │ │ │ │ /Fl 1 43 df<006000007000006000006000406020E06070F861F07E67E01FFF8007FE00 │ │ │ │ 00F00007FE001FFF807E67E0F861F0E0607040602000600000600000700000600014157B │ │ │ │ 961E>42 D E │ │ │ │ /Fl load 0 Fl currentfont 50 scalefont put/FMat X/FBB │ │ │ │ @@ -7576,16 +7601,16 @@ │ │ │ │ /Ft 1 43 df<000C0000001E0000001E0000001E0000001E0000001E0000601E0180781E │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ /Ft load 0 Ft currentfont 66.6667 scalefont put/FMat │ │ │ │ X/FBB X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ -/Fu 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 8[49 2[49 2[49 │ │ │ │ +/Fu 137[51 54 38 38 38 1[54 49 54 81 27 2[27 54 49 30 │ │ │ │ +43 54 43 54 49 13[54 4[73 6[77 3[70 69 73 11[49 2[49 │ │ │ │ 49 49 3[27 44[{}30 99.6264 /CMR12 rf /Fv 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 │ │ │ │ @@ -7597,17 +7622,17 @@ │ │ │ │ %%EndPaperSize │ │ │ │ end │ │ │ │ %%EndSetup │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 333 739 a Fv(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 Fu(Clev)m(e)35 b(Ashcraft,)e(Bo)s(eing)f(Shared)i │ │ │ │ -(Services)g(Group)2942 987 y Ft(*)1586 1262 y Fu(Octob)s(er)e(18,)g │ │ │ │ -(2025)0 1924 y Fs(1)135 b(In)l(tro)t(duction)0 2165 y │ │ │ │ -Fr(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 Ft(*)1544 1262 y Fu(No)m(v)m(em)m(b)s(er)g │ │ │ │ +(15,)e(2025)0 1924 y Fs(1)135 b(In)l(tro)t(duction)0 │ │ │ │ +2165 y Fr(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 Fq(AX)46 b Fr(=)40 b Fq(B)t │ │ │ │ Fr(,)g(one)d(m)n(ust)h(compute)g(an)f Fq(A)j Fr(=)g Fq(LD)r(U)9 │ │ │ │ b Fr(,)0 2265 y Fq(A)25 b Fr(=)e Fq(U)241 2234 y Fp(T)294 │ │ │ │ 2265 y Fq(D)r(U)37 b Fr(or)27 b Fq(A)e Fr(=)f Fq(U)803 │ │ │ │ 2234 y Fp(H)865 2265 y Fq(D)r(U)38 b Fr(factorization,)27 │ │ │ │ b(dep)r(ending)i(on)f(whether)g(the)h(matrix)e Fq(A)i │ │ │ │ Fr(is)f(nonsymmetric,)g(symmetric)0 2364 y(or)34 b(Hermitian.)57 │ │ │ │ @@ -7686,33 +7711,33 @@ │ │ │ │ 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 Fr(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ TeXDict begin 2 1 bop 0 100 a Fr(2)327 b Fj(Orderings)26 │ │ │ │ -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(18,)g(2025)0 390 y Fs(2)135 │ │ │ │ -b(Sparse)45 b(matrix)h(orderings)0 605 y Fr(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 │ │ │ │ -(the)h(b)r(etter)h(part)e(of)h(a)f(decade.)36 b(Alternativ)n(e)23 │ │ │ │ -b(min-)0 904 y(im)n(um)k(priorit)n(y)e(co)r(des)h(ha)n(v)n(e)f(recen)n │ │ │ │ -(tly)h(pushed)g(m)n(ultiple)h(minim)n(um)h(degree)d(aside,)h(including) │ │ │ │ -h(appro)n(ximate)d(minim)n(um)0 1004 y(degree)j([1])h(and)h(appro)n │ │ │ │ -(ximate)d(de\014ciency)j([21)o(],)g([25)o(].)39 b(They)28 │ │ │ │ -b(o\013er)g(impro)n(v)n(ed)f(qualit)n(y)h(or)g(impro)n(v)n(ed)f(run)h │ │ │ │ -(time,)h(and)f(on)0 1103 y(o)r(ccasion,)e(b)r(oth.)125 │ │ │ │ -1232 y(Nested)33 b(dissection)f(for)h(regular)e(grids)h([10)o(])h(is)g │ │ │ │ -(within)h(a)f(factor)f(of)h(optimal)g(with)g(resp)r(ect)g(to)g(factor)f │ │ │ │ -(en)n(tries)g(and)0 1332 y(op)r(eration)c(coun)n(ts.)41 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1683 │ │ │ │ +4 v 1876 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)0 390 │ │ │ │ +y Fs(2)135 b(Sparse)45 b(matrix)h(orderings)0 605 y Fr(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(the)h(b)r(etter)h(part)e(of)h(a)f │ │ │ │ +(decade.)36 b(Alternativ)n(e)23 b(min-)0 904 y(im)n(um)k(priorit)n(y)e │ │ │ │ +(co)r(des)h(ha)n(v)n(e)f(recen)n(tly)h(pushed)g(m)n(ultiple)h(minim)n │ │ │ │ +(um)h(degree)d(aside,)h(including)h(appro)n(ximate)d(minim)n(um)0 │ │ │ │ +1004 y(degree)j([1])h(and)h(appro)n(ximate)d(de\014ciency)j([21)o(],)g │ │ │ │ +([25)o(].)39 b(They)28 b(o\013er)g(impro)n(v)n(ed)f(qualit)n(y)h(or)g │ │ │ │ +(impro)n(v)n(ed)f(run)h(time,)h(and)f(on)0 1103 y(o)r(ccasion,)e(b)r │ │ │ │ +(oth.)125 1232 y(Nested)33 b(dissection)f(for)h(regular)e(grids)h([10)o │ │ │ │ +(])h(is)g(within)h(a)f(factor)f(of)h(optimal)g(with)g(resp)r(ect)g(to)g │ │ │ │ +(factor)f(en)n(tries)g(and)0 1332 y(op)r(eration)c(coun)n(ts.)41 │ │ │ │ b(One)29 b(of)g(the)h(earliest)e(attempts,)i(automatic)f(nested)h │ │ │ │ (dissection)e([11)o(])i(used)f(a)g(simple)g(pro\014le)g(algo-)0 │ │ │ │ 1431 y(rithm)24 b(to)g(\014nd)g(separators.)34 b(It)24 │ │ │ │ b(rarely)e(p)r(erformed)i(as)f(w)n(ell)h(as)f(minim)n(um)i(degree.)34 │ │ │ │ b(Better)24 b(heuristics)f(to)h(\014nd)h(separators)0 │ │ │ │ 1531 y(w)n(ere)k(brough)n(t)g(in)h(from)f(the)i(electrical)e(device)g │ │ │ │ (sim)n(ulation)h(area)e([18)o(])i(and)g(while)g(these)g(algorithms)e │ │ │ │ @@ -7798,23 +7823,23 @@ │ │ │ │ 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 Fg(IVL)f Fr(ob)5 │ │ │ │ b(ject)28 b(from)f(the)h Fg(InpMtx)d Fr(ob)5 b(ject,)27 │ │ │ │ b(as)g(follo)n(ws.)0 5108 y Fg(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 Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(3)881 448 y(Figure)27 b(1:)36 │ │ │ │ -b(A)28 b(3)18 b Fo(\002)g Fr(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 │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1711 4 v 1874 w(Orderings)f(and)i(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)326 b Fr(3)881 448 y(Figure)27 │ │ │ │ +b(1:)36 b(A)28 b(3)18 b Fo(\002)g Fr(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 │ │ │ │ 1355 y(6)g(7)g(8)427 1166 y(9)126 b(10)105 b(11)1190 │ │ │ │ 606 y Fg(IVL)43 b(:)g(integer)e(vector)g(list)h(object)f(:)1190 │ │ │ │ 706 y(type)h(1,)h(chunked)e(storage)1190 805 y(12)i(lists,)e(12)i │ │ │ │ (maximum)e(lists,)g(70)i(tsize,)e(4240)h(total)f(bytes)1190 │ │ │ │ 905 y(1)j(chunks,)c(70)j(active)e(entries,)f(1024)i(allocated,)e(6.84)i │ │ │ │ (\045)h(used)1365 1005 y(0)g(:)g(0)g(1)g(3)h(4)1365 1104 │ │ │ │ y(1)f(:)g(0)g(1)g(2)h(3)f(4)g(5)1365 1204 y(2)g(:)g(1)g(2)g(4)h(5)1365 │ │ │ │ @@ -7860,25 +7885,25 @@ │ │ │ │ b(w)n(e)g(ha)n(v)n(e)g(a)g Fg(Graph)f Fr(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 Ff(\210)42 b Fr(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 Fr(4)327 b Fj(Orderings)26 │ │ │ │ -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(18,)g(2025)125 390 y Ff(\210)42 │ │ │ │ -b Fr(generalized)26 b(nested)h(dissection,)125 571 y │ │ │ │ -Ff(\210)42 b Fr(m)n(ultisection,)27 b(and)125 752 y Ff(\210)42 │ │ │ │ -b Fr(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 │ │ │ │ -(can)e(b)r(e)i(m)n(uc)n(h)f(more)f(exp)r(ensiv)n(e)h(to)g(compute)g │ │ │ │ -(than)h(a)e(minim)n(um)i(degree)0 1153 y(ordering.)34 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1683 │ │ │ │ +4 v 1876 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)125 390 │ │ │ │ +y Ff(\210)42 b Fr(generalized)26 b(nested)h(dissection,)125 │ │ │ │ +571 y Ff(\210)42 b Fr(m)n(ultisection,)27 b(and)125 752 │ │ │ │ +y Ff(\210)42 b Fr(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(can)e(b)r(e)i(m)n(uc)n(h)f(more)f(exp)r(ensiv)n(e)h(to)g(compute) │ │ │ │ +g(than)h(a)e(minim)n(um)i(degree)0 1153 y(ordering.)34 │ │ │ │ b(By)25 b(and)f(large,)g(for)g(larger)f(graphs)g(nested)i(dissection)f │ │ │ │ (generates)f(b)r(etter)i(orderings)e(than)i(minim)n(um)g(degree,)0 │ │ │ │ 1253 y(and)j(the)g(di\013erence)f(in)h(qualit)n(y)f(increases)f(as)h │ │ │ │ (the)i(graph)d(size)h(increases.)36 b(Multisection)28 │ │ │ │ b(is)g(an)f(ordering)f(whic)n(h)i(almost)0 1353 y(all)34 │ │ │ │ b(the)g(time)g(do)r(es)g(ab)r(out)g(as)f(w)n(ell)h(as)f(the)i(b)r │ │ │ │ (etter)f(of)g(nested)g(dissection)g(and)f(minim)n(um)i(degree.)55 │ │ │ │ @@ -7940,24 +7965,24 @@ │ │ │ │ (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 │ │ │ │ Fg(msglvl)208 5407 y Fr(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 Fg(msglvl)41 b(=)i(1)p │ │ │ │ Fr(.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 0 100 a Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(5)125 390 y Ff(\210)42 b Fr(The)19 │ │ │ │ -b Fg(seed)g Fr(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 Ff(\210)42 b │ │ │ │ -Fg(maxdomainsize)26 b Fr(is)32 b(used)f(for)h(the)g(nested)g │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1711 4 v 1874 w(Orderings)f(and)i(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)326 b Fr(5)125 390 y Ff(\210)42 │ │ │ │ +b Fr(The)19 b Fg(seed)g Fr(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 Ff(\210)42 │ │ │ │ +b Fg(maxdomainsize)26 b Fr(is)32 b(used)f(for)h(the)g(nested)g │ │ │ │ (dissection)f(and)g(m)n(ultisection)h(orderings.)48 b(This)31 │ │ │ │ b(parameter)f(is)i(used)208 867 y(during)26 b(the)h(graph)e(partition.) │ │ │ │ 36 b(An)n(y)27 b(subgraph)f(that)h(is)f(larger)f(than)i │ │ │ │ Fg(maxdomainsize)21 b Fr(is)27 b(split.)37 b(W)-7 b(e)27 │ │ │ │ b(recommend)208 966 y(using)g(a)g(v)-5 b(alue)27 b(of)h │ │ │ │ Fg(neqns/16)c Fr(or)j Fg(neqns/32)p Fr(.)34 b(Note:)j │ │ │ │ Fg(maxdomainsize)22 b Fr(m)n(ust)28 b(b)r(e)g(greater)d(than)j(zero.) │ │ │ │ @@ -8020,23 +8045,23 @@ │ │ │ │ b(=)44 b(100)p Fr(.)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 Fr(6)327 b Fj(Orderings)26 │ │ │ │ -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(18,)g(2025)125 390 y Fr(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 Fo(\002)h Fr(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 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1683 │ │ │ │ +4 v 1876 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)125 390 │ │ │ │ +y Fr(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 Fo(\002)h Fr(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 │ │ │ │ 779 y(minim)n(um)g(degree)620 b(nested)28 b(dissection)673 │ │ │ │ 878 y(seed)100 b(CPU)f(#)28 b(en)n(tries)297 b(#)27 b(ops)99 │ │ │ │ b(CPU)h(#)28 b(en)n(tries)296 b(#)28 b(ops)618 978 y(10101)170 │ │ │ │ b(9.2)143 b(5783892)97 b(6119141542)126 b(27.8)142 b(3410222)96 │ │ │ │ b(1921402246)618 1078 y(10102)170 b(8.8)143 b(5651678)97 │ │ │ │ b(5959584620)126 b(31.4)142 b(3470063)96 b(1998795621)618 │ │ │ │ 1177 y(10103)170 b(8.8)143 b(6002897)97 b(6724035555)126 │ │ │ │ @@ -8097,20 +8122,20 @@ │ │ │ │ (;)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 Fr(The)21 │ │ │ │ b Fg(vetree)e Fr(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 Fe(vertex)j(elimination)h(tr)l(e)l(e)c │ │ │ │ Fr([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 Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(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 │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1711 4 v 1874 w(Orderings)f(and)i(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)326 b Fr(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 │ │ │ │ /radius 2.500 def │ │ │ │ /Helvetica findfont 3.125 scalefont setfont │ │ │ │ /M {moveto} def │ │ │ │ /L {lineto} def │ │ │ │ @@ -8982,19 +9007,19 @@ │ │ │ │ n(k)g(partition)p 0 5330 1560 4 v 92 5384 a Fd(1)127 │ │ │ │ 5407 y Fk(V)-6 b(ertex)24 b Fc(j)j Fk(is)c(the)i(paren)n(t)f(of)g │ │ │ │ Fc(i)f Fk(if)g Fc(j)k Fk(is)c(the)h(\014rst)g(v)n(ertex)h(greater)f │ │ │ │ (than)h Fc(i)e Fk(suc)n(h)h(that)h Fc(L)2434 5417 y Fb(j;i)2524 │ │ │ │ 5407 y Fa(6)p Fk(=)20 b(0.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ TeXDict begin 8 7 bop 0 100 a Fr(8)327 b Fj(Orderings)26 │ │ │ │ -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(18,)g(2025)701 1332 y Fr(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 1683 │ │ │ │ +4 v 1876 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)701 1332 │ │ │ │ +y Fr(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 │ │ │ │ % │ │ │ │ @@ -9441,17 +9466,17 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(9)0 390 y(sup)r(erimp)r(osed)27 │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1711 4 v 1874 w(Orderings)f(and)i(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)326 b Fr(9)0 390 y(sup)r(erimp)r(osed)27 │ │ │ │ b(on)g(the)h(structure)f(of)g(the)g(factor)g Fq(L)p Fr(.)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 │ │ │ │ (giv)n(en)f(b)r(elo)n(w.)0 808 y Fg(ETree)129 b(*fsetree,)40 │ │ │ │ @@ -9529,21 +9554,22 @@ │ │ │ │ Fq(k)22 b Fo(\002)e Fq(k)i Fo(\002)e Fq(k)32 b Fr(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 Fq(k)3182 5377 y Fn(2)3240 │ │ │ │ 5407 y Fr(ro)n(ws)e(and)h(columns.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ TeXDict begin 10 9 bop 0 100 a Fr(10)327 b Fj(Orderings)25 │ │ │ │ -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(18,)g(2025)0 489 y Fr(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 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1642 │ │ │ │ +4 v 1834 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)0 489 │ │ │ │ +y Fr(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 │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ /CSH { │ │ │ │ % │ │ │ │ % center show a string │ │ │ │ % │ │ │ │ @@ -10332,20 +10358,21 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(11)610 1332 y(Figure)27 b(5:)36 │ │ │ │ -b(Blo)r(c)n(k)27 b(structure)g(of)h Fq(L)f Fr(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 Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1669 4 v 1833 w(Orderings)f(and)h(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(11)610 1332 y(Figure)27 │ │ │ │ +b(5:)36 b(Blo)r(c)n(k)27 b(structure)g(of)h Fq(L)f Fr(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 │ │ │ │ @@ -10685,20 +10712,20 @@ │ │ │ │ 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 Fr(12)327 b Fj(Orderings)25 │ │ │ │ -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(18,)g(2025)0 864 y Fr(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 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1642 │ │ │ │ +4 v 1834 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)0 864 │ │ │ │ +y Fr(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 │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ /CSH { │ │ │ │ % │ │ │ │ @@ -11301,20 +11328,21 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(13)594 1332 y(Figure)26 b(7:)37 │ │ │ │ -b(Blo)r(c)n(k)27 b(structure)g(of)g Fq(L)h Fr(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 Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1669 4 v 1833 w(Orderings)f(and)h(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(13)594 1332 y(Figure)26 │ │ │ │ +b(7:)37 b(Blo)r(c)n(k)27 b(structure)g(of)g Fq(L)h Fr(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 │ │ │ │ @@ -11608,41 +11636,42 @@ │ │ │ │ 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 Fr(14)327 b Fj(Orderings)25 │ │ │ │ -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(18,)g(2025)0 390 y Fr(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 │ │ │ │ -(parallelism)e(a)n(v)-5 b(ailable)26 b(to)i(the)g(computations.)125 │ │ │ │ -718 y(The)d(solution)g(to)h(b)r(oth)g(problems,)f(large)g(data)g │ │ │ │ -(structures)g(and)g(limited)h(parallelism,)f(is)h(to)f(split)h(large)f │ │ │ │ -(sup)r(erno)r(des)0 817 y(in)n(to)c(pieces.)34 b(W)-7 │ │ │ │ -b(e)21 b(can)g(sp)r(ecify)g(a)f(maxim)n(um)h(size)g(for)f(the)h(no)r │ │ │ │ -(des)g(in)g(the)g(tree,)h(and)f(split)g(the)h(large)d(sup)r(erno)r(de)i │ │ │ │ -(in)n(to)f(pieces)0 917 y(no)27 b(larger)e(than)i(this)g(maxim)n(um)g │ │ │ │ -(size.)36 b(This)27 b(will)g(k)n(eep)g(the)g(data)g(structures)f(to)h │ │ │ │ -(a)f(manageable)g(size)g(and)h(increase)f(the)0 1017 │ │ │ │ -y(a)n(v)-5 b(ailable)27 b(parallelism.)40 b(W)-7 b(e)29 │ │ │ │ -b(call)f(the)h(resulting)f(tree)h(the)g Fe(fr)l(ont)g │ │ │ │ -Fr(tree)f(b)r(ecause)h(it)g(represen)n(ts)e(the)i(\014nal)g │ │ │ │ -(computational)0 1116 y(unit)f(for)f(the)h(factorization,)f(the)h(fron) │ │ │ │ -n(tal)e(matrix.)125 1244 y(The)37 b(amalgamated)f(sup)r(erno)r(de)h │ │ │ │ -(tree)g(has)g(b)r(een)g(transformed)g(so)f(that)i(except)f(for)g(the)h │ │ │ │ -(leaf)f(no)r(des,)j(whic)n(h)d(are)0 1344 y(not)c(c)n(hanged,)g(no)f │ │ │ │ -(no)r(de)h(in)g(the)g(tree)f(has)g(more)g(than)h(four)f(v)n(ertices.)51 │ │ │ │ -b(The)33 b(top)g(tree)f(in)h(Figure)f(8)g(sho)n(ws)g(the)h(v)n(ertex)0 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1642 │ │ │ │ +4 v 1834 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)0 390 │ │ │ │ +y Fr(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(parallelism)e(a)n(v)-5 │ │ │ │ +b(ailable)26 b(to)i(the)g(computations.)125 718 y(The)d(solution)g(to)h │ │ │ │ +(b)r(oth)g(problems,)f(large)g(data)g(structures)g(and)g(limited)h │ │ │ │ +(parallelism,)f(is)h(to)f(split)h(large)f(sup)r(erno)r(des)0 │ │ │ │ +817 y(in)n(to)c(pieces.)34 b(W)-7 b(e)21 b(can)g(sp)r(ecify)g(a)f │ │ │ │ +(maxim)n(um)h(size)g(for)f(the)h(no)r(des)g(in)g(the)g(tree,)h(and)f │ │ │ │ +(split)g(the)h(large)d(sup)r(erno)r(de)i(in)n(to)f(pieces)0 │ │ │ │ +917 y(no)27 b(larger)e(than)i(this)g(maxim)n(um)g(size.)36 │ │ │ │ +b(This)27 b(will)g(k)n(eep)g(the)g(data)g(structures)f(to)h(a)f │ │ │ │ +(manageable)g(size)g(and)h(increase)f(the)0 1017 y(a)n(v)-5 │ │ │ │ +b(ailable)27 b(parallelism.)40 b(W)-7 b(e)29 b(call)f(the)h(resulting)f │ │ │ │ +(tree)h(the)g Fe(fr)l(ont)g Fr(tree)f(b)r(ecause)h(it)g(represen)n(ts)e │ │ │ │ +(the)i(\014nal)g(computational)0 1116 y(unit)f(for)f(the)h │ │ │ │ +(factorization,)f(the)h(fron)n(tal)e(matrix.)125 1244 │ │ │ │ +y(The)37 b(amalgamated)f(sup)r(erno)r(de)h(tree)g(has)g(b)r(een)g │ │ │ │ +(transformed)g(so)f(that)i(except)f(for)g(the)h(leaf)f(no)r(des,)j │ │ │ │ +(whic)n(h)d(are)0 1344 y(not)c(c)n(hanged,)g(no)f(no)r(de)h(in)g(the)g │ │ │ │ +(tree)f(has)g(more)g(than)h(four)f(v)n(ertices.)51 b(The)33 │ │ │ │ +b(top)g(tree)f(in)h(Figure)f(8)g(sho)n(ws)g(the)h(v)n(ertex)0 │ │ │ │ 1444 y(elimination)25 b(tree)f(with)h(the)h(\\fron)n(t")d(n)n(um)n(b)r │ │ │ │ (er)h(of)h(eac)n(h)f(v)n(ertex)g(sup)r(erimp)r(osed)g(on)h(the)g(v)n │ │ │ │ (ertex.)35 b(The)25 b(b)r(ottom)g(tree)f(is)h(the)0 1543 │ │ │ │ y(amalgamated)e(and)i(split)h(sup)r(erno)r(de)f(tree.)35 │ │ │ │ b(Figure)25 b(9)g(sho)n(ws)f(the)h(blo)r(c)n(k)g(partition)f(sup)r │ │ │ │ (erimp)r(osed)h(on)g(the)h(structure)e(of)0 1643 y(the)f(factor)f │ │ │ │ Fq(L)p Fr(.)35 b(Splitting)23 b(large)f(no)r(des)g(in)n(to)h(smaller)e │ │ │ │ @@ -11707,22 +11736,22 @@ │ │ │ │ (an)i(fundamen)n(tal)f(sup)r(erno)r(de)h(tree)f(with)h(a)f(call)h(to)f │ │ │ │ Fg(ETree)p 2994 5208 27 4 v 29 w(mergeFrontsOne\(\))17 │ │ │ │ b Fr(with)208 5308 y Fg(maxzeros)40 b(=)j(0)p Fr(.)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 Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(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 Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1669 4 v 1833 w(Orderings)f(and)h(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(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 │ │ │ │ % │ │ │ │ @@ -12348,20 +12377,20 @@ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 16 16 │ │ │ │ TeXDict begin 16 15 bop 0 100 a Fr(16)327 b Fj(Orderings)25 │ │ │ │ -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(18,)g(2025)420 595 y Fr(Figure)g(9:)37 │ │ │ │ -b(Blo)r(c)n(k)27 b(structure)g(of)g Fq(L)g Fr(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 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1642 │ │ │ │ +4 v 1834 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)420 595 │ │ │ │ +y Fr(Figure)g(9:)37 b(Blo)r(c)n(k)27 b(structure)g(of)g │ │ │ │ +Fq(L)g Fr(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 │ │ │ │ %%EndComments │ │ │ │ │ │ │ │ /MainFont /Helvetica findfont 8 scalefont def │ │ │ │ MainFont setfont │ │ │ │ @@ -12677,44 +12706,45 @@ │ │ │ │ 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 Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(17)125 390 y Ff(\210)42 b Fr(The)33 │ │ │ │ -b(second)f(step)i(is)f(also)f(a)h(call)f(to)i Fg(ETree)p │ │ │ │ -1665 390 27 4 v 29 w(mergeFrontsOne\(\))o Fr(,)29 b(this)k(time)h(with) │ │ │ │ -g Fg(maxzeros)40 b(=)j(1000)p Fr(.)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 Ff(\210)42 b Fr(The)26 b(third)g(step)g(is)g(a)g │ │ │ │ -(call)g(to)g Fg(ETree)p 1383 868 V 29 w(mergeFrontsAll\(\))19 │ │ │ │ -b Fr(with)27 b Fg(maxzeros)40 b(=)j(1000)p Fr(,)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 Ff(\210)42 b Fr(The)27 b(fourth)h(step)g(is)g(a)f(call)h(to)f │ │ │ │ -Fg(ETree)p 1438 1345 V 30 w(mergeFrontsAny\()o(\))22 │ │ │ │ -b Fr(with)28 b Fg(maxzeros)41 b(=)i(1000)p Fr(,)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 Ff(\210)42 b Fr(In)32 │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1669 4 v 1833 w(Orderings)f(and)h(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(17)125 390 y Ff(\210)42 │ │ │ │ +b Fr(The)33 b(second)f(step)i(is)f(also)f(a)h(call)f(to)i │ │ │ │ +Fg(ETree)p 1665 390 27 4 v 29 w(mergeFrontsOne\(\))o │ │ │ │ +Fr(,)29 b(this)k(time)h(with)g Fg(maxzeros)40 b(=)j(1000)p │ │ │ │ +Fr(.)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 Ff(\210)42 │ │ │ │ +b Fr(The)26 b(third)g(step)g(is)g(a)g(call)g(to)g Fg(ETree)p │ │ │ │ +1383 868 V 29 w(mergeFrontsAll\(\))19 b Fr(with)27 b │ │ │ │ +Fg(maxzeros)40 b(=)j(1000)p Fr(,)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 Ff(\210)42 │ │ │ │ +b Fr(The)27 b(fourth)h(step)g(is)g(a)f(call)h(to)f Fg(ETree)p │ │ │ │ +1438 1345 V 30 w(mergeFrontsAny\()o(\))22 b Fr(with)28 │ │ │ │ +b Fg(maxzeros)41 b(=)i(1000)p Fr(,)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 Ff(\210)42 b Fr(In)32 │ │ │ │ b(the)h(\014fth)g(step)g(is)f(a)g(call)g(to)g Fg(ETree)p │ │ │ │ 1477 1723 V 29 w(splitFronts\(\))c Fr(with)k Fg(maxsize)41 │ │ │ │ b(=)i(64)p Fr(,)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 │ │ │ │ @@ -12795,81 +12825,81 @@ │ │ │ │ Fq(X)32 b Fr(and)26 b Fq(Y)45 b Fr(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 │ │ │ │ Fq(X)31 b Fr(and)25 b Fq(Y)43 b Fr(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 Fr(18)327 b Fj(Orderings)25 │ │ │ │ -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(18,)g(2025)0 390 y Fr(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 Fg(ETree)129 │ │ │ │ -b(*etree,)40 b(*etree2,)h(*etree3)f(;)0 993 y(int)217 │ │ │ │ -b(maxfrontsize,)38 b(maxzeros,)i(seed)i(;)0 1193 y(etree2)f(=)i │ │ │ │ -(ETree_transform\(e)o(tr)o(ee,)37 b(NULL,)k(maxzeros,)f(maxfrontsize,)e │ │ │ │ -(seed\))k(;)0 1292 y(etree3)f(=)i(ETree_transform2\()o(et)o(ree)o(,)37 │ │ │ │ -b(NULL,)42 b(maxzeros,)e(maxfrontsize,)e(seed\))j(;)0 │ │ │ │ -1474 y Fr(Inside)28 b(The)f Fg(ETree)p 638 1474 27 4 │ │ │ │ -v 30 w(transform\(\))c Fr(metho)r(d)28 b(is)f(a)g(sequence)h(of)f(four) │ │ │ │ -g(transformations:)125 1655 y Ff(\210)42 b Fr(Merge)26 │ │ │ │ -b(small)h(fron)n(ts)g(in)n(to)h(larger)d(fron)n(ts)i(using)h(the)g │ │ │ │ -Fg(ETree)p 2138 1655 V 29 w(mergeFrontsOne\(\))21 b Fr(metho)r(d.)125 │ │ │ │ -1818 y Ff(\210)42 b Fr(Then)27 b(merge)g(small)g(fron)n(ts)g(in)n(to)h │ │ │ │ -(larger)d(fron)n(ts)i(using)g(the)h Fg(ETree)p 2347 1818 │ │ │ │ -V 30 w(mergeFrontsAll\()o(\))22 b Fr(metho)r(d.)125 1980 │ │ │ │ -y Ff(\210)42 b Fr(Then)27 b(merge)g(small)g(fron)n(ts)g(in)n(to)h │ │ │ │ -(larger)d(fron)n(ts)i(using)g(the)h Fg(ETree)p 2347 1980 │ │ │ │ -V 30 w(mergeFrontsAny\()o(\))22 b Fr(metho)r(d.)125 2142 │ │ │ │ -y Ff(\210)42 b Fr(Then)27 b(merge)g(a)g(large)f(fron)n(t)i(in)n(to)f(a) │ │ │ │ -g(c)n(hain)g(of)h(smaller)e(fron)n(ts)h(using)h(the)g │ │ │ │ -Fg(ETree)p 2804 2142 V 29 w(splitFronts\(\))22 b Fr(metho)r(d.)0 │ │ │ │ -2324 y(The)36 b Fg(ETree)p 404 2324 V 29 w(transform2\(\))31 │ │ │ │ -b Fr(metho)r(d)36 b(di\013ers)f(from)h(the)g Fg(ETree)p │ │ │ │ -2133 2324 V 29 w(transform\(\))31 b Fr(metho)r(d)36 b(in)g(that)g(it)g │ │ │ │ -(omits)g(the)g(setp)0 2423 y(with)28 b Fg(ETree)p 414 │ │ │ │ -2423 V 29 w(mergeFrontsAny\(\))p Fr(.)j(Either)c(metho)r(d)h(will)g(b)r │ │ │ │ -(e)g(suitable)f(in)h(most)g(cases.)125 2546 y(Ho)n(w)n(ev)n(er,)33 │ │ │ │ -b(there)h(are)f(some)h(times)g(one)g(metho)r(d)g(is)g(to)g(b)r(e)h │ │ │ │ -(preferred)e(o)n(v)n(er)f(the)j(other.)55 b(If)35 b(w)n(e)f(lo)r(ok)f │ │ │ │ -(again)g(at)h(the)0 2646 y(v)n(ertex)20 b(elimination)h(tree)g(in)h │ │ │ │ -(Figure)e(3,)j(w)n(e)d(see)h(the)h(top)f(lev)n(el)g(separator)e(with)i │ │ │ │ -(no)r(des)g Fo(f)p Fr(90)p Fq(;)14 b Fo(\001)g(\001)g(\001)f │ │ │ │ -Fq(;)h Fr(99)p Fo(g)p Fr(,)21 b(and)g(the)g(t)n(w)n(o)g(second)0 │ │ │ │ -2745 y(lev)n(el)32 b(separators)d(with)k(no)r(des)f Fo(f)p │ │ │ │ -Fr(45)p Fq(;)14 b Fo(\001)g(\001)g(\001)e Fq(;)i Fr(47)p │ │ │ │ -Fo(g)31 b Fr(and)h Fo(f)p Fr(87)p Fq(;)14 b Fo(\001)g(\001)g(\001)e │ │ │ │ -Fq(;)i Fr(89)p Fo(g)p Fr(.)50 b(If)32 b(one)g(lo)r(oks)f(at)h(their)h │ │ │ │ -(blo)r(c)n(k)e(columns)h(in)h(Figure)e(5)0 2845 y(w)n(e)e(see)h(that)g │ │ │ │ -(either)f(of)h(the)g(t)n(w)n(o)f(second)g(lev)n(el)g(separators)e │ │ │ │ -(could)j(b)r(e)g(merged)f(with)h(the)g(top)g(lev)n(el)f(separator)f │ │ │ │ -(without)0 2944 y(in)n(tro)r(ducing)i(an)n(y)g(zero)f(en)n(tries)h(in)n │ │ │ │ -(to)g(the)h(factor.)45 b(Using)30 b(the)h Fg(ETree)p │ │ │ │ -2256 2944 V 29 w(mergeFrontsAny\(\))24 b Fr(metho)r(d)31 │ │ │ │ -b(could)f(merge)g(the)0 3044 y(top)37 b(lev)n(el)f(separator)f(with)i │ │ │ │ -(one)f(of)h(its)g(t)n(w)n(o)f(c)n(hildren,)j(and)d(pro)r(duce)h(an)f │ │ │ │ -(im)n(balanced)g(tree,)j(not)e(as)f(w)n(ell)g(suited)i(for)0 │ │ │ │ -3144 y(parallel)26 b(computation)i(had)f(the)h(t)n(w)n(o)f(separators)e │ │ │ │ -(not)j(b)r(een)g(merged.)125 3266 y(In)d(a)g(parallel)f(en)n(vironmen)n │ │ │ │ -(t,)h(it)h(is)f(m)n(uc)n(h)g(more)g(e\016cien)n(t)g(to)h(not)f(merge)f │ │ │ │ -(the)i(top)g(lev)n(el)e(separator)f(with)j(either)g(of)f(its)0 │ │ │ │ -3366 y(second)30 b(lev)n(el)f(separators.)43 b(The)30 │ │ │ │ -b(transformation)f(metho)r(ds)h(in)h Fm(SPOOLES)k(1.0)29 │ │ │ │ -b Fr(created)h(fron)n(t)f(trees)h(that)h(w)n(ere)e(not)0 │ │ │ │ -3466 y(as)e(e\016cien)n(t)g(for)g(parallel)f(pro)r(cessing,)g │ │ │ │ -(precisely)g(b)r(ecause)h(of)g(the)h(use)f(of)g(the)h(\\merge-with-an)n │ │ │ │ -(y")c(step.)37 b(This)28 b(led)f(us)g(to)0 3565 y(write)32 │ │ │ │ -b(three)g(separate)e(merging)h(metho)r(ds)i(to)e(replace)g(the)i │ │ │ │ -(single)e(metho)r(d)i(from)f(the)g(1.0)f(release,)h(and)g(th)n(us)g │ │ │ │ -(giv)n(e)f(us)0 3665 y(the)d(abilit)n(y)f(to)h(a)n(v)n(oid)e(the)i │ │ │ │ -(trees)f(unsuitable)h(for)f(parallel)f(computation.)125 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1642 │ │ │ │ +4 v 1834 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)0 390 │ │ │ │ +y Fr(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 Fg(ETree)129 b(*etree,)40 b(*etree2,)h(*etree3)f(;)0 │ │ │ │ +993 y(int)217 b(maxfrontsize,)38 b(maxzeros,)i(seed)i(;)0 │ │ │ │ +1193 y(etree2)f(=)i(ETree_transform\(e)o(tr)o(ee,)37 │ │ │ │ +b(NULL,)k(maxzeros,)f(maxfrontsize,)e(seed\))k(;)0 1292 │ │ │ │ +y(etree3)f(=)i(ETree_transform2\()o(et)o(ree)o(,)37 b(NULL,)42 │ │ │ │ +b(maxzeros,)e(maxfrontsize,)e(seed\))j(;)0 1474 y Fr(Inside)28 │ │ │ │ +b(The)f Fg(ETree)p 638 1474 27 4 v 30 w(transform\(\))c │ │ │ │ +Fr(metho)r(d)28 b(is)f(a)g(sequence)h(of)f(four)g(transformations:)125 │ │ │ │ +1655 y Ff(\210)42 b Fr(Merge)26 b(small)h(fron)n(ts)g(in)n(to)h(larger) │ │ │ │ +d(fron)n(ts)i(using)h(the)g Fg(ETree)p 2138 1655 V 29 │ │ │ │ +w(mergeFrontsOne\(\))21 b Fr(metho)r(d.)125 1818 y Ff(\210)42 │ │ │ │ +b Fr(Then)27 b(merge)g(small)g(fron)n(ts)g(in)n(to)h(larger)d(fron)n │ │ │ │ +(ts)i(using)g(the)h Fg(ETree)p 2347 1818 V 30 w(mergeFrontsAll\()o(\)) │ │ │ │ +22 b Fr(metho)r(d.)125 1980 y Ff(\210)42 b Fr(Then)27 │ │ │ │ +b(merge)g(small)g(fron)n(ts)g(in)n(to)h(larger)d(fron)n(ts)i(using)g │ │ │ │ +(the)h Fg(ETree)p 2347 1980 V 30 w(mergeFrontsAny\()o(\))22 │ │ │ │ +b Fr(metho)r(d.)125 2142 y Ff(\210)42 b Fr(Then)27 b(merge)g(a)g(large) │ │ │ │ +f(fron)n(t)i(in)n(to)f(a)g(c)n(hain)g(of)h(smaller)e(fron)n(ts)h(using) │ │ │ │ +h(the)g Fg(ETree)p 2804 2142 V 29 w(splitFronts\(\))22 │ │ │ │ +b Fr(metho)r(d.)0 2324 y(The)36 b Fg(ETree)p 404 2324 │ │ │ │ +V 29 w(transform2\(\))31 b Fr(metho)r(d)36 b(di\013ers)f(from)h(the)g │ │ │ │ +Fg(ETree)p 2133 2324 V 29 w(transform\(\))31 b Fr(metho)r(d)36 │ │ │ │ +b(in)g(that)g(it)g(omits)g(the)g(setp)0 2423 y(with)28 │ │ │ │ +b Fg(ETree)p 414 2423 V 29 w(mergeFrontsAny\(\))p Fr(.)j(Either)c │ │ │ │ +(metho)r(d)h(will)g(b)r(e)g(suitable)f(in)h(most)g(cases.)125 │ │ │ │ +2546 y(Ho)n(w)n(ev)n(er,)33 b(there)h(are)f(some)h(times)g(one)g(metho) │ │ │ │ +r(d)g(is)g(to)g(b)r(e)h(preferred)e(o)n(v)n(er)f(the)j(other.)55 │ │ │ │ +b(If)35 b(w)n(e)f(lo)r(ok)f(again)g(at)h(the)0 2646 y(v)n(ertex)20 │ │ │ │ +b(elimination)h(tree)g(in)h(Figure)e(3,)j(w)n(e)d(see)h(the)h(top)f │ │ │ │ +(lev)n(el)g(separator)e(with)i(no)r(des)g Fo(f)p Fr(90)p │ │ │ │ +Fq(;)14 b Fo(\001)g(\001)g(\001)f Fq(;)h Fr(99)p Fo(g)p │ │ │ │ +Fr(,)21 b(and)g(the)g(t)n(w)n(o)g(second)0 2745 y(lev)n(el)32 │ │ │ │ +b(separators)d(with)k(no)r(des)f Fo(f)p Fr(45)p Fq(;)14 │ │ │ │ +b Fo(\001)g(\001)g(\001)e Fq(;)i Fr(47)p Fo(g)31 b Fr(and)h │ │ │ │ +Fo(f)p Fr(87)p Fq(;)14 b Fo(\001)g(\001)g(\001)e Fq(;)i │ │ │ │ +Fr(89)p Fo(g)p Fr(.)50 b(If)32 b(one)g(lo)r(oks)f(at)h(their)h(blo)r(c) │ │ │ │ +n(k)e(columns)h(in)h(Figure)e(5)0 2845 y(w)n(e)e(see)h(that)g(either)f │ │ │ │ +(of)h(the)g(t)n(w)n(o)f(second)g(lev)n(el)g(separators)e(could)j(b)r(e) │ │ │ │ +g(merged)f(with)h(the)g(top)g(lev)n(el)f(separator)f(without)0 │ │ │ │ +2944 y(in)n(tro)r(ducing)i(an)n(y)g(zero)f(en)n(tries)h(in)n(to)g(the)h │ │ │ │ +(factor.)45 b(Using)30 b(the)h Fg(ETree)p 2256 2944 V │ │ │ │ +29 w(mergeFrontsAny\(\))24 b Fr(metho)r(d)31 b(could)f(merge)g(the)0 │ │ │ │ +3044 y(top)37 b(lev)n(el)f(separator)f(with)i(one)f(of)h(its)g(t)n(w)n │ │ │ │ +(o)f(c)n(hildren,)j(and)d(pro)r(duce)h(an)f(im)n(balanced)g(tree,)j │ │ │ │ +(not)e(as)f(w)n(ell)g(suited)i(for)0 3144 y(parallel)26 │ │ │ │ +b(computation)i(had)f(the)h(t)n(w)n(o)f(separators)e(not)j(b)r(een)g │ │ │ │ +(merged.)125 3266 y(In)d(a)g(parallel)f(en)n(vironmen)n(t,)h(it)h(is)f │ │ │ │ +(m)n(uc)n(h)g(more)g(e\016cien)n(t)g(to)h(not)f(merge)f(the)i(top)g │ │ │ │ +(lev)n(el)e(separator)f(with)j(either)g(of)f(its)0 3366 │ │ │ │ +y(second)30 b(lev)n(el)f(separators.)43 b(The)30 b(transformation)f │ │ │ │ +(metho)r(ds)h(in)h Fm(SPOOLES)k(1.0)29 b Fr(created)h(fron)n(t)f(trees) │ │ │ │ +h(that)h(w)n(ere)e(not)0 3466 y(as)e(e\016cien)n(t)g(for)g(parallel)f │ │ │ │ +(pro)r(cessing,)g(precisely)g(b)r(ecause)h(of)g(the)h(use)f(of)g(the)h │ │ │ │ +(\\merge-with-an)n(y")c(step.)37 b(This)28 b(led)f(us)g(to)0 │ │ │ │ +3565 y(write)32 b(three)g(separate)e(merging)h(metho)r(ds)i(to)e │ │ │ │ +(replace)g(the)i(single)e(metho)r(d)i(from)f(the)g(1.0)f(release,)h │ │ │ │ +(and)g(th)n(us)g(giv)n(e)f(us)0 3665 y(the)d(abilit)n(y)f(to)h(a)n(v)n │ │ │ │ +(oid)e(the)i(trees)f(unsuitable)h(for)f(parallel)f(computation.)125 │ │ │ │ 3787 y(The)i(v)-5 b(alues)29 b(of)f Fg(maxzeros)e Fr(and)i │ │ │ │ Fg(maxsize)e Fr(will)j(ha)n(v)n(e)e(a)h(fair)h(amoun)n(t)f(of)g │ │ │ │ (in\015uence)h(on)g(the)g(e\016ciency)f(of)h(the)g(factor)0 │ │ │ │ 3887 y(and)e(solv)n(es.)35 b(This)27 b(is)g(illustrated)g(in)g(T)-7 │ │ │ │ b(able)27 b(3.5)f(for)h(the)g Fg(R3D13824)d Fr(matrix)j(and)g(a)f(n)n │ │ │ │ (um)n(b)r(er)h(of)g(di\013eren)n(t)g(com)n(binations)0 │ │ │ │ 3987 y(of)h Fg(maxzeros)c Fr(and)j Fg(maxsize)p Fr(.)125 │ │ │ │ @@ -12899,30 +12929,30 @@ │ │ │ │ b(of)f Fg(64)g Fr(is)h(what)f(w)n(e)g(customarily)g(use.)0 │ │ │ │ 5103 y Fs(References)42 5308 y Fr([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 Fe(SIAM)37 b(J.)171 5407 y(Matrix)30 b(A)n(nal.)g(Appl.)p │ │ │ │ Fr(,)f(17:886{905,)23 b(1996.)p eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 0 100 a Fj(Octob)r(er)27 b(18,)g(2025)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 Fr(19)844 448 y(T)-7 b(able)27 b(3:)36 │ │ │ │ -b(R3D13824:)f(the)28 b(in\015uence)g(of)f Fg(maxzeros)e │ │ │ │ -Fr(and)i Fg(maxsize)p Fr(.)p 1241 639 4 100 v 1674 609 │ │ │ │ -a(factor)942 b(solv)n(e)276 b(total)440 709 y Fg(maxzeros)96 │ │ │ │ -b(maxsize)p 1241 738 V 97 w Fr(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 Fo(1)p 1241 841 4 100 v 220 │ │ │ │ -w Fr(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 Fo(1)p 1241 941 │ │ │ │ -V 220 w Fr(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 Fo(1)p 1241 1041 │ │ │ │ -V 220 w Fr(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 Fo(1)p 1241 │ │ │ │ -1140 V 220 w Fr(3.0)108 b(121.8)142 b(16.7)297 b(1.4)291 │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 775 100 1669 4 v 1833 w(Orderings)f(and)h(F)-7 │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(19)844 448 y(T)-7 │ │ │ │ +b(able)27 b(3:)36 b(R3D13824:)f(the)28 b(in\015uence)g(of)f │ │ │ │ +Fg(maxzeros)e Fr(and)i Fg(maxsize)p Fr(.)p 1241 639 4 │ │ │ │ +100 v 1674 609 a(factor)942 b(solv)n(e)276 b(total)440 │ │ │ │ +709 y Fg(maxzeros)96 b(maxsize)p 1241 738 V 97 w Fr(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 Fo(1)p 1241 841 4 │ │ │ │ +100 v 220 w Fr(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 Fo(1)p │ │ │ │ +1241 941 V 220 w Fr(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 Fo(1)p │ │ │ │ +1241 1041 V 220 w Fr(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 Fo(1)p │ │ │ │ +1241 1140 V 220 w Fr(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 Fo(1)p │ │ │ │ 1241 1240 V 220 w Fr(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 │ │ │ │ @@ -12988,19 +13018,19 @@ │ │ │ │ 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 Fr(20)327 b Fj(Orderings)25 │ │ │ │ -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(18,)g(2025)0 390 y Fr([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(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1642 │ │ │ │ +4 v 1834 w(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)0 390 │ │ │ │ +y Fr([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 │ │ │ │ b(Rep)r(ort)h(SAND93-2339,)i(Sandia)171 756 y(National)27 │ │ │ │ b(Lab)r(oratories,)e(Albuquerque,)i(NM,)h(1993.)0 922 │ │ │ │ y([15])41 b(B.)36 b(Hendric)n(kson)f(and)h(E.)g(Roth)n(b)r(erg.)62 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ Ordering Sparse Matrices and Transforming Front Trees │ │ │ │ │ ∗ │ │ │ │ │ Cleve Ashcraft, Boeing Shared Services Group │ │ │ │ │ - October 18, 2025 │ │ │ │ │ + November 15, 2025 │ │ │ │ │ 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 October 18, 2025 │ │ │ │ │ + 2 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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) ; │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 3 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Orderings and Front Trees November 15, 2025 │ │ │ │ │ • 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. │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 5 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 7 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 9 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 11 │ │ │ │ │ + November 15, 2025 Orderings and Front Trees 11 │ │ │ │ │ Figure 5: Block structure of L with the fundamental supernode partition. │ │ │ │ │ - 12 Orderings and Front Trees October 18, 2025 │ │ │ │ │ + 12 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 13 │ │ │ │ │ + November 15, 2025 Orderings and Front Trees 13 │ │ │ │ │ Figure 7: Block structure of L with the amalgamated supernode partition. │ │ │ │ │ - 14 Orderings and Front Trees October 18, 2025 │ │ │ │ │ + 14 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 15 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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 │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 17 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 Orderings and Front Trees November 15, 2025 │ │ │ │ │ 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. │ │ │ │ │ - October 18, 2025 Orderings and Front Trees 19 │ │ │ │ │ + November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 Orderings and Front Trees November 15, 2025 │ │ │ │ │ [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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o GPart.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1791,23 +1791,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1981,90 +1980,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5501,16 +5509,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 139[35 1[36 2[45 9[40 1[40 │ │ │ │ -51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ +63[{}5 90.9091 /CMBX10 rf /Fg 137[48 3[36 2[45 1[76 7[40 │ │ │ │ +2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ /CMSL10 rf /Fh 156[83 46 78[61 61 18[{}4 83.022 /CMEX10 │ │ │ │ rf /Fi 145[45 3[25 35 35 45 45 9[61 61 31[45 4[0 3[61 │ │ │ │ 28[71 71 1[71 17[71{}15 90.9091 /CMSY10 rf /Fj 146[62 │ │ │ │ 1[37 1[24 17[67 20[53 66[{}5 66.4176 /CMMI8 rf /Fk 204[35 │ │ │ │ 35 35 35 4[55 43[{}5 66.4176 /CMR8 rf /Fl 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 /Fm 136[60 1[49 30 37 38 1[46 │ │ │ │ @@ -5661,17 +5669,17 @@ │ │ │ │ b Fl(Y)55 b Fp(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 Fp(2)p 136 100 1106 4 v │ │ │ │ -1288 w Fo(GPart)28 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 0 399 a Fp(This)e(pro)s(cess)h(w)m(e)g(call)i │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1067 4 v │ │ │ │ +1248 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 0 399 a Fp(This)e(pro)s(cess)h(w)m(e)g(call)i │ │ │ │ Fo(DDSEP)p Fp(,)d(whic)m(h)h(is)g(short)f(for)h Fo(D)p │ │ │ │ Fm(omain)k Fo(D)p Fm(e)-5 b(c)g(omp)g(osition)35 b Fo(SEP)p │ │ │ │ Fm(ar)-5 b(ator)p Fp(,)32 b(explained)e(in)g(more)0 511 │ │ │ │ y(detail)i(in)e([)p Ff(?)p Fp(])h(and)f([)p Ff(?)p Fp(].)0 │ │ │ │ 827 y Fe(1.1)135 b(Data)46 b(Structures)0 1056 y Fp(The)40 │ │ │ │ b Fo(GPart)e Fp(structure)i(has)f(a)i(p)s(oin)m(ter)f(to)h(a)f │ │ │ │ Fo(Graph)f Fp(ob)5 b(ject)40 b(and)g(other)g(\014elds)g(that)g(con)m │ │ │ │ @@ -5726,21 +5734,21 @@ │ │ │ │ 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 Fo(DDSEP)e Fp(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.)137 5407 y Fn(\210)45 b Fp(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 1106 4 v 1287 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fp(3)330 399 y Ff({)45 b Fo(int)i(minweight)p │ │ │ │ -Fp(:)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 Fo(int)i(maxweight)p Fp(:)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 Fo(double)h(freeze)p Fp(:)51 b(m)m(ultiplier)37 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1067 4 v 1248 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)122 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fp(3)330 399 y Ff({)45 │ │ │ │ +b Fo(int)i(minweight)p Fp(:)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 Fo(int)i(maxweight)p │ │ │ │ +Fp(:)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 Fo(double)h(freeze)p Fp(:)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 │ │ │ │ Fo(v)f Fp(is)h(more)g(than)f Fo(freeze)f Fp(times)i(the)g(median)f │ │ │ │ (degree,)j Fo(v)e Fp(is)f(placed)h(in)m(to)h(the)427 │ │ │ │ 909 y(m)m(ultisector.)330 1051 y Ff({)45 b Fo(int)i(seed)p │ │ │ │ Fp(:)40 b(random)29 b(n)m(um)m(b)s(er)g(seed)330 1193 │ │ │ │ y Ff({)45 b Fo(int)i(DDoption)p Fp(:)d(If)32 b Fo(1)p │ │ │ │ @@ -5800,34 +5808,34 @@ │ │ │ │ (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 Fp(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 Fo(GPart)29 b Fp(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 Fp(4)p 136 100 1106 4 v │ │ │ │ -1288 w Fo(GPart)28 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -599 y Fp(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 Fo(GPart)h(*)g │ │ │ │ -(GPart_new)e(\()j(void)e(\))i(;)227 1113 y Fp(This)28 │ │ │ │ -b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ -Fo(GPart)f Fp(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ -227 1226 y(b)m(y)j(a)f(call)i(to)f Fo(GPart)p 953 1226 │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fp(.)111 1422 y(2.)46 │ │ │ │ -b Fo(void)h(GPart_setDefaultFields)42 b(\()47 b(GPart)f(*gpart)h(\))g │ │ │ │ -(;)227 1576 y Fp(This)34 b(metho)s(d)g(sets)i(the)f(structure's)f │ │ │ │ -(\014elds)g(to)i(default)f(v)-5 b(alues:)49 b Fo(id)f(=)f(-1)p │ │ │ │ -Fp(,)35 b Fo(nvtx)47 b(=)h(nvbnd)e(=)h(ncomp)227 1689 │ │ │ │ -y(=)h(0)p Fp(,)35 b Fo(g)g Fp(=)f Fo(par)g Fp(=)g Fo(fch)g │ │ │ │ -Fp(=)h Fo(sib)e Fp(=)i Fo(NULL)p Fp(,)f(and)g(the)h(default)g(\014elds) │ │ │ │ -f(for)g Fo(compidsIV)p Fp(,)f Fo(cweightsIV)f Fp(and)227 │ │ │ │ -1802 y Fo(vtxMapIV)c Fp(are)j(set)g(via)g(calls)h(to)f │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1067 4 v │ │ │ │ +1248 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 599 y Fp(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 Fo(GPart)h(*)g(GPart_new)e(\()j(void)e(\))i(;)227 │ │ │ │ +1113 y Fp(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e │ │ │ │ +(the)h Fo(GPart)f Fp(structure)g(and)g(then)g(sets)i(the)f(default)f │ │ │ │ +(\014elds)227 1226 y(b)m(y)j(a)f(call)i(to)f Fo(GPart)p │ │ │ │ +953 1226 29 4 v 33 w(setDefaultFields\(\))p Fp(.)111 │ │ │ │ +1422 y(2.)46 b Fo(void)h(GPart_setDefaultFields)42 b(\()47 │ │ │ │ +b(GPart)f(*gpart)h(\))g(;)227 1576 y Fp(This)34 b(metho)s(d)g(sets)i │ │ │ │ +(the)f(structure's)f(\014elds)g(to)i(default)f(v)-5 b(alues:)49 │ │ │ │ +b Fo(id)f(=)f(-1)p Fp(,)35 b Fo(nvtx)47 b(=)h(nvbnd)e(=)h(ncomp)227 │ │ │ │ +1689 y(=)h(0)p Fp(,)35 b Fo(g)g Fp(=)f Fo(par)g Fp(=)g │ │ │ │ +Fo(fch)g Fp(=)h Fo(sib)e Fp(=)i Fo(NULL)p Fp(,)f(and)g(the)h(default)g │ │ │ │ +(\014elds)f(for)g Fo(compidsIV)p Fp(,)f Fo(cweightsIV)f │ │ │ │ +Fp(and)227 1802 y Fo(vtxMapIV)c Fp(are)j(set)g(via)g(calls)h(to)f │ │ │ │ Fo(IV)p 1498 1802 V 34 w(setDefaultFields\(\))p Fp(.)227 │ │ │ │ 1956 y Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 │ │ │ │ b Fo(gpart)f Fp(is)i Fo(NULL)p Fp(,)e(an)h(error)g(message)i(is)e(prin) │ │ │ │ m(ted)g(and)g(the)h(program)f(exits.)111 2152 y(3.)46 │ │ │ │ b Fo(void)h(GPart_clearData)d(\()j(GPart)f(*gpart)g(\))i(;)227 │ │ │ │ 2306 y Fp(The)24 b Fo(IV)p 510 2306 V 34 w(clearData\(\))e │ │ │ │ Fp(metho)s(d)i(is)h(called)h(for)e(the)h Fo(compidsIV)p │ │ │ │ @@ -5870,42 +5878,42 @@ │ │ │ │ b(GPart)e(*gpart,)g(int)h(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ 5253 y Fp(This)30 b(metho)s(d)g(sets)g(the)h Fo(msglvl)e │ │ │ │ Fp(and)g Fo(msgFile)g Fp(\014elds.)227 5407 y Fm(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(gpart)f │ │ │ │ Fp(is)i Fo(NULL)p Fp(,)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 1106 4 v 1287 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fp(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ -b(metho)s(ds)111 599 y Fp(1.)46 b Fo(void)h(GPart_setCweights)c(\()k │ │ │ │ -(GPart)g(*gpart)f(\))h(;)227 753 y Fp(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 Fo(cweightsIV)p │ │ │ │ -Fp(.)c(W)-8 b(e)28 b(assume)e(that)h(the)f Fo(compidsIV)227 │ │ │ │ -866 y Fp(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 │ │ │ │ -(of)e(the)h(v)m(ertices)h(with)f(that)g(comp)s(onen)m(t's)g(id.)40 │ │ │ │ -b(W)-8 b(e)32 b(accept)g(the)f(separator)g(or)227 1092 │ │ │ │ -y(m)m(ultisector)25 b(v)m(ertices)h(\(those)e Fo(v)f │ │ │ │ -Fp(with)g Fo(compids[v])45 b(==)i(0)p Fp(\))24 b(but)f(then)g(\014nd)f │ │ │ │ -(the)h(connected)i(comp)s(onen)m(ts)227 1205 y(of)33 │ │ │ │ -b(the)g(remaining)f(v)m(ertices,)j(ren)m(um)m(b)s(ering)d(the)g │ │ │ │ -Fo(compidsIV)e Fp(v)m(ector)k(where)e(necessary)-8 b(.)48 │ │ │ │ -b(Th)m(us,)32 b Fo(ncomp)227 1318 y Fp(and)e Fo(compidsIV)e │ │ │ │ -Fp(ma)m(y)j(b)s(e)f(up)s(dated,)f(and)h Fo(cweightsIV)d │ │ │ │ -Fp(is)k(set.)227 1472 y Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ -b Fp(If)30 b Fo(gpart)f Fp(is)i Fo(NULL)p Fp(,)e(an)h(error)g(message)i │ │ │ │ -(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)111 1667 │ │ │ │ -y(2.)46 b Fo(int)h(GPart_sizeOf)e(\()i(GPart)f(*gpart)h(\))g(;)227 │ │ │ │ -1822 y Fp(This)33 b(metho)s(d)f(returns)g(the)i(n)m(um)m(b)s(er)d(of)j │ │ │ │ -(b)m(ytes)f(o)m(wned)g(b)m(y)h(the)f(ob)5 b(ject.)50 │ │ │ │ -b(This)32 b(includes)h(the)g(structure)227 1935 y(itself,)24 │ │ │ │ -b(the)e Fo(compidsIV)p Fp(,)d Fo(cweightsIV)f Fp(and)i │ │ │ │ -Fo(vtxMapIV)f Fp(arra)m(ys)j(\(if)f(presen)m(t\),)j(but)c │ │ │ │ +TeXDict begin 5 4 bop 91 100 1067 4 v 1248 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)122 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fp(5)0 399 y Fb(1.2.3)112 │ │ │ │ +b(Utilit)m(y)38 b(metho)s(ds)111 599 y Fp(1.)46 b Fo(void)h │ │ │ │ +(GPart_setCweights)c(\()k(GPart)g(*gpart)f(\))h(;)227 │ │ │ │ +753 y Fp(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 Fo(cweightsIV)p Fp(.)c(W)-8 b(e)28 │ │ │ │ +b(assume)e(that)h(the)f Fo(compidsIV)227 866 y Fp(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(of)e(the)h(v)m │ │ │ │ +(ertices)h(with)f(that)g(comp)s(onen)m(t's)g(id.)40 b(W)-8 │ │ │ │ +b(e)32 b(accept)g(the)f(separator)g(or)227 1092 y(m)m(ultisector)25 │ │ │ │ +b(v)m(ertices)h(\(those)e Fo(v)f Fp(with)g Fo(compids[v])45 │ │ │ │ +b(==)i(0)p Fp(\))24 b(but)f(then)g(\014nd)f(the)h(connected)i(comp)s │ │ │ │ +(onen)m(ts)227 1205 y(of)33 b(the)g(remaining)f(v)m(ertices,)j(ren)m │ │ │ │ +(um)m(b)s(ering)d(the)g Fo(compidsIV)e Fp(v)m(ector)k(where)e │ │ │ │ +(necessary)-8 b(.)48 b(Th)m(us,)32 b Fo(ncomp)227 1318 │ │ │ │ +y Fp(and)e Fo(compidsIV)e Fp(ma)m(y)j(b)s(e)f(up)s(dated,)f(and)h │ │ │ │ +Fo(cweightsIV)d Fp(is)k(set.)227 1472 y Fm(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)40 b Fp(If)30 b Fo(gpart)f Fp(is)i │ │ │ │ +Fo(NULL)p Fp(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h │ │ │ │ +(program)f(exits.)111 1667 y(2.)46 b Fo(int)h(GPart_sizeOf)e(\()i │ │ │ │ +(GPart)f(*gpart)h(\))g(;)227 1822 y Fp(This)33 b(metho)s(d)f(returns)g │ │ │ │ +(the)i(n)m(um)m(b)s(er)d(of)j(b)m(ytes)f(o)m(wned)g(b)m(y)h(the)f(ob)5 │ │ │ │ +b(ject.)50 b(This)32 b(includes)h(the)g(structure)227 │ │ │ │ +1935 y(itself,)24 b(the)e Fo(compidsIV)p Fp(,)d Fo(cweightsIV)f │ │ │ │ +Fp(and)i Fo(vtxMapIV)f Fp(arra)m(ys)j(\(if)f(presen)m(t\),)j(but)c │ │ │ │ Fo(not)h Fp(the)g Fo(Graph)f Fp(ob)5 b(ject.)227 2089 │ │ │ │ y Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b │ │ │ │ Fo(gpart)f Fp(is)i Fo(NULL)p Fp(,)e(an)h(error)g(message)i(is)e(prin)m │ │ │ │ (ted)g(and)g(the)h(program)f(exits.)111 2284 y(3.)46 │ │ │ │ b Fo(int)h(GPart_validVtxSep)c(\()48 b(GPart)e(*gpart)g(\))i(;)227 │ │ │ │ 2438 y Fp(This)36 b(metho)s(d)g(returns)g(1)h(if)f(the)h(partition)g │ │ │ │ (de\014ned)f(b)m(y)g(the)h Fo(compidsIV)d Fp(v)m(ector)k(has)f(a)g(v)-5 │ │ │ │ @@ -5960,28 +5968,29 @@ │ │ │ │ g(domain.)227 5294 y Fm(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ b Fp(If)29 b Fo(gpart)p Fp(,)f Fo(g)h Fp(or)h Fo(domid)e │ │ │ │ Fp(is)h Fo(NULL)p Fp(,)f(or)i(if)f Fo(v)g Fp(is)g(out)h(of)g(range)f │ │ │ │ (\(i.e.,)j Fo(v)25 b Fl(<)f Fp(0)30 b(or)g Fo(nvtx)24 │ │ │ │ b Fi(\024)h Fo(v)p Fp(\),)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 Fp(6)p 136 100 1106 4 v │ │ │ │ -1288 w Fo(GPart)28 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 111 399 a Fp(6.)46 b Fo(IV)h(*)h(GPart_bndWeightsIV) │ │ │ │ -43 b(\()k(GPart)g(*gpart)f(\))h(;)227 549 y Fp(This)27 │ │ │ │ -b(metho)s(d)g(returns)f(an)h Fo(IV)g Fp(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 Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 │ │ │ │ -b Fo(gpart)f Fp(or)i Fo(g)f Fp(is)g Fo(NULL)p Fp(,)g(an)g(error)g │ │ │ │ -(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)0 │ │ │ │ -1079 y Fb(1.2.4)112 b(Domain)39 b(decomp)s(osition)g(metho)s(ds)0 │ │ │ │ -1276 y Fp(There)30 b(are)h(presen)m(tly)f(t)m(w)m(o)i(metho)s(ds)e │ │ │ │ -(that)h(create)h(a)e(domain)h(decomp)s(osition)g(of)f(a)h(graph)f(or)g │ │ │ │ -(a)h(subgraph.)111 1512 y(1.)46 b Fo(void)h(GPart_DDviaFishnet)c(\()k │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1067 4 v │ │ │ │ +1248 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 111 399 a Fp(6.)46 b Fo(IV)h(*)h │ │ │ │ +(GPart_bndWeightsIV)43 b(\()k(GPart)g(*gpart)f(\))h(;)227 │ │ │ │ +549 y Fp(This)27 b(metho)s(d)g(returns)f(an)h Fo(IV)g │ │ │ │ +Fp(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 Fm(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)40 b Fp(If)30 b Fo(gpart)f Fp(or)i │ │ │ │ +Fo(g)f Fp(is)g Fo(NULL)p Fp(,)g(an)g(error)g(message)h(is)g(prin)m(ted) │ │ │ │ +f(and)f(the)i(program)f(exits.)0 1079 y Fb(1.2.4)112 │ │ │ │ +b(Domain)39 b(decomp)s(osition)g(metho)s(ds)0 1276 y │ │ │ │ +Fp(There)30 b(are)h(presen)m(tly)f(t)m(w)m(o)i(metho)s(ds)e(that)h │ │ │ │ +(create)h(a)e(domain)h(decomp)s(osition)g(of)f(a)h(graph)f(or)g(a)h │ │ │ │ +(subgraph.)111 1512 y(1.)46 b Fo(void)h(GPart_DDviaFishnet)c(\()k │ │ │ │ (GPart)g(*gpart,)e(double)h(frac,)h(int)g(minweight,)1468 │ │ │ │ 1624 y(int)g(maxweight,)e(int)i(seed)g(\))g(;)227 1775 │ │ │ │ y Fp(This)34 b(metho)s(d)f(generates)j(a)f(domain)f(decomp)s(osition)h │ │ │ │ (of)f(a)h(graph)e(using)h(the)h Fm(\014shnet)g Fp(algorithm)g(\(see)227 │ │ │ │ 1887 y([)p Ff(?)q Fp(])40 b(for)g(details\).)71 b(On)39 │ │ │ │ b(return,)j(the)e Fo(compidsIV)e Fp(v)m(ector)j(is)f(\014lled)g(with)g │ │ │ │ (comp)s(onen)m(t)g(ids)g(and)f Fo(ncomp)227 2000 y Fp(is)k(set)h(with)e │ │ │ │ @@ -6041,31 +6050,31 @@ │ │ │ │ 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 1106 4 v 1287 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fp(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 Fo(alpha)e Fp(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 Fl(S;)15 b(B)5 b(;)15 │ │ │ │ -b(W)e Fp(]\))30 b(=)f Fi(j)p Fl(S)5 b Fi(j)1776 551 y │ │ │ │ -Fh(\022)1838 670 y Fp(1)20 b(+)g Fl(\013)2062 608 y Fp(max)q │ │ │ │ -Fi(fj)p Fl(B)5 b Fi(j)p Fl(;)15 b Fi(j)p Fl(W)e Fi(jg)p │ │ │ │ -2062 649 574 4 v 2071 732 a Fp(min)p Fi(fj)p Fl(B)5 b │ │ │ │ -Fi(j)p Fl(;)15 b Fi(j)p Fl(W)e Fi(jg)2646 551 y Fh(\023)2707 │ │ │ │ -670 y Fp(.)48 b(The)32 b Fo(seed)f Fp(parameter)i(is)g(used)227 │ │ │ │ -826 y(to)23 b(randomize)f(the)h(algorithm.)39 b(One)21 │ │ │ │ -b(can)h(mak)m(e)i(sev)m(eral)f(runs)d(with)i(di\013eren)m(t)h(seeds)f │ │ │ │ -(and)f(c)m(hose)i(the)f(b)s(est)227 939 y(partition.)49 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1067 4 v 1248 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)122 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fp(7)227 399 y(Kernighan-Lin)j │ │ │ │ +(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 │ │ │ │ +Fo(alpha)e Fp(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 │ │ │ │ +Fl(S;)15 b(B)5 b(;)15 b(W)e Fp(]\))30 b(=)f Fi(j)p Fl(S)5 │ │ │ │ +b Fi(j)1776 551 y Fh(\022)1838 670 y Fp(1)20 b(+)g Fl(\013)2062 │ │ │ │ +608 y Fp(max)q Fi(fj)p Fl(B)5 b Fi(j)p Fl(;)15 b Fi(j)p │ │ │ │ +Fl(W)e Fi(jg)p 2062 649 574 4 v 2071 732 a Fp(min)p Fi(fj)p │ │ │ │ +Fl(B)5 b Fi(j)p Fl(;)15 b Fi(j)p Fl(W)e Fi(jg)2646 551 │ │ │ │ +y Fh(\023)2707 670 y Fp(.)48 b(The)32 b Fo(seed)f Fp(parameter)i(is)g │ │ │ │ +(used)227 826 y(to)23 b(randomize)f(the)h(algorithm.)39 │ │ │ │ +b(One)21 b(can)h(mak)m(e)i(sev)m(eral)f(runs)d(with)i(di\013eren)m(t)h │ │ │ │ +(seeds)f(and)f(c)m(hose)i(the)f(b)s(est)227 939 y(partition.)49 │ │ │ │ b(The)32 b Fo(cpus[])f Fp(arra)m(y)i(is)g(used)f(to)i(store)f │ │ │ │ (execution)h(times)f(for)g(segmen)m(ts)h(of)f(the)g(algorithm:)227 │ │ │ │ 1052 y Fo(cpus[0])g Fp(stores)j(the)f(time)h(to)g(compute)g(the)f │ │ │ │ (domain/segmen)m(t)i(map;)g Fo(cpus[2])c Fp(stores)j(the)f(time)h(to) │ │ │ │ 227 1165 y(create)26 b(the)e(domain/segmen)m(t)h(bipartite)g(graph;)h │ │ │ │ Fo(cpus[3])c Fp(stores)i(the)g(time)h(to)f(\014nd)f(the)h(bisector)g │ │ │ │ (using)227 1278 y(the)31 b(blo)s(c)m(k)g(Kernighan-Lin)e(algorithm.)227 │ │ │ │ @@ -6150,22 +6159,22 @@ │ │ │ │ Fp(\))p Fi(g)969 5407 y Fl(Y)1022 5421 y Fk(3)1144 5407 │ │ │ │ y Fp(=)83 b Fi(f)p Fl(y)28 b Fi(2)d Fl(Y)50 b Fi(j)31 │ │ │ │ b Fl(y)d Fi(2)d Fl(Ad)-10 b(j)5 b Fp(\()p Fl(B)26 b Fi(n)21 │ │ │ │ b Fl(Y)f Fp(\))30 b(and)g Fl(y)e Fi(2)d Fl(Ad)-10 b(j)5 │ │ │ │ b Fp(\()p Fl(W)34 b Fi(n)21 b Fl(Y)f Fp(\))p Fi(g)p eop │ │ │ │ end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1106 4 v │ │ │ │ -1288 w Fo(GPart)28 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 227 399 a Fp(The)e Fo(YVmapIV)e Fp(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 Fl(Y)20 b Fp(.)40 b(The)29 b Fo(IV)f │ │ │ │ -Fp(ob)5 b(ject)30 b(that)227 511 y(is)i(returned,)g(\(called)h │ │ │ │ -Fo(YCmapIV)d Fp(in)i(the)g(calling)i(metho)s(d\))e(con)m(tains)h(the)f │ │ │ │ -(subscripts)f(of)h(the)g Fl(Y)3561 525 y Fk(0)3600 511 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1067 4 v │ │ │ │ +1248 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 227 399 a Fp(The)e Fo(YVmapIV)e │ │ │ │ +Fp(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 Fl(Y)20 b Fp(.)40 b(The)29 │ │ │ │ +b Fo(IV)f Fp(ob)5 b(ject)30 b(that)227 511 y(is)i(returned,)g(\(called) │ │ │ │ +h Fo(YCmapIV)d Fp(in)i(the)g(calling)i(metho)s(d\))e(con)m(tains)h(the) │ │ │ │ +f(subscripts)f(of)h(the)g Fl(Y)3561 525 y Fk(0)3600 511 │ │ │ │ y Fp(,)h Fl(Y)3711 525 y Fk(1)3750 511 y Fp(,)g Fl(Y)3861 │ │ │ │ 525 y Fk(2)227 624 y Fp(or)e Fl(Y)392 638 y Fk(3)461 │ │ │ │ 624 y Fp(sets)g(that)g(con)m(tains)g(eac)m(h)h(v)m(ertex.)227 │ │ │ │ 784 y Fm(Err)-5 b(or)38 b(che)-5 b(cking:)49 b Fp(If)35 │ │ │ │ b Fo(gpart)p Fp(,)f Fo(g)h Fp(or)g Fo(YVmapIV)d Fp(is)j │ │ │ │ Fo(NULL)p Fp(,)f(or)h(if)g Fo(nvtx)c Fi(\024)h Fp(0,)37 │ │ │ │ b(or)e(if)f Fo(YVmapIV)f Fp(is)i(empt)m(y)-8 b(,)37 b(an)227 │ │ │ │ @@ -6271,35 +6280,36 @@ │ │ │ │ 5135 29 4 v 33 w(smoothYSep\(\))p Fp(.)227 5294 y Fm(Err)-5 │ │ │ │ b(or)40 b(che)-5 b(cking:)52 b Fp(If)36 b Fo(gpart)e │ │ │ │ Fp(is)j Fo(NULL)p Fp(,)e(or)h(if)h Fo(nlevel)c Fl(<)i │ │ │ │ Fp(0,)j(or)f(if)f Fo(alpha)e Fl(<)g Fp(0)p Fl(:)p Fp(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 1106 4 v 1287 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fp(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ -b(Bisection)f(metho)s(d)0 589 y Fp(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 Fo(DSTree)g(*)i(GPart_RBviaDDsep)43 b(\()48 │ │ │ │ -b(GPart)e(*gpart,)g(DDsepInfo)f(*info)h(\))i(;)227 932 │ │ │ │ -y Fp(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 Fo(DDSEP)e Fp(algorithm)k(and)227 │ │ │ │ -1045 y(returns)25 b(a)h Fo(DSTree)e Fp(ob)5 b(ject)27 │ │ │ │ -b(that)f(represen)m(ts)f(the)h(domain/separator)h(tree)g(and)e(the)h │ │ │ │ -(map)f(from)g(v)m(ertices)227 1158 y(to)44 b(domains)e(and)g │ │ │ │ -(separators.)78 b(The)42 b Fo(DDsepInfo)e Fp(structure)i(con)m(tains)h │ │ │ │ -(all)h(the)f(parameters)f(to)i(the)227 1271 y(di\013eren)m(t)28 │ │ │ │ -b(steps)f(of)h(the)f Fo(DDSEP)f Fp(algorithm)i(\(the)g(\014shnet)e │ │ │ │ -(metho)s(d)h(to)h(\014nd)e(the)h(domain)g(decomp)s(osition,)227 │ │ │ │ -1384 y(the)c(Blo)s(c)m(k)h(Kernighan-Lin)d(metho)s(d)h(to)h(\014nd)e │ │ │ │ -(an)i(initial)g(separator,)i(and)d(solv)m(es)i(a)e(max)h(\015o)m(w)f │ │ │ │ -(problem)g(to)227 1496 y(impro)m(v)m(e)31 b(the)f(separator\).)41 │ │ │ │ -b(An)30 b(attempt)g(is)g(made)g(to)g(split)g(a)g(subgraph)f(if)g(the)h │ │ │ │ -(w)m(eigh)m(t)h(of)f(the)g(in)m(ternal)227 1609 y(v)m(ertices)45 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1067 4 v 1248 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)122 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fp(9)0 399 y Fb(1.2.7)112 │ │ │ │ +b(Recursiv)m(e)38 b(Bisection)f(metho)s(d)0 589 y Fp(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 Fo(DSTree)g(*)i │ │ │ │ +(GPart_RBviaDDsep)43 b(\()48 b(GPart)e(*gpart,)g(DDsepInfo)f(*info)h │ │ │ │ +(\))i(;)227 932 y Fp(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 Fo(DDSEP)e │ │ │ │ +Fp(algorithm)k(and)227 1045 y(returns)25 b(a)h Fo(DSTree)e │ │ │ │ +Fp(ob)5 b(ject)27 b(that)f(represen)m(ts)f(the)h(domain/separator)h │ │ │ │ +(tree)g(and)e(the)h(map)f(from)g(v)m(ertices)227 1158 │ │ │ │ +y(to)44 b(domains)e(and)g(separators.)78 b(The)42 b Fo(DDsepInfo)e │ │ │ │ +Fp(structure)i(con)m(tains)h(all)h(the)f(parameters)f(to)i(the)227 │ │ │ │ +1271 y(di\013eren)m(t)28 b(steps)f(of)h(the)f Fo(DDSEP)f │ │ │ │ +Fp(algorithm)i(\(the)g(\014shnet)e(metho)s(d)h(to)h(\014nd)e(the)h │ │ │ │ +(domain)g(decomp)s(osition,)227 1384 y(the)c(Blo)s(c)m(k)h │ │ │ │ +(Kernighan-Lin)d(metho)s(d)h(to)h(\014nd)e(an)i(initial)g(separator,)i │ │ │ │ +(and)d(solv)m(es)i(a)e(max)h(\015o)m(w)f(problem)g(to)227 │ │ │ │ +1496 y(impro)m(v)m(e)31 b(the)f(separator\).)41 b(An)30 │ │ │ │ +b(attempt)g(is)g(made)g(to)g(split)g(a)g(subgraph)f(if)g(the)h(w)m │ │ │ │ +(eigh)m(t)h(of)f(the)g(in)m(ternal)227 1609 y(v)m(ertices)45 │ │ │ │ b(of)e(the)g(subgraph)f(exceeds)i Fo(info->maxcompweight)p │ │ │ │ Fp(.)73 b(The)43 b(cpu)f(times)h(for)g(the)g(di\013eren)m(t)227 │ │ │ │ 1722 y(segmen)m(ts)32 b(of)e(the)h(algorithm)g(are)g(accum)m(ulated)h │ │ │ │ (in)e(\014elds)g(of)g(the)h Fo(DDsepInfo)d Fp(ob)5 b(ject.)227 │ │ │ │ 1867 y Fm(Err)-5 b(or)33 b(che)-5 b(cking:)39 b Fp(If)29 │ │ │ │ b Fo(gpart)e Fp(or)i Fo(info)f Fp(is)h Fo(NULL)p Fp(,)f(or)h(if)g │ │ │ │ Fo(nvtx)24 b Fi(\024)h Fp(0,)30 b(an)e(error)h(message)h(is)f(prin)m │ │ │ │ @@ -6344,61 +6354,62 @@ │ │ │ │ (whether)e Fo(info)f Fp(is)i Fo(NULL)p Fp(.)f Fo(DDsepInfo)p │ │ │ │ 2663 5150 V 32 w(setDefaultFields\(\))c Fp(is)32 b(called)227 │ │ │ │ 5263 y(to)f(set)g(the)g(default)f(v)-5 b(alues.)227 5407 │ │ │ │ y Fm(Err)g(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(info)g │ │ │ │ Fp(is)g Fo(NULL)p Fp(,)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 Fp(10)p 182 100 1083 4 │ │ │ │ -v 1265 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 111 399 a Fp(4.)46 b Fo(void)h(DDsepInfo_free)d(\()j │ │ │ │ -(DDsepInfo)f(*info)g(\))h(;)227 545 y Fp(This)33 b(metho)s(d)g(c)m(hec) │ │ │ │ -m(ks)h(to)g(see)g(whether)f Fo(info)f Fp(is)h Fo(NULL)p │ │ │ │ -Fp(.)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 Fo(DDsepInfo)p 3141 │ │ │ │ -658 29 4 v 31 w(clearData\(\))c Fp(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 │ │ │ │ -Fo(free\(\))p Fp(.)227 917 y Fm(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fp(If)30 b Fo(info)g Fp(is)g Fo(NULL)p │ │ │ │ -Fp(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ -(exits.)111 1097 y(5.)46 b Fo(void)h(DDsepInfo_writeCpuTimes)41 │ │ │ │ -b(\()48 b(DDsepInfo)d(*info,)h(FILE)h(*msgFile)e(\))j(;)227 │ │ │ │ -1244 y Fp(This)32 b(metho)s(d)h(writes)f(a)i(breakdo)m(wn)e(of)h(the)g │ │ │ │ -(CPU)f(times)i(in)e(a)i(meaningful)e(format.)49 b(Here)33 │ │ │ │ -b(is)g(sample)227 1357 y(output.)275 1559 y Fo(CPU)47 │ │ │ │ -b(breakdown)e(for)i(graph)f(partition)943 1671 y(raw)h(CPU)142 │ │ │ │ -b(per)47 b(cent)275 1784 y(misc)333 b(:)286 b(1.61)190 │ │ │ │ -b(1.2\045)275 1897 y(Split)285 b(:)238 b(24.68)142 b(17.7\045)275 │ │ │ │ -2010 y(find)47 b(DD)190 b(:)238 b(12.13)190 b(8.7\045)275 │ │ │ │ -2123 y(DomSeg)46 b(Map)h(:)238 b(13.09)190 b(9.4\045)275 │ │ │ │ -2236 y(DomSeg)46 b(BPG)h(:)286 b(4.66)190 b(3.3\045)275 │ │ │ │ -2349 y(BKL)381 b(:)286 b(5.68)190 b(4.1\045)275 2462 │ │ │ │ -y(Smooth)237 b(:)h(77.83)142 b(55.7\045)275 2575 y(Total)285 │ │ │ │ -b(:)191 b(139.67)93 b(100.0\045)227 2777 y Fm(Err)-5 │ │ │ │ -b(or)41 b(che)-5 b(cking:)56 b Fp(If)38 b Fo(info)f Fp(or)h │ │ │ │ -Fo(msgFile)e Fp(is)j Fo(NULL)p Fp(,)e(an)h(error)g(message)h(is)f(prin) │ │ │ │ -m(ted)g(and)g(the)g(program)227 2890 y(exits.)0 3194 │ │ │ │ -y Fe(1.3)135 b(Driv)l(er)46 b(programs)g(for)f(the)g │ │ │ │ -Fc(GPart)d Fe(ob)7 b(ject)0 3418 y Fp(This)30 b(section)h(con)m(tains)h │ │ │ │ -(brief)e(descriptions)g(of)g(four)g(driv)m(er)g(programs.)111 │ │ │ │ -3628 y(1.)46 b Fo(testDDviaFishnet)e(msglvl)i(msgFile)g(inGraphFile)e │ │ │ │ -(freeze)i(minweight)g(maxweight)1039 3741 y(seed)g(outIVfile)227 │ │ │ │ -3887 y Fp(This)24 b(driv)m(er)g(program)g(constructs)g(a)h(domain)f │ │ │ │ -(decomp)s(osition)h(via)g(the)f Fm(\014shnet)h Fp(algorithm)g([)p │ │ │ │ -Ff(?)q Fp(].)39 b(It)24 b(reads)227 4000 y(in)f(a)h Fo(Graph)e │ │ │ │ -Fp(ob)5 b(ject)24 b(from)f(a)h(\014le,)h(\014nds)c(the)j(domain)f │ │ │ │ -(decomp)s(osition)h(using)f(the)g(four)g(input)f(parameters,)227 │ │ │ │ -4113 y(then)30 b(optionally)i(writes)f(out)f(the)h(map)f(from)g(v)m │ │ │ │ -(ertices)i(to)f(comp)s(onen)m(ts)f(to)h(a)g(\014le.)337 │ │ │ │ -4314 y Fn(\210)45 b Fp(The)30 b Fo(msglvl)f Fp(parameter)i(determines)f │ │ │ │ -(the)h(amoun)m(t)f(of)h(output.)337 4453 y Fn(\210)45 │ │ │ │ -b Fp(The)37 b Fo(msgFile)e Fp(parameter)j(determines)f(the)g(output)g │ │ │ │ -(\014le)g(|)g(if)g Fo(msgFile)e Fp(is)j Fo(stdout)p Fp(,)f(then)g(the) │ │ │ │ -427 4566 y(output)29 b(\014le)h(is)f Fm(stdout)p Fp(,)i(otherwise)f(a)f │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1044 4 │ │ │ │ +v 1226 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2857 100 V 111 399 a Fp(4.)46 b Fo(void)h │ │ │ │ +(DDsepInfo_free)d(\()j(DDsepInfo)f(*info)g(\))h(;)227 │ │ │ │ +545 y Fp(This)33 b(metho)s(d)g(c)m(hec)m(ks)h(to)g(see)g(whether)f │ │ │ │ +Fo(info)f Fp(is)h Fo(NULL)p Fp(.)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 Fo(DDsepInfo)p 3141 658 29 4 v 31 w(clearData\(\))c │ │ │ │ +Fp(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 Fo(free\(\))p Fp(.)227 917 y │ │ │ │ +Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(info)g │ │ │ │ +Fp(is)g Fo(NULL)p Fp(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ +(the)i(program)f(exits.)111 1097 y(5.)46 b Fo(void)h │ │ │ │ +(DDsepInfo_writeCpuTimes)41 b(\()48 b(DDsepInfo)d(*info,)h(FILE)h │ │ │ │ +(*msgFile)e(\))j(;)227 1244 y Fp(This)32 b(metho)s(d)h(writes)f(a)i │ │ │ │ +(breakdo)m(wn)e(of)h(the)g(CPU)f(times)i(in)e(a)i(meaningful)e(format.) │ │ │ │ +49 b(Here)33 b(is)g(sample)227 1357 y(output.)275 1559 │ │ │ │ +y Fo(CPU)47 b(breakdown)e(for)i(graph)f(partition)943 │ │ │ │ +1671 y(raw)h(CPU)142 b(per)47 b(cent)275 1784 y(misc)333 │ │ │ │ +b(:)286 b(1.61)190 b(1.2\045)275 1897 y(Split)285 b(:)238 │ │ │ │ +b(24.68)142 b(17.7\045)275 2010 y(find)47 b(DD)190 b(:)238 │ │ │ │ +b(12.13)190 b(8.7\045)275 2123 y(DomSeg)46 b(Map)h(:)238 │ │ │ │ +b(13.09)190 b(9.4\045)275 2236 y(DomSeg)46 b(BPG)h(:)286 │ │ │ │ +b(4.66)190 b(3.3\045)275 2349 y(BKL)381 b(:)286 b(5.68)190 │ │ │ │ +b(4.1\045)275 2462 y(Smooth)237 b(:)h(77.83)142 b(55.7\045)275 │ │ │ │ +2575 y(Total)285 b(:)191 b(139.67)93 b(100.0\045)227 │ │ │ │ +2777 y Fm(Err)-5 b(or)41 b(che)-5 b(cking:)56 b Fp(If)38 │ │ │ │ +b Fo(info)f Fp(or)h Fo(msgFile)e Fp(is)j Fo(NULL)p Fp(,)e(an)h(error)g │ │ │ │ +(message)h(is)f(prin)m(ted)g(and)g(the)g(program)227 │ │ │ │ +2890 y(exits.)0 3194 y Fe(1.3)135 b(Driv)l(er)46 b(programs)g(for)f │ │ │ │ +(the)g Fc(GPart)d Fe(ob)7 b(ject)0 3418 y Fp(This)30 │ │ │ │ +b(section)h(con)m(tains)h(brief)e(descriptions)g(of)g(four)g(driv)m(er) │ │ │ │ +g(programs.)111 3628 y(1.)46 b Fo(testDDviaFishnet)e(msglvl)i(msgFile)g │ │ │ │ +(inGraphFile)e(freeze)i(minweight)g(maxweight)1039 3741 │ │ │ │ +y(seed)g(outIVfile)227 3887 y Fp(This)24 b(driv)m(er)g(program)g │ │ │ │ +(constructs)g(a)h(domain)f(decomp)s(osition)h(via)g(the)f │ │ │ │ +Fm(\014shnet)h Fp(algorithm)g([)p Ff(?)q Fp(].)39 b(It)24 │ │ │ │ +b(reads)227 4000 y(in)f(a)h Fo(Graph)e Fp(ob)5 b(ject)24 │ │ │ │ +b(from)f(a)h(\014le,)h(\014nds)c(the)j(domain)f(decomp)s(osition)h │ │ │ │ +(using)f(the)g(four)g(input)f(parameters,)227 4113 y(then)30 │ │ │ │ +b(optionally)i(writes)f(out)f(the)h(map)f(from)g(v)m(ertices)i(to)f │ │ │ │ +(comp)s(onen)m(ts)f(to)h(a)g(\014le.)337 4314 y Fn(\210)45 │ │ │ │ +b Fp(The)30 b Fo(msglvl)f Fp(parameter)i(determines)f(the)h(amoun)m(t)f │ │ │ │ +(of)h(output.)337 4453 y Fn(\210)45 b Fp(The)37 b Fo(msgFile)e │ │ │ │ +Fp(parameter)j(determines)f(the)g(output)g(\014le)g(|)g(if)g │ │ │ │ +Fo(msgFile)e Fp(is)j Fo(stdout)p Fp(,)f(then)g(the)427 │ │ │ │ +4566 y(output)29 b(\014le)h(is)f Fm(stdout)p Fp(,)i(otherwise)f(a)f │ │ │ │ (\014le)h(is)f(op)s(ened)g(with)g Fm(app)-5 b(end)31 │ │ │ │ b Fp(status)e(to)i(receiv)m(e)g(an)m(y)e(output)427 4679 │ │ │ │ y(data.)337 4817 y Fn(\210)45 b Fp(The)23 b Fo(inGraphFile)d │ │ │ │ Fp(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ Fo(Graph)f Fp(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f │ │ │ │ (form)427 4930 y Fo(*.graphf)18 b Fp(or)j Fo(*.graphb)p │ │ │ │ Fp(.)35 b(The)19 b Fo(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ @@ -6407,33 +6418,33 @@ │ │ │ │ y Fn(\210)45 b Fp(The)29 b Fo(freeze)e Fp(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 Fo(freeze)d Fp(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 1083 4 v 1264 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fp(11)337 399 y Fn(\210)45 b Fp(The)30 │ │ │ │ -b Fm(tar)-5 b(get)32 b Fp(minim)m(um)d(w)m(eigh)m(t)j(for)e(a)h(domain) │ │ │ │ -f(is)h Fo(minweight)p Fp(.)337 551 y Fn(\210)45 b Fp(The)30 │ │ │ │ -b Fm(tar)-5 b(get)32 b Fp(maxim)m(um)e(w)m(eigh)m(t)i(for)e(a)h(domain) │ │ │ │ -f(is)g Fo(maxweight)p Fp(.)337 703 y Fn(\210)45 b Fp(The)30 │ │ │ │ -b Fo(seed)f Fp(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s(er)f(seed.) │ │ │ │ -337 856 y Fn(\210)45 b Fp(The)39 b Fo(outIVfile)d Fp(parameter)k(is)f │ │ │ │ -(the)g(output)f(\014le)h(for)g(the)g Fo(IV)g Fp(ob)5 │ │ │ │ -b(ject)39 b(that)h(con)m(tains)g(the)f(map)427 969 y(from)25 │ │ │ │ -b(v)m(ertices)j(to)e(comp)s(onen)m(ts.)39 b(If)25 b Fo(outIVfile)e │ │ │ │ -Fp(is)j Fo("none")p Fp(,)f(then)g(there)h(is)g(no)f(output,)i │ │ │ │ -(otherwise)427 1082 y Fo(outIVfile)h Fp(m)m(ust)i(b)s(e)g(of)h(the)f │ │ │ │ -(form)g Fo(*.ivf)f Fp(or)h Fo(*.ivb)p Fp(.)111 1310 y(2.)46 │ │ │ │ -b Fo(testTwoSetViaBKL)e(msglvl)i(msgFile)g(inGraphFile)e(inIVfile)1039 │ │ │ │ -1423 y(seed)i(alpha)h(outIVfile)227 1579 y Fp(This)24 │ │ │ │ -b(driv)m(er)g(program)g(constructs)h(a)f(t)m(w)m(o-set)j(partition)e │ │ │ │ -(via)g(the)f(Blo)s(c)m(k)i(Kernighan-Lin)e(algorithm)h([)p │ │ │ │ +TeXDict begin 11 10 bop 91 100 1044 4 v 1225 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fp(11)337 399 y Fn(\210)45 │ │ │ │ +b Fp(The)30 b Fm(tar)-5 b(get)32 b Fp(minim)m(um)d(w)m(eigh)m(t)j(for)e │ │ │ │ +(a)h(domain)f(is)h Fo(minweight)p Fp(.)337 551 y Fn(\210)45 │ │ │ │ +b Fp(The)30 b Fm(tar)-5 b(get)32 b Fp(maxim)m(um)e(w)m(eigh)m(t)i(for)e │ │ │ │ +(a)h(domain)f(is)g Fo(maxweight)p Fp(.)337 703 y Fn(\210)45 │ │ │ │ +b Fp(The)30 b Fo(seed)f Fp(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s │ │ │ │ +(er)f(seed.)337 856 y Fn(\210)45 b Fp(The)39 b Fo(outIVfile)d │ │ │ │ +Fp(parameter)k(is)f(the)g(output)f(\014le)h(for)g(the)g │ │ │ │ +Fo(IV)g Fp(ob)5 b(ject)39 b(that)h(con)m(tains)g(the)f(map)427 │ │ │ │ +969 y(from)25 b(v)m(ertices)j(to)e(comp)s(onen)m(ts.)39 │ │ │ │ +b(If)25 b Fo(outIVfile)e Fp(is)j Fo("none")p Fp(,)f(then)g(there)h(is)g │ │ │ │ +(no)f(output,)i(otherwise)427 1082 y Fo(outIVfile)h Fp(m)m(ust)i(b)s(e) │ │ │ │ +g(of)h(the)f(form)g Fo(*.ivf)f Fp(or)h Fo(*.ivb)p Fp(.)111 │ │ │ │ +1310 y(2.)46 b Fo(testTwoSetViaBKL)e(msglvl)i(msgFile)g(inGraphFile)e │ │ │ │ +(inIVfile)1039 1423 y(seed)i(alpha)h(outIVfile)227 1579 │ │ │ │ +y Fp(This)24 b(driv)m(er)g(program)g(constructs)h(a)f(t)m(w)m(o-set)j │ │ │ │ +(partition)e(via)g(the)f(Blo)s(c)m(k)i(Kernighan-Lin)e(algorithm)h([)p │ │ │ │ Ff(?)p Fp(].)227 1692 y(It)30 b(reads)f(in)h(a)g Fo(Graph)e │ │ │ │ Fp(ob)5 b(ject)30 b(and)f(an)h Fo(IV)f Fp(ob)5 b(ject)31 │ │ │ │ b(that)f(holds)f(the)h(map)f(from)g(v)m(ertices)i(to)g(comp)s(onen)m │ │ │ │ (ts)227 1805 y(\(e.g.,)38 b(the)d(output)f(from)h(the)f(driv)m(er)h │ │ │ │ (program)f Fo(testDDviaFishet)p Fp(\))d(from)k(t)m(w)m(o)h(\014les,)g │ │ │ │ (constructs)f(the)227 1918 y(domain-segmen)m(t)28 b(graph)e(and)g │ │ │ │ (\014nds)f(an)i(initial)h(separator,)g(then)f(optionally)h(writes)e │ │ │ │ @@ -6486,20 +6497,20 @@ │ │ │ │ 5181 y Fn(\210)45 b Fp(The)37 b Fo(msgFile)e Fp(parameter)j(determines) │ │ │ │ f(the)g(output)g(\014le)g(|)g(if)g Fo(msgFile)e Fp(is)j │ │ │ │ Fo(stdout)p Fp(,)f(then)g(the)427 5294 y(output)29 b(\014le)h(is)f │ │ │ │ Fm(stdout)p Fp(,)i(otherwise)f(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ Fm(app)-5 b(end)31 b Fp(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 Fp(12)p 182 100 1083 │ │ │ │ -4 v 1265 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 337 399 a Fn(\210)45 b Fp(The)23 b │ │ │ │ -Fo(inGraphFile)d Fp(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ -Fo(Graph)f Fp(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 Fo(*.graphf)18 b Fp(or)j Fo(*.graphb)p │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1044 │ │ │ │ +4 v 1226 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 337 399 a Fn(\210)45 b │ │ │ │ +Fp(The)23 b Fo(inGraphFile)d Fp(parameter)k(is)f(the)h(input)e(\014le)i │ │ │ │ +(for)f(the)g Fo(Graph)f Fp(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 Fo(*.graphf)18 b Fp(or)j Fo(*.graphb)p │ │ │ │ Fp(.)35 b(The)19 b Fo(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fo(Graph)p 3368 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fp(metho)s(d.)337 770 │ │ │ │ y Fn(\210)45 b Fp(The)31 b Fo(inIVfile)d Fp(parameter)k(is)f(the)g │ │ │ │ (input)f(\014le)h(for)g(the)g Fo(IV)f Fp(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 Fo(inIVfile)e │ │ │ │ @@ -6567,18 +6578,18 @@ │ │ │ │ y Fn(\210)45 b Fp(The)30 b Fo(alpha)f Fp(parameter)i(con)m(trols)h(the) │ │ │ │ e(partition)h(ev)-5 b(aluation)32 b(function.)337 5294 │ │ │ │ y Fn(\210)45 b Fp(The)i Fo(maxdomweight)e Fp(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 Fo(maxdomweight)d │ │ │ │ Fp(is)j(further)f(split.)p eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1083 4 v 1264 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fp(13)337 399 y Fn(\210)45 b Fp(The)c │ │ │ │ -Fo(DDoption)e Fp(parameter)j(con)m(trols)h(the)f(initial)h │ │ │ │ +TeXDict begin 13 12 bop 91 100 1044 4 v 1225 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fp(13)337 399 y Fn(\210)45 │ │ │ │ +b Fp(The)c Fo(DDoption)e Fp(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 Fo(DDDoption)45 b(=)j(1)37 │ │ │ │ b Fp(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 Fo(DDDoption)46 b(=)h(1)32 │ │ │ │ b Fp(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 │ │ │ │ b(jected)31 b(do)m(wn)f(on)m(to)h(eac)m(h)h(subgraph.)337 │ │ │ │ @@ -6647,25 +6658,26 @@ │ │ │ │ 5275 y Ff({)45 b Fo(nlayer)h(=)i(2)30 b Fp(|)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 Fo(nlayer)h(>)i(2)30 │ │ │ │ b Fp(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f Fo(option/2)e │ │ │ │ Fp(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 Fp(14)p 182 100 1083 │ │ │ │ -4 v 1265 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 337 399 a Fn(\210)45 b Fp(The)34 b │ │ │ │ -Fo(outDSTreeFile)d Fp(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ -(the)h Fo(DSTree)e Fp(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 Fo(*.dstreef)e Fp(or)j Fo(*.dstreeb)p │ │ │ │ -Fp(.)37 b(If)29 b Fo(outDSTreeFile)24 b Fp(is)29 b(not)g │ │ │ │ -Fo("none")p Fp(,)e(the)i Fo(DSTree)e Fp(ob)5 b(ject)427 │ │ │ │ -624 y(is)31 b(written)f(to)h(the)g(\014le)f(via)h(the)g │ │ │ │ -Fo(DSTree)p 1851 624 29 4 v 33 w(writeToFile\(\))26 b │ │ │ │ -Fp(metho)s(d.)p eop end │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1044 │ │ │ │ +4 v 1226 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 100 V 337 399 a Fn(\210)45 b │ │ │ │ +Fp(The)34 b Fo(outDSTreeFile)d Fp(parameter)k(is)f(the)h(output)f │ │ │ │ +(\014le)g(for)g(the)h Fo(DSTree)e Fp(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 │ │ │ │ +Fo(*.dstreef)e Fp(or)j Fo(*.dstreeb)p Fp(.)37 b(If)29 │ │ │ │ +b Fo(outDSTreeFile)24 b Fp(is)29 b(not)g Fo("none")p │ │ │ │ +Fp(,)e(the)i Fo(DSTree)e Fp(ob)5 b(ject)427 624 y(is)31 │ │ │ │ +b(written)f(to)h(the)g(\014le)f(via)h(the)g Fo(DSTree)p │ │ │ │ +1851 624 29 4 v 33 w(writeToFile\(\))26 b Fp(metho)s(d.)p │ │ │ │ +eop end │ │ │ │ %%Page: 15 15 │ │ │ │ TeXDict begin 15 14 bop 0 866 a Fq(Index)0 1289 y Fo(DDsepInfo)p │ │ │ │ 438 1289 29 4 v 32 w(clearData\(\))p Fp(,)27 b(9)0 1402 │ │ │ │ y Fo(DDsepInfo)p 438 1402 V 32 w(free\(\))p Fp(,)i(10)0 │ │ │ │ 1515 y Fo(DDsepInfo)p 438 1515 V 32 w(new\(\))p Fp(,)g(9)0 │ │ │ │ 1628 y Fo(DDsepInfo)p 438 1628 V 32 w(setDefaultFields\(\))p │ │ │ │ Fp(,)d(9)0 1824 y Fo(GPart)p 246 1824 V 33 w(bndWeightsIV\(\))p │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 GPart : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + GPart : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 GPart : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + GPart : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 GPart : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + GPart : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 GPart : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + GPart : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 GPart : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + GPart : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 GPart : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 13 │ │ │ │ │ + GPart : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 GPart : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Graph.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1205,23 +1205,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1395,90 +1394,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5632,20 +5640,20 @@ │ │ │ │ FFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022227B │ │ │ │ A72D>136 D E │ │ │ │ /Fc load 0 Fc currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ /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 139[35 1[36 2[45 9[40 │ │ │ │ -1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ -90.9091 /CMSL10 rf /Ff 141[39 1[39 7[39 6[39 10[39 9[39 │ │ │ │ -2[39 1[39 1[39 69[{}9 74.7198 /CMTT9 rf /Fg 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 /Fh 206[30 │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 137[48 3[36 2[45 1[76 │ │ │ │ +7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ +/CMSL10 rf /Ff 141[39 1[39 7[39 6[39 10[39 9[39 2[39 │ │ │ │ +1[39 1[39 69[{}9 74.7198 /CMTT9 rf /Fg 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 /Fh 206[30 │ │ │ │ 49[{}1 49.8132 /CMR6 rf /Fi 145[45 3[25 50[0 4[61 16[91 │ │ │ │ 6[71 4[71 71 17[71 25 1[{}10 90.9091 /CMSY10 rf /Fj 136[65 │ │ │ │ 44 52 30[53 2[56 3[69 7[71 1[67 6[71 1[71 25 28[54 30[{}12 │ │ │ │ 90.9091 /CMMI10 rf /Fk 137[55 58 41 4[52 58 23[79 1[73 │ │ │ │ 58 3[79 1[99 3[40 82 82 1[69 1[76 1[79 1[49 63[{}17 90.9091 │ │ │ │ /CMBX10 rf /Fl 134[44 3[49 30 37 38 1[46 46 51 74 23 │ │ │ │ 42 28 28 46 42 28 42 46 42 42 46 12[65 1[66 4[82 6[59 │ │ │ │ @@ -5761,17 +5769,17 @@ │ │ │ │ b(=)d Fj(w)r Fo(\()p Fk(u)p Fo(\))c Fi(\001)g Fj(w)r │ │ │ │ Fo(\()p Fk(v)q Fo(\))p 0 5322 1560 4 v 104 5375 a Fh(1)138 │ │ │ │ 5407 y Fg(The)26 b Ff(EGraph)h Fg(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 Ff(IVL)g Fg(ob)t(ject.)1927 │ │ │ │ 5656 y Fo(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(Graph)28 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 0 399 a Fo(and)36 b(it)i(is)f(the)g(smallest)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 0 399 a Fo(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 Fl(loss-less)p Fo(,)j(for)d(giv)m(en)h │ │ │ │ Fk(G)p Fo(\()p Fk(V)q Fj(;)15 b Fk(E)p Fo(\))0 511 y(and)30 │ │ │ │ b Fj(\036)p Fo(,)i(w)m(e)f(can)g(reconstruct)h(the)f(unit)f(w)m(eigh)m │ │ │ │ (t)j(graph)d Fj(G)p Fo(\()p Fj(V)5 b(;)15 b(E)5 b Fo(\).)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 │ │ │ │ @@ -5827,32 +5835,32 @@ │ │ │ │ (non-)p Fn(NULL)e Fo(if)h Fn(type)46 b(/)i(2)f(==)g(1)0 │ │ │ │ 5049 y Fd(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fb(Graph)e Fd(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(Graph)29 │ │ │ │ b Fo(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1106 4 v 1287 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ -b(metho)s(ds)0 605 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 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 Fn(Graph)h(*)g(Graph_new)e(\()j(void)e(\))i(;)227 │ │ │ │ -1143 y Fo(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e │ │ │ │ -(the)h Fn(Graph)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f │ │ │ │ -(\014elds)227 1256 y(b)m(y)j(a)f(call)i(to)f Fn(Graph)p │ │ │ │ -953 1256 29 4 v 33 w(setDefaultFields\(\))p Fo(.)111 │ │ │ │ -1465 y(2.)46 b Fn(void)h(Graph_setDefaultFields)42 b(\()47 │ │ │ │ -b(Graph)f(*graph)h(\))g(;)227 1626 y Fo(This)24 b(metho)s(d)g(sets)h │ │ │ │ -(the)f(structure's)g(\014elds)g(to)h(default)g(v)-5 b(alues:)38 │ │ │ │ -b Fn(type)p Fo(,)25 b Fn(nvtx)p Fo(,)f Fn(nvbnd)p Fo(,)h │ │ │ │ -Fn(nedges)p Fo(,)f Fn(totwght)227 1739 y Fo(and)30 b │ │ │ │ -Fn(totewght)e Fo(are)j(all)g(zero,)h(and)d Fn(adjIVL)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1067 4 v 1248 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)122 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(3)0 399 y Fa(1.2.1)112 │ │ │ │ +b(Basic)38 b(metho)s(ds)0 605 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 │ │ │ │ +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 Fn(Graph)h(*)g(Graph_new)e(\()j(void)e(\))i │ │ │ │ +(;)227 1143 y Fo(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage) │ │ │ │ +f(for)e(the)h Fn(Graph)f Fo(structure)g(and)g(then)g(sets)i(the)f │ │ │ │ +(default)f(\014elds)227 1256 y(b)m(y)j(a)f(call)i(to)f │ │ │ │ +Fn(Graph)p 953 1256 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ +Fo(.)111 1465 y(2.)46 b Fn(void)h(Graph_setDefaultFields)42 │ │ │ │ +b(\()47 b(Graph)f(*graph)h(\))g(;)227 1626 y Fo(This)24 │ │ │ │ +b(metho)s(d)g(sets)h(the)f(structure's)g(\014elds)g(to)h(default)g(v)-5 │ │ │ │ +b(alues:)38 b Fn(type)p Fo(,)25 b Fn(nvtx)p Fo(,)f Fn(nvbnd)p │ │ │ │ +Fo(,)h Fn(nedges)p Fo(,)f Fn(totwght)227 1739 y Fo(and)30 │ │ │ │ +b Fn(totewght)e Fo(are)j(all)g(zero,)h(and)d Fn(adjIVL)p │ │ │ │ Fo(,)g Fn(vwghts)g Fo(and)h Fn(ewghtIVL)e Fo(are)j(all)g │ │ │ │ Fn(NULL)p Fo(.)227 1900 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fo(If)30 b Fn(graph)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.)111 2109 y(3.)46 b Fn(void)h(Graph_clearData)d(\()j(Graph)f │ │ │ │ (*graph)g(\))i(;)227 2269 y Fo(This)33 b(metho)s(d)f(clears)j(the)e │ │ │ │ (data)h(for)f(the)h(ob)5 b(ject.)50 b(If)33 b Fn(adjIVL)e │ │ │ │ @@ -5904,20 +5912,20 @@ │ │ │ │ b(or)c Fn(adjType)d Fo(of)i Fn(ewghtType)e Fo(is)i(in)m(v)-5 │ │ │ │ b(alid)42 b(\(they)f(m)m(ust)h(b)s(e)227 5407 y Fn(IVL)p │ │ │ │ 377 5407 V 34 w(CHUNKED)p Fo(,)27 b Fn(IVL)p 943 5407 │ │ │ │ V 33 w(SOLO)h Fo(or)g Fn(IVL)p 1449 5407 V 34 w(UNKNOWN)p │ │ │ │ Fo(\).)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 Fo(4)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(Graph)28 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 111 399 a Fo(2.)46 b Fn(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 Fo(This)41 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 111 399 a Fo(2.)46 b Fn(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 Fo(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 Fn(Graph)d Fo(ob)5 b(ject)42 b(is)g(read)f(from)f(a)i │ │ │ │ (\014le,)227 778 y(the)35 b Fn(IVL)e Fo(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 │ │ │ │ (\014le.)52 b(Therefore,)35 b(w)m(e)f(need)g(an)227 891 │ │ │ │ y(initialization)d(metho)s(d)26 b(that)i(allo)m(ws)h(us)e(to)h(set)g(p) │ │ │ │ s(oin)m(ters)f(to)h(the)g Fn(IVL)e Fo(ob)5 b(jects)28 │ │ │ │ @@ -5995,23 +6003,23 @@ │ │ │ │ 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 Fj(\036)e │ │ │ │ Fo(:)g Fj(V)49 b Fi(7!)30 b Fk(V)k Fo(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 Fn(IV)e Fo(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 1106 4 v 1287 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(5)227 399 y Fl(Err)-5 b(or)33 b(che)-5 │ │ │ │ -b(cking:)40 b Fo(If)28 b Fn(graph)g Fo(is)h Fn(NULL)f │ │ │ │ -Fo(or)h Fn(nvtx)47 b(<=)g(0)p Fo(,)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 Fn(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 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1067 4 v 1248 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)122 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(5)227 399 y Fl(Err)-5 │ │ │ │ +b(or)33 b(che)-5 b(cking:)40 b Fo(If)28 b Fn(graph)g │ │ │ │ +Fo(is)h Fn(NULL)f Fo(or)h Fn(nvtx)47 b(<=)g(0)p Fo(,)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 Fn(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 Fo(This)c │ │ │ │ Fn(Graph)f Fo(and)g(map)h(ob)5 b(jects)45 b(\()p Fn(map[])f │ │ │ │ Fo(or)g Fn(mapIV)p Fo(\))f(are)i(c)m(hec)m(k)m(ed)h(and)e(if)g(an)m(y)h │ │ │ │ (errors)e(are)i(found,)227 1116 y(the)d(appropriate)f(message)h(is)f │ │ │ │ (prin)m(ted)g(and)f(the)i(program)e(exits.)74 b(The)41 │ │ │ │ b(compressed)f(graph)h(ob)5 b(ject)227 1229 y(is)38 b(constructed)g │ │ │ │ (and)f(returned.)61 b(Note,)42 b(the)37 b(compressed)h(graph)f(do)s(es) │ │ │ │ @@ -6065,20 +6073,20 @@ │ │ │ │ 5130 y Fo(This)30 b(metho)s(d)g(returns)f(the)h(w)m(eigh)m(t)i(of)f │ │ │ │ (adj\()p Fn(v)p Fo(\).)227 5294 y Fl(Err)-5 b(or)39 b(che)-5 │ │ │ │ b(cking:)50 b Fo(If)35 b Fn(graph)f Fo(is)i Fn(NULL)p │ │ │ │ Fo(,)e(or)i Fn(v)f Fo(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 Fo(6)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(Graph)28 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 111 399 a Fo(3.)46 b Fn(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 Fo(This)31 b(metho)s(d)f(\014lls)h Fn(*pusize)f │ │ │ │ -Fo(with)h(the)g(size)h(of)f(the)h(adjacency)g(list)g(for)f │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 111 399 a Fo(3.)46 b Fn(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 Fo(This)31 b(metho)s(d)f(\014lls)h │ │ │ │ +Fn(*pusize)f Fo(with)h(the)g(size)h(of)f(the)h(adjacency)g(list)g(for)f │ │ │ │ Fn(u)g Fo(and)f Fn(*puadj)g Fo(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 │ │ │ │ Fl(Err)-5 b(or)32 b(che)-5 b(cking:)40 b Fo(If)28 b Fn(graph)f │ │ │ │ Fo(is)h Fn(NULL)p Fo(,)f(or)i(if)f Fn(u)48 b(<)f(0)28 │ │ │ │ b Fo(or)h Fn(u)47 b(>=)g(nvtx)27 b Fo(or)i(if)f Fn(pusize)f │ │ │ │ Fo(or)h Fn(puadj)f Fo(is)i Fn(NULL)p Fo(,)e(an)227 917 │ │ │ │ y(error)j(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ @@ -6161,21 +6169,21 @@ │ │ │ │ Fn(map[])f Fo(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 1106 4 v 1287 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(7)227 399 y Fl(Err)-5 b(or)32 b(che)-5 │ │ │ │ -b(cking:)39 b Fo(If)28 b Fn(graph)f Fo(is)h Fn(NULL)f │ │ │ │ -Fo(or)h Fn(icomp)46 b(<)i(0)27 b Fo(or)i Fn(compids)d │ │ │ │ -Fo(or)i Fn(pmap)f Fo(is)h Fn(NULL)p Fo(,)f(an)h(error)g(message)227 │ │ │ │ -511 y(is)j(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1067 4 v 1248 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)122 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(7)227 399 y Fl(Err)-5 │ │ │ │ +b(or)32 b(che)-5 b(cking:)39 b Fo(If)28 b Fn(graph)f │ │ │ │ +Fo(is)h Fn(NULL)f Fo(or)h Fn(icomp)46 b(<)i(0)27 b Fo(or)i │ │ │ │ +Fn(compids)d Fo(or)i Fn(pmap)f Fo(is)h Fn(NULL)p Fo(,)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 Fn(int)h(Graph_isSymmetric)c(\()48 b(Graph)e(*graph)g(\)) │ │ │ │ i(;)227 837 y Fo(This)36 b(metho)s(d)g(returns)f Fn(1)i │ │ │ │ Fo(if)f(the)h(graph)f(is)h(symmetric)f(\(i.e.,)k(edge)d │ │ │ │ Fn(\(i,j\))f Fo(is)g(presen)m(t)h(if)f(and)g(only)h(if)227 │ │ │ │ 950 y(edge)31 b Fn(\(j,i\))e Fo(is)i(presen)m(t\))f(and)g │ │ │ │ Fn(0)g Fo(otherwise.)227 1096 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fo(If)30 b Fn(graph)f Fo(is)i Fn(NULL)p │ │ │ │ @@ -6253,17 +6261,17 @@ │ │ │ │ b Fn(1)f Fo(is)g(returned.)40 b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m │ │ │ │ (tered)h(from)f Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ b Fn(graph)f Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)e Fo(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 Fo(8)p 136 100 1106 4 v │ │ │ │ -1288 w Fn(Graph)28 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)h(18,)g │ │ │ │ -(2025)p 2795 100 V 111 399 a Fo(6.)46 b Fn(int)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1067 4 v │ │ │ │ +1248 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2834 100 V 111 399 a Fo(6.)46 b Fn(int)h │ │ │ │ (Graph_writeToBinaryFile)42 b(\()47 b(Graph)f(*graph,)g(FILE)h(*fp)g │ │ │ │ (\))g(;)227 554 y Fo(This)27 b(metho)s(d)g(writes)h(a)g │ │ │ │ Fn(Graph)e Fo(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 Fn(1)f Fo(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fn(fwrite)p Fo(,)f(zero)i(is)f(returned.)227 822 y Fl(Err)-5 │ │ │ │ @@ -6327,22 +6335,22 @@ │ │ │ │ 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 1106 4 v 1287 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2747 100 V 1106 w Fo(9)337 399 y Fc(\210)45 b Fo(The)28 │ │ │ │ -b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ -(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(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.)337 660 y Fc(\210)45 b Fo(The)33 b │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1067 4 v 1248 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)122 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2787 100 V 1067 w Fo(9)337 399 y Fc(\210)45 │ │ │ │ +b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ +(of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ +b Fo(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.)337 660 y Fc(\210)45 b Fo(The)33 │ │ │ │ +b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ 773 y(message)27 b(\014le)f(is)g Fl(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 886 │ │ │ │ y(data.)337 1035 y Fc(\210)45 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 │ │ │ │ @@ -6420,50 +6428,51 @@ │ │ │ │ g(graph)f(to)i(a)f(formatted)h(\014le)f(\(if)427 5101 │ │ │ │ y Fn(outGraphFile)24 b Fo(is)j(of)h(the)f(form)g Fn(*.graphf)p │ │ │ │ Fo(\),)f(or)h(a)h(binary)f(\014le)g(\(if)g Fn(outGraphFile)d │ │ │ │ Fo(is)k(of)f(the)g(form)427 5214 y Fn(*.graphb)p Fo(\).)111 │ │ │ │ 5407 y(4.)46 b Fn(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 Fo(10)p 182 100 1083 4 │ │ │ │ -v 1265 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 100 V 227 399 a Fo(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 Fn(n1)17 b Fi(\002)g Fn(n2)g Fi(\002)g │ │ │ │ -Fn(n3)227 511 y Fo(regular)31 b(grid.)337 707 y Fc(\210)45 │ │ │ │ -b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ -(of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ -b Fo(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.)337 969 y Fc(\210)45 b Fo(The)33 │ │ │ │ -b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ -1082 y(message)27 b(\014le)f(is)g Fl(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ -b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1195 │ │ │ │ -y(data.)337 1345 y Fc(\210)45 b Fo(V)-8 b(alid)35 b Fn(stencil)d │ │ │ │ -Fo(v)-5 b(alues)34 b(are)g Fn(5)f Fo(for)g(a)h(2-D)h(5-p)s(oin)m(t)f │ │ │ │ -(op)s(erator,)h Fn(7)f Fo(for)f(a)h(3-D)h(7-p)s(oin)m(t)f(op)s(erator,) │ │ │ │ -h Fn(9)427 1458 y Fo(for)i(a)h(2-D)h(9-p)s(oin)m(t)f(op)s(erator,)i │ │ │ │ -Fn(13)d Fo(for)g(a)h(2-D)g(13-p)s(oin)m(t)h(op)s(erator)f(and)e │ │ │ │ -Fn(27)h Fo(for)g(a)h(3-D)h(27-p)s(oin)m(t)427 1571 y(op)s(erator.)337 │ │ │ │ -1721 y Fc(\210)45 b Fn(n1)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s │ │ │ │ -(oin)m(ts)f(in)g(the)g(\014rst)g(direction.)337 1871 │ │ │ │ -y Fc(\210)45 b Fn(n2)30 b Fo(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(direction.)337 2021 y Fc(\210)45 │ │ │ │ -b Fn(n3)30 b Fo(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(direction,)h(ignored)g(for)f Fn(stencil)e │ │ │ │ -Fo(=)i Fn(5)p Fo(,)h Fn(9)f Fo(and)f Fn(13)p Fo(.)337 │ │ │ │ -2171 y Fc(\210)45 b Fo(The)g Fn(Graph)g Fo(ob)5 b(ject)46 │ │ │ │ -b(is)g(written)f(to)i(\014le)e Fn(outFile)p Fo(.)85 b(It)45 │ │ │ │ -b(m)m(ust)h(b)s(e)f(of)h(the)f(form)h Fn(*.graphf)d Fo(or)427 │ │ │ │ -2283 y Fn(*.graphb)p Fo(.)36 b(The)23 b Fn(Graph)e Fo(ob)5 │ │ │ │ -b(ject)24 b(is)f(written)g(to)g(the)g(\014le)g(via)h(the)f │ │ │ │ -Fn(Graph)p 2904 2283 29 4 v 33 w(writeToFile\(\))c Fo(metho)s(d.)111 │ │ │ │ -2479 y(5.)46 b Fn(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 │ │ │ │ -2633 y Fo(This)21 b(driv)m(er)g(program)h(reads)f(in)g(a)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1044 4 │ │ │ │ +v 1226 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2857 100 V 227 399 a Fo(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 Fn(n1)17 b Fi(\002)g │ │ │ │ +Fn(n2)g Fi(\002)g Fn(n3)227 511 y Fo(regular)31 b(grid.)337 │ │ │ │ +707 y Fc(\210)45 b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g │ │ │ │ +(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ +b(>=)h(3)28 b Fo(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.)337 969 │ │ │ │ +y Fc(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f │ │ │ │ +(the)h(message)g(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i │ │ │ │ +Fn(stdout)p Fo(,)g(then)g(the)427 1082 y(message)27 b(\014le)f(is)g │ │ │ │ +Fl(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ +Fl(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ +1195 y(data.)337 1345 y Fc(\210)45 b Fo(V)-8 b(alid)35 │ │ │ │ +b Fn(stencil)d Fo(v)-5 b(alues)34 b(are)g Fn(5)f Fo(for)g(a)h(2-D)h │ │ │ │ +(5-p)s(oin)m(t)f(op)s(erator,)h Fn(7)f Fo(for)f(a)h(3-D)h(7-p)s(oin)m │ │ │ │ +(t)f(op)s(erator,)h Fn(9)427 1458 y Fo(for)i(a)h(2-D)h(9-p)s(oin)m(t)f │ │ │ │ +(op)s(erator,)i Fn(13)d Fo(for)g(a)h(2-D)g(13-p)s(oin)m(t)h(op)s │ │ │ │ +(erator)f(and)e Fn(27)h Fo(for)g(a)h(3-D)h(27-p)s(oin)m(t)427 │ │ │ │ +1571 y(op)s(erator.)337 1721 y Fc(\210)45 b Fn(n1)30 │ │ │ │ +b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s(oin)m(ts)f(in)g(the)g │ │ │ │ +(\014rst)g(direction.)337 1871 y Fc(\210)45 b Fn(n2)30 │ │ │ │ +b Fo(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(direction.)337 2021 y Fc(\210)45 b Fn(n3)30 │ │ │ │ +b Fo(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(direction,)h(ignored)g(for)f Fn(stencil)e Fo(=)i Fn(5)p │ │ │ │ +Fo(,)h Fn(9)f Fo(and)f Fn(13)p Fo(.)337 2171 y Fc(\210)45 │ │ │ │ +b Fo(The)g Fn(Graph)g Fo(ob)5 b(ject)46 b(is)g(written)f(to)i(\014le)e │ │ │ │ +Fn(outFile)p Fo(.)85 b(It)45 b(m)m(ust)h(b)s(e)f(of)h(the)f(form)h │ │ │ │ +Fn(*.graphf)d Fo(or)427 2283 y Fn(*.graphb)p Fo(.)36 │ │ │ │ +b(The)23 b Fn(Graph)e Fo(ob)5 b(ject)24 b(is)f(written)g(to)g(the)g │ │ │ │ +(\014le)g(via)h(the)f Fn(Graph)p 2904 2283 29 4 v 33 │ │ │ │ +w(writeToFile\(\))c Fo(metho)s(d.)111 2479 y(5.)46 b │ │ │ │ +Fn(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 2633 │ │ │ │ +y Fo(This)21 b(driv)m(er)g(program)h(reads)f(in)g(a)h │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject)22 b(from)f Fn(inFile)f Fo(and)h(writes)h │ │ │ │ (out)g(the)f(ob)5 b(ject)23 b(to)f Fn(outFile)337 2855 │ │ │ │ y Fc(\210)45 b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the) │ │ │ │ g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ b(>=)h(3)28 b Fo(means)427 2968 y(the)j Fn(Graph)e Fo(ob)5 │ │ │ │ b(ject)31 b(is)f(written)h(to)g(the)g(message)g(\014le.)337 │ │ │ │ 3117 y Fc(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines) │ │ │ │ @@ -6499,20 +6508,20 @@ │ │ │ │ Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ 5294 y(message)27 b(\014le)f(is)g Fl(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(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: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1083 4 v 1264 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2725 100 V 1083 w Fo(11)337 399 y Fc(\210)45 b Fo(The)37 │ │ │ │ -b Fn(inFile)f Fo(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ -Fn(Graph)e Fo(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 Fn(*.graphf)18 b Fo(or)j Fn(*.graphb)p │ │ │ │ +TeXDict begin 11 10 bop 91 100 1044 4 v 1225 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2764 100 V 1044 w Fo(11)337 399 y Fc(\210)45 │ │ │ │ +b Fo(The)37 b Fn(inFile)f Fo(parameter)i(is)g(the)g(input)e(\014le)i │ │ │ │ +(for)f(the)h Fn(Graph)e Fo(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 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.)111 1065 │ │ │ │ y(7.)46 b Fn(testWirebasket)e(msglvl)i(msgFile)g(inGraphFile)f │ │ │ │ (inStagesFile)943 1178 y(outStagesFile)f(radius)227 1419 │ │ │ │ y Fo(This)27 b(driv)m(er)g(program)g(reads)h(in)f(a)h │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject)28 b(and)f(and)g(a)g(\014le)h(that)g(con)m │ │ │ │ @@ -6566,18 +6575,18 @@ │ │ │ │ Fo(15)29 b(grid.)40 b(They)27 b(sho)m(w)h(the)h(stages)227 │ │ │ │ 5294 y(for)36 b Fn(radius)46 b(=)i(1)36 b Fo(on)g(the)g(left)h(and)f │ │ │ │ Fn(radius)46 b(=)i(2)35 b Fo(on)i(the)f(righ)m(t.)59 │ │ │ │ b(The)36 b(domains)g(are)g(3)25 b Fi(\002)f Fo(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 Fo(12)p 182 100 1083 │ │ │ │ -4 v 1265 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2817 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 Fo(12)p 182 100 1044 │ │ │ │ +4 v 1226 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2857 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 October 18, 2025 │ │ │ │ │ + 2 Graph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Graph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Graph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Graph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Graph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + Graph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 Graph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + Graph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 Graph : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + Graph : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 Graph : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o I2Ohash.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2426,23 +2426,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2616,90 +2615,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4343,17 +4351,17 @@ │ │ │ │ @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 │ │ │ │ 143[76 91[71 20[{}2 90.9091 /CMSY10 rf /Ff 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 /Fg 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 /Fh 139[35 1[36 │ │ │ │ -2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 │ │ │ │ -44[{}14 90.9091 /CMSL10 rf /Fi 134[44 3[49 30 37 38 1[46 │ │ │ │ +5[62 22[62 50[{}12 119.552 /CMTT12 rf /Fh 137[48 3[36 │ │ │ │ +2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 │ │ │ │ +44[{}13 90.9091 /CMSL10 rf /Fi 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 /Fj 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 │ │ │ │ %DVIPSBitmapFont: Fk tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ @@ -4466,17 +4474,17 @@ │ │ │ │ b(n)m(um)m(b)s(er)29 b(of)h(items)h(in)f(the)h(hash)f(table.)137 │ │ │ │ 5294 y Fk(\210)45 b Fl(I2OP)i(*baseI2OP)35 b Fm(:)j(p)s(oin)m(ter)g(to) │ │ │ │ h(an)f Fl(I2OP)f Fm(ob)5 b(ject)39 b(that)f(k)m(eeps)h(trac)m(k)g(of)f │ │ │ │ (all)h(the)f Fl(I2OP)f Fm(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 Fm(2)p 136 100 1058 4 v │ │ │ │ -1240 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 137 399 a Fk(\210)45 b Fl(I2OP)i(*freeI2OP)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1019 4 v │ │ │ │ +1201 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 137 399 a Fk(\210)45 b Fl(I2OP)i(*freeI2OP)28 │ │ │ │ b Fm(:)i(p)s(oin)m(ter)h(to)g(the)f(\014rst)g Fl(I2OP)f │ │ │ │ Fm(ob)5 b(ject)31 b(on)g(the)f(free)h(list.)137 604 y │ │ │ │ Fk(\210)45 b Fl(I2OP)i(**heads)26 b Fm(:)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 Fl(I2OP)f │ │ │ │ Fm(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 Fl(I2OP)f Fm(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 │ │ │ │ @@ -4526,33 +4534,33 @@ │ │ │ │ Fl(free\(\))p Fm(.)227 4909 y Fi(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fm(If)30 b Fl(hashtable)e Fm(is)j Fl(NULL)p │ │ │ │ Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h │ │ │ │ (exits.)0 5202 y Ff(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ 5407 y Fm(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 1058 4 v 1239 100 a Fl(I2Ohash)29 │ │ │ │ -b Fh(:)40 b Fi(DRAFT)121 b Fh(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2795 100 V 1058 w Fm(3)111 399 y(1.)46 b Fl(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 Fm(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 Fl(I2Ohash)p 569 655 29 4 v 33 w(clearData\(\))p │ │ │ │ -Fm(.)36 b(It)27 b(allo)s(cates)i(storage)f(for)e Fl(nlist)f │ │ │ │ -Fm(lists)i(and)f(if)g Fl(nobj)g Fm(is)g(p)s(ositiv)m(e,)j(it)e(loads)g │ │ │ │ -(the)227 768 y(free)k(list)g(with)f Fl(nobj)f(I2OP)g │ │ │ │ -Fm(ob)5 b(jects.)227 912 y Fi(Err)-5 b(or)33 b(che)-5 │ │ │ │ -b(cking:)40 b Fm(If)29 b Fl(hashtable)e Fm(is)j Fl(NULL)p │ │ │ │ -Fm(,)e(or)i(if)f Fl(nlist)24 b Fe(\024)h Fm(0,)30 b(or)g(if)f │ │ │ │ -Fl(nobj)g Fm(and)f Fl(grow)h Fm(are)h(b)s(oth)e(zero,)j(an)227 │ │ │ │ -1025 y(error)f(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h │ │ │ │ -(exits.)0 1280 y Ff(1.2.3)112 b(Utilit)m(y)38 b(metho)s(ds)111 │ │ │ │ -1470 y Fm(1.)46 b Fl(void)h(I2Ohash_insert)d(\()j(I2Ohash)f │ │ │ │ -(*hashtable,)f(int)i(key1,)f(int)h(key2,)f(void)h(*)g(value)g(\))g(;) │ │ │ │ -227 1614 y Fm(This)30 b(metho)s(d)g(inserts)g(the)g(triple)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1019 4 v 1200 100 a Fl(I2Ohash)29 │ │ │ │ +b Fh(:)40 b Fi(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2834 100 V 1019 w Fm(3)111 399 y(1.)46 │ │ │ │ +b Fl(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 Fm(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 Fl(I2Ohash)p │ │ │ │ +569 655 29 4 v 33 w(clearData\(\))p Fm(.)36 b(It)27 b(allo)s(cates)i │ │ │ │ +(storage)f(for)e Fl(nlist)f Fm(lists)i(and)f(if)g Fl(nobj)g │ │ │ │ +Fm(is)g(p)s(ositiv)m(e,)j(it)e(loads)g(the)227 768 y(free)k(list)g │ │ │ │ +(with)f Fl(nobj)f(I2OP)g Fm(ob)5 b(jects.)227 912 y Fi(Err)-5 │ │ │ │ +b(or)33 b(che)-5 b(cking:)40 b Fm(If)29 b Fl(hashtable)e │ │ │ │ +Fm(is)j Fl(NULL)p Fm(,)e(or)i(if)f Fl(nlist)24 b Fe(\024)h │ │ │ │ +Fm(0,)30 b(or)g(if)f Fl(nobj)g Fm(and)f Fl(grow)h Fm(are)h(b)s(oth)e │ │ │ │ +(zero,)j(an)227 1025 y(error)f(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ +(program)h(exits.)0 1280 y Ff(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +b(metho)s(ds)111 1470 y Fm(1.)46 b Fl(void)h(I2Ohash_insert)d(\()j │ │ │ │ +(I2Ohash)f(*hashtable,)f(int)i(key1,)f(int)h(key2,)f(void)h(*)g(value)g │ │ │ │ +(\))g(;)227 1614 y Fm(This)30 b(metho)s(d)g(inserts)g(the)g(triple)h │ │ │ │ Fl(\(key1,key2,value\))26 b Fm(in)m(to)31 b(the)g(hash)e(table.)227 │ │ │ │ 1757 y Fi(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(hashtable)e Fm(is)j Fl(NULL)p Fm(,)e(an)h(error)g(message)i(is)e │ │ │ │ (prin)m(ted)g(and)g(the)g(program)h(exits.)111 1932 y(2.)46 │ │ │ │ b Fl(int)h(I2Ohash_locate)d(\()k(I2Ohash)d(*hashtable,)g(int)i(key1,)f │ │ │ │ (int)h(key2,)g(void)f(**pvalue)g(\))h(;)227 2076 y Fm(If)31 │ │ │ │ b(there)h(is)g(a)f Fl()c Fm(triple)32 │ │ │ │ @@ -4612,17 +4620,17 @@ │ │ │ │ (*hashtable,)g(FILE)i(*fp)g(\))g(;)227 5151 y Fm(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 Fi(Err)-5 b(or)41 │ │ │ │ b(che)-5 b(cking:)56 b Fm(If)38 b Fl(hashtable)e Fm(or)i │ │ │ │ Fl(fp)f Fm(is)i Fl(NULL)p Fm(,)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 Fm(4)p 136 100 1058 4 v │ │ │ │ -1240 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 0 399 a Fj(1.3)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1019 4 v │ │ │ │ +1201 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 0 399 a Fj(1.3)135 b(Driv)l(er)46 │ │ │ │ b(programs)g(for)f(the)g Fg(I2Ohash)58 b(object)111 626 │ │ │ │ y Fm(1.)46 b Fl(test_hash)g(msglvl)g(msgFile)f(size)i(grow)g(maxkey)f │ │ │ │ (nent)g(seed)227 777 y Fm(This)34 b(driv)m(er)h(program)g(tests)h(the)f │ │ │ │ Fl(I2Ohash)e Fm(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 October 18, 2025 │ │ │ │ │ + 2 I2Ohash : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + I2Ohash : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 I2Ohash : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o IIheap.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1279,23 +1279,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1469,90 +1468,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3722,16 +3730,16 @@ │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 235[71 20[{}1 90.9091 /CMSY10 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 │ │ │ │ 11[42 6[80 14[56 56 56 2[31 46[{}22 99.6264 /CMBX12 rf │ │ │ │ -/Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 │ │ │ │ -2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fd 143[62 │ │ │ │ +/Fc 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 143[62 │ │ │ │ 7[62 2[62 3[62 23[62 73[{}5 119.552 /CMTT12 rf │ │ │ │ %DVIPSBitmapFont: Fe tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -3838,24 +3846,24 @@ │ │ │ │ 4724 y(maxsize)p Fk(.)0 5059 y Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fd(IIheap)d Ff(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 Fj(IIheap)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 1082 4 v │ │ │ │ -1264 w Fj(IIheap)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -601 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 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 Fj(IIheap)g(*)i │ │ │ │ -(IIheap_new)d(\()i(void)g(\))g(;)227 1121 y Fk(This)25 │ │ │ │ -b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ -Fj(IIheap)d Fk(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1043 4 v │ │ │ │ +1224 w Fj(IIheap)29 b Fc(:)41 b Fi(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 601 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 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 Fj(IIheap)g(*)i(IIheap_new)d(\()i(void)g(\))g(;)227 │ │ │ │ +1121 y Fk(This)25 b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e │ │ │ │ +(the)h Fj(IIheap)d Fk(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ (\014elds)227 1234 y(b)m(y)31 b(a)f(call)i(to)f Fj(IIheap)p │ │ │ │ 1001 1234 29 4 v 33 w(setDefaultFields\(\))p Fk(.)111 │ │ │ │ 1433 y(2.)46 b Fj(void)h(IIheap_setDefaultFields)41 b(\()48 │ │ │ │ b(IIheap)e(*heap)g(\))i(;)227 1589 y Fk(This)23 b(metho)s(d)f(sets)h │ │ │ │ (the)h(structure's)e(\014elds)h(to)h(default)f(v)-5 b(alues:)37 │ │ │ │ b Fj(size)22 b Fk(and)h Fj(maxsize)e Fk(are)i(zero,)j │ │ │ │ Fj(heapLoc)p Fk(,)227 1702 y Fj(keys)j Fk(and)h Fj(values)f │ │ │ │ @@ -3898,30 +3906,30 @@ │ │ │ │ 5095 y Fk(1.)46 b Fj(int)h(IIheap_sizeOf)d(\()k(IIheap)e(*heap)g(\))i │ │ │ │ (;)227 5251 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(this)f(ob)5 b(ject.)227 │ │ │ │ 5407 y Fi(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(heap)g Fk(is)g Fj(NULL)p Fk(,)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 1082 4 v 1263 100 a Fj(IIheap)29 │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fk(3)111 399 y(2.)46 b Fj(void)h(IIheap_root)e(\()i │ │ │ │ -(IIheap)f(*heap,)g(int)h(*pkey,)f(int)h(*pvalue)f(\))h(;)227 │ │ │ │ -549 y Fk(This)32 b(metho)s(d)g(\014lls)h Fj(*pid)e Fk(and)i │ │ │ │ -Fj(*pkey)e Fk(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 Fj(size)47 b(==)g(0)30 b Fk(then)g Fj(-1)g │ │ │ │ -Fk(is)g(returned.)227 812 y Fi(Err)-5 b(or)30 b(che)-5 │ │ │ │ -b(cking:)38 b Fk(If)25 b Fj(heap)p Fk(,)g Fj(pkey)f Fk(or)i │ │ │ │ -Fj(pvalue)e Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)f(prin)m │ │ │ │ -(ted)f(and)f(the)i(program)227 925 y(exits.)111 1112 │ │ │ │ -y(3.)46 b Fj(void)h(IIheap_insert)d(\()k(IIheap)e(*heap,)g(int)h(key,)f │ │ │ │ -(int)h(value)g(\))g(;)227 1263 y Fk(This)30 b(metho)s(d)g(inserts)g │ │ │ │ -(the)g(pair)g Fj(\(key,value\))e Fk(in)m(to)j(the)g(heap.)227 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1043 4 v 1224 100 a Fj(IIheap)29 │ │ │ │ +b Fc(:)40 b Fi(DRAFT)121 b Fc(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fk(3)111 399 y(2.)46 │ │ │ │ +b Fj(void)h(IIheap_root)e(\()i(IIheap)f(*heap,)g(int)h(*pkey,)f(int)h │ │ │ │ +(*pvalue)f(\))h(;)227 549 y Fk(This)32 b(metho)s(d)g(\014lls)h │ │ │ │ +Fj(*pid)e Fk(and)i Fj(*pkey)e Fk(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 Fj(size)47 b(==)g(0)30 b Fk(then)g │ │ │ │ +Fj(-1)g Fk(is)g(returned.)227 812 y Fi(Err)-5 b(or)30 │ │ │ │ +b(che)-5 b(cking:)38 b Fk(If)25 b Fj(heap)p Fk(,)g Fj(pkey)f │ │ │ │ +Fk(or)i Fj(pvalue)e Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is) │ │ │ │ +f(prin)m(ted)f(and)f(the)i(program)227 925 y(exits.)111 │ │ │ │ +1112 y(3.)46 b Fj(void)h(IIheap_insert)d(\()k(IIheap)e(*heap,)g(int)h │ │ │ │ +(key,)f(int)h(value)g(\))g(;)227 1263 y Fk(This)30 b(metho)s(d)g │ │ │ │ +(inserts)g(the)g(pair)g Fj(\(key,value\))e Fk(in)m(to)j(the)g(heap.)227 │ │ │ │ 1413 y Fi(Err)-5 b(or)35 b(che)-5 b(cking:)42 b Fk(If)30 │ │ │ │ b Fj(heap)g Fk(is)h Fj(NULL)p Fk(,)g(of)g(if)g Fj(key)f │ │ │ │ Fk(is)h(out)h(of)f(range,)h(or)f(if)g Fj(key)g Fk(is)g(already)g(in)g │ │ │ │ (the)h(heap,)f(or)227 1526 y(if)g(the)f(heap)g(is)h(full,)f(an)g(error) │ │ │ │ g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ 1714 y(4.)46 b Fj(void)h(IIheap_remove)d(\()k(IIheap)e(*heap,)g(int)h │ │ │ │ (key)g(\))g(;)227 1864 y Fk(This)30 b(metho)s(d)g(remo)m(v)m(es)h │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 IIheap : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + IIheap : DRAFT November 15, 2025 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o IV.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1611,23 +1611,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1801,90 +1800,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3757,17 +3765,17 @@ │ │ │ │ 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 139[35 1[36 │ │ │ │ -2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 │ │ │ │ -44[{}14 90.9091 /CMSL10 rf /Ff 152[45 45 102[{}2 90.9091 │ │ │ │ +2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fe 137[48 3[36 │ │ │ │ +2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 │ │ │ │ +44[{}13 90.9091 /CMSL10 rf /Ff 152[45 45 102[{}2 90.9091 │ │ │ │ /CMSY10 rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -3894,17 +3902,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 Fi(*.iv)p Ff(f)p Fi(f,b)p │ │ │ │ Ff(g)0 5407 y Fj(\014les,)g(but)e(no)m(w)i Fi(IV)e Fj(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 Fj(2)p 136 100 1182 4 v │ │ │ │ -1364 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 0 399 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1143 4 v │ │ │ │ +1325 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 0 399 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ 620 y Fj(The)30 b Fi(IV)g Fj(structure)g(has)g(four)f(\014elds.)137 │ │ │ │ 791 y Fg(\210)45 b Fi(int)i(size)29 b Fj(:)41 b(presen)m(t)30 │ │ │ │ b(size)i(of)e(the)h(v)m(ector.)137 965 y Fg(\210)45 b │ │ │ │ Fi(int)i(maxsize)29 b Fj(:)40 b(maxim)m(um)30 b(size)i(of)e(the)h(v)m │ │ │ │ (ector.)137 1139 y Fg(\210)45 b Fi(int)i(owned)30 b Fj(:)44 │ │ │ │ b(o)m(wner)32 b(\015ag)g(for)f(the)h(data.)46 b(When)31 │ │ │ │ b Fi(owned)46 b(=)i(1)p Fj(,)32 b(storage)h(for)f Fi(maxsize)d(int)p │ │ │ │ @@ -3962,17 +3970,17 @@ │ │ │ │ (call)g(to)f Fi(IV)p 2148 5151 V 34 w(clearData\(\))d │ │ │ │ Fj(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 Fi(free\(\))p Fj(.)227 │ │ │ │ 5407 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(iv)g Fj(is)h Fi(NULL)p Fj(,)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 1182 4 v 1364 100 a Fi(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fj(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1143 4 v 1325 100 a Fi(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fj(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)0 606 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 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 Fi(int)h(IV_owned)f(\()h │ │ │ │ (IV)g(*iv)g(\))h(;)227 1258 y Fj(This)24 b(metho)s(d)g(returns)g(the)g │ │ │ │ @@ -4028,30 +4036,30 @@ │ │ │ │ Fi(loc)p Fj('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ Fi(value)p Fj(.)227 5294 y Fd(Err)-5 b(or)32 b(che)-5 │ │ │ │ b(cking:)40 b Fj(If)27 b Fi(iv)p Fj(,)i Fi(loc)47 b(<)g(0)28 │ │ │ │ b Fj(or)g Fi(loc)47 b(>=)g(size)p Fj(,)28 b(or)g(if)h │ │ │ │ Fi(vec)e Fj(is)h Fi(NULL)g Fj(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 Fj(4)p 136 100 1182 4 v │ │ │ │ -1364 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ -596 y Fj(1.)46 b Fi(void)h(IV_init)f(\()h(IV)g(*iv,)g(int)g(size,)f │ │ │ │ -(int)h(*entries)f(\))h(;)227 747 y Fj(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 Fi(IV)p 2277 860 29 4 v 34 w(clearData\(\))p │ │ │ │ -Fj(.)36 b(If)26 b Fi(entries)46 b(!=)h(NULL)25 b Fj(then)227 │ │ │ │ -973 y(the)35 b Fi(vec)e Fj(\014eld)g(is)h(set)h(to)g │ │ │ │ -Fi(entries)p Fj(,)e(the)h Fi(size)f Fj(and)g Fi(maxsize)g │ │ │ │ -Fj(\014elds)g(are)h(set)h(to)g Fi(size)e Fj(,)i(and)e │ │ │ │ -Fi(owned)g Fj(is)227 1086 y(set)f(to)f(zero)h(b)s(ecause)f(the)g(ob)5 │ │ │ │ -b(ject)32 b(do)s(es)f(not)g(o)m(wn)g(the)g(en)m(tries.)43 │ │ │ │ -b(If)30 b Fi(entries)f Fj(is)i Fi(NULL)f Fj(and)g(if)h │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1143 4 v │ │ │ │ +1325 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 │ │ │ │ +b(metho)s(ds)111 596 y Fj(1.)46 b Fi(void)h(IV_init)f(\()h(IV)g(*iv,)g │ │ │ │ +(int)g(size,)f(int)h(*entries)f(\))h(;)227 747 y Fj(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 Fi(IV)p 2277 │ │ │ │ +860 29 4 v 34 w(clearData\(\))p Fj(.)36 b(If)26 b Fi(entries)46 │ │ │ │ +b(!=)h(NULL)25 b Fj(then)227 973 y(the)35 b Fi(vec)e │ │ │ │ +Fj(\014eld)g(is)h(set)h(to)g Fi(entries)p Fj(,)e(the)h │ │ │ │ +Fi(size)f Fj(and)g Fi(maxsize)g Fj(\014elds)g(are)h(set)h(to)g │ │ │ │ +Fi(size)e Fj(,)i(and)e Fi(owned)g Fj(is)227 1086 y(set)f(to)f(zero)h(b) │ │ │ │ +s(ecause)f(the)g(ob)5 b(ject)32 b(do)s(es)f(not)g(o)m(wn)g(the)g(en)m │ │ │ │ +(tries.)43 b(If)30 b Fi(entries)f Fj(is)i Fi(NULL)f Fj(and)g(if)h │ │ │ │ Fi(size)47 b(>)g(0)227 1199 y Fj(then)30 b(a)h(v)m(ector)h(is)e(allo)s │ │ │ │ (cated)j(b)m(y)d(the)h(ob)5 b(ject,)31 b(and)f(the)h(ob)5 │ │ │ │ b(ject)31 b(o)m(wns)f(this)g(storage.)227 1350 y Fd(Err)-5 │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fj(If)26 b Fi(iv)f Fj(is)h │ │ │ │ Fi(NULL)e Fj(or)i Fi(size)47 b(<)g(0)p Fj(,)27 b(an)f(error)f(message)i │ │ │ │ (is)f(prin)m(ted)g(and)f(the)h(program)g(exits.)111 1540 │ │ │ │ y(2.)46 b Fi(void)h(IV_init1)e(\()j(IV)f(*iv,)g(int)g(size)f(\))i(;)227 │ │ │ │ @@ -4117,17 +4125,17 @@ │ │ │ │ (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 │ │ │ │ 5407 y(the)j(v)m(ector)h(is)e(lost,)j(namely)e Fi(vec)p │ │ │ │ Fj(,)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 1182 4 v 1364 100 a Fi(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fj(5)227 399 y(en)m(tries)d(and)e Fi(IV)p │ │ │ │ +TeXDict begin 5 4 bop 91 100 1143 4 v 1325 100 a Fi(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fj(5)227 399 y(en)m(tries)e(and)e Fi(IV)p │ │ │ │ 792 399 29 4 v 34 w(free\(\))p Fj(,)g Fi(IV)p 1262 399 │ │ │ │ V 34 w(setSize\(\))e Fj(or)j Fi(IV)p 1958 399 V 34 w(setMaxsize\(\))d │ │ │ │ Fj(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 │ │ │ │ @@ -4188,19 +4196,19 @@ │ │ │ │ (;)227 5294 y Fj(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 Fi(k)f Fj(b)s(e)g(en)m(try)g │ │ │ │ Fi(i)g Fj(in)g(the)h(v)m(ector.)40 b(If)24 b Fi(tags[k])46 │ │ │ │ b(!=)227 5407 y(keepTag)p Fj(,)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 Fj(6)p 136 100 1182 4 v │ │ │ │ -1364 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 227 399 a Fj(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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1143 4 v │ │ │ │ +1325 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 227 399 a Fj(of)e(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 Fj(If)30 b Fi(iv)g Fj(of)h │ │ │ │ Fi(tags)e Fj(is)h Fi(NULL)f Fj(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 Fi(void)h │ │ │ │ (IV_filterPurge)d(\()j(IV)g(*iv,)g(int)g(tags[],)f(int)h(purgeTag)e(\)) │ │ │ │ j(;)227 992 y Fj(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 Fi(k)f Fj(b)s(e)g(en)m(try)g │ │ │ │ @@ -4257,17 +4265,17 @@ │ │ │ │ Fi(loc)p Fj('th)g(lo)s(cation)h(of)g(the)f Fi(iv)f Fj(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 Fj(If)34 b Fi(iv)g Fj(is)h Fi(NULL)f Fj(or)g(if)h │ │ │ │ Fi(loc)f Fj(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 1182 4 v 1364 100 a Fi(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fj(7)66 399 y(15.)46 b Fi(int)h(IV_findValue)e(\()i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1143 4 v 1325 100 a Fi(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fj(7)66 399 y(15.)46 b Fi(int)h(IV_findValue)e(\()i │ │ │ │ (IV)g(*iv,)g(int)g(value)f(\))i(;)227 547 y Fj(This)30 │ │ │ │ b(metho)s(d)f(lo)s(oks)i(for)e Fi(value)g Fj(in)h(its)g(en)m(tries.)42 │ │ │ │ b(If)29 b Fi(value)g Fj(is)h(presen)m(t,)g(the)h(\014rst)e(lo)s(cation) │ │ │ │ j(is)e(returned,)227 660 y(otherwise)h Fi(-1)f Fj(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 Fj(If)30 b Fi(iv)g Fj(is)h Fi(NULL)p Fj(,)e(an)h(error)g(message)i │ │ │ │ @@ -4338,30 +4346,31 @@ │ │ │ │ 5294 y Fd(Err)-5 b(or)36 b(che)-5 b(cking:)43 b Fj(If)31 │ │ │ │ b Fi(iv)g Fj(or)h Fi(fn)f Fj(are)i Fi(NULL)p Fj(,)d(or)i(if)g │ │ │ │ Fi(fn)f Fj(is)h(not)g(of)g(the)g(form)g Fi(*.ivf)e Fj(\(for)i(a)g │ │ │ │ (formatted)g(\014le\))227 5407 y(or)f Fi(*.ivb)e Fj(\(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 Fj(8)p 136 100 1182 4 v │ │ │ │ -1364 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 111 399 a Fj(2.)46 b Fi(int)h(IV_readFromFormattedFile)41 │ │ │ │ -b(\()48 b(IV)f(*iv,)g(FILE)f(*fp)h(\))h(;)227 550 y Fj(This)27 │ │ │ │ -b(metho)s(d)g(reads)h(in)f(an)g Fi(IV)g Fj(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 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(fscanf)p Fj(,)f(zero)i(is)g(returned.)227 │ │ │ │ -815 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ -b Fi(iv)g Fj(or)g 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.)111 1006 │ │ │ │ -y(3.)46 b Fi(int)h(IV_readFromBinaryFile)42 b(\()48 b(IV)f(*iv,)f(FILE) │ │ │ │ -h(*fp)g(\))g(;)227 1158 y Fj(This)34 b(metho)s(d)h(reads)f(in)h(an)f │ │ │ │ -Fi(IV)g Fj(ob)5 b(ject)36 b(from)e(a)i(binary)e(\014le.)54 │ │ │ │ -b(If)34 b(there)h(are)g(no)g(errors)f(in)h(reading)g(the)227 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1143 4 v │ │ │ │ +1325 w Fi(IV)30 b Fe(:)g Fd(DRAFT)h Fe(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 111 399 a Fj(2.)46 b Fi(int)h │ │ │ │ +(IV_readFromFormattedFile)41 b(\()48 b(IV)f(*iv,)g(FILE)f(*fp)h(\))h(;) │ │ │ │ +227 550 y Fj(This)27 b(metho)s(d)g(reads)h(in)f(an)g │ │ │ │ +Fi(IV)g Fj(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 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(fscanf)p Fj(,)f(zero)i(is)g(returned.)227 815 y Fd(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(or)g │ │ │ │ +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.)111 1006 y(3.)46 b Fi(int)h │ │ │ │ +(IV_readFromBinaryFile)42 b(\()48 b(IV)f(*iv,)f(FILE)h(*fp)g(\))g(;)227 │ │ │ │ +1158 y Fj(This)34 b(metho)s(d)h(reads)f(in)h(an)f Fi(IV)g │ │ │ │ +Fj(ob)5 b(ject)36 b(from)e(a)i(binary)e(\014le.)54 b(If)34 │ │ │ │ +b(there)h(are)g(no)g(errors)f(in)h(reading)g(the)227 │ │ │ │ 1271 y(data,)d(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(fread)p Fj(,)f(zero)i(is)g(returned.)227 1423 y Fd(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(or)g │ │ │ │ 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.)111 1614 y(4.)46 b Fi(int)h │ │ │ │ (IV_writeToFile)d(\()k(IV)f(*iv,)f(char)h(*fn)g(\))g(;)227 │ │ │ │ @@ -4426,17 +4435,17 @@ │ │ │ │ h(separated)g(b)m(y)g(a)g(whitespace.)40 b(The)227 5255 │ │ │ │ y(v)-5 b(alue)31 b Fi(1)f Fj(is)h(returned.)227 5407 │ │ │ │ y Fd(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fj(If)22 b │ │ │ │ Fi(iv)g Fj(or)g Fi(fp)g Fj(or)g Fi(pierr)f Fj(are)i Fi(NULL)p │ │ │ │ Fj(,)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 1182 4 v 1364 100 a Fi(IV)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fj(9)66 399 y(10.)46 b Fi(int)h(IV_writeForMatlab)c │ │ │ │ +TeXDict begin 9 8 bop 91 100 1143 4 v 1325 100 a Fi(IV)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fj(9)66 399 y(10.)46 b Fi(int)h(IV_writeForMatlab)c │ │ │ │ (\()48 b(IV)f(*iv,)g(char)f(*name,)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ 549 y Fj(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 │ │ │ │ Fi(name)f Fj(is)h(the)g(name)g(of)g(the)g(v)m(ector,)i(e.g,)g(if)e │ │ │ │ Fi(name)46 b(=)i("A")p Fj(,)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 Fi(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 October 18, 2025 │ │ │ │ │ + 2 IV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + IV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 IV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + IV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 IV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + IV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 IV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + IV : DRAFT November 15, 2025 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o IVL.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1858,23 +1858,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2048,90 +2047,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3819,16 +3827,16 @@ │ │ │ │ @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 152[45 │ │ │ │ 45 99[71 2[{}3 90.9091 /CMSY10 rf /Fd 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 │ │ │ │ -/Fe 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 │ │ │ │ -2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +/Fe 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3944,17 +3952,17 @@ │ │ │ │ b(Absolutely)31 b(no)f(free'ing)h(of)f(data)h(is)g(done)f(when)f(the)i │ │ │ │ Fi(IVL)e Fj(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 Fi(IVL)p 1972 │ │ │ │ 5407 V 34 w(setList\(\))d Fj(and)j Fi(IVL)p 2786 5407 │ │ │ │ V 34 w(setPointerToList\(\))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 1159 4 v │ │ │ │ -1340 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2742 100 V 137 399 a Ff(\210)45 b Fi(int)i(maxnlist)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1119 4 v │ │ │ │ +1301 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)g Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2781 100 V 137 399 a Ff(\210)45 b Fi(int)i(maxnlist)28 │ │ │ │ b Fj(:)41 b(maxim)m(um)30 b(n)m(um)m(b)s(er)f(of)i(lists.)227 │ │ │ │ 543 y Fi(int)47 b(nlist)29 b Fj(:)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 Fi(maxnlist)d Fj(is)j(the)h(dimension)227 │ │ │ │ 801 y(of)j(the)f Fi(sizes[])e Fj(and)i Fi(p)p 1102 801 │ │ │ │ 29 4 v 34 w(vec[])e Fj(arra)m(ys)j(and)f Fi(nlist)e Fj(is)i(the)h │ │ │ │ @@ -4021,17 +4029,17 @@ │ │ │ │ b Fi(tsize)f Fj(are)i(zero,)g Fi(incr)e Fj(is)i Fi(1024)p │ │ │ │ Fj(,)e(and)h Fi(sizes)p Fj(,)f Fi(p)p 2126 5262 V 34 │ │ │ │ w(vec)h Fj(and)g Fi(chunk)e Fj(are)j Fi(NULL)p Fj(.)227 │ │ │ │ 5407 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(ivl)g Fj(is)g Fi(NULL)p Fj(,)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 1159 4 v 1340 100 a Fi(IVL)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2695 100 V 1159 w Fj(3)111 399 y(3.)46 b Fi(void)h(IVL_clearData)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1119 4 v 1301 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2734 100 V 1119 w Fj(3)111 399 y(3.)46 b Fi(void)h(IVL_clearData)d(\()k │ │ │ │ (IVL)e(*ivl)h(\))h(;)227 566 y Fj(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 Fi(IVL)p 662 679 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ Fj(.)46 b(An)m(y)34 b(storage)i(held)d(b)m(y)h(the)g │ │ │ │ Fi(Ichunk)e Fj(structures)h(is)h(free'd,)h(and)227 792 │ │ │ │ y(if)c Fi(sizes)e Fj(or)h Fi(p)p 745 792 V 34 w(vec)f │ │ │ │ @@ -4079,27 +4087,27 @@ │ │ │ │ (int)g(incr)f(\))i(;)227 5126 y Fj(This)30 b(metho)s(d)g(sets)g(the)h │ │ │ │ (storage)h(incremen)m(t)f(to)g Fi(incr)p Fj(.)227 5294 │ │ │ │ y Fd(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fj(If)21 b │ │ │ │ Fi(ivl)g Fj(is)i Fi(NULL)e Fj(or)h Fi(incr)f Fj(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 Fj(4)p 136 100 1159 4 v │ │ │ │ -1340 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)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 Fj(1.)46 b Fi(void)h(IVL_init1)e(\()j(IVL)f │ │ │ │ -(*ivl,)f(int)h(type,)f(int)h(maxnlist)f(\))h(;)227 767 │ │ │ │ -y Fj(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 Fi(IVL)p │ │ │ │ -935 879 29 4 v 33 w(clearData\(\))p Fj(.)37 b(The)30 │ │ │ │ -b Fi(type)e Fj(\014eld)h(is)h(set.)41 b(If)29 b Fi(maxnlist)45 │ │ │ │ -b(>)j(0)p Fj(,)29 b(storage)i(is)f(allo)s(cated)227 992 │ │ │ │ -y(for)g(the)h Fi(sizes[])d Fj(and)i Fi(p)p 1118 992 V │ │ │ │ -34 w(vec[])f Fj(arra)m(ys)i(and)f Fi(nlist)f Fj(is)h(set)h(to)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1119 4 v │ │ │ │ +1301 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)g Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2781 100 V 0 399 a Fa(1.2.3)112 b(Initialization)39 │ │ │ │ +b(and)f(resizing)g(metho)s(ds)111 606 y Fj(1.)46 b Fi(void)h(IVL_init1) │ │ │ │ +e(\()j(IVL)f(*ivl,)f(int)h(type,)f(int)h(maxnlist)f(\))h(;)227 │ │ │ │ +767 y Fj(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 │ │ │ │ +Fi(IVL)p 935 879 29 4 v 33 w(clearData\(\))p Fj(.)37 │ │ │ │ +b(The)30 b Fi(type)e Fj(\014eld)h(is)h(set.)41 b(If)29 │ │ │ │ +b Fi(maxnlist)45 b(>)j(0)p Fj(,)29 b(storage)i(is)f(allo)s(cated)227 │ │ │ │ +992 y(for)g(the)h Fi(sizes[])d Fj(and)i Fi(p)p 1118 992 │ │ │ │ +V 34 w(vec[])f Fj(arra)m(ys)i(and)f Fi(nlist)f Fj(is)h(set)h(to)g │ │ │ │ Fi(maxnlist)p Fj(.)227 1153 y Fd(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)39 b Fj(If)28 b Fi(ivl)g Fj(is)g Fi(NULL)g Fj(or)g │ │ │ │ Fi(type)g Fj(is)g(in)m(v)-5 b(alid)30 b(or)e Fi(maxnlist)e │ │ │ │ Fj(is)j(negativ)m(e,)j(an)c(error)g(message)i(is)227 │ │ │ │ 1266 y(prin)m(ted)g(and)g(the)h(program)f(exits.)111 │ │ │ │ 1476 y(2.)46 b Fi(void)h(IVL_init2)e(\()j(IVL)f(*ivl,)f(int)h(type,)f │ │ │ │ (int)h(nlist,)f(int)h(tsize)f(\))i(;)227 1637 y Fj(This)30 │ │ │ │ @@ -4168,17 +4176,17 @@ │ │ │ │ 5085 y Fd(Err)-5 b(or)32 b(che)-5 b(cking:)40 b Fj(If)27 │ │ │ │ b Fi(ivl)h Fj(is)g Fi(NULL)f Fj(or)i(if)f Fi(newmaxnlist)d │ │ │ │ Fj(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 Fi(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 1159 4 v 1340 100 a Fi(IVL)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2695 100 V 1159 w Fj(5)227 399 y(This)39 b(metho)s(d)f(is)h(used)g(to)g │ │ │ │ +TeXDict begin 5 4 bop 91 100 1119 4 v 1301 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2734 100 V 1119 w Fj(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 Fi(newnlist)46 b(>)h(maxnlist)p Fj(,)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 │ │ │ │ Fi(IVL)p 1956 511 29 4 v 33 w(setMaxnlist\(\))c Fj(metho)s(d.)70 │ │ │ │ b(Then)39 b Fi(nlist)g Fj(is)h(set)h(to)227 624 y Fi(newnlist)p │ │ │ │ Fj(.)227 852 y Fd(Err)-5 b(or)39 b(che)-5 b(cking:)50 │ │ │ │ b Fj(If)35 b Fi(ivl)g Fj(is)g Fi(NULL)p Fj(,)g(or)g(if)g │ │ │ │ @@ -4221,18 +4229,18 @@ │ │ │ │ 5294 y Fj(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 Fi(ivl)g │ │ │ │ Fj(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 Fj(6)p 136 100 1159 4 v │ │ │ │ -1340 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2742 100 V 605 311 2918 4 v 605 2506 4 2196 v 663 414 │ │ │ │ -a Fj(if)g Fi(ilist)46 b(>=)h(maxnlist)28 b Fj(then)898 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1119 4 v │ │ │ │ +1301 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)g Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2781 100 V 605 311 2918 4 v 605 2506 4 2196 v │ │ │ │ +663 414 a Fj(if)g Fi(ilist)46 b(>=)h(maxnlist)28 b Fj(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 Fi(IVL)p 2816 527 29 4 v 33 w(setMaxnlist\(\))663 │ │ │ │ 640 y Fj(endif)663 753 y(if)g Fi(ilist)46 b(>=)h(nlist)29 │ │ │ │ b Fj(then)898 866 y Fi(nlist)g Fj(is)i(increased)663 │ │ │ │ 979 y(endif)663 1092 y(if)g Fi(isize)46 b(=)i(0)30 b │ │ │ │ Fj(then)898 1205 y(release)i(the)e(storage)i(for)f(that)f(list,)i │ │ │ │ (reclaim)f(storage)h(if)e(p)s(ossible)663 1318 y(else)i(if)e │ │ │ │ @@ -4274,17 +4282,17 @@ │ │ │ │ y(int)g(IVL_sum)f(\()h(IVL)g(*ivl)g(\))g(;)227 5246 y │ │ │ │ Fj(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 Fd(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fj(If)30 b Fi(ivl)g Fj(is)g Fi(NULL)f │ │ │ │ Fj(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 1159 4 v 1340 100 a Fi(IVL)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2695 100 V 1159 w Fj(7)111 399 y(3.)46 b Fi(int)h(IVL_sortUp)e(\()j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1119 4 v 1301 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2734 100 V 1119 w Fj(7)111 399 y(3.)46 b Fi(int)h(IVL_sortUp)e(\()j │ │ │ │ (IVL)f(*ivl)f(\))i(;)227 559 y Fj(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 Fd(Err)-5 │ │ │ │ b(or)28 b(che)-5 b(cking:)37 b Fj(If)23 b Fi(ivl)g Fj(is)g │ │ │ │ Fi(NULL)g Fj(or)g Fi(nlist)46 b(<)i(0)23 b Fj(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 Fi(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 │ │ │ │ @@ -4352,48 +4360,49 @@ │ │ │ │ b(so)227 5246 y(w)m(e)31 b(create)h(and)e(return)f(a)i(new)f │ │ │ │ Fi(IVL)f Fj(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 Fd(Err)-5 b(or)30 │ │ │ │ b(che)-5 b(cking:)38 b Fj(If)26 b Fi(ivl)f Fj(or)h Fi(eqmapIV)e │ │ │ │ Fj(is)i Fi(NULL)p Fj(,)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 Fj(8)p 136 100 1159 4 v │ │ │ │ -1340 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2742 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 b(metho)s(ds)111 │ │ │ │ -598 y Fj(1.)46 b Fi(IVL)h(*)h(IVL_make9P)d(\()i(int)g(n1,)g(int)g(n2,)g │ │ │ │ -(int)g(ncomp)f(\))h(;)227 752 y Fj(This)35 b(metho)s(d)g(returns)f(an)h │ │ │ │ -Fi(IVL)f Fj(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 Fi(n1)20 b Fc(\002)g │ │ │ │ -Fi(n2)29 b Fj(grid)h(with)g Fi(ncomp)f Fj(comp)s(onen)m(ts)i(at)g(eac)m │ │ │ │ -(h)h(grid)e(p)s(oin)m(t.)227 1018 y Fd(Err)-5 b(or)37 │ │ │ │ -b(che)-5 b(cking:)45 b Fj(If)32 b Fi(n1)p Fj(,)h Fi(n2)g │ │ │ │ -Fj(or)g Fi(ncomp)e Fj(is)i(less)g(than)g(or)g(equal)g(to)h(zero,)g(an)f │ │ │ │ -(error)f(message)i(is)f(prin)m(ted)227 1131 y(and)d(the)h(program)f │ │ │ │ -(exits.)111 1325 y(2.)46 b Fi(IVL)h(*)h(IVL_make13P)c(\()k(int)f(n1,)g │ │ │ │ -(int)g(n2)g(\))g(;)227 1479 y Fj(This)32 b(metho)s(d)f(returns)g(an)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1119 4 v │ │ │ │ +1301 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)g Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2781 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 │ │ │ │ +b(metho)s(ds)111 598 y Fj(1.)46 b Fi(IVL)h(*)h(IVL_make9P)d(\()i(int)g │ │ │ │ +(n1,)g(int)g(n2,)g(int)g(ncomp)f(\))h(;)227 752 y Fj(This)35 │ │ │ │ +b(metho)s(d)g(returns)f(an)h Fi(IVL)f Fj(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 Fi(n1)20 │ │ │ │ +b Fc(\002)g Fi(n2)29 b Fj(grid)h(with)g Fi(ncomp)f Fj(comp)s(onen)m(ts) │ │ │ │ +i(at)g(eac)m(h)h(grid)e(p)s(oin)m(t.)227 1018 y Fd(Err)-5 │ │ │ │ +b(or)37 b(che)-5 b(cking:)45 b Fj(If)32 b Fi(n1)p Fj(,)h │ │ │ │ +Fi(n2)g Fj(or)g Fi(ncomp)e Fj(is)i(less)g(than)g(or)g(equal)g(to)h │ │ │ │ +(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)227 1131 │ │ │ │ +y(and)d(the)h(program)f(exits.)111 1325 y(2.)46 b Fi(IVL)h(*)h │ │ │ │ +(IVL_make13P)c(\()k(int)f(n1,)g(int)g(n2)g(\))g(;)227 │ │ │ │ +1479 y Fj(This)32 b(metho)s(d)f(returns)g(an)h Fi(IVL)f │ │ │ │ +Fj(ob)5 b(ject)33 b(that)g(con)m(tains)g(the)f(full)g(adjacency)h │ │ │ │ +(structure)e(for)h(a)h(13-p)s(oin)m(t)227 1592 y(t)m(w)m(o)f │ │ │ │ +(dimensional)e(op)s(erator)h(on)f(a)h Fi(n1)20 b Fc(\002)g │ │ │ │ +Fi(n2)30 b Fj(grid.)227 1745 y Fd(Err)-5 b(or)35 b(che)-5 │ │ │ │ +b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h Fi(n2)g Fj(is)f(less)i(than)e │ │ │ │ +(or)h(equal)g(to)h(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)f │ │ │ │ +(and)h(the)227 1858 y(program)f(exits.)111 2052 y(3.)46 │ │ │ │ +b Fi(IVL)h(*)h(IVL_make5P)d(\()i(int)g(n1,)g(int)g(n2)g(\))g(;)227 │ │ │ │ +2206 y Fj(This)35 b(metho)s(d)g(returns)f(an)h Fi(IVL)f │ │ │ │ +Fj(ob)5 b(ject)36 b(that)g(con)m(tains)h(the)e(full)g(adjacency)i │ │ │ │ +(structure)d(for)h(a)h(5-p)s(oin)m(t)227 2318 y(t)m(w)m(o)c │ │ │ │ +(dimensional)e(op)s(erator)h(on)f(a)h Fi(n1)20 b Fc(\002)g │ │ │ │ +Fi(n2)30 b Fj(grid.)227 2472 y Fd(Err)-5 b(or)35 b(che)-5 │ │ │ │ +b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h Fi(n2)g Fj(is)f(less)i(than)e │ │ │ │ +(or)h(equal)g(to)h(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)f │ │ │ │ +(and)h(the)227 2585 y(program)f(exits.)111 2779 y(4.)46 │ │ │ │ +b Fi(IVL)h(*)h(IVL_make27P)c(\()k(int)f(n1,)g(int)g(n2,)f(int)h(ncomp)g │ │ │ │ +(\))g(;)227 2932 y Fj(This)32 b(metho)s(d)f(returns)g(an)h │ │ │ │ Fi(IVL)f Fj(ob)5 b(ject)33 b(that)g(con)m(tains)g(the)f(full)g │ │ │ │ -(adjacency)h(structure)e(for)h(a)h(13-p)s(oin)m(t)227 │ │ │ │ -1592 y(t)m(w)m(o)f(dimensional)e(op)s(erator)h(on)f(a)h │ │ │ │ -Fi(n1)20 b Fc(\002)g Fi(n2)30 b Fj(grid.)227 1745 y Fd(Err)-5 │ │ │ │ -b(or)35 b(che)-5 b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h │ │ │ │ -Fi(n2)g Fj(is)f(less)i(than)e(or)h(equal)g(to)h(zero,)g(an)f(error)f │ │ │ │ -(message)i(is)f(prin)m(ted)f(and)h(the)227 1858 y(program)f(exits.)111 │ │ │ │ -2052 y(3.)46 b Fi(IVL)h(*)h(IVL_make5P)d(\()i(int)g(n1,)g(int)g(n2)g │ │ │ │ -(\))g(;)227 2206 y Fj(This)35 b(metho)s(d)g(returns)f(an)h │ │ │ │ -Fi(IVL)f Fj(ob)5 b(ject)36 b(that)g(con)m(tains)h(the)e(full)g │ │ │ │ -(adjacency)i(structure)d(for)h(a)h(5-p)s(oin)m(t)227 │ │ │ │ -2318 y(t)m(w)m(o)c(dimensional)e(op)s(erator)h(on)f(a)h │ │ │ │ -Fi(n1)20 b Fc(\002)g Fi(n2)30 b Fj(grid.)227 2472 y Fd(Err)-5 │ │ │ │ -b(or)35 b(che)-5 b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h │ │ │ │ -Fi(n2)g Fj(is)f(less)i(than)e(or)h(equal)g(to)h(zero,)g(an)f(error)f │ │ │ │ -(message)i(is)f(prin)m(ted)f(and)h(the)227 2585 y(program)f(exits.)111 │ │ │ │ -2779 y(4.)46 b Fi(IVL)h(*)h(IVL_make27P)c(\()k(int)f(n1,)g(int)g(n2,)f │ │ │ │ -(int)h(ncomp)g(\))g(;)227 2932 y Fj(This)32 b(metho)s(d)f(returns)g(an) │ │ │ │ -h Fi(IVL)f Fj(ob)5 b(ject)33 b(that)g(con)m(tains)g(the)f(full)g │ │ │ │ (adjacency)h(structure)e(for)h(a)h(27-p)s(oin)m(t)227 │ │ │ │ 3045 y(op)s(erator)e(on)f(a)h Fi(n1)20 b Fc(\002)g Fi(n2)f │ │ │ │ Fc(\002)h Fi(n3)30 b Fj(grid)g(with)g Fi(ncomp)f Fj(comp)s(onen)m(ts)h │ │ │ │ (at)i(eac)m(h)f(grid)f(p)s(oin)m(t.)227 3199 y Fd(Err)-5 │ │ │ │ b(or)29 b(che)-5 b(cking:)37 b Fj(If)24 b Fi(n1)p Fj(,)i │ │ │ │ Fi(n2)p Fj(,)f Fi(n3)f Fj(or)h Fi(ncomp)e Fj(is)i(less)g(than)f(or)h │ │ │ │ (equal)g(to)g(zero,)i(an)e(error)f(message)i(is)e(prin)m(ted)227 │ │ │ │ @@ -4426,17 +4435,17 @@ │ │ │ │ 5254 y(data,)h(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(fscanf)p Fj(,)f(zero)i(is)g(returned.)227 5407 y Fd(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(ivl)g Fj(or)g │ │ │ │ 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)f(returned.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1159 4 v 1340 100 a Fi(IVL)29 │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2695 100 V 1159 w Fj(9)111 399 y(3.)46 b Fi(int)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1119 4 v 1301 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2734 100 V 1119 w Fj(9)111 399 y(3.)46 b Fi(int)h │ │ │ │ (IVL_readFromBinaryFile)42 b(\()47 b(IVL)g(*ivl,)g(FILE)f(*fp)h(\))h(;) │ │ │ │ 227 556 y Fj(This)25 b(metho)s(d)g(reads)g(an)g Fi(IVL)g │ │ │ │ Fj(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 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(fread)p Fj(,)f(zero)i(is)g(returned.)227 826 y Fd(Err)-5 │ │ │ │ @@ -4503,19 +4512,19 @@ │ │ │ │ Fi(IVL)e Fj(ob)5 b(ject)29 b(from)e Fi(inFile)e Fj(and)i(writes)h(out)g │ │ │ │ (the)f(ob)5 b(ject)29 b(to)f Fi(outFile)337 5294 y Ff(\210)45 │ │ │ │ b Fj(The)28 b Fi(msglvl)f Fj(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ (of)f(output)h(|)f(taking)i Fi(msglvl)46 b(>=)h(3)28 │ │ │ │ b Fj(means)427 5407 y(the)j Fi(IVL)e Fj(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 Fj(10)p 182 100 1136 4 │ │ │ │ -v 1318 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Octob)s(er)h(18,)g(2025)p │ │ │ │ -2765 100 V 337 399 a Ff(\210)45 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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fj(10)p 182 100 1097 4 │ │ │ │ +v 1279 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2804 100 V 337 399 a Ff(\210)45 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 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fd(stdout)p Fj(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fd(app)-5 b(end)28 │ │ │ │ b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)337 770 y Ff(\210)45 b Fj(The)25 b Fi(inFile)e │ │ │ │ Fj(parameter)i(is)g(the)g(input)f(\014le)g(for)h(the)g │ │ │ │ Fi(IVL)f Fj(ob)5 b(ject.)40 b(It)25 b(m)m(ust)f(b)s(e)g(of)h(the)g │ │ │ │ (form)g Fi(*.ivlf)427 883 y Fj(or)31 b Fi(*.ivlb)p Fj(.)39 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 IVL : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + IVL : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 IVL : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + IVL : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 IVL : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + IVL : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 IVL : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + IVL : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 IVL : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Ideq.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1258,23 +1258,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1448,90 +1447,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3211,16 +3219,16 @@ │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 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 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 │ │ │ │ -2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fd 142[62 │ │ │ │ +rf /Fc 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 142[62 │ │ │ │ 11[62 62 26[62 73[{}4 119.552 /CMTT12 rf │ │ │ │ %DVIPSBitmapFont: Fe tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -3320,35 +3328,35 @@ │ │ │ │ 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 1130 4 v │ │ │ │ -1311 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(18,)g(2025) │ │ │ │ -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) │ │ │ │ -227 1306 y(b)m(y)f(a)f(call)i(to)f Fh(Ideq)p 905 1306 │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fi(.)111 1538 y(2.)46 │ │ │ │ -b Fh(void)h(Ideq_setDefaultFields)42 b(\()47 b(Ideq)g(*deq)g(\))g(;)227 │ │ │ │ -1710 y Fi(This)22 b(metho)s(d)h(sets)g(the)g(structure's)f(\014elds)g │ │ │ │ -(to)i(default)f(v)-5 b(alues:)37 b Fh(head)22 b Fi(and)g │ │ │ │ -Fh(tail)g Fi(are)h(set)g(to)h Fh(-1)p Fi(,)g Fh(maxsize)227 │ │ │ │ -1823 y Fi(is)31 b(set)g(to)g(zero,)g(and)f(the)g(\014elds)g(for)g │ │ │ │ -Fh(iv)g Fi(are)h(set)g(via)g(a)g(call)g(to)g Fh(IV)p │ │ │ │ -2518 1823 V 34 w(setDefaultFields\(\))p Fi(.)227 1995 │ │ │ │ -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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1090 4 v │ │ │ │ +1272 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 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)227 1306 y(b)m(y)f(a)f(call)i(to)f Fh(Ideq)p │ │ │ │ +905 1306 29 4 v 33 w(setDefaultFields\(\))p Fi(.)111 │ │ │ │ +1538 y(2.)46 b Fh(void)h(Ideq_setDefaultFields)42 b(\()47 │ │ │ │ +b(Ideq)g(*deq)g(\))g(;)227 1710 y Fi(This)22 b(metho)s(d)h(sets)g(the)g │ │ │ │ +(structure's)f(\014elds)g(to)i(default)f(v)-5 b(alues:)37 │ │ │ │ +b Fh(head)22 b Fi(and)g Fh(tail)g Fi(are)h(set)g(to)h │ │ │ │ +Fh(-1)p Fi(,)g Fh(maxsize)227 1823 y Fi(is)31 b(set)g(to)g(zero,)g(and) │ │ │ │ +f(the)g(\014elds)g(for)g Fh(iv)g Fi(are)h(set)g(via)g(a)g(call)g(to)g │ │ │ │ +Fh(IV)p 2518 1823 V 34 w(setDefaultFields\(\))p Fi(.)227 │ │ │ │ +1995 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 2227 y(3.)46 │ │ │ │ b Fh(void)h(Ideq_clearData)d(\()j(Ideq)g(*deq)g(\))g(;)227 │ │ │ │ 2399 y Fi(This)23 b(metho)s(d)h(clears)h(an)m(y)f(data)g(o)m(wned)g(b)m │ │ │ │ (y)g(the)g(ob)5 b(ject.)40 b(It)24 b(releases)h(an)m(y)f(storage)h │ │ │ │ (held)f(b)m(y)g(the)g Fh(deq->iv)227 2512 y Fi(ob)5 b(ject)32 │ │ │ │ b(with)e(a)g(call)i(to)f Fh(IV)p 1165 2512 V 34 w(clearData\(\))p │ │ │ │ Fi(.)38 b(It)30 b(then)g(calls)i Fh(Ideq)p 2490 2512 │ │ │ │ @@ -3385,20 +3393,20 @@ │ │ │ │ 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 1130 4 v 1311 100 a Fh(Ideq)29 │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Octob)s(er)30 b(18,)i(2025)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 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1090 4 v 1272 100 a Fh(Ideq)29 │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 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 │ │ │ │ (Ideq)f(*deq)f(\))i(;)227 1284 y Fi(This)33 b(metho)s(d)f(returns)g │ │ │ │ (the)i(v)-5 b(alue)33 b(at)h(the)f(head)g(of)h(the)f(list)h(without)f │ │ │ │ (remo)m(ving)h(that)g(v)-5 b(alue.)49 b(If)33 b Fh(head)227 │ │ │ │ @@ -3464,21 +3472,21 @@ │ │ │ │ 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 1130 4 v │ │ │ │ -1311 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)30 b Fc(Octob)s(er)h(18,)g(2025) │ │ │ │ -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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1090 4 v │ │ │ │ +1272 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 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 │ │ │ │ (program)g(exits.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ TeXDict begin 5 4 bop 0 866 a Fj(Index)0 1289 y Fh(Ideq)p │ │ │ │ 198 1289 29 4 v 33 w(clear\(\))p Fi(,)29 b(3)0 1402 y │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Ideq : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Ideq : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Ideq : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o InpMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2765,23 +2765,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2955,90 +2954,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5606,17 +5614,17 @@ │ │ │ │ 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 201[0 32[65 65 17[65 1[65{}5 83.022 │ │ │ │ /CMSY10 rf /Fh 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 /Fi 132[48 38[66 │ │ │ │ -4[72 75 8[63 10[27 58[{}6 83.022 /CMBX10 rf /Fj 139[32 │ │ │ │ -1[33 2[42 9[37 1[37 46 18[65 20[23 1[42 2[42 2[42 42 │ │ │ │ -42 3[23 44[{}14 83.022 /CMSL10 rf /Fk 148[35 27 23 20[39 │ │ │ │ +4[72 75 8[63 10[27 58[{}6 83.022 /CMBX10 rf /Fj 137[44 │ │ │ │ +3[33 2[42 1[69 7[37 2[46 19[62 19[23 4[42 2[42 42 42 │ │ │ │ +3[23 44[{}13 83.022 /CMSL10 rf /Fk 148[35 27 23 20[39 │ │ │ │ 11[54 12[20 59[{}6 58.1154 /CMMI7 rf /Fl 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 /Fm 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 │ │ │ │ %DVIPSBitmapFont: Fn tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ @@ -5754,18 +5762,18 @@ │ │ │ │ Fo(InpMtx)p 1881 5140 V 28 w(changeStorageMode)o(\(\))p │ │ │ │ Fp(.)101 5308 y(5.)42 b(Create)18 b(an)h Fo(IVL)g Fp(ob)5 │ │ │ │ b(ject)19 b(that)h(con)n(tains)e(the)i(full)h(adjacency)d(of)i │ │ │ │ Fl(A)r Fp(+)r Fl(A)2384 5277 y Fk(T)2456 5308 y Fp(b)n(y)g(calling)e │ │ │ │ (the)i Fo(InpMtx)p 3222 5308 V 29 w(fullAdjacency\(\))208 │ │ │ │ 5407 y Fp(metho)r(d.)1929 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1157 4 v │ │ │ │ -1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(Octob)r(er)e(18,)h │ │ │ │ -(2025)p 2743 100 V 101 390 a Fp(6.)42 b(Create)26 b(a)h │ │ │ │ -Fo(Graph)f Fp(ob)5 b(ject)27 b(using)h(the)g Fo(Graph)p │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1121 4 v │ │ │ │ +1287 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2779 100 V 101 390 a Fp(6.)42 b(Create)26 │ │ │ │ +b(a)h Fo(Graph)f Fp(ob)5 b(ject)27 b(using)h(the)g Fo(Graph)p │ │ │ │ 1627 390 27 4 v 29 w(init2\(\))d Fp(metho)r(d)j(and)f(the)h │ │ │ │ Fo(IVL)f Fp(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 │ │ │ │ Fo(Graph)g Fp(ob)5 b(ject)30 b(from)g(a)g(linear)f(com)n(bination)h(of) │ │ │ │ g(t)n(w)n(o)g Fo(InpMtx)e Fp(ob)5 b(jects)0 691 y(that)33 │ │ │ │ b(con)n(tains)e(the)i(matrices)e Fl(A)i Fp(and)f Fl(B)t │ │ │ │ Fp(.)52 b(The)32 b Fo(InpMtx)p 1847 691 V 29 w(fullAdjacency2\(\))26 │ │ │ │ @@ -5854,19 +5862,19 @@ │ │ │ │ (or)g(t)n(w)n(o)390 5168 y(double)28 b(precision)e(v)-5 │ │ │ │ b(alues.)301 5308 y Fi({)41 b Fo(INPMTX)p 659 5308 V │ │ │ │ 29 w(SORTED)25 b Fp(|)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 1157 4 v 1323 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2704 100 V 1157 w Fp(3)301 390 y Fi({)41 b Fo(INPMTX)p │ │ │ │ -659 390 27 4 v 29 w(BY)p 776 390 V 31 w(VECTORS)32 b │ │ │ │ -Fp(|)i(data)h(is)f(sorted)g(and)h(distinct)g(v)n(ectors.)57 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1121 4 v 1287 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2739 100 V 1121 w Fp(3)301 390 y Fi({)41 │ │ │ │ +b Fo(INPMTX)p 659 390 27 4 v 29 w(BY)p 776 390 V 31 w(VECTORS)32 │ │ │ │ +b Fp(|)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 │ │ │ │ Fo(coordType)c Fp(is)j Fo(INPMTX)p 2688 490 V 29 w(BY)p │ │ │ │ 2805 490 V 31 w(ROWS)p Fp(,)f Fo(INPMTX)p 3338 490 V │ │ │ │ 29 w(BY)p 3455 490 V 30 w(COLUMNS)f Fp(or)390 589 y Fo(INPMTX)p │ │ │ │ 659 589 V 29 w(BY)p 776 589 V 31 w(CHEVRONS)p Fp(,)33 │ │ │ │ b(ro)n(w)i(v)n(ectors,)i(column)f(v)n(ectors,)h(or)e(c)n(hevron)g(v)n │ │ │ │ @@ -5960,17 +5968,17 @@ │ │ │ │ (stored)g(as)g(unsorted)g(pairs)g(or)h(triples,)g(and)f │ │ │ │ Fo(0)h Fp(other-)208 5242 y(wise.)125 5407 y Fn(\210)42 │ │ │ │ b Fo(INPMTX)p 477 5407 V 28 w(IS)p 593 5407 V 31 w(SORTED\(mtx\))23 │ │ │ │ b Fp(returns)k Fo(1)g Fp(if)h(the)g(en)n(tries)f(are)g(stored)g(as)g │ │ │ │ (sorted)f(pairs)h(or)g(triples,)g(and)h Fo(0)f Fp(otherwise.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1157 4 v │ │ │ │ -1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(Octob)r(er)e(18,)h │ │ │ │ -(2025)p 2743 100 V 125 390 a Fn(\210)42 b Fo(INPMTX)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1121 4 v │ │ │ │ +1287 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2779 100 V 125 390 a Fn(\210)42 b Fo(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 Fp(returns)27 b Fo(1)g Fp(if)i(the)f(en)n │ │ │ │ (tries)e(are)h(stored)g(as)g(v)n(ectors,)f(and)h Fo(0)g │ │ │ │ Fp(otherwise.)125 560 y Fn(\210)42 b Fo(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 Fp(returns)j Fo(1)h Fp(if)g(the)g(en)n(tries)f(are)f │ │ │ │ (not)i(stored,)f(and)g Fo(0)g Fp(otherwise.)125 730 y │ │ │ │ @@ -6036,26 +6044,27 @@ │ │ │ │ 5137 y Fn(\210)42 b Fo(INPMTX)p 659 5137 V 29 w(BY)p │ │ │ │ 776 5137 V 31 w(COLUMNS)24 b Fp({)k(storage)d(b)n(y)j(column)f(triples) │ │ │ │ 307 5272 y Fn(\210)42 b Fo(INPMTX)p 659 5272 V 29 w(BY)p │ │ │ │ 776 5272 V 31 w(CHEVRONS)24 b Fp({)j(storage)f(b)n(y)h(c)n(hevron)f │ │ │ │ (triples)307 5407 y Fn(\210)42 b Fo(INPMTX)p 659 5407 │ │ │ │ V 29 w(CUSTOM)25 b Fp({)i(custom)h(t)n(yp)r(e)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1157 4 v 1323 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2704 100 V 1157 w Fp(5)208 390 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ -b Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)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 Fo(int)g(InpMtx_storageMo)o(de)37 b(\()43 │ │ │ │ -b(InpMtx)e(*inpmtx)g(\))i(;)208 693 y Fp(This)27 b(metho)r(d)h(returns) │ │ │ │ -f(the)h(storage)e(mo)r(de.)307 862 y Fn(\210)42 b Fo(INPMTX)p │ │ │ │ -659 862 27 4 v 29 w(NO)p 776 862 V 31 w(MODE)26 b Fp({)h(none)g(sp)r │ │ │ │ -(eci\014ed)307 997 y Fn(\210)42 b Fo(INPMTX)p 659 997 │ │ │ │ -V 29 w(RAW)p 820 997 V 30 w(DATA)26 b Fp({)h(ra)n(w)g(triples)307 │ │ │ │ -1131 y Fn(\210)42 b Fo(INPMTX)p 659 1131 V 29 w(SORTED)25 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1121 4 v 1287 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2739 100 V 1121 w Fp(5)208 390 y Fm(Err)l(or)k(che)l │ │ │ │ +(cking:)38 b Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p │ │ │ │ +Fp(,)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 Fo(int)g(InpMtx_storageMo)o(de)37 │ │ │ │ +b(\()43 b(InpMtx)e(*inpmtx)g(\))i(;)208 693 y Fp(This)27 │ │ │ │ +b(metho)r(d)h(returns)f(the)h(storage)e(mo)r(de.)307 │ │ │ │ +862 y Fn(\210)42 b Fo(INPMTX)p 659 862 27 4 v 29 w(NO)p │ │ │ │ +776 862 V 31 w(MODE)26 b Fp({)h(none)g(sp)r(eci\014ed)307 │ │ │ │ +997 y Fn(\210)42 b Fo(INPMTX)p 659 997 V 29 w(RAW)p 820 │ │ │ │ +997 V 30 w(DATA)26 b Fp({)h(ra)n(w)g(triples)307 1131 │ │ │ │ +y Fn(\210)42 b Fo(INPMTX)p 659 1131 V 29 w(SORTED)25 │ │ │ │ b Fp({)i(sorted)g(and)h(distinct)g(triples)307 1265 y │ │ │ │ Fn(\210)42 b Fo(INPMTX)p 659 1265 V 29 w(BY)p 776 1265 │ │ │ │ V 31 w(VECTORS)24 b Fp({)k(v)n(ectors)e(b)n(y)h(the)h(\014rst)f(co)r │ │ │ │ (ordinate)208 1434 y Fm(Err)l(or)j(che)l(cking:)38 b │ │ │ │ Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)f(an)i(error)d(message)h │ │ │ │ (is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)101 1603 │ │ │ │ y(3.)42 b Fo(int)g(InpMtx_inputMode)37 b(\()43 b(InpMtx)e(*inpmtx)g(\)) │ │ │ │ @@ -6104,19 +6113,19 @@ │ │ │ │ (exits.)60 5139 y(10.)41 b Fo(int)h(*)h(InpMtx_ivec2)c(\()k(InpMtx)e │ │ │ │ (*inpmtx)g(\))i(;)208 5273 y Fp(This)27 b(metho)r(d)h(returns)f(the)h │ │ │ │ (base)f(address)f(of)i(the)g Fo(ivec2[])d Fp(v)n(ector.)208 │ │ │ │ 5407 y Fm(Err)l(or)30 b(che)l(cking:)38 b Fp(If)28 b │ │ │ │ Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)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 Fp(6)p 125 100 1157 4 v │ │ │ │ -1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(Octob)r(er)e(18,)h │ │ │ │ -(2025)p 2743 100 V 60 390 a Fp(11.)41 b Fo(double)g(*)i(InpMtx_dvec)c │ │ │ │ -(\()k(InpMtx)e(*inpmtx)g(\))i(;)208 524 y Fp(This)27 │ │ │ │ -b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i(the)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1121 4 v │ │ │ │ +1287 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2779 100 V 60 390 a Fp(11.)41 b Fo(double)g(*)i │ │ │ │ +(InpMtx_dvec)c(\()k(InpMtx)e(*inpmtx)g(\))i(;)208 524 │ │ │ │ +y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i(the)g │ │ │ │ Fo(dvec[])d Fp(v)n(ector.)208 658 y Fm(Err)l(or)30 b(che)l(cking:)38 │ │ │ │ b Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)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 Fo(int)h(*)h(InpMtx_vecids)38 b(\()43 b(InpMtx)f(*inpmtx)e │ │ │ │ (\))j(;)208 959 y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f │ │ │ │ (address)f(of)i(the)g Fo(vecids[])c Fp(v)n(ector.)208 │ │ │ │ 1093 y Fm(Err)l(or)30 b(che)l(cking:)38 b Fp(If)28 b │ │ │ │ @@ -6184,28 +6193,28 @@ │ │ │ │ 208 5174 y Fp(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 Fm(Err)l(or)35 b(che)l(cking:)50 │ │ │ │ b Fp(If)33 b Fo(inpmtx)e Fp(is)i Fo(NULL)p Fp(,)f(or)g(if)h │ │ │ │ Fo(newnent)d Fl(<)i Fp(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 1157 4 v 1323 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2704 100 V 1157 w Fp(7)60 390 y(19.)41 b Fo(void)g(InpMtx_setMaxnvec)o │ │ │ │ -(tor)c(\()43 b(InpMtx)e(*inpmtx,)f(int)j(newmaxnvector)38 │ │ │ │ -b(\))43 b(;)208 516 y Fp(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 Fm(Err)l(or)38 │ │ │ │ -b(che)l(cking:)58 b Fp(If)38 b Fo(inpmtx)c Fp(is)j Fo(NULL)p │ │ │ │ -Fp(,)f(or)g(if)h Fo(newmaxnvector)d Fl(<)k Fp(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 Fo(void)g(InpMtx_setNvector)c(\()43 │ │ │ │ -b(InpMtx)e(*inpmtx,)g(int)h(newnvector)d(\))44 b(;)208 │ │ │ │ -1017 y Fp(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(v)n(ectors.)208 1142 y Fm(Err)l(or)i(che)l(cking:)38 │ │ │ │ -b Fp(If)27 b Fo(inpmtx)d Fp(is)i Fo(NULL)p Fp(,)f(or)h(if)h │ │ │ │ +TeXDict begin 7 6 bop 83 100 1121 4 v 1287 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2739 100 V 1121 w Fp(7)60 390 y(19.)41 │ │ │ │ +b Fo(void)g(InpMtx_setMaxnvec)o(tor)c(\()43 b(InpMtx)e(*inpmtx,)f(int)j │ │ │ │ +(newmaxnvector)38 b(\))43 b(;)208 516 y Fp(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 Fm(Err)l(or)38 b(che)l(cking:)58 b Fp(If)38 b Fo(inpmtx)c │ │ │ │ +Fp(is)j Fo(NULL)p Fp(,)f(or)g(if)h Fo(newmaxnvector)d │ │ │ │ +Fl(<)k Fp(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 Fo(void)g │ │ │ │ +(InpMtx_setNvector)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h(newnvector)d(\)) │ │ │ │ +44 b(;)208 1017 y Fp(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(v)n(ectors.)208 1142 y Fm(Err)l(or)i(che)l(cking:) │ │ │ │ +38 b Fp(If)27 b Fo(inpmtx)d Fp(is)i Fo(NULL)p Fp(,)f(or)h(if)h │ │ │ │ Fo(newnvector)19 b Fl(<)j Fp(0,)27 b(an)f(error)e(message)h(is)i(prin)n │ │ │ │ (ted)f(and)g(the)h(program)208 1242 y(exits.)60 1393 │ │ │ │ y(21.)41 b Fo(void)g(InpMtx_setResizeM)o(ult)o(ip)o(le)c(\()43 │ │ │ │ b(InpMtx)e(*inpmtx,)g(double)g(resizeMultiple)d(\))43 │ │ │ │ b(;)208 1519 y Fp(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(v)n(ectors.)208 1644 y Fm(Err)l(or)36 │ │ │ │ b(che)l(cking:)54 b Fp(If)35 b Fo(inpmtx)d Fp(is)j Fo(NULL)p │ │ │ │ @@ -6279,24 +6288,25 @@ │ │ │ │ b Fp(and)23 b Fo(InpMtx)p 2609 5083 V 29 w(convertToVectors\()o(\))p │ │ │ │ Fp(,)18 b(as)23 b(appropri-)208 5182 y(ate.)208 5308 │ │ │ │ y Fm(Err)l(or)30 b(che)l(cking:)41 b Fp(If)28 b Fo(inpmtx)e │ │ │ │ Fp(is)j Fo(NULL)d Fp(or)i Fo(newMode)d Fp(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 Fp(8)p 125 100 1157 4 v │ │ │ │ -1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(Octob)r(er)e(18,)h │ │ │ │ -(2025)p 2743 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ -570 y Fp(1.)k Fo(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 Fp(This)29 b(metho)r(d)g(places)g(a)f(single)h(en)n(try)f(in)n(to)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 125 100 1121 4 v │ │ │ │ +1287 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(No)n(v)n(em)n(b)r(er)f │ │ │ │ +(15,)h(2025)p 2779 100 V 0 390 a Fe(1.2.4)112 b(Input)38 │ │ │ │ +b(metho)s(ds)101 570 y Fp(1.)k Fo(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 │ │ │ │ +Fp(This)29 b(metho)r(d)g(places)g(a)f(single)h(en)n(try)f(in)n(to)h │ │ │ │ (the)g(matrix)g(ob)5 b(ject.)41 b(The)29 b(co)r(ordinate)f(t)n(yp)r(e)h │ │ │ │ (of)g(the)h(ob)5 b(ject)29 b(m)n(ust)g(b)r(e)208 1102 │ │ │ │ y Fo(INPMTX)p 477 1102 27 4 v 28 w(BY)p 593 1102 V 31 │ │ │ │ w(ROWS)p Fp(,)g Fo(INPMTX)p 1116 1102 V 29 w(BY)p 1233 │ │ │ │ 1102 V 30 w(COLUMNS)f Fp(or)h Fo(INPMTX)p 1967 1102 V │ │ │ │ 29 w(BY)p 2084 1102 V 31 w(CHEVRONS)p Fp(.)e(The)j(triple)h(is)f │ │ │ │ (formed)g(and)g(inserted)g(in)n(to)208 1202 y(the)e(v)n(ectors,)e(whic) │ │ │ │ @@ -6378,21 +6388,21 @@ │ │ │ │ (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 1157 4 v 1323 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2704 100 V 1157 w Fp(9)338 390 y Fo(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 Fp(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 │ │ │ │ +TeXDict begin 9 8 bop 83 100 1121 4 v 1287 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2739 100 V 1121 w Fp(9)338 390 y Fo(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 Fp(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 Fo(INPMTX)p 588 │ │ │ │ 625 27 4 v 28 w(BY)p 704 625 V 31 w(ROWS)p Fp(,)e Fo(INPMTX)p │ │ │ │ 1222 625 V 29 w(BY)p 1339 625 V 31 w(COLUMNS)e Fp(or)j │ │ │ │ Fo(INPMTX)p 2064 625 V 29 w(BY)p 2181 625 V 30 w(CHEVRONS)p │ │ │ │ Fp(.)e(The)i(individual)h(en)n(tries)f(of)h(the)g(matrix)208 │ │ │ │ 725 y(are)g(placed)h(in)n(to)h(the)g(v)n(ector)e(storage)g(as)h │ │ │ │ (triples,)g(and)h(the)g(v)n(ectors)e(are)g(resized)h(if)h(necessary)-7 │ │ │ │ @@ -6486,23 +6496,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 Fm(Err)l(or)e(che)l(cking:)37 b Fp(If)23 b Fo(A)p │ │ │ │ Fp(,)f Fo(rowmapIV)e Fp(or)i Fo(colmapIV)d Fp(is)k Fo(NULL)p │ │ │ │ Fp(,)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 Fp(10)p 166 100 1136 4 │ │ │ │ -v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 101 390 a Fp(4.)42 b Fo(void)f(InpMtx_permute)d(\() │ │ │ │ -43 b(InpMtx)f(*inpmtx,)e(int)i(rowOldToNew[],)c(int)k(colOldToNew[])d │ │ │ │ -(\))k(;)208 528 y Fp(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 Fo(rowOldToNew)23 b Fp(and)28 b Fo(colOldToNew)c Fp(are)208 │ │ │ │ -628 y(b)r(oth)29 b Fo(NULL)p Fp(,)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 Fp(10)p 166 100 1101 4 │ │ │ │ +v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 101 390 a Fp(4.)42 b Fo(void)f │ │ │ │ +(InpMtx_permute)d(\()43 b(InpMtx)f(*inpmtx,)e(int)i(rowOldToNew[],)c │ │ │ │ +(int)k(colOldToNew[])d(\))k(;)208 528 y Fp(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 Fo(rowOldToNew)23 b Fp(and)28 b Fo(colOldToNew)c │ │ │ │ +Fp(are)208 628 y(b)r(oth)29 b Fo(NULL)p Fp(,)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 Fo(rowOldToNew)24 b Fp(or)208 727 │ │ │ │ y Fo(colOldToNew)i Fp(can)k(b)r(e)h Fo(NULL)p Fp(.)e(If)i │ │ │ │ Fo(coordType)40 b(==)i(INPMTX)p 2138 727 27 4 v 29 w(BY)p │ │ │ │ 2255 727 V 31 w(CHEVRONS)p Fp(,)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 Fo(storageMode)d Fp(is)j(set)h(to)208 │ │ │ │ @@ -6598,25 +6608,26 @@ │ │ │ │ 5208 V 29 w(SORTED)f Fp(or)i Fo(INPMTX)p 3713 5208 V │ │ │ │ 29 w(BY)p 3830 5208 V 30 w(VECTORS)p Fp(,)208 5308 y(or)i(if)j │ │ │ │ Fo(inputMode)18 b Fp(is)j(not)h Fo(SPOOLES)p 1320 5308 │ │ │ │ V 28 w(REAL)f Fp(or)f Fo(SPOOLES)p 1948 5308 V 29 w(COMPLEX)p │ │ │ │ Fp(,)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 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(11)101 390 y(2.)42 b Fo(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) │ │ │ │ -h(\))i(;)208 789 y(void)d(InpMtx_nonsym_mmm)o(Vec)o(to)o(r_H)c(\()43 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(11)101 390 y(2.)42 │ │ │ │ +b Fo(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)h │ │ │ │ +(\))i(;)208 789 y(void)d(InpMtx_nonsym_mmm)o(Vec)o(to)o(r_H)c(\()43 │ │ │ │ b(InpMtx)e(*A,)h(DenseMtx)f(*Y,)h(double)f(alpha[],)f(DenseMtx)h(*X)h │ │ │ │ (\))i(;)208 920 y Fp(These)27 b(\014v)n(e)g(metho)r(ds)h(p)r(erform)f │ │ │ │ (the)h(follo)n(wing)f(computations.)655 1109 y Fo(InpMtx)p │ │ │ │ 924 1109 27 4 v 29 w(nonsym)p 1217 1109 V 29 w(mmm\(\))172 │ │ │ │ b Fl(y)26 b Fp(:=)d Fl(y)e Fp(+)d Fl(\013Ax)164 b Fp(nonsymmetric)99 │ │ │ │ b(real)26 b(or)h(complex)655 1208 y Fo(InpMtx)p 924 1208 │ │ │ │ V 29 w(sym)p 1085 1208 V 30 w(mmm\(\))303 b Fl(y)26 b │ │ │ │ @@ -6710,30 +6721,30 @@ │ │ │ │ b(dimensions)f(and)g(strides)g(for)g Fo(X)1889 5220 y │ │ │ │ Fp(-13)98 b(en)n(tries)27 b(of)h Fo(X)f Fp(are)f Fo(NULL)1889 │ │ │ │ 5319 y Fp(-14)98 b(t)n(yp)r(es)28 b(of)f Fo(A)p Fp(,)h │ │ │ │ Fo(X)f Fp(and)g Fo(Y)g Fp(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 │ │ │ │ Fo(X)f Fp(and)h Fo(Y)f Fp(are)g(not)g(equal)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 166 100 1136 │ │ │ │ -4 v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 101 390 a Fp(4.)42 b Fo(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 Fp(12)p 166 100 1101 │ │ │ │ +4 v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 101 390 a Fp(4.)42 b Fo(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 Fp(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 Fo(InpMtx)p 877 1582 │ │ │ │ 27 4 v 28 w(nonsym)p 1169 1582 V 29 w(gmvm\(\))172 b │ │ │ │ Fl(y)26 b Fp(:=)d Fl(\014)t(y)e Fp(+)d Fl(\013Ax)164 │ │ │ │ b Fp(nonsymmetric)99 b(real)27 b(or)f(complex)608 1681 │ │ │ │ y Fo(InpMtx)p 877 1681 V 28 w(sym)p 1037 1681 V 31 w(gmvm\(\))302 │ │ │ │ b Fl(y)26 b Fp(:=)d Fl(\014)t(y)e Fp(+)d Fl(\013Ax)164 │ │ │ │ @@ -6812,35 +6823,36 @@ │ │ │ │ (of)h Fl(A)3522 5150 y Fk(T)3575 5180 y Fl(A)p Fp(,)h(where)208 │ │ │ │ 5280 y Fo(inpmtxA)c Fp(con)n(tains)j(the)h(en)n(tries)f(in)h │ │ │ │ Fl(A)p Fp(.)208 5407 y Fm(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fp(If)28 b Fo(inpmtxA)d Fp(is)j Fo(NULL)p Fp(,)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 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ -b(extraction)e(metho)s(d)101 569 y Fp(1.)42 b Fo(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 │ │ │ │ -Fp(This)27 b(metho)r(d)g(\014lls)h Fo(B)e Fp(with)i(the)g(submatrix)e │ │ │ │ -(formed)h(from)g(the)g(ro)n(ws)f(and)h(columns)g(of)g │ │ │ │ -Fo(A)g Fp(found)g(in)h Fo(BrowsIV)c Fp(and)208 902 y │ │ │ │ -Fo(BcolsIV)p Fp(.)g(The)k(ro)n(w)e(and)i(column)f(indices)h(in)g │ │ │ │ -Fo(B)f Fp(are)g(lo)r(cal)g(with)h(resp)r(ect)f(to)h Fo(BrowsIV)c │ │ │ │ -Fp(and)k Fo(BcolsIV)p Fp(.)208 1035 y(When)e Fo(symmetryflag)21 │ │ │ │ -b Fp(is)26 b Fo(SPOOLES)p 1392 1035 27 4 v 29 w(SYMMETRIC)c │ │ │ │ -Fp(or)j Fo(SPOOLES)p 2247 1035 V 28 w(HERMITIAN)p Fp(,)e(then)j(w)n(e)g │ │ │ │ -(assume)f(that)i(when)f Fl(i)c Fg(6)p Fp(=)h Fl(j)5 b │ │ │ │ -Fp(,)208 1135 y Fl(A)270 1147 y Fk(i;j)375 1135 y Fp(or)25 │ │ │ │ -b Fl(A)537 1147 y Fk(j;i)638 1135 y Fp(is)i(stored,)f(but)h(not)f(b)r │ │ │ │ -(oth.)37 b(\()p Fl(A)27 b Fp(could)f(b)r(e)h(stored)f(b)n(y)g(ro)n(ws)f │ │ │ │ -(of)h(its)h(upp)r(er)f(triangle,)g(or)g(b)n(y)g(columns)g(of)208 │ │ │ │ -1235 y(its)c(lo)n(w)n(er)f(triangle,)i(or)e(a)i(mixture.\))35 │ │ │ │ +TeXDict begin 13 12 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(13)0 390 y Fe(1.2.8)112 │ │ │ │ +b(Submatrix)39 b(extraction)e(metho)s(d)101 569 y Fp(1.)42 │ │ │ │ +b Fo(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 Fp(This)27 b(metho)r(d)g(\014lls)h │ │ │ │ +Fo(B)e Fp(with)i(the)g(submatrix)e(formed)h(from)g(the)g(ro)n(ws)f(and) │ │ │ │ +h(columns)g(of)g Fo(A)g Fp(found)g(in)h Fo(BrowsIV)c │ │ │ │ +Fp(and)208 902 y Fo(BcolsIV)p Fp(.)g(The)k(ro)n(w)e(and)i(column)f │ │ │ │ +(indices)h(in)g Fo(B)f Fp(are)g(lo)r(cal)g(with)h(resp)r(ect)f(to)h │ │ │ │ +Fo(BrowsIV)c Fp(and)k Fo(BcolsIV)p Fp(.)208 1035 y(When)e │ │ │ │ +Fo(symmetryflag)21 b Fp(is)26 b Fo(SPOOLES)p 1392 1035 │ │ │ │ +27 4 v 29 w(SYMMETRIC)c Fp(or)j Fo(SPOOLES)p 2247 1035 │ │ │ │ +V 28 w(HERMITIAN)p Fp(,)e(then)j(w)n(e)g(assume)f(that)i(when)f │ │ │ │ +Fl(i)c Fg(6)p Fp(=)h Fl(j)5 b Fp(,)208 1135 y Fl(A)270 │ │ │ │ +1147 y Fk(i;j)375 1135 y Fp(or)25 b Fl(A)537 1147 y Fk(j;i)638 │ │ │ │ +1135 y Fp(is)i(stored,)f(but)h(not)f(b)r(oth.)37 b(\()p │ │ │ │ +Fl(A)27 b Fp(could)f(b)r(e)h(stored)f(b)n(y)g(ro)n(ws)f(of)h(its)h(upp) │ │ │ │ +r(er)f(triangle,)g(or)g(b)n(y)g(columns)g(of)208 1235 │ │ │ │ +y(its)c(lo)n(w)n(er)f(triangle,)i(or)e(a)i(mixture.\))35 │ │ │ │ b(In)23 b(this)f(case,)h(if)g Fo(BrowsIV)d Fp(and)i Fo(BcolsIV)e │ │ │ │ Fp(are)h(iden)n(tical,)j(then)f(just)g(the)g(upp)r(er)208 │ │ │ │ 1334 y(triangular)h(part)i(of)h Fo(B)f Fp(is)g(stored.)36 │ │ │ │ b(Otherwise)25 b Fo(B)h Fp(con)n(tains)g(all)g(en)n(tries)g(of)g │ │ │ │ Fl(A)h Fp(for)f(ro)n(ws)f(in)h Fo(rowsIV)e Fp(and)j(columns)f(in)208 │ │ │ │ 1434 y Fo(colsIV)p Fp(.)208 1568 y Fm(R)l(eturn)i(c)l(o)l(des:)741 │ │ │ │ 1747 y Fp(1)99 b(normal)27 b(return)713 1846 y(-1)99 │ │ │ │ @@ -6910,20 +6922,20 @@ │ │ │ │ Fp(to)29 b Fl(a)2795 5320 y Fk(j;i)2869 5308 y Fp(.)43 │ │ │ │ b(The)29 b(second)g(metho)r(d)g(mo)n(v)n(es)208 5407 │ │ │ │ y Fl(a)252 5419 y Fk(i;j)353 5407 y Fp(for)22 b Fl(i)h(>)g(j)28 │ │ │ │ b Fp(to)23 b Fl(a)818 5419 y Fk(j;i)892 5407 y Fp(,)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 Fp(14)p 166 100 1136 │ │ │ │ -4 v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 208 390 a Fp(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 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 166 100 1101 │ │ │ │ +4 v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 208 390 a Fp(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 Fm(Err)l(or)38 b(che)l(cking:)56 b Fp(If)37 b Fo(inpmtx)d │ │ │ │ Fp(is)i Fo(NULL)p Fp(,)f(or)h(if)h Fo(coordType)32 b │ │ │ │ Fp(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 Fo(void)f(InpMtx_log10profi)o(le)c(\()43 b(InpMtx)e(*inpmtx,) │ │ │ │ g(int)h(npts,)g(DV)g(*xDV,)g(DV)h(*yDV,)1428 1044 y(double)e(tausmall,) │ │ │ │ f(double)h(taubig,)1428 1144 y(int)h(*pnzero,)f(int)h(*pnsmall,)e(int)i │ │ │ │ @@ -7013,19 +7025,19 @@ │ │ │ │ 5020 y(-5)98 b Fo(nrow)26 b Fp(or)h Fo(ncol)f Fp(negativ)n(e)1985 │ │ │ │ 5120 y(-6)98 b Fo(symflag)25 b Fp(is)j(in)n(v)-5 b(alid)1985 │ │ │ │ 5220 y(-7)98 b Fo(\(symflag,inputMod)o(e\))21 b Fp(in)n(v)-5 │ │ │ │ b(alid)1985 5319 y(-8)98 b Fo(\(symflag,nrow,nco)o(l\))21 │ │ │ │ b Fp(in)n(v)-5 b(alid)1985 5419 y(-9)98 b Fo(nitem)26 │ │ │ │ b Fp(negativ)n(e)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 83 100 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ -b(metho)s(ds)0 568 y Fp(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 │ │ │ │ +TeXDict begin 15 14 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(15)0 390 y Fe(1.2.10)113 │ │ │ │ +b(IO)37 b(metho)s(ds)0 568 y Fp(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 │ │ │ │ Fo(InpMtx)e Fp(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 │ │ │ │ Fo(coordType)p Fp(,)i Fo(storageMode)p Fp(,)f Fo(inputMode)p │ │ │ │ Fp(,)h Fo(nent)e Fp(and)h Fo(nvector)p Fp(.)82 b(If)44 │ │ │ │ b Fo(nent)e(>)h(0)p Fp(,)48 b(then)c(the)0 767 y Fo(ivec1IV)33 │ │ │ │ b Fp(and)i Fo(ivec2IV)d Fp(v)n(ectors)i(follo)n(w,)j(If)e │ │ │ │ Fo(nent)42 b(>)h(0)35 b Fp(and)h Fo(inputMode)j(=)44 │ │ │ │ @@ -7120,20 +7132,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 Fo(1)f │ │ │ │ Fp(is)h(returned.)208 5407 y Fm(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fp(If)28 b Fo(inpmtx)e Fp(or)g Fo(fp)h Fp(are)g Fo(NULL)p │ │ │ │ Fp(,)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 Fp(16)p 166 100 1136 │ │ │ │ -4 v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 101 390 a Fp(8.)42 b Fo(int)g(InpMtx_writeStat)o(s) │ │ │ │ -37 b(\()44 b(InpMtx)d(*inpmtx,)f(FILE)i(*fp)g(\))h(;)208 │ │ │ │ -520 y Fp(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 Fp(16)p 166 100 1101 │ │ │ │ +4 v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 101 390 a Fp(8.)42 b Fo(int)g │ │ │ │ +(InpMtx_writeStat)o(s)37 b(\()44 b(InpMtx)d(*inpmtx,)f(FILE)i(*fp)g(\)) │ │ │ │ +h(;)208 520 y Fp(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 Fo(1)g Fp(is)h(returned.)208 649 y │ │ │ │ Fm(Err)l(or)i(che)l(cking:)38 b Fp(If)28 b Fo(inpmtx)e │ │ │ │ Fp(or)g Fo(fp)h Fp(are)g Fo(NULL)p Fp(,)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 Fo(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 Fp(This)27 │ │ │ │ b(metho)r(d)h(writes)f(out)h(a)f Fo(InpMtx)e Fp(ob)5 │ │ │ │ @@ -7210,52 +7222,52 @@ │ │ │ │ b(structure)h(of)h Fl(A)19 b Fp(+)f Fl(A)1267 5238 y │ │ │ │ Fk(T)1319 5268 y Fp(,)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 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(17)307 390 y Fn(\210)42 b Fp(The)19 │ │ │ │ -b Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ -(output)h(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 b Fp(means)f(the)h │ │ │ │ -Fo(InpMtx)390 490 y Fp(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h │ │ │ │ -(message)e(\014le.)307 627 y Fn(\210)42 b Fp(The)32 b │ │ │ │ -Fo(msgFile)c Fp(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ -(if)h Fo(msgFile)d Fp(is)i Fo(stdout)p Fp(,)f(then)i(the)g(message)390 │ │ │ │ -727 y(\014le)c(is)f Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ -(op)r(ened)f(with)i Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ -(y)g(output)h(data.)307 864 y Fn(\210)42 b Fp(The)28 │ │ │ │ -b Fo(nvtx)e Fp(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of)f(ro)n(ws)f │ │ │ │ -(and)i(columns)f(in)h Fl(A)p Fp(.)307 1001 y Fn(\210)42 │ │ │ │ -b Fp(The)25 b Fo(nent)f Fp(parameter)g(is)g(an)h(upp)r(er)h(b)r(ound)f │ │ │ │ -(on)g(the)g(n)n(um)n(b)r(er)g(of)g(en)n(tries)g(in)g │ │ │ │ -Fl(A)p Fp(.)36 b(\(Since)26 b(the)f(lo)r(cations)g(of)g(the)390 │ │ │ │ -1101 y(en)n(tries)i(are)g(generated)f(via)h(random)g(n)n(um)n(b)r(ers,) │ │ │ │ -g(there)g(ma)n(y)g(b)r(e)h(duplicate)g(en)n(tries.\))307 │ │ │ │ -1238 y Fn(\210)42 b Fp(The)28 b Fo(seed)e Fp(parameter)g(is)h(random)g │ │ │ │ -(n)n(um)n(b)r(er)g(seed.)101 1431 y(3.)42 b Fo(testFullAdj2)c(msglvl)j │ │ │ │ -(msgFile)g(nvtx)h(nentA)f(nentB)h(seed)208 1568 y Fp(This)23 │ │ │ │ -b(driv)n(er)f(program)f(tests)i(the)h Fo(InpMtx)p 1555 │ │ │ │ -1568 27 4 v 29 w(fullAdjacency2\(\))17 b Fp(metho)r(d.)36 │ │ │ │ -b(If)23 b(\014rst)g(generates)f(t)n(w)n(o)g Fo(InpMtx)f │ │ │ │ -Fp(ob)5 b(ject)208 1668 y(\014lled)31 b(with)h(random)e(en)n(tries)h(|) │ │ │ │ -g(one)g(for)g(a)g(matrix)f Fl(A)i Fp(and)f(one)g(for)g(a)g(matrix)f │ │ │ │ -Fl(B)t Fp(.)48 b(It)32 b(then)g(constructs)e(an)h Fo(IVL)208 │ │ │ │ -1768 y Fp(ob)5 b(ject)27 b(that)h(con)n(tains)e(the)i(full)h(adjacency) │ │ │ │ -e(structure)g(of)g(\()p Fl(A)19 b Fp(+)f Fl(B)t Fp(\))h(+)f(\()p │ │ │ │ -Fl(A)h Fp(+)f Fl(B)t Fp(\))2778 1737 y Fk(T)2831 1768 │ │ │ │ -y Fp(,)28 b(diagonal)e(edges)h(included.)307 1961 y Fn(\210)42 │ │ │ │ +TeXDict begin 17 16 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(17)307 390 y Fn(\210)42 │ │ │ │ b Fp(The)19 b Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ (of)h(output)h(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 │ │ │ │ -b Fp(means)f(the)h Fo(InpMtx)390 2061 y Fp(ob)5 b(ject)28 │ │ │ │ -b(is)f(written)h(to)f(the)h(message)e(\014le.)307 2198 │ │ │ │ +b Fp(means)f(the)h Fo(InpMtx)390 490 y Fp(ob)5 b(ject)28 │ │ │ │ +b(is)f(written)h(to)f(the)h(message)e(\014le.)307 627 │ │ │ │ y Fn(\210)42 b Fp(The)32 b Fo(msgFile)c Fp(parameter)i(determines)h │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fo(msgFile)d Fp(is)i │ │ │ │ +Fo(stdout)p Fp(,)f(then)i(the)g(message)390 727 y(\014le)c(is)f │ │ │ │ +Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ +Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ +307 864 y Fn(\210)42 b Fp(The)28 b Fo(nvtx)e Fp(parameter)g(is)h(the)h │ │ │ │ +(n)n(um)n(b)r(er)g(of)f(ro)n(ws)f(and)i(columns)f(in)h │ │ │ │ +Fl(A)p Fp(.)307 1001 y Fn(\210)42 b Fp(The)25 b Fo(nent)f │ │ │ │ +Fp(parameter)g(is)g(an)h(upp)r(er)h(b)r(ound)f(on)g(the)g(n)n(um)n(b)r │ │ │ │ +(er)g(of)g(en)n(tries)g(in)g Fl(A)p Fp(.)36 b(\(Since)26 │ │ │ │ +b(the)f(lo)r(cations)g(of)g(the)390 1101 y(en)n(tries)i(are)g │ │ │ │ +(generated)f(via)h(random)g(n)n(um)n(b)r(ers,)g(there)g(ma)n(y)g(b)r(e) │ │ │ │ +h(duplicate)g(en)n(tries.\))307 1238 y Fn(\210)42 b Fp(The)28 │ │ │ │ +b Fo(seed)e Fp(parameter)g(is)h(random)g(n)n(um)n(b)r(er)g(seed.)101 │ │ │ │ +1431 y(3.)42 b Fo(testFullAdj2)c(msglvl)j(msgFile)g(nvtx)h(nentA)f │ │ │ │ +(nentB)h(seed)208 1568 y Fp(This)23 b(driv)n(er)f(program)f(tests)i │ │ │ │ +(the)h Fo(InpMtx)p 1555 1568 27 4 v 29 w(fullAdjacency2\(\))17 │ │ │ │ +b Fp(metho)r(d.)36 b(If)23 b(\014rst)g(generates)f(t)n(w)n(o)g │ │ │ │ +Fo(InpMtx)f Fp(ob)5 b(ject)208 1668 y(\014lled)31 b(with)h(random)e(en) │ │ │ │ +n(tries)h(|)g(one)g(for)g(a)g(matrix)f Fl(A)i Fp(and)f(one)g(for)g(a)g │ │ │ │ +(matrix)f Fl(B)t Fp(.)48 b(It)32 b(then)g(constructs)e(an)h │ │ │ │ +Fo(IVL)208 1768 y Fp(ob)5 b(ject)27 b(that)h(con)n(tains)e(the)i(full)h │ │ │ │ +(adjacency)e(structure)g(of)g(\()p Fl(A)19 b Fp(+)f Fl(B)t │ │ │ │ +Fp(\))h(+)f(\()p Fl(A)h Fp(+)f Fl(B)t Fp(\))2778 1737 │ │ │ │ +y Fk(T)2831 1768 y Fp(,)28 b(diagonal)e(edges)h(included.)307 │ │ │ │ +1961 y Fn(\210)42 b Fp(The)19 b Fo(msglvl)e Fp(parameter)g(determines)i │ │ │ │ +(the)h(amoun)n(t)e(of)h(output)h(|)f(taking)f Fo(msglvl)41 │ │ │ │ +b(>=)i(3)19 b Fp(means)f(the)h Fo(InpMtx)390 2061 y Fp(ob)5 │ │ │ │ +b(ject)28 b(is)f(written)h(to)f(the)h(message)e(\014le.)307 │ │ │ │ +2198 y Fn(\210)42 b Fp(The)32 b Fo(msgFile)c Fp(parameter)i(determines) │ │ │ │ +h(the)h(message)e(\014le)i(|)f(if)h Fo(msgFile)d Fp(is)i │ │ │ │ Fo(stdout)p Fp(,)f(then)i(the)g(message)390 2297 y(\014le)c(is)f │ │ │ │ Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ 307 2435 y Fn(\210)42 b Fp(The)28 b Fo(nvtx)e Fp(parameter)g(is)h(the)h │ │ │ │ (n)n(um)n(b)r(er)g(of)f(ro)n(ws)f(and)i(columns)f(in)h │ │ │ │ Fl(A)p Fp(.)307 2572 y Fn(\210)42 b Fp(The)31 b Fo(nentA)d │ │ │ │ Fp(parameter)h(is)i(an)f(upp)r(er)h(b)r(ound)g(on)f(the)h(n)n(um)n(b)r │ │ │ │ @@ -7316,49 +7328,50 @@ │ │ │ │ b(driv)n(er)f(program)f(reads)h(in)i Fo(InpMtx)d Fp(ob)5 │ │ │ │ b(ject)23 b(from)g(the)g(\014le)h Fo(inFile)d Fp(that)i(holds)g(a)g │ │ │ │ (matrix)g Fl(A)p Fp(.)36 b(It)23 b(then)h(creates)208 │ │ │ │ 5407 y(a)j Fo(Graph)e Fp(ob)5 b(ject)28 b(for)f Fl(B)g │ │ │ │ Fp(=)c Fl(A)1141 5377 y Fk(T)1193 5407 y Fl(A)28 b Fp(and)g(writes)f │ │ │ │ (it)h(to)f(the)h(\014le)g Fo(outFile)p Fp(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fp(18)p 166 100 1136 │ │ │ │ -4 v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 307 390 a Fn(\210)42 b Fp(The)19 b │ │ │ │ -Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output)h │ │ │ │ -(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 b Fp(means)f(the)h │ │ │ │ -Fo(InpMtx)390 490 y Fp(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h │ │ │ │ -(message)e(\014le.)307 618 y Fn(\210)42 b Fp(The)32 b │ │ │ │ -Fo(msgFile)c Fp(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ -(if)h Fo(msgFile)d Fp(is)i Fo(stdout)p Fp(,)f(then)i(the)g(message)390 │ │ │ │ -718 y(\014le)c(is)f Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ -(op)r(ened)f(with)i Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ -(y)g(output)h(data.)307 846 y Fn(\210)42 b Fp(The)27 │ │ │ │ -b Fo(inFile)e Fp(parameter)h(is)h(the)h(input)g(\014le)f(for)g(the)g │ │ │ │ -Fo(InpMtx)e Fp(ob)5 b(ject.)37 b(It)27 b(m)n(ust)h(b)r(e)f(of)g(the)h │ │ │ │ -(form)f Fo(*.inpmtxf)390 946 y Fp(or)g Fo(*.inpmtxb)p │ │ │ │ -Fp(.)33 b(The)27 b Fo(InpMtx)e Fp(ob)5 b(ject)27 b(is)g(read)g(from)g │ │ │ │ -(the)g(\014le)h(via)e(the)i Fo(InpMtx)p 2941 946 27 4 │ │ │ │ -v 29 w(readFromFile\(\))22 b Fp(metho)r(d.)307 1075 y │ │ │ │ -Fn(\210)42 b Fp(The)35 b Fo(outFile)d Fp(parameter)h(is)i(the)g(output) │ │ │ │ -g(\014le)g(for)f(the)h Fo(InpMtx)e Fp(ob)5 b(ject.)58 │ │ │ │ -b(If)35 b Fo(outFile)d Fp(is)i Fo(none)f Fp(then)j(the)390 │ │ │ │ -1174 y Fo(InpMtx)30 b Fp(ob)5 b(ject)32 b(is)g(not)h(written)f(to)g(a)g │ │ │ │ -(\014le.)51 b(Otherwise,)33 b(the)g Fo(InpMtx)p 2675 │ │ │ │ -1174 V 28 w(writeToFile\(\))27 b Fp(metho)r(d)33 b(is)f(called)390 │ │ │ │ -1274 y(to)d(write)g(the)h(ob)5 b(ject)29 b(to)g(a)g(formatted)g(\014le) │ │ │ │ -g(\(if)h Fo(outFile)d Fp(is)i(of)g(the)h(form)f Fo(*.inpmtxf)p │ │ │ │ -Fp(\),)d(or)j(a)f(binary)h(\014le)g(\(if)390 1373 y Fo(outFile)c │ │ │ │ -Fp(is)i(of)h(the)g(form)f Fo(*.inpmtxb)p Fp(\).)101 1550 │ │ │ │ -y(6.)42 b Fo(adjToGraph)d(msglvl)i(msgFile)g(inAdjacencyFile)c │ │ │ │ -(outGraphFile)i(flag)208 1680 y Fp(This)23 b(driv)n(er)g(program)e(w)n │ │ │ │ -(as)i(used)g(to)h(generate)e(a)h Fo(type)42 b(0)24 b(Graph)d │ │ │ │ -Fp(ob)5 b(ject)24 b(\(unit)g(w)n(eigh)n(t)f(v)n(ertices)g(and)g │ │ │ │ -(edges\))g(from)208 1780 y(a)k(\014le)g(that)h(con)n(tained)f(the)h │ │ │ │ -(adjacency)f(structure)g(of)h(a)f(matrix)g(in)h(the)g(follo)n(wing)e │ │ │ │ -(form.)469 1968 y Fo(nvtx)42 b(nadj)469 2068 y(offsets[nvtx+1])469 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fp(18)p 166 100 1101 │ │ │ │ +4 v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 307 390 a Fn(\210)42 b │ │ │ │ +Fp(The)19 b Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ +(of)h(output)h(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 │ │ │ │ +b Fp(means)f(the)h Fo(InpMtx)390 490 y Fp(ob)5 b(ject)28 │ │ │ │ +b(is)f(written)h(to)f(the)h(message)e(\014le.)307 618 │ │ │ │ +y Fn(\210)42 b Fp(The)32 b Fo(msgFile)c Fp(parameter)i(determines)h │ │ │ │ +(the)h(message)e(\014le)i(|)f(if)h Fo(msgFile)d Fp(is)i │ │ │ │ +Fo(stdout)p Fp(,)f(then)i(the)g(message)390 718 y(\014le)c(is)f │ │ │ │ +Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ +Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ +307 846 y Fn(\210)42 b Fp(The)27 b Fo(inFile)e Fp(parameter)h(is)h(the) │ │ │ │ +h(input)g(\014le)f(for)g(the)g Fo(InpMtx)e Fp(ob)5 b(ject.)37 │ │ │ │ +b(It)27 b(m)n(ust)h(b)r(e)f(of)g(the)h(form)f Fo(*.inpmtxf)390 │ │ │ │ +946 y Fp(or)g Fo(*.inpmtxb)p Fp(.)33 b(The)27 b Fo(InpMtx)e │ │ │ │ +Fp(ob)5 b(ject)27 b(is)g(read)g(from)g(the)g(\014le)h(via)e(the)i │ │ │ │ +Fo(InpMtx)p 2941 946 27 4 v 29 w(readFromFile\(\))22 │ │ │ │ +b Fp(metho)r(d.)307 1075 y Fn(\210)42 b Fp(The)35 b Fo(outFile)d │ │ │ │ +Fp(parameter)h(is)i(the)g(output)g(\014le)g(for)f(the)h │ │ │ │ +Fo(InpMtx)e Fp(ob)5 b(ject.)58 b(If)35 b Fo(outFile)d │ │ │ │ +Fp(is)i Fo(none)f Fp(then)j(the)390 1174 y Fo(InpMtx)30 │ │ │ │ +b Fp(ob)5 b(ject)32 b(is)g(not)h(written)f(to)g(a)g(\014le.)51 │ │ │ │ +b(Otherwise,)33 b(the)g Fo(InpMtx)p 2675 1174 V 28 w(writeToFile\(\))27 │ │ │ │ +b Fp(metho)r(d)33 b(is)f(called)390 1274 y(to)d(write)g(the)h(ob)5 │ │ │ │ +b(ject)29 b(to)g(a)g(formatted)g(\014le)g(\(if)h Fo(outFile)d │ │ │ │ +Fp(is)i(of)g(the)h(form)f Fo(*.inpmtxf)p Fp(\),)d(or)j(a)f(binary)h │ │ │ │ +(\014le)g(\(if)390 1373 y Fo(outFile)c Fp(is)i(of)h(the)g(form)f │ │ │ │ +Fo(*.inpmtxb)p Fp(\).)101 1550 y(6.)42 b Fo(adjToGraph)d(msglvl)i │ │ │ │ +(msgFile)g(inAdjacencyFile)c(outGraphFile)i(flag)208 │ │ │ │ +1680 y Fp(This)23 b(driv)n(er)g(program)e(w)n(as)i(used)g(to)h │ │ │ │ +(generate)e(a)h Fo(type)42 b(0)24 b(Graph)d Fp(ob)5 b(ject)24 │ │ │ │ +b(\(unit)g(w)n(eigh)n(t)f(v)n(ertices)g(and)g(edges\))g(from)208 │ │ │ │ +1780 y(a)k(\014le)g(that)h(con)n(tained)f(the)h(adjacency)f(structure)g │ │ │ │ +(of)h(a)f(matrix)g(in)h(the)g(follo)n(wing)e(form.)469 │ │ │ │ +1968 y Fo(nvtx)42 b(nadj)469 2068 y(offsets[nvtx+1])469 │ │ │ │ 2167 y(indices[nadj])208 2356 y Fp(There)33 b(are)g Fo(nvtx)f │ │ │ │ Fp(v)n(ertices)h(in)h(the)g(graph)f(and)g(the)i(adjacency)e(v)n(ector)f │ │ │ │ (has)i Fo(nadj)e Fp(en)n(tries.)55 b(It)34 b(w)n(as)f(not)h(kno)n(wn) │ │ │ │ 208 2455 y(whether)27 b(the)h(adjacency)f(structure)h(con)n(tained)f │ │ │ │ Fo(\(v,v\))e Fp(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 2555 y(Our)k Fo(Graph)f │ │ │ │ Fp(ob)5 b(ject)31 b(is)g(symmetric)f(with)i(lo)r(ops,)f(i.e.,)h │ │ │ │ @@ -7419,19 +7432,19 @@ │ │ │ │ 5308 y Fp(This)22 b(driv)n(er)f(program)g(w)n(as)g(used)i(to)f │ │ │ │ (generate)g(a)g Fo(type)42 b(1)22 b(Graph)e Fp(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 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(19)469 390 y Fo(nvtx)42 b(nadj)469 │ │ │ │ -490 y(vwghts[nvtx])469 589 y(offsets[nvtx+1])469 689 │ │ │ │ -y(indices[nadj])208 878 y Fp(There)33 b(are)g Fo(nvtx)f │ │ │ │ +TeXDict begin 19 18 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(19)469 390 y Fo(nvtx)42 │ │ │ │ +b(nadj)469 490 y(vwghts[nvtx])469 589 y(offsets[nvtx+1])469 │ │ │ │ +689 y(indices[nadj])208 878 y Fp(There)33 b(are)g Fo(nvtx)f │ │ │ │ Fp(v)n(ertices)h(in)h(the)g(graph)f(and)g(the)i(adjacency)e(v)n(ector)f │ │ │ │ (has)i Fo(nadj)e Fp(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 │ │ │ │ Fo(\(v,v\))e Fp(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 Fo(Graph)f │ │ │ │ Fp(ob)5 b(ject)31 b(is)g(symmetric)f(with)i(lo)r(ops,)f(i.e.,)h │ │ │ │ Fo(\(u,v\))d Fp(is)i(presen)n(t)f(if)i(and)f(only)f(if)i │ │ │ │ @@ -7519,24 +7532,24 @@ │ │ │ │ Fp(is)j(the)g(\014le)g(that)h(holds)f(the)g Fo(Coords)e │ │ │ │ Fp(ob)5 b(ject)32 b(|)g(m)n(ust)g(b)r(e)h(of)f(the)h(form)e │ │ │ │ Fo(*.coordsf)e Fp(or)390 5278 y Fo(*.coordsb)p Fp(.)307 │ │ │ │ 5407 y Fn(\210)42 b Fp(The)28 b Fo(coordType)c Fp(determines)j(the)h │ │ │ │ (co)r(ordinate)f(t)n(yp)r(e)g(for)g(the)h Fo(InpMtx)e │ │ │ │ Fp(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fp(20)p 166 100 1136 │ │ │ │ -4 v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 456 390 a Fi({)41 b Fo(1)28 b Fp(|)f(storage)f(of)i │ │ │ │ -(en)n(tries)f(b)n(y)g(ro)n(ws)456 516 y Fi({)41 b Fo(2)28 │ │ │ │ -b Fp(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(columns)456 │ │ │ │ -642 y Fi({)41 b Fo(3)28 b Fp(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(c) │ │ │ │ -n(hevrons)307 795 y Fn(\210)42 b Fp(The)28 b Fo(seed)f │ │ │ │ -Fp(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 Fp(20)p 166 100 1101 │ │ │ │ +4 v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 456 390 a Fi({)41 b Fo(1)28 │ │ │ │ +b Fp(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(ro)n(ws)456 │ │ │ │ +516 y Fi({)41 b Fo(2)28 b Fp(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g │ │ │ │ +(columns)456 642 y Fi({)41 b Fo(3)28 b Fp(|)f(storage)f(of)i(en)n │ │ │ │ +(tries)f(b)n(y)g(c)n(hevrons)307 795 y Fn(\210)42 b Fp(The)28 │ │ │ │ +b Fo(seed)f Fp(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 Fn(\210)42 b Fp(The)23 b Fo(outInpMtxFile)18 │ │ │ │ b Fp(parameter)j(is)i(the)g(output)h(\014le)f(for)f(the)h │ │ │ │ Fo(InpMtx)e Fp(ob)5 b(ject.)35 b(If)23 b Fo(outInpMtxFile)18 │ │ │ │ b Fp(is)23 b Fo(none)390 1147 y Fp(then)j(the)g Fo(InpMtx)e │ │ │ │ Fp(ob)5 b(ject)25 b(is)h(not)f(written)h(to)g(a)f(\014le.)36 │ │ │ │ b(Otherwise,)26 b(the)g Fo(InpMtx)p 2928 1147 27 4 v │ │ │ │ 29 w(writeToFile\(\))20 b Fp(metho)r(d)26 b(is)390 1246 │ │ │ │ @@ -7596,18 +7609,19 @@ │ │ │ │ 4969 y(...)556 5069 y(xnpts)42 b(ynpts)f(])i(;)208 5308 │ │ │ │ y Fp(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 Fp(matrix,)i(where)g │ │ │ │ Fo(npts)42 b(=)h(200)p Fp(,)26 b Fo(tausmall)41 b(=)i(1.e-10)25 │ │ │ │ b Fp(and)i Fo(taubig)42 b(=)h(1.e100)p Fp(.)p eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 83 100 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(21)1154 1747 y @beginspecial 47 │ │ │ │ -@llx 197 @lly 550 @urx 604 @ury 2160 @rwi 1728 @rhi @setspecial │ │ │ │ +TeXDict begin 21 20 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(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 │ │ │ │ %%DocumentProcessColors: Cyan Magenta Yellow Black │ │ │ │ @@ -8011,23 +8025,23 @@ │ │ │ │ Fo(InpMtx)c Fp(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 │ │ │ │ Fo(*.inpmtxf)d Fp(or)j Fo(*.inpmtxb)p Fp(.)68 b(The)39 │ │ │ │ b Fo(InpMtx)e Fp(ob)5 b(ject)39 b(is)h(written)f(to)g(the)h(\014le)g │ │ │ │ (via)390 5407 y(the)28 b Fo(InpMtx)p 802 5407 V 29 w(writeToFile\(\))22 │ │ │ │ b Fp(metho)r(d.)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1136 │ │ │ │ -4 v 1301 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(18,)g │ │ │ │ -(2025)p 2764 100 V 60 390 a Fp(12.)41 b Fo(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 Fp(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 │ │ │ │ -Fl(A)p Fp(,)i(a)208 723 y Fo(nrow)14 b Fg(\002)i Fo(ncol)25 │ │ │ │ -b Fp(matrix)h(using)g Fo(nitem)f Fp(input)i(en)n(tries,)f │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1101 │ │ │ │ +4 v 1265 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(No)n(v)n(em)n(b)r │ │ │ │ +(er)e(15,)h(2025)p 2800 100 V 60 390 a Fp(12.)41 b Fo(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 Fp(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 Fl(A)p Fp(,)i(a)208 723 y Fo(nrow)14 b Fg(\002)i │ │ │ │ +Fo(ncol)25 b Fp(matrix)h(using)g Fo(nitem)f Fp(input)i(en)n(tries,)f │ │ │ │ Fl(X)33 b Fp(and)26 b Fl(Y)19 b Fp(,)27 b Fo(nrow)15 │ │ │ │ b Fg(\002)h Fo(nrhs)25 b Fp(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 Fl(Y)54 b Fp(:=)34 b Fl(Y)42 b Fp(+)23 │ │ │ │ b Fl(\013AX)7 b Fp(,)37 b Fl(Y)53 b Fp(:=)35 b Fl(Y)42 │ │ │ │ b Fp(+)23 b Fl(\013A)2748 792 y Fk(T)2801 823 y Fl(X)41 │ │ │ │ b Fp(or)34 b Fl(Y)53 b Fp(:=)35 b Fl(Y)42 b Fp(+)23 b │ │ │ │ @@ -8121,49 +8135,49 @@ │ │ │ │ (the)g(matrix.)307 5274 y Fn(\210)42 b Fo(nrhs)26 b Fp(is)i(the)g(n)n │ │ │ │ (um)n(b)r(er)f(of)h(columns)f(in)h Fl(X)34 b Fp(and)27 │ │ │ │ b Fl(Y)19 b Fp(.)307 5407 y Fn(\210)42 b Fp(The)21 b │ │ │ │ Fo(seed)e Fp(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 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(23)307 390 y Fn(\210)42 b Fo(alphaReal)24 │ │ │ │ -b Fp(and)k Fo(alphaImag)c Fp(form)j(the)h Fl(\013)g Fp(scalar)e(in)i │ │ │ │ -(the)g(m)n(ultiply)-7 b(.)307 523 y Fn(\210)42 b Fo(betaReal)25 │ │ │ │ -b Fp(and)i Fo(betaImag)d Fp(form)k(the)g Fl(\014)k Fp(scalar)26 │ │ │ │ -b(in)h(the)h(m)n(ultiply)-7 b(.)60 706 y(14.)41 b Fo(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 Fp(This)18 b(driv)n(er)g(program)e(tests)j(the)g │ │ │ │ -(generalized)f(matrix-v)n(ector)e(m)n(ultiply)j(metho)r(ds.)35 │ │ │ │ -b(It)19 b(generates)e Fl(A)p Fp(,)k(a)d Fo(nrow)o Fg(\002)q │ │ │ │ -Fo(ncol)208 1038 y Fp(matrix)38 b(using)h Fo(nitem)e │ │ │ │ -Fp(input)k(en)n(tries,)g Fl(x)f Fp(and)f Fl(y)s Fp(,)j(and)d(\014lls)g │ │ │ │ -(the)h(matrices)e(with)i(random)f(n)n(um)n(b)r(ers.)71 │ │ │ │ -b(It)40 b(then)208 1137 y(computes)28 b Fl(y)g Fp(:=)c │ │ │ │ -Fl(\014)t(y)e Fp(+)d Fl(\013Ax)p Fp(,)30 b Fl(y)e Fp(:=)c │ │ │ │ -Fl(\014)t(y)e Fp(+)d Fl(\013A)1666 1107 y Fk(T)1719 1137 │ │ │ │ -y Fl(x)29 b Fp(or)f Fl(y)g Fp(:=)c Fl(\014)t(y)e Fp(+)d │ │ │ │ -Fl(\013A)2392 1107 y Fk(H)2456 1137 y Fl(x)p Fp(.)40 │ │ │ │ -b(The)29 b(program's)d(output)k(is)e(a)g(\014le)h(whic)n(h)208 │ │ │ │ -1237 y(when)e(sen)n(t)h(in)n(to)f(Matlab,)g(outputs)h(the)g(error)e(in) │ │ │ │ -i(the)g(computation.)307 1420 y Fn(\210)42 b Fp(The)19 │ │ │ │ -b Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ -(output)h(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 b Fp(means)f(the)h │ │ │ │ -Fo(InpMtx)390 1519 y Fp(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h │ │ │ │ -(message)e(\014le.)307 1652 y Fn(\210)42 b Fp(The)32 │ │ │ │ -b Fo(msgFile)c Fp(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ -(if)h Fo(msgFile)d Fp(is)i Fo(stdout)p Fp(,)f(then)i(the)g(message)390 │ │ │ │ -1752 y(\014le)c(is)f Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ -(op)r(ened)f(with)i Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ -(y)g(output)h(data.)307 1885 y Fn(\210)42 b Fo(dataType)25 │ │ │ │ -b Fp(is)i(the)h(t)n(yp)r(e)g(of)f(en)n(tries,)g Fo(0)h │ │ │ │ -Fp(for)f(real,)f Fo(1)i Fp(for)f(complex.)307 2017 y │ │ │ │ -Fn(\210)42 b Fo(symflag)25 b Fp(is)i(the)h(symmetry)g(\015ag,)e │ │ │ │ +TeXDict begin 23 22 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(23)307 390 y Fn(\210)42 │ │ │ │ +b Fo(alphaReal)24 b Fp(and)k Fo(alphaImag)c Fp(form)j(the)h │ │ │ │ +Fl(\013)g Fp(scalar)e(in)i(the)g(m)n(ultiply)-7 b(.)307 │ │ │ │ +523 y Fn(\210)42 b Fo(betaReal)25 b Fp(and)i Fo(betaImag)d │ │ │ │ +Fp(form)k(the)g Fl(\014)k Fp(scalar)26 b(in)h(the)h(m)n(ultiply)-7 │ │ │ │ +b(.)60 706 y(14.)41 b Fo(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 Fp(This)18 b(driv)n(er)g(program)e(tests)j(the)g(generalized)f │ │ │ │ +(matrix-v)n(ector)e(m)n(ultiply)j(metho)r(ds.)35 b(It)19 │ │ │ │ +b(generates)e Fl(A)p Fp(,)k(a)d Fo(nrow)o Fg(\002)q Fo(ncol)208 │ │ │ │ +1038 y Fp(matrix)38 b(using)h Fo(nitem)e Fp(input)k(en)n(tries,)g │ │ │ │ +Fl(x)f Fp(and)f Fl(y)s Fp(,)j(and)d(\014lls)g(the)h(matrices)e(with)i │ │ │ │ +(random)f(n)n(um)n(b)r(ers.)71 b(It)40 b(then)208 1137 │ │ │ │ +y(computes)28 b Fl(y)g Fp(:=)c Fl(\014)t(y)e Fp(+)d Fl(\013Ax)p │ │ │ │ +Fp(,)30 b Fl(y)e Fp(:=)c Fl(\014)t(y)e Fp(+)d Fl(\013A)1666 │ │ │ │ +1107 y Fk(T)1719 1137 y Fl(x)29 b Fp(or)f Fl(y)g Fp(:=)c │ │ │ │ +Fl(\014)t(y)e Fp(+)d Fl(\013A)2392 1107 y Fk(H)2456 1137 │ │ │ │ +y Fl(x)p Fp(.)40 b(The)29 b(program's)d(output)k(is)e(a)g(\014le)h │ │ │ │ +(whic)n(h)208 1237 y(when)e(sen)n(t)h(in)n(to)f(Matlab,)g(outputs)h │ │ │ │ +(the)g(error)e(in)i(the)g(computation.)307 1420 y Fn(\210)42 │ │ │ │ +b Fp(The)19 b Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ +(of)h(output)h(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 │ │ │ │ +b Fp(means)f(the)h Fo(InpMtx)390 1519 y Fp(ob)5 b(ject)28 │ │ │ │ +b(is)f(written)h(to)f(the)h(message)e(\014le.)307 1652 │ │ │ │ +y Fn(\210)42 b Fp(The)32 b Fo(msgFile)c Fp(parameter)i(determines)h │ │ │ │ +(the)h(message)e(\014le)i(|)f(if)h Fo(msgFile)d Fp(is)i │ │ │ │ +Fo(stdout)p Fp(,)f(then)i(the)g(message)390 1752 y(\014le)c(is)f │ │ │ │ +Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ +Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ +307 1885 y Fn(\210)42 b Fo(dataType)25 b Fp(is)i(the)h(t)n(yp)r(e)g(of) │ │ │ │ +f(en)n(tries,)g Fo(0)h Fp(for)f(real,)f Fo(1)i Fp(for)f(complex.)307 │ │ │ │ +2017 y Fn(\210)42 b Fo(symflag)25 b Fp(is)i(the)h(symmetry)g(\015ag,)e │ │ │ │ Fo(0)i Fp(for)f(symmetric,)g Fo(1)g Fp(for)g(Hermitian,)h │ │ │ │ Fo(2)f Fp(for)g(nonsymmetric.)307 2150 y Fn(\210)42 b │ │ │ │ Fo(coordType)22 b Fp(is)j(the)g(storage)e(mo)r(de)j(for)e(the)i(en)n │ │ │ │ (tries,)f Fo(1)f Fp(for)h(b)n(y)g(ro)n(ws,)f Fo(2)h Fp(for)f(b)n(y)h │ │ │ │ (columns,)g Fo(3)g Fp(for)g(b)n(y)g(c)n(hevrons.)307 │ │ │ │ 2283 y Fn(\210)42 b Fo(transpose)37 b Fp(determines)k(the)g(equation,)j │ │ │ │ Fo(0)d Fp(for)f Fl(y)48 b Fp(:=)d Fl(\014)t(y)30 b Fp(+)d │ │ │ │ @@ -8312,26 +8326,26 @@ │ │ │ │ y Fo(InpMtx)p 2261 5005 V 28 w(storageMode\(\))p Fp(,)h(5)1992 │ │ │ │ 5105 y Fo(InpMtx)p 2261 5105 V 28 w(supportNonsym\(\))p │ │ │ │ Fp(,)f(9)1992 5206 y Fo(InpMtx)p 2261 5206 V 28 w(supportNonsymH\(\))p │ │ │ │ Fp(,)g(9)1992 5307 y Fo(InpMtx)p 2261 5307 V 28 w(supportNonsymT\(\))p │ │ │ │ Fp(,)g(9)1992 5407 y Fo(InpMtx)p 2261 5407 V 28 w(supportSym\(\))p │ │ │ │ Fp(,)h(9)1908 5656 y(24)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 83 100 1136 4 v 1302 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2683 100 V 1136 w Fp(25)0 390 y Fo(InpMtx)p 269 390 27 │ │ │ │ -4 v 29 w(supportSymH\(\))p Fp(,)22 b(9)0 490 y Fo(InpMtx)p │ │ │ │ -269 490 V 29 w(sym)p 430 490 V 30 w(gmmm\(\))p Fp(,)j(11)0 │ │ │ │ -589 y Fo(InpMtx)p 269 589 V 29 w(sym)p 430 589 V 30 w(gmvm\(\))p │ │ │ │ -Fp(,)g(11)0 689 y Fo(InpMtx)p 269 689 V 29 w(sym)p 430 │ │ │ │ -689 V 30 w(mmm\(\))p Fp(,)h(10)0 789 y Fo(InpMtx)p 269 │ │ │ │ -789 V 29 w(vecids\(\))p Fp(,)e(6)0 888 y Fo(InpMtx)p │ │ │ │ -269 888 V 29 w(vector\(\))p Fp(,)g(6)0 988 y Fo(InpMtx)p │ │ │ │ -269 988 V 29 w(writeForHumanEye)o(\(\))o Fp(,)e(15)0 │ │ │ │ -1088 y Fo(InpMtx)p 269 1088 V 29 w(writeForMatlab\(\))o │ │ │ │ +TeXDict begin 25 24 bop 83 100 1101 4 v 1266 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2719 100 V 1101 w Fp(25)0 390 y Fo(InpMtx)p │ │ │ │ +269 390 27 4 v 29 w(supportSymH\(\))p Fp(,)22 b(9)0 490 │ │ │ │ +y Fo(InpMtx)p 269 490 V 29 w(sym)p 430 490 V 30 w(gmmm\(\))p │ │ │ │ +Fp(,)j(11)0 589 y Fo(InpMtx)p 269 589 V 29 w(sym)p 430 │ │ │ │ +589 V 30 w(gmvm\(\))p Fp(,)g(11)0 689 y Fo(InpMtx)p 269 │ │ │ │ +689 V 29 w(sym)p 430 689 V 30 w(mmm\(\))p Fp(,)h(10)0 │ │ │ │ +789 y Fo(InpMtx)p 269 789 V 29 w(vecids\(\))p Fp(,)e(6)0 │ │ │ │ +888 y Fo(InpMtx)p 269 888 V 29 w(vector\(\))p Fp(,)g(6)0 │ │ │ │ +988 y Fo(InpMtx)p 269 988 V 29 w(writeForHumanEye)o(\(\))o │ │ │ │ +Fp(,)e(15)0 1088 y Fo(InpMtx)p 269 1088 V 29 w(writeForMatlab\(\))o │ │ │ │ Fp(,)g(15)0 1187 y Fo(InpMtx)p 269 1187 V 29 w(writeStats\(\))p │ │ │ │ Fp(,)h(15)0 1287 y Fo(InpMtx)p 269 1287 V 29 w(writeToBinaryFil)o(e\()o │ │ │ │ (\))p Fp(,)f(15)0 1386 y Fo(InpMtx)p 269 1386 V 29 w(writeToFile\(\))p │ │ │ │ Fp(,)g(15)0 1486 y Fo(InpMtx)p 269 1486 V 29 w(writeToFormatted)o(Fi)o │ │ │ │ (le\()o(\))p Fp(,)g(15)p eop end │ │ │ │ %%Trailer │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 5 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 15 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 17 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 19 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ – 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 October 18, 2025 21 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 22 InpMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 23 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 October 18, 2025 25 │ │ │ │ │ + InpMtx : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o LinSol.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1745 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2993,23 +2993,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3183,90 +3182,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6545,33 +6553,33 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 71 /G put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ @@ -6750,198 +6758,203 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ -98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ -7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ -5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ -8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ -9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ -CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ -AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8C984FA8F1926 │ │ │ │ -1964201C49E4C82C0ECDF4896E6BABF6B0DFA6FFF1E3F2558FD1C5ADA2E9EBC4 │ │ │ │ -DA9F186FD56C1256CCBFCC77C9A783B786A3D5D0C5AC2187DD75FDD78FCB48A1 │ │ │ │ -3B2EFA314B9F0F4F4E53D48620BF2D227BE7B15D92DB6493AD6855D32BAD5643 │ │ │ │ -08B1B5E6F46C8C55D6828D8DE5818D3BB4BEF6B4403E6EEAEC8CE6B2E2F77033 │ │ │ │ -EEF6A2F39598B850897BD1249D88BC663EFDFF9A72C364D0FC44D1EA87951645 │ │ │ │ -4BEE78F0D0911D02BD4C03634D19DF18D881569ED8BA1B595DB17505ACE28573 │ │ │ │ -B71E84F6DCDF79ED0DC42644951F34FF8D52AFD77B32E0D585B720AF48DEB000 │ │ │ │ -97759076768A4B3847F9FE6498A5AB9AFF8DA200858C16BC905E2365D5AC34A8 │ │ │ │ -3899DBC7D2E0FA90553D3E71D6C7993637A309F2DE2888882DB9F7855D34FDD8 │ │ │ │ -230D01AC3DFE4D174DFF9EDAAEC7482082BD18B8780FBEADEAABE6A6FBD131E1 │ │ │ │ -69F23F9157516413F06B9EE1EC9D16C577546CB89D74F4082D857D928B1C8993 │ │ │ │ -5A4B8E3BD91C3A0B54840C9308FF33B1DA788213D6746514014A52CC2B3C504E │ │ │ │ -EDC311E76DEE25635B5F9D71FA0F27AD138D2F374AF459B835EC29FD26F1CDF3 │ │ │ │ -00CDE58E3A577742D9CCE1BD121CC033967A96D14DE9F26B3E01D6EC1ADB3F3E │ │ │ │ -DC5FA135472889403466BAE63848F3FB96315A3FE24C9198F74FEAA924105F23 │ │ │ │ -F75C2C0CB9B339872FF8EC86142053A542922011C7FC8FB56DC5BD30C0345462 │ │ │ │ -02FAB6F8645999E1A26A44BC47CC497DD8C0568FB66B079A05121D2EFD16F256 │ │ │ │ -7BC50B1A758C21A8968F14AE85B5D489CE17809DC955D474A7B53BF081FB2DA0 │ │ │ │ -15DA74735068AFF0BD3261F39745D09695A2926BCA7B7C3F049E8989D086FD41 │ │ │ │ -10A2D090C35F6A66278E570A8E82F48CB9F89B906FFE5C582529B986762B40F7 │ │ │ │ -5168A92E2D607B357A0C0A8C1404CA43C342F2089F4A933AFEE7423268EEE8FD │ │ │ │ -E4529160733E86012749D3F893FB08D2930D572451427A92889A613485AB1947 │ │ │ │ -D48350C67095F2385F7D55488A5F35BC515A3404E0BFC642385C6EAB69E3D7C1 │ │ │ │ -BE6C5AF22CD4F3D97C82A3F8F3A7B9996D1660E0C08A65D4F07ADA13663343A2 │ │ │ │ -54826E1C60CAAE01F299185C92EBC8DE482068E462C46E52845A570571CFC78B │ │ │ │ -345183BF72765F4E6A0AEB2C3DDAB259B6B5F514AB22AD4DF989ABFBAB6F0ED2 │ │ │ │ -DC9C03C55979B733475CD2B295F8DD99208816FF226DCD8FECAC34E2D9CA04D6 │ │ │ │ -23AE8524FAA96FB05EB4433EB82783AE6055DC8FEA32E5707ED2FD6E6A8FB668 │ │ │ │ -1BD0FF19BEFADD63F0D0A638C2829F5AD7D28C74C960451A1E9871057A796832 │ │ │ │ -5637EE91244838210A6B1A436335627FE456DFA6C4B93AEBE7F5B3C2723D5E6F │ │ │ │ -BECB93F86635E04383FCC871AF08E7CD7BC2C37262861D05FCFC234F2FEF93C4 │ │ │ │ -D659641ED15AF8FC09B2CF4C3499846907178430EE21893F9F38962111F3F130 │ │ │ │ -248CF9B48E933C5CFF91BE4770CB6B718F8DF4F505B4B51C033DD47943999613 │ │ │ │ -A4CF8789BEE31BFA53C68109D5F9B27074B36096DF3D6EFB46D897B8E20A6EBE │ │ │ │ -50DE014438E5A017CA81C8EC4B52FF79C9588801EBA69FC9943CE5896968C914 │ │ │ │ -A0AAEFAE3F3833E576F0F23DA3B3C3D41AE00988EE40219F2E0B9364A8344AD4 │ │ │ │ -21BFA6AA76ADA9E3262DC90A4362F4F03A2431E9679714F747387CE80C6AFC03 │ │ │ │ -DAA9195B6C282CD2B7284B3E66D9D62687E4F9F2E8267595BBDA15D61E1EC29E │ │ │ │ -A91666935F46D215A6F26FA22AD017348401D96C4746EBF0AC1C07157AFA3BE4 │ │ │ │ -7B17427CDDFB35C55B5FB164C647CC072E2368E79E89C1EA1622D530C1514E9B │ │ │ │ -0C42B885981FD4153ABE5DA4E93AD917347A88A544FCDB95BF42BB59E90FAF93 │ │ │ │ -7613D90F57522EA9DCD909DB0EF8B36BC387BE4F30BE45A6F86FA4ED3D2B1599 │ │ │ │ -8DC8FEB7D6B57D7F85B4352F48BD77FE56DB187FCB152C350377EB086A9CCEA0 │ │ │ │ -273B3809206979D875A6E4E0348D664B0A0EA3536DA94287BB6D17D255C0E995 │ │ │ │ -13B17F0EDBC18A920492AE8C9879CFA65D694A28FC3755A2EC7A8184F9B477DA │ │ │ │ -14D6EF3CE3371265B5A16BC56BF74942072B0E99085DF0F827D794588AF62171 │ │ │ │ -9E13734DF45C018F09C722B00404D43FDF7533B234317B296C9C729B8D5E3134 │ │ │ │ -3E411C9B8CBACFBD4EB450FBF49812D6D8D786387C15C9D572CFC762E8C679C7 │ │ │ │ -9E5FAE236799B67FE52FE09293414FDFCD10ED460E6BEBAB4BAEDBEFB739EBA2 │ │ │ │ -B410AFB5CC071954876AED0BF9A6438F2B3D612C5D66B607DC624F09F44BA890 │ │ │ │ -9223ABD9972707A28C08615DA3C1CB4FF4BB8CC5D9B87FB78A6C0E56C3B91F12 │ │ │ │ -3D54561245934CBCFA625FF538045C6621883BDDA7C22A91B4185548B1E7E64B │ │ │ │ -25DB4D92FD250C58E001A64A5FC9D5A8EF90DEECE1D874739F891AD5D0451195 │ │ │ │ -26B2C3D2943063EFD0EBC2441CDCC68D9DD6548235A458C18752AC5947F8B9D4 │ │ │ │ -753CE4497D2E40599CEC2C35621946997C8494F4B9479A1752CA0B0B00D4F93B │ │ │ │ -EE9A067C2DEC56DA7E2A681659F5CD2BF401D50B9E6BACD5C3971DBF7E6240A0 │ │ │ │ -4D1C16C2ADBDE2D51CDB61394031D0B88620A902A10E5B8F76AE71525D87DDC8 │ │ │ │ -BD3DE9211DC5C74C392362A3EEE44E2ADFEB1EE5FD6739C71A4FD242A5D5C9B2 │ │ │ │ -24FF4FA7BA1DB1FBD0B5E61F24A0B6FC9145DD2D30DD0B30CD8BB4CCCDA98E35 │ │ │ │ -EA466726316DBBB28FFA01829DE83D296A353BA9C6CB47E3C26DB3C15C4F3E63 │ │ │ │ -048F8549A642287BE733DE5B698773C6D268D891515816F305001A0BF8D107B2 │ │ │ │ -797D6815335D66C1E4B0222411F155293961E2F5E05866718C3074271062D723 │ │ │ │ -7279513D10ECC29704E9A694C93F4018707A5132016BB3BDCA7B311F1DB8EA32 │ │ │ │ -EB22BD569A223A870EA39A37B63B7EE8AD1A53A67B235BEA0EBD1EDA70CED58E │ │ │ │ -A92C8AFCB20939509D542A8E7C650D2F216C5365517A9948F62E4DCC7942E580 │ │ │ │ -0A9742D98894626432E1E5926CDCD22D38490A3B2CBF4A7221C365DF5DF2964C │ │ │ │ -9B75B4154DC32E8E3A23086806F8C026963134B85BD690259A77B06A24564459 │ │ │ │ -AD4BDF8277BFF05AD73ABDF0A16615278FE07EE2BA5718F2FDCF2B75AC0ED484 │ │ │ │ -A3AA1DF9BA6DE8A7928F1A3CDA83B4A180C8330F2ED6A68CB8AAB39CAFE4F954 │ │ │ │ -344C554737AD7D5994E9A957A53BAACB080FA97C9F5B2596F74BBD5EE10D7230 │ │ │ │ -3A63C9C57A91A72EF9626B53B842862125BBBCAB09AAAC267E9ABDCD3516D9DE │ │ │ │ -EDEB0E7BD7387F496742637BA8B4BE4197AED5819D5CD3707C3F87477C7C4BBA │ │ │ │ -C25B9BF6A0AA52B2AF3269052634E762E0198B10AFC3A291CC263B4D3AFEF197 │ │ │ │ -9F29814E0D16C5045887016952D261E37C00B4EB74C141E46AB7A44EBA30C2C0 │ │ │ │ -E3C58C5B3A8D89BA00008677D625E9115A554730CF61A74F7F587653E2D22116 │ │ │ │ -050707BB20CB06E9E2388CD59936929F2A3A921426FFAC12AB05E9A2A4432B7B │ │ │ │ -B620D362AB2E8559705EFC5950A2E831F1D7D23ED1FCA2A1C32805E1F93C1461 │ │ │ │ -750A49D3C535220410D5A96BB1CDE4EF2B39628FED708D6DB6D18538B35E1A8B │ │ │ │ -F9ED0598871E3CF2FFB82AF2623BF045D0E812484FE8BBF1001AD9972A397471 │ │ │ │ -D5E02B1A710CB83AC57AB387D2518891ECF1717AB8CD2DE3E664F01B73D0361B │ │ │ │ -7F24E3784861710EFFF34CD1FD1BE8E75EB259114DC81E87101F875574E27232 │ │ │ │ -B608A1F9E2D44FAED3CA557EB3AD751260B621A67F0C79C07D6BF179FAF2B379 │ │ │ │ -8BA54FD8071A682FC68023EA58D37C277F6C17372A53B054FA33CD568A49556F │ │ │ │ -F1871A242CDFB3281222208BF11EF08D0737A26ECA16581432B7E5CB35D55B82 │ │ │ │ -FDE30A05A4259B90A8138541A9B9C63EB312007D2C3B8A1EEF0B6AE16268C131 │ │ │ │ -B8DF6418343D14DAF61115D2D22AE3D16DD726F0D37E29978398C783C7486C57 │ │ │ │ -E52DD412FBC3E4515A267028E94BC7C72F1C0241561CD19DFEC7A74D0E6AFF7A │ │ │ │ -87C9483D2E3AF27760CE819F83D87980E80E5F7658B9C2734AF2DDE1BED81E27 │ │ │ │ -3EA261529667581511F7851B543F390F8C5717094F11F3BA98F07CCD83E94360 │ │ │ │ -3C848F59641CF1BE1A0DBEBC4E706E9BF6902E9D89BA2067C7D272C03F37CEF9 │ │ │ │ -4FA424D5472F127798799DE42884F16ED1A34E86D5B1BAF135653B078A2EA12B │ │ │ │ -1B83B4989A60D22FB987C96C6B9DE29F5A9C1E78F54816D4D55A616D5A7DEB35 │ │ │ │ -FA28D8EF2E2EAF106B7CA9058F97718C3A687BE2FEC66094C48931BE6C2EBAB6 │ │ │ │ -C0AED10ED329FD1E5B93D5046629E5BDA89A645DC78805240A67919B88BA67E9 │ │ │ │ -51476A2524804613C20B23BA1F2D87588C5835759A1CD3F69A70793D051F5DDD │ │ │ │ -5FCCE09F8AEECBA1CEFD3CC7DA1E85C63F58907AA0F2C10471C4108138514C65 │ │ │ │ -5954E80C27985129F7333ED609DE1F36F57660F572CE77E7EC6889D3856C14CD │ │ │ │ -650712DF806A0D4B881E721C279E13685957C67D1AC32E9FEDE1AF1EAD0B80D5 │ │ │ │ -08F25F764D5A5948BA3E4BBD11FC62957DF2DF041B9C52065ED9868B78A9F8D1 │ │ │ │ -A7D248B93DF1E197D692971421D3800B97E2B03AB49B1DA0F4E080BCC6DDF63D │ │ │ │ -17B8AC8E1CA4F352F9015C0688BD5639A97A9BED90F6A3EB93E589B49051E2AF │ │ │ │ -82D0DD8D9675EBEC23DC8DF4F605F2E0F7A5A3622789656A5919681E20CA2824 │ │ │ │ -09D2AC81030F1A613E9B1A92CBD81BFD16D9BBDE72A0794DDA5098069F2AE428 │ │ │ │ -B565AFC3CF26AD8E6E7A8B0F349FD9A2B16779385B70E2AF077607C1675D78CA │ │ │ │ -DFEA384D747C17EBBF1D40508C3C58171A3AD22D501699EB5ADADF1992A121F3 │ │ │ │ -A6D5AF2DBD8AB5ACB77AE6BA1CFD08FBFEDF6985550522D71343CDB942649A9D │ │ │ │ -24BF4C073649206FC408AE1A6FD1111E3947EB2E2F71C41C268091F5436431B8 │ │ │ │ -C0D22BCBC06B041512D3B11483677B9B3EBE82E826C2CD3CB42D3CB8358B366E │ │ │ │ -1B308A4B501400DD7A95E2033D00676A9CB792BE6CE6EC0B0B69A0CE57F5C26C │ │ │ │ -71F7C74C2618159EAF173E3A342AAB47B49773343514C5CA17D2CC3F008215B3 │ │ │ │ -08C753560E7517BCFE5D1B87B352D48D91E84E51A16B45EF29994A3ED09F9C5C │ │ │ │ -7CACB7670DF14056B0D33D98D4D635DD2B5F997D434FDFF35293E740AE43E01F │ │ │ │ -DC65017525C79A73E261E751C7A4FEFBD96B03ED10CDE44538376F3F6D490BDB │ │ │ │ -47C604F256F9DB2FF067F080357D987B5BD01FF33F0BC1B43D473833EBFB82E4 │ │ │ │ -4AD24111453A61E948763E73B702E25CB2C01A1505C587B38FB69E46BBB3CA0E │ │ │ │ -8516201F7E2A4D4B5207A95F6C3AE4052342F88B54AF2F51610CA818CA5D2DA8 │ │ │ │ -E9BA4B3210A9CFF9A8B67BCC6584A31AB07F4583C8E7559D4E74A30A1BE80DEC │ │ │ │ -52EF16A865AA4AB60F4C38945A4D9E558915ED5E6C8D474F91247338F905E171 │ │ │ │ -71DD3E1ADAFB4D55C66456D5781624761FE6677D01BB063647F6E178A34F7823 │ │ │ │ -8E66DDC768AFD0C87182CA87E35D5C67107CEA8756FAA7AC4AF291030CD3636A │ │ │ │ -4877BB8D4A62EA476CFB36642256C2B68FC3E8E181A4326E1CA7AF17737C2DCC │ │ │ │ -1CCC7298E2D0A9D1846855B1735DD6FB9F2FB5828C38A715280D62DC57F3E8CD │ │ │ │ -4AF175486A3899F04440F6B4C597AD7B6333E0214DBDD1E85F4CFA5F1C190B06 │ │ │ │ -98E3833A056B6F0C27462BD856B7353B6A41D9C7AB9E7E6738B39C400383881E │ │ │ │ -5ED0F7F123599E3A6048D9CA4D75864C7FE9FC292C7F367BED3646644441E5C5 │ │ │ │ -1778622E04255777D24C2BAF59C44019C5625B6AFD21E05E1F8B773D1EF1BC62 │ │ │ │ -922FB0DFCBC7302D3A764B665B8E52D2F4D271763E02F402D91CB3F41A3F7F3D │ │ │ │ -31BFA0079CAC826F8277E1C017E33650E24F951C792C9A67222B479104C1CD08 │ │ │ │ -FC4A20A89C4F42DAC3A9B2D2424EEB8F26D0FE1104842F1DF91B0B1AF0B2A308 │ │ │ │ -48EF2649F43E78A3F4FC7632D206DE4E6CB73B60083EA656CB1DD59BB774B6D6 │ │ │ │ -D215D651C9920A0622CF3065336F72A315BE7DB4CED6F3FE6A2262BFB1FF90CE │ │ │ │ -C3624FA7126FCBF68C4083EB04605C8E59F102F2181DC218C45266697FBE14C6 │ │ │ │ -960905CFBE28E8CCBC459908184C907206FA5855C6B2DB13815A5439980E6819 │ │ │ │ -4495927CDEE1C43F03804FE02EB93AA2DCC6451AA88C9A30C21BEF1857788137 │ │ │ │ -742553E9EA3115B3FCA1DE5E50ABCD68B348710E0703837669F5BD8A9E08B72F │ │ │ │ -1B41910032EE69B33C3B1BFD2C4AA0984336AADADD95AAED39D3C993976D5929 │ │ │ │ -DA195BA76E81F4D47BC094C6D1E9C7B006680C90F3473ACE92CE703CBB921F3E │ │ │ │ -51F04CBECEEBC0C293A8D3F562CBA90D932097E1D8B10AE9E12EC8B38AB405A8 │ │ │ │ -4D13C20B342BBF5DB5F2BD66726A54E056105D07C2056EE101D89A6FC18A4F9B │ │ │ │ -A0DAF6889872E7CC3BE73169009C7D6EF683F23B7EE09C9D21C681454F191489 │ │ │ │ -C80338740FB9AAF28B49C10B79A4FBB36DC02DE6ABF3785DB915C234C6D18608 │ │ │ │ -7499185EBC749D49C522BB6EAA402B42C0AC3A56E6395E4C929172EBCB540C87 │ │ │ │ -738B4CEE6CB9A0BE7A4850351B3CBF6C72B7CEF59069CFDD34AF8A58E0E4163D │ │ │ │ -189589C6E0B6F00C4A661856BE3480A6DF190120796804489390254921076EDE │ │ │ │ -151CA0569F9B67E10217BECD741475AE26EEDFB30D0041DC7570625B88896A00 │ │ │ │ -509D252D72549A776A4AD75E924789EC3E435E98B4A0C15EB8338DD8FF02DBC8 │ │ │ │ -847C311699B1589B3CEF5E30F773C6BBDA0D2D0EB652F420BBEE88F286B92C05 │ │ │ │ -6C4261382D236D7001758BD12AC9124B7D46445D719191D9A43B1C589F127ED3 │ │ │ │ -D04709E7950AE0D1FB4038937BC302462023D6058A5BE131ABF766D2A6FD532D │ │ │ │ -A8DBAD9D5216496DADA019148BFBE052E2961195F6E628B27C611F59C75FD686 │ │ │ │ -DDE2A153D5AA15DD041BD488486113C7573E3DB9EE614074A3940015BA6EA324 │ │ │ │ -E5D733E5F8AEEDAF125841CD0C2383A08F3AA6EC1A6065AB9F04FF4E36BD83E0 │ │ │ │ -3C364E7E3F80A8ABB4FE26BB9DB16BE3E8BADFF07B3403E6713E87B283821779 │ │ │ │ -F827A232A8850B1DAD4CF2F33CDA0244DABD7263D62A2AF951DBC41575081A56 │ │ │ │ -08C31A896D8A82656036C65400CE024820F21A474C2BD13FFE1A203D156F2047 │ │ │ │ -96D1AF3542538EFEFE3924703466A95706CD78734469EB72FE5B8962AE9CCAAD │ │ │ │ -3330408D53ECDCB6E34199F2F0C05797856B53FBD526061CD770EC6B0853948E │ │ │ │ -DCDF72D38F8FB4D7CEB849C4C01DE710AA91477C4B39EF75AA0F0B853DF1116A │ │ │ │ -BF2DEDF0A69EE8488A2380483B74EDA9B484164A097E4EDAC099D7DD275F9FEB │ │ │ │ -FB78D5C3354C175115E16D9DD5817BFBF125A96396C6EA04EB40EC4E8740EC10 │ │ │ │ -2167B7C807A1A6A637A9BEBDAC1870282257473E9C895162A957B7D4E4659109 │ │ │ │ -FD867797A03D51B09AFC020955DC2961B2880FCBE3E4F78BB902DE853F599E29 │ │ │ │ -F95EAC071815A06C2273625245134FAD58C50D160A23EE42AAB0E836035205F9 │ │ │ │ -E44D43DBC64F8955C2F60533715AA8499D721AC9CE44B7E0E7165ECDDB1B52B8 │ │ │ │ -E56F42E259DD3A16C20DFB1DEAA51BB6F8349F9307C6A0F252B42F9A01B71EC1 │ │ │ │ -9B83B6DF3A0FE2A76F2873A2BFE559B1A119EE80840DACA7FCB0B78F70ED7A40 │ │ │ │ -3462AC9E09971B0F7DF04A58F750AE54D7C6E7680AA223DAF8D1C34964E4432E │ │ │ │ -961C4F718E1E35D59AEF8EE29605A0052D1F154EE9DD2ABCBBFE56186A4B2822 │ │ │ │ -450BC76438750B829D017C4E05138E6376946E8FA699468CC30AF6DD217982A8 │ │ │ │ -E42427B084B71CBC75E0106F5F94BD6038DFAD8F56A0EC55AC79FE9D1B8FAF05 │ │ │ │ -1A89A312C822B0846BE0025797AD21A543401F717F02BA980C48670351C3BFBC │ │ │ │ -DC68EAA00261552340CAD079C241F2A11316DCD7E19D5512931295F6FD21666E │ │ │ │ -FB702542E71C7A59504D741984C2FF6D77B3F9DA119238020D0C5343EB796AFB │ │ │ │ -7BEB2428F3533E1CA1093FBA29D928A2FAB2226347E83421EEBF6B1FB8434A8A │ │ │ │ -D9048AEB9C00EA015FFE7544728ED2669974B6833337144B2881B30FB26BAD5C │ │ │ │ -DB │ │ │ │ +BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ +7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ +2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ +54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ +2F3AD7547BA1B44C698428BA878986BAD1DA8368E8F5B3774FCBE3C72540A92C │ │ │ │ +7BA6298D386975A4FE6B5612A807D5C03EE4582DBD9DD9BF6A01C6C70A9A765A │ │ │ │ +38D20AB1B02DA94DEF94BF1A2CD76923DACC5566750775CD474EAA165C02262F │ │ │ │ +2A896898A8F67CBCBCE53648ABE9CC1CAC420AAD2B48D9054F2A27FDA27BF115 │ │ │ │ +23732B2C0353E3035E724B186BBDB27C03905EF40F67F69E3F63A93FBEBCA436 │ │ │ │ +7803AEC143D8163B0686A713DDA163148F362FA5348389E0F834ABD204D14CB7 │ │ │ │ +AB6DFBFF780676E89ED96284B58545408904AD53098EE76659405336A5207814 │ │ │ │ +3FC60F431CFAB56AE03ED36E18D5B577B68431D905734282B590DB1CC6353A26 │ │ │ │ +58BE5C97A55E92ADDCD8D653EB41C38D55CE9E13F294A872DDEC30183118927E │ │ │ │ +5A666B87BFF4B6C1FC47420CF7F5F09CD664C837EB47F8ABB08D781F54ABB8BC │ │ │ │ +3DB89F3DD85939EC795AE70B3FD0841E79C6A9291688C40D6EDAF8C3562541DA │ │ │ │ +77D93BB4A7F4A8A9AC2937BB52FB92ED00568E59303B7A7977B4072E84E7EDA0 │ │ │ │ +AE8C199A9F9B243C57388C0D51A21B1B7B1F9B0994749F1C5A5F330F4B1D4E16 │ │ │ │ +BD58DD423CFE6CABAC756A9C0525F72745F77C4E981B4B46A769C5C497C79E39 │ │ │ │ +347AFC48FE4F89D25EAD7F8BAB714D2CD4676B51C3F6162DECB3470DF8F57831 │ │ │ │ +000EBC4CDF111B0E1AD72837BD7652E657C0204E119D3AC89284EFB3704BCD33 │ │ │ │ +00E7B2ECD9F2795B1D9F0C1DBE655F2C133B211C5664D78EA5B79DEE550D2449 │ │ │ │ +3448F8DCA52684207FFA56E5948AB984769A02C4286A117443A109D58D99AE71 │ │ │ │ +31593442B7301CE5AD314018CAF5D33B950491C9E8AC07A2D617C637C70FF6EF │ │ │ │ +6CA2A85349409CD07DC24A5E1E53FAC3E8D00D96F7989A5FFB86A90B64451D3E │ │ │ │ +147F932B0971F3FFA787E44794E41278DD820C18187FC0065E4E4FF7AF88FC6B │ │ │ │ +B80E40D6469257292D451780E1AF1FCB4E3B021E369CE871D472AAD77660F801 │ │ │ │ +79E05C0568BAAFD0A75C2AED5472A1567250AEC9F92D4A9DD160F74511858249 │ │ │ │ +D85EFDA50DA23C425AFCB18C29D3970D718C2EB65A98A79ABAF28389EFD3D3C6 │ │ │ │ +066F2373C4B9E2922CBE398509B53C82244C9E8E5CDCF9CC73F75FC7CD0C9B48 │ │ │ │ +881DA40CBD0EAB310FCD0471FE4E80EF896E9AC268558AD0BCA871A26EDA0DA6 │ │ │ │ +1B32A51C9E30D11595978F0C55A1F0B75E6A1F6417F2752C4455CD6DFEBEF7AF │ │ │ │ +8C870F3BD4DED75E634378E90215B383D797F8D5634BFF7A34CD1FB5C598A033 │ │ │ │ +B11F16F8E63A433D1E0A2F895AC5AF4DC5AFBD78FBB97DD9FB792123FDD98BE7 │ │ │ │ +15B60E31BDA2A5457D381279417F40AEAAD1D1BDB12389B6454C63C649E7B27D │ │ │ │ +E5AA4E9543A563895C19BE7AFC66E3E0B0D566DC9257E67760829CCC4B9597AD │ │ │ │ +FCD335CDC7DF73AAC1EB0D4CB71E0882DDB5F58531BC69513BFB23C8C856BF18 │ │ │ │ +8D504E15F53C4D06ED1DDC98E280A2C3B862ED39A7322F140C9589B90B5A09B8 │ │ │ │ +1425DB58FEB95A5C6F86B05571E4464E35DAD18401FB04A198ED56C11EECF354 │ │ │ │ +AA2B1DA15D0D6EF7ED1DB3080CAC36BD4BA70046DDF935D1194C0B0761CC2FCF │ │ │ │ +BD41A7468BE2B958A1ED91AA90735B82EAE4AEDA59FA27B9E81B68126D401FCF │ │ │ │ +A544E121D8079D3F5FC8C7A68D730F0D99068A5E1AA8A8DC0EC1ACD55FD5EA9C │ │ │ │ +514BF9FBA3A85410C13508FC45F3AB55A17BBEBB8D76F193A44994C84B1B3BCC │ │ │ │ +006101E22314AB9C3D6719EB777877B22A25AEB3C40B308CF03F6DE3547EFAD9 │ │ │ │ +9C32C65DC4B2ED6D837D44A33EA0071A3C5A1925A75731D1C118307DA4F7A0B5 │ │ │ │ +C75B0310C595BDE8CC13EBA52F6B2AB2FDF880729E213FAA8375C9F7BA07A255 │ │ │ │ +D1487E8453E90C0B75417CE1D4BD42F9EBC6E20CCC7DE4FBFC3849183999870B │ │ │ │ +034F19BDC1797EB8CFBFFF8CF00866643B2AB75FC46CB2993133F52524C61F32 │ │ │ │ +2A53435591DB619E90A6F8F8975A0D47A0353D154B0970F8AC51D61BD6977F15 │ │ │ │ +36AA9B4475D90497B3D9F45373605BECB1EA94131BFE729175E002918CEADEA1 │ │ │ │ +E2F5C88E80F103E15DCEC63306B26B31BC598D5FBC4EDD92EF41D35C5E8EF8E2 │ │ │ │ +0ECBB99E524CB9A45FAD9673B4A20157F29CB4F1FFB88CDF02859E6003549725 │ │ │ │ +71AA45754B521C0EAAB3B443CADAE3A7817E1E978B564E7C5DDF4D51C34F3146 │ │ │ │ +4EB8547C989638A37897AA7622CC81249EE83F48695055E1AC2E760571421694 │ │ │ │ +6ADF9B5DBB949FD2D8497CDFD699EA61FB680BDC6DAB4AF61E8C45035E9CC8A9 │ │ │ │ +A4ECCD57703BA9A8EDB83B088C4DD4E1E17D4F2E0213FA4C27A509ADE83D3DD1 │ │ │ │ +CD5FDC86FD7D077EBD241AB6117B1C1D96896119609BD41577A05670B6E208B7 │ │ │ │ +53087A0FFD1151D615689E6684B7540BD2B89157DDD6C7F7C7244C5C8002E32E │ │ │ │ +F6CB02E78133011DB35634775119E5A33D80DF0087912A96EBA458227E63753B │ │ │ │ +518B201B6ECB603FB0A647B93BCE22DB6A710F0582F12133FF0C98A08ADEB2B5 │ │ │ │ +1FD97C2AC01C54A561B20F1AE7AB3CF20CDB61BCFF823A1739A9C9E1EAC82793 │ │ │ │ +465C84CDC8A5223B5C06A7E1974F74B2A4DCFC3E525C361CE2C41A319508C6F5 │ │ │ │ +992FEBF3904532A61E8605DA42DBA04D91BEC9B25367B6425976DA0CD4AFCD0C │ │ │ │ +145FEAC0C8739869432A35A366F1CD8D207989A84569D02F9B9DB9CE6E5F0110 │ │ │ │ +417A9D721F4969796C4BC227C85BCBBDEE1D520881F5476409A3AC188E09856A │ │ │ │ +E591F5BC3624493ED50AB68AB53131E21B6D47CE5A030441C130D424FE017B1C │ │ │ │ +76355F2A85B284E044A9C432C03048DA2BCAD12E4F32898A38516076EBE576D3 │ │ │ │ +FF054605542F54E1AEAFA5920A65B4E03EDE98FA81271DC7EBE6A47CEF085B55 │ │ │ │ +1D4CAEDB48752C7EB40EC91CBAEA38770DC4A80D19FEBED224FA5D6BC53C7507 │ │ │ │ +1C901947EDE6D28D6FBA371227C5AE01AD1D0DE1167D030B4E630431A2EE2C2C │ │ │ │ +DDAFEF97455DFCFBF41C1E0C214657A83C4923B3178B56E9EE6B60CE335A0418 │ │ │ │ +1377FEDC073B60EF16FEF7D1F7D6DA601AC275B7266EF16961476EA26BE353ED │ │ │ │ +5213DB81E93D57ADA5F61E5D2FCDEDCFFFD7B99987CF9D12A3D2003886E3AF11 │ │ │ │ +833F4EDC3D5D0D32B96D86BF7948CD22339B1F747F1354E70ED4F22AC80F77BD │ │ │ │ +5D55D0DC2CA2C883051514ACE8FE00003795F8BFB2075171BB66FEB53AFB086D │ │ │ │ +D2D79EC5206E8462DED389737E97F606E8DFF591AF4AF293BA386A615C771F5F │ │ │ │ +FC3641EDA80F4A73C627F02325C39991AF3077BB4E6D63E4C07B3300A8062AB5 │ │ │ │ +903EE5FA64E3DA390C72112021D380801FBF573BD14D684A201A3CDF30C34CD5 │ │ │ │ +6F347D1FD40093B2DCA8914AEEBD1171C96511087F40D16DE699907B2EEE2986 │ │ │ │ +568F6D26E25D404DF12CE9B92FA63DD11479583B161943E3B5B4A1F1B92104BA │ │ │ │ +8A53E97F5083749BA6F32D71F34DE70DF3755463C33337D66B45B0C064E4B276 │ │ │ │ +20A3380C564FFC08F5DE085A0A2325CB996D09E3E2C3D10680A5B770876F9622 │ │ │ │ +DA64D4D4E7A73A7D197620B2B160D237FC5B7B848F565175E5F0676FBB80CC22 │ │ │ │ +CF3E11D1C1EF28F8BA781E6DFB443AA4C13FB516872BF98CB6075104DA7D14C6 │ │ │ │ +DC1BF5DF46C35E6CEA097A806A094E7F2BB7C1A03C3C097CC2CC2C7E5DB8EEDE │ │ │ │ +7E4A8797A6BD1EB4D9653DB501DE7514A78ED0B403706ACC09B5CCC93EB0DB53 │ │ │ │ +570D7193F9C33827BFC84BE12F988175F522F5CDA918A2BC9EC8106E03B921D3 │ │ │ │ +A5A842A6AF059D2A669C224643E0031FAE99D52A00F9BFDE8F62348004911CD9 │ │ │ │ +B734F13B5D485019D8A06D0A47F4A69D295FB50FA859FF46EF8ADE19C286B83A │ │ │ │ +E7581B6C3508B2A00FA38C12980818E272A0929A2D5BA37C82737ACAAEE4FD36 │ │ │ │ +700A25C85409EE49A9515EBFB83AB63819BF6541E7924E438E7F89FF51AE9792 │ │ │ │ +D4C37E4006D32973B50021AFD70F660527ECB163582C22B92A87094396B439AE │ │ │ │ +E9A44B5D83DC76C309D5BF0CB3F9536F573AE6553CA0A5F01B8D4C312EAC90D6 │ │ │ │ +C4ABA867BA669686253489DC0E8D2B4AF0C577151706C2576DB7366C3496036B │ │ │ │ +609C2DD99BE5835B12D266508AB5353B6428AB11AADBB70EBE2E88E0CC3F288B │ │ │ │ +B9DC92474742DEFAB14EE952AC44290E0CAD0B5643A2AD2CEEB2970AFF294A8F │ │ │ │ +46DF1A126C3E94D60F6385A4A2E75CF6336A4BD394F32345D0AE309EB630B171 │ │ │ │ +AB06BFE6FF17D72C6AED79DE31E7028A26CCF60AC9AC7A27D62D6DE74D3B806D │ │ │ │ +3D588A86103F792E6B6776D8D1394A840EDBDDF6F74E53AB1359D5C64CD8FCC7 │ │ │ │ +60BE7E12D15E05FB83958C19FE47FF8C5EBDD05A9362D9779FDFCD9F705E5A1E │ │ │ │ +0BFFDB8F524D2734D2256F4645A95D0AD5C4A5F6CC0492087404E598CC0E3030 │ │ │ │ +628039F7BA27E1465440A9E90D90351A1039B7382ADE65D2FBBA11274441565F │ │ │ │ +3D5C61A06785958FBF8580B00F59CB8DCBE6BE4B8F3DEF73A77A5AACB0AA3BC6 │ │ │ │ +7E570A694E506E74E0EF1A8BC37827B82941DC0B449F6AD26B9641EDFC09A289 │ │ │ │ +34FF6D68991FCB7EAAD168B0A5463F795ABA3A5D07A6FBDB931145A0DE583F59 │ │ │ │ +D2034618BAB50C81824D0B66F66FD0F156016E64E677F62175F09D2A13AB92C2 │ │ │ │ +21A599C80D5D542EB443D2AA9FCE9461A0FFA0086A05BD16F31F367CA6A955BD │ │ │ │ +4FBB393BAA6D2C688A7A89B729FA74886063F22C46EEE22B16F3A790D5548B71 │ │ │ │ +E66E261500B2ACE35BC41FE6C988593FD61E5A0DC9D3AE53204920C2F682E753 │ │ │ │ +3E0EBAF9E3AC17D368F3E247F6EEA48948934DB297EB66E105DE5EDC3AE977B0 │ │ │ │ +13DF5489A13C16D7B1DBD517EAD7DD644A227E9DB492E5D06B7318B032122381 │ │ │ │ +B0633D82B46A59EB4E2306B10AB40AB47BD9E7312904E0015D68EDDCD4168F2D │ │ │ │ +CFCEC19D6BD68F59F2E1C7625B7078A977D086A0F51D83A95DD0A4821F56795B │ │ │ │ +8C755A820D8CB6DE708E15C707EF16C4E70D63838567759B2F3454B7B416EA98 │ │ │ │ +3083F1E64B92D930CD93BC58D6539069708015DD8C09BFB5A0E4EDBC166AA361 │ │ │ │ +93DEE163F9AABFAB8954D37FC1E4D7AF1BF0EAF533A9646AA3EC7BB34E008684 │ │ │ │ +F113D02A8DED5B142502838386197CD38C3E99556C33908DA043D1BF375ED571 │ │ │ │ +308C0FD54A2ACB47B78AD52656DBE441DFD5172861551D00994323D8AE5F5665 │ │ │ │ +72FE6BC5C3387FC85EE6AEC673D944B3148578BF1B49A89568BD15F55DCCFECB │ │ │ │ +0E4FC6ED56A02525A7146C3F8EADAF212BDA5CD9FFFC92AA2B8687C211BE5CFB │ │ │ │ +E82E37BC82F92D37EA4051D47CDDDF7EF1CB382A34137773A7C1A66FE786045E │ │ │ │ +F520CD2A1461D1F3CDA80E36FCA1B3883BEC1F736F9A749F2FCB90E99B5BC9BC │ │ │ │ +C6F5024CB6E17FA032C74548972B8FC9312BC9BA137DD7743220FD0C264FE83D │ │ │ │ +BD6F707C6477CAD6D944CF1E7704A555C89859A70A0FB978047345AA5EE1AAE5 │ │ │ │ +EA4EDFF3ADFDE37CC5A81844A9771221AE7786241F242247D670C96868261B62 │ │ │ │ +C83FAC512326B7481883C54AAADC1EE18A6F8A0EE53832BA89E4CFD80E237BC0 │ │ │ │ +006B2BB46812B0CC76E7A9F586005D5B0682E0A72DA8D84266D7AE24B4FFB44B │ │ │ │ +27A0824EB7BF3D7E8F3651EE79136C60AF676F778EFF6B4D4C5A9B1069CF9616 │ │ │ │ +33D090D2F5C6CA0818F3F22D4FADB6B5ABDA37F93DE884D5B3C7F93D05D410FF │ │ │ │ +859C20381EFF5AA7DB00C625A5F5B755CF51E040841DB49E0A96014D023A8387 │ │ │ │ +5B7059CBE2465042585DC241D8F5C7DA7C5EB52F02691C0914E5215A6D69DD57 │ │ │ │ +7518E5F8D36D2AE663BA3400F2C217658817AE98EC4FB528350D2622E8553699 │ │ │ │ +0306BA1576440EAE040F90162F79DAD30482E8A8426CF4420AA752F1CD8ACCD8 │ │ │ │ +67869B6F245F22A130188AE0DFDA0A741B0CCFD542C36BE2A3C96734316C9571 │ │ │ │ +AD3A3BE447CC01C1ABC75CE8A34D7BE34350A50C6BC15FD6382A495DF653B5E3 │ │ │ │ +14800A529C2B8E5EBEF030220566D94996C8523FDAA6571B27FEBC922F9AEA8B │ │ │ │ +1EE3A0459754E4529B9A6C78005F18672FA0549CF6D290FB1F9151246EC8DAC7 │ │ │ │ +8CC36CE32ACA94F677FFBF6015D48FE72486A8A7A8B72BD6F69F92F84017129D │ │ │ │ +1CD07EB69F4F4AFDBF41AA93908F9FF5B1D01E983E2C154999E6101C158DDE08 │ │ │ │ +81E8B75C9241C41B091EDE341D820CEBC54F3B31F85E72EA82103A72FF8DEA01 │ │ │ │ +E2F2D4E260F0C49EBF089AB934C784B9BC02FFCD2D5DE37E7CDC824DED192400 │ │ │ │ +1DE13F681E5E71DF5DB54687140797203C142323DFAF30A075FF31DCFD7F852E │ │ │ │ +4C3E7CCAACE668F43897DDA420F63ABC2C2ADFFB97F85DA67ACB65BE6B88276B │ │ │ │ +20CD1A00D3865945F59C2FC222A3A2CB818BAC66A26D889955A0DF31FC467A46 │ │ │ │ +933F4638E7CFD9C82783F378148341C1E0FA8C93512DC9BBCF9A7EFBC9347964 │ │ │ │ +2B1E6946E0F26270F7CDFBCC9C2FCFEEF9F8F2D83E2A092613E5DE43C87DF4D9 │ │ │ │ +78157754D2C8709B1C9F03D1CA24BCCE73A6D63D6D55D3AB53A62ABAF56F074C │ │ │ │ +085A83BD9254E387A1E0979D598335929A4E2F0AD551810C58F423C3819E6168 │ │ │ │ +46C2AC13F6CD12B5C689DBE39DD16122BBA3C67BC3F1A0F631617F16198FA148 │ │ │ │ +BF8FB49A7E317273A4397165D08A7020E42353BC639A8C0E1F2DB357F02BC287 │ │ │ │ +6DB22C9F49DEC1B7C974070E2EC75882D7B2E5C6ADC2EB78C56CEF028730828F │ │ │ │ +88C4CCA8640FFF3440EE4FD830722903CE5464EF6744B02FDBEB28ABA8BE1BB6 │ │ │ │ +68772805AAAA910883831806A3EF9BCEB1A13A7B77D04FD195A5994FA0D591A0 │ │ │ │ +C54F58E7C4D495B3BC5ADCE2AE036015949673D87588361130D5139FB4EC71B5 │ │ │ │ +27B6DF0091AF857BFB27709B3EDF93AFA9DB7D0A4FB1C3C5C6512A7780FB508D │ │ │ │ +93D947FE97301BA6B8CC4B612CF2A7B9CDBD33D056A1E110D9B65FE9EBDFB106 │ │ │ │ +7426844C21033F63E891A2B5E00B058442EEC187050D591B5B0099AE3E9CC58C │ │ │ │ +088DD31C350A48ACA721C97D7E6C4644DEC15162DBD540ADFBD25848F3BE5DAD │ │ │ │ +6B57F194A6311C4B7E50C722A64801CF5235CF67B5DB51D0D51BB76FDF18FA04 │ │ │ │ +A8FFB655FD797DC1016C9A4F92B9B186DA28D6F02D6EFFB8189ED62EB623FB35 │ │ │ │ +8BD4430F12E67DD0F3D75AB266F1064EF006E013AAC0FCDB92ACB165386453BC │ │ │ │ +489D159EE6B4DFBD4197C9CA3DE01DA7DF59554589248BBDFA8870DA6F6AF7FB │ │ │ │ +632B385457FCBCF3A582DE665A240CF3830EE67CB25F9DEB8FE3A7091FA817AB │ │ │ │ +237C659A050B4D153B47EE62E9CC2746FA0F98EBA85E387381A8E3F85DFE4F47 │ │ │ │ +A2F683AC19F500133D681A2A7F4132E29A737E6EEFAFD7A09838226811A176EC │ │ │ │ +EA0EEADE19FD703492E17DC7FFA0740E142FABA988EDAA5ACFDBE0AF8874110D │ │ │ │ +0569C81523ACFFED31A0D6874D9B095B0DFE5EF15991C97055BBBCE2947569C1 │ │ │ │ +5100E872ECC50A0C2B723CB8129ABD81314825BF6631733C83F37BF7D87FF6E0 │ │ │ │ +261FC5B819977A8B0C266A897A71612609D34765ED1D9EE416437DB460D4CA12 │ │ │ │ +856489E69DDF57F84E43730F58C11149FB386DFA35613587E1D076E7B08707D7 │ │ │ │ +0D4F243943EDBCB775B2247A9A2CC0EB9C405A124EB3733BA50288553BCC99D1 │ │ │ │ +941096A3D0FE6B23988A728857EF220D0A40ACB89DF0990DB84CEACCC6D4B43B │ │ │ │ +2C864169F6737EA1C824311E0B14F8665468B0DB22C51E94168A7B0CC643D89D │ │ │ │ +00CA8C2F12B3A0DFAE6BB742EAC0D9003871672AC0E5FC6ADAB491EF13E57AE0 │ │ │ │ +20445B50117BFD57D944F32EF0906064F2AD3C3539109A7ABC201EFE6F56C3AB │ │ │ │ +630656C6F59D8B29D24B5D76EF0A6F63FA4014488479F33B9F401F5F7E56EC28 │ │ │ │ +718E76DAAA7EFB6B4E5CD1EE60B46F40FF66F8246D4C798548CDE0CA4FBFB27A │ │ │ │ +C1DB3A6B32B70C9C527DAD353921832206D83A268D59F4FEA6ACE9827FD5D99B │ │ │ │ +31BF9B9396B9281E8AFABB14E31CB64A88E75A2C0A9A781B72D163B6FBA26FE5 │ │ │ │ +FD0D7133502E4F115A25E0FD98DBD31AD1054E3B7BC199EEFA28E10E7DEFBAE9 │ │ │ │ +7F2B1776FD5FD16C2802FB4CDA5526BAB88BE5A31E793B534709C651BADE1A6D │ │ │ │ +C4DE7933CFBD6D2715E862F6D84318319983A311315A82A2C80705AF070DB4CB │ │ │ │ +8A0F43C4969A55743E6A2B3E78732EDF6A8CB08FC810713772B07F84E4DEB51E │ │ │ │ +BFB352972C1585830CF02742A66EF2BBB6B230F0E56695B826599CFEF3B320D9 │ │ │ │ +2CC1B900661B67AEBBA0C4A518F04658B6696F9D80A9793D8A29766296C765AA │ │ │ │ +3C8B79EA16E0306E028382D2F069ADB7749A161EC7D46982FBAEFC7C724E851A │ │ │ │ +8DBC1119B0D31E0DB6564B8D3DBA2A6DE6A6633334172B34D1A1DE26FC7720DA │ │ │ │ +C741E55325D93A4BAA84EF33385E1E000310F2DD3214223574EFFDF2763B3926 │ │ │ │ +70BC910A30A890107B13AE232FD62DA4B879D5BCE6C6519CA7763500BB31B5E1 │ │ │ │ +09CC2860 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7406,16 +7419,16 @@ │ │ │ │ 1[62 6[25 8[42 2[25 30 25 31[47 12[{}35 83.022 /CMTI10 │ │ │ │ rf /Fh 149[27 23 20[39 11[54 12[20 59[{}5 58.1154 /CMMI7 │ │ │ │ rf /Fi 157[46 44[55 55 55 55 50[{}5 83.022 /CMEX10 rf │ │ │ │ /Fj 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 /Fk 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 /Fl 139[32 1[33 2[42 │ │ │ │ -9[37 1[37 46 18[65 20[23 1[42 2[42 2[42 42 42 3[23 44[{}14 │ │ │ │ +97 97 97 49[{}18 172.188 /CMBX12 rf /Fl 137[44 3[33 2[42 │ │ │ │ +1[69 7[37 2[46 19[62 19[23 4[42 2[42 42 42 3[23 44[{}13 │ │ │ │ 83.022 /CMSL10 rf /Fm 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 /Fn 131[232 │ │ │ │ 2[123 123 1[123 129 90 92 95 1[129 116 129 194 65 1[71 │ │ │ │ @@ -7431,17 +7444,17 @@ │ │ │ │ 46 9[99 2[66 53 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 /Fq 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 /Fr 205[30 │ │ │ │ 30 49[{}2 49.8132 /CMR6 rf /Fs 205[35 35 49[{}2 66.4176 │ │ │ │ -/CMR8 rf /Ft 133[43 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 8[49 2[49 2[49 49 49 3[27 44[{}33 99.6264 /CMR12 │ │ │ │ +/CMR8 rf /Ft 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 1[73 6[77 │ │ │ │ +3[70 69 73 11[49 2[49 49 49 3[27 44[{}33 99.6264 /CMR12 │ │ │ │ rf /Fu 172[90 2[110 121 2[97 6[106 69[{}5 143.462 /CMBX12 │ │ │ │ rf /Fv 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 │ │ │ │ @@ -7457,16 +7470,16 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 1103 1879 a Fv(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 Fu(SPOOLES)g Fv(2.2)1052 │ │ │ │ 2635 y Ft(Clev)m(e)35 b(Ashcraft)699 2751 y(Bo)s(eing)e(Shared)g │ │ │ │ (Services)i(Group)1995 2715 y Fs(1)2483 2635 y Ft(P)m(eter)f(Sc)m │ │ │ │ (hartz)2342 2751 y(CSAR)f(Corp)s(oration)3162 2715 y │ │ │ │ -Fs(2)1586 3013 y Ft(Octob)s(er)f(18,)g(2025)104 4919 │ │ │ │ -y Fr(1)138 4951 y Fq(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ +Fs(2)1544 3013 y Ft(No)m(v)m(em)m(b)s(er)h(15,)e(2025)104 │ │ │ │ +4919 y Fr(1)138 4951 y Fq(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 Fr(2)138 5224 │ │ │ │ y Fq(28035)32 b(Doroth)n(y)e(Driv)n(e,)h(Agoura)g(Hills,)h(CA)e(91301.) │ │ │ │ @@ -7593,27 +7606,27 @@ │ │ │ │ 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 Fm(BridgeMPI)24 b Fo(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 781 4 v 946 100 a Fp(SPOOLES)32 │ │ │ │ +TeXDict begin 2 3 bop 83 100 745 4 v 910 100 a Fp(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)f(2025)p 3080 100 V 781 w Fo(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 │ │ │ │ -b(metho)r(ds)84 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(34)315 764 y(5.3.4)h(Setup)28 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fo(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 b(metho)r(ds)84 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(34)315 764 y(5.3.4)h(Setup)28 │ │ │ │ b(metho)r(ds)60 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(35)315 888 │ │ │ │ y(5.3.5)h(F)-7 b(actor)27 b(metho)r(ds)35 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(35)315 1013 y(5.3.6)h(Solv)n(e)27 b(metho)r(ds)78 b(.)42 │ │ │ │ @@ -7725,21 +7738,21 @@ │ │ │ │ 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 Fj(A)p Fo(,)h Fj(X)34 b Fo(and)26 │ │ │ │ b Fj(Y)46 b Fo(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 781 4 v 946 100 a Fp(SPOOLES)32 │ │ │ │ +TeXDict begin 4 5 bop 83 100 745 4 v 910 100 a Fp(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)f(2025)p 3080 100 V 781 w Fo(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 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fo(4)0 390 y(matrices)i(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 │ │ │ │ (metho)r(ds)i(describ)r(ed)f(in)h(this)g(pap)r(er)f(do)g(not)g │ │ │ │ (exercise)f(all)i(the)f(functionalit)n(y)h(of)f(the)h(MPI)f(en)n │ │ │ │ (vironmen)n(t.)0 814 y(This)26 b(is)g(due)g(to)g(the)g(presen)n(t)f │ │ │ │ @@ -7837,41 +7850,41 @@ │ │ │ │ (and)0 5308 y(en)n(tries)f(in)i(the)f Fj(j)5 b Fo(-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 781 4 v 946 100 a Fp(SPOOLES)32 │ │ │ │ +TeXDict begin 6 7 bop 83 100 745 4 v 910 100 a Fp(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)f(2025)p 3080 100 V 781 w Fo(6)125 │ │ │ │ -390 y(The)i Fm(InpMtx)e Fo(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 Fm(inputMode)d Fo(parameter)i(to)h(the)h │ │ │ │ -Fm(InpMtx)p 3296 490 27 4 v 29 w(init\(\))d Fo(metho)r(d.)125 │ │ │ │ -678 y Ff(\210)42 b Fm(INPMTX)p 477 678 V 28 w(INDICES)p │ │ │ │ -813 678 V 29 w(ONLY)24 b Fo(where)i(the)g(triples)g Fj(l)r(ang)s(l)r │ │ │ │ -(er)r Fo(\()p Fj(i;)14 b(j)5 b Fo(\))p Fj(;)14 b(c)p │ │ │ │ -Fo(\()p Fj(i;)g(j)5 b Fo(\))p Fj(;)14 b Fc(\000i)24 b │ │ │ │ -Fo(are)h(really)g(only)g(pairs,)h(i.e.,)g(no)g(n)n(umerical)208 │ │ │ │ -778 y(v)-5 b(alues)27 b(are)f(presen)n(t.)37 b(This)27 │ │ │ │ -b(mo)r(de)h(is)f(useful)h(for)f(assem)n(bling)g(graphs.)125 │ │ │ │ -943 y Ff(\210)42 b Fm(SPOOLES)p 521 943 V 28 w(REAL)26 │ │ │ │ -b Fo(where)h Fj(a)1030 955 y Fh(i;j)1136 943 y Fo(is)g(a)h(real)e(n)n │ │ │ │ -(um)n(b)r(er,)i(a)f Fm(double)e Fo(v)-5 b(alue.)125 1108 │ │ │ │ -y Ff(\210)42 b Fm(SPOOLES)p 521 1108 V 28 w(COMPLEX)25 │ │ │ │ -b Fo(where)i Fj(a)1161 1120 y Fh(i;j)1267 1108 y Fo(is)g(a)g(complex)g │ │ │ │ -(n)n(um)n(b)r(er,)h(really)e(t)n(w)n(o)h(consecutiv)n(e)g │ │ │ │ -Fm(double)e Fo(v)-5 b(alues.)0 1296 y(\\Co)r(o)r(dinate)25 │ │ │ │ -b(t)n(yp)r(e")g(and)g(\\input)h(mo)r(de")g(\(equiv)-5 │ │ │ │ -b(alen)n(tly)e(,)26 b(the)g(t)n(yp)r(e)f(of)h(en)n(tries\))f(are)g(the) │ │ │ │ -g(t)n(w)n(o)g(parameters)f(that)i(m)n(ust)g(b)r(e)0 1395 │ │ │ │ -y(sp)r(eci\014ed)i(when)g(initializing)f(an)g Fm(InpMtx)f │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fo(6)125 390 y(The)h Fm(InpMtx)e Fo(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 │ │ │ │ +Fm(inputMode)d Fo(parameter)i(to)h(the)h Fm(InpMtx)p │ │ │ │ +3296 490 27 4 v 29 w(init\(\))d Fo(metho)r(d.)125 678 │ │ │ │ +y Ff(\210)42 b Fm(INPMTX)p 477 678 V 28 w(INDICES)p 813 │ │ │ │ +678 V 29 w(ONLY)24 b Fo(where)i(the)g(triples)g Fj(l)r(ang)s(l)r(er)r │ │ │ │ +Fo(\()p Fj(i;)14 b(j)5 b Fo(\))p Fj(;)14 b(c)p Fo(\()p │ │ │ │ +Fj(i;)g(j)5 b Fo(\))p Fj(;)14 b Fc(\000i)24 b Fo(are)h(really)g(only)g │ │ │ │ +(pairs,)h(i.e.,)g(no)g(n)n(umerical)208 778 y(v)-5 b(alues)27 │ │ │ │ +b(are)f(presen)n(t.)37 b(This)27 b(mo)r(de)h(is)f(useful)h(for)f(assem) │ │ │ │ +n(bling)g(graphs.)125 943 y Ff(\210)42 b Fm(SPOOLES)p │ │ │ │ +521 943 V 28 w(REAL)26 b Fo(where)h Fj(a)1030 955 y Fh(i;j)1136 │ │ │ │ +943 y Fo(is)g(a)h(real)e(n)n(um)n(b)r(er,)i(a)f Fm(double)e │ │ │ │ +Fo(v)-5 b(alue.)125 1108 y Ff(\210)42 b Fm(SPOOLES)p │ │ │ │ +521 1108 V 28 w(COMPLEX)25 b Fo(where)i Fj(a)1161 1120 │ │ │ │ +y Fh(i;j)1267 1108 y Fo(is)g(a)g(complex)g(n)n(um)n(b)r(er,)h(really)e │ │ │ │ +(t)n(w)n(o)h(consecutiv)n(e)g Fm(double)e Fo(v)-5 b(alues.)0 │ │ │ │ +1296 y(\\Co)r(o)r(dinate)25 b(t)n(yp)r(e")g(and)g(\\input)h(mo)r(de")g │ │ │ │ +(\(equiv)-5 b(alen)n(tly)e(,)26 b(the)g(t)n(yp)r(e)f(of)h(en)n(tries\)) │ │ │ │ +f(are)g(the)g(t)n(w)n(o)g(parameters)f(that)i(m)n(ust)g(b)r(e)0 │ │ │ │ +1395 y(sp)r(eci\014ed)i(when)g(initializing)f(an)g Fm(InpMtx)f │ │ │ │ Fo(ob)5 b(ject.)0 1584 y Fm(InpMtx)128 b(*mtxA)42 b(=)h(InpMtx_new\(\)) │ │ │ │ c(;)0 1683 y(InpMtx_init\(mtxA)o(,)f(coordType,)h(inputMode,)g(0,)k │ │ │ │ (0\))g(;)0 1871 y Fo(Ev)n(ery)19 b(ob)5 b(ject)21 b(in)g(the)h │ │ │ │ Fp(SPOOLES)f Fo(library)e(is)i(initialized)g(via)g(an)g │ │ │ │ Fg(Obje)l(ctName)p 2557 1871 V 31 w Fm(new\(\))e Fo(metho)r(d,)k(whic)n │ │ │ │ (h)e(allo)r(cates)f(space)0 1971 y(for)29 b(the)g(ob)5 │ │ │ │ b(ject)29 b(and)g(sets)g(its)h(\014elds)f(to)g(default)h(v)-5 │ │ │ │ @@ -7935,27 +7948,27 @@ │ │ │ │ (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 Ff(\210)42 b Fo(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 781 4 v 946 100 a Fp(SPOOLES)32 │ │ │ │ +TeXDict begin 7 8 bop 83 100 745 4 v 910 100 a Fp(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)f(2025)p 3080 100 V 781 w Fo(7)208 │ │ │ │ -390 y Fm(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 │ │ │ │ -(int)i(rowind[],)e(colind[])g(\))j(;)125 988 y Ff(\210)f │ │ │ │ -Fo(Input)28 b(metho)r(ds)g(for)f(real)f(en)n(tries.)208 │ │ │ │ -1187 y Fm(void)41 b(InpMtx_inputRealE)o(ntr)o(y)c(\()44 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fo(7)208 390 y Fm(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(int)i(rowind[],)e(colind[])g │ │ │ │ +(\))j(;)125 988 y Ff(\210)f Fo(Input)28 b(metho)r(ds)g(for)f(real)f(en) │ │ │ │ +n(tries.)208 1187 y Fm(void)41 b(InpMtx_inputRealE)o(ntr)o(y)c(\()44 │ │ │ │ b(InpMtx)d(*mtxA,)g(int)h(row,)g(int)g(col,)g(double)f(value)h(\))h(;) │ │ │ │ 208 1287 y(void)e(InpMtx_inputRealR)o(ow)c(\()43 b(InpMtx)e(*mtxA,)h │ │ │ │ (int)g(row,)g(int)g(rowsize,)1384 1386 y(int)h(rowind[],)d(double)h │ │ │ │ (rowent[])f(\))j(;)208 1486 y(void)e(InpMtx_inputRealC)o(olu)o(mn)c(\() │ │ │ │ 43 b(InpMtx)e(*mtxA,)g(int)i(col,)f(int)g(colsize,)1515 │ │ │ │ 1586 y(int)g(colind[],)e(double)h(colent[])g(\))i(;)208 │ │ │ │ 1685 y(void)e(InpMtx_inputRealM)o(atr)o(ix)c(\()43 b(InpMtx)e(*mtxA,)g │ │ │ │ @@ -7998,20 +8011,20 @@ │ │ │ │ 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 781 4 v 946 100 a Fp(SPOOLES)32 │ │ │ │ +TeXDict begin 8 9 bop 83 100 745 4 v 910 100 a Fp(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)f(2025)p 3080 100 V 781 w Fo(8)392 │ │ │ │ -390 y Fm(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 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fo(8)392 390 y Fm(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 Fo(The)24 │ │ │ │ b(pro)r(cess)f(b)r(egins)i(b)n(y)f(allo)r(cating)f(an)h │ │ │ │ Fm(InpMtx)e Fo(ob)5 b(ject)24 b Fm(mtxA)e Fo(using)i(the)h │ │ │ │ Fm(InpMtx)p 2663 1169 27 4 v 29 w(new\(\))d Fo(metho)r(d,)k │ │ │ │ (initializing)e(it)h(with)0 1268 y(the)35 b Fm(InpMtx)p │ │ │ │ 419 1268 V 29 w(init\(\))e Fo(metho)r(d,)k(and)e(\014lling)g(it)g(with) │ │ │ │ @@ -8087,18 +8100,18 @@ │ │ │ │ 5208 y Fm(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 781 4 v 946 100 a Fp(SPOOLES)32 │ │ │ │ +TeXDict begin 9 10 bop 83 100 745 4 v 910 100 a Fp(SPOOLES)32 │ │ │ │ b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)f(2025)p 3080 100 V 781 w Fo(9)0 │ │ │ │ -390 y(W)-7 b(e)28 b(w)n(ould)f(use)h(them)g(as)f(follo)n(ws.)0 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p 3116 100 V 745 │ │ │ │ +w Fo(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 Fm(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 Fo(W)-7 b(e)35 b(can)f(no)n(w)g(\014ll)h(the)g(indices)f │ │ │ │ (or)g(the)h(en)n(tries.)57 b(The)34 b(lo)r(cation)g(of)h(the)g │ │ │ │ @@ -8152,40 +8165,41 @@ │ │ │ │ b(InpMtx)d(*obj,)g(char)h(*filename)e(\))j(;)125 5242 │ │ │ │ y Ff(\210)f Fm(int)g(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 Ff(\210)f Fm(int)g(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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(10)125 │ │ │ │ -390 y Ff(\210)42 b Fm(int)g(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 Ff(\210)e Fm(int)g(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 Ff(\210)f Fm(int)g(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 Ff(\210)e Fm(int)g(InpMtx)p 651 888 │ │ │ │ -V 29 w(writeForHumanEye)37 b(\()43 b(InpMtx)e(*obj,)h(FILE)f(*fp)i(\))g │ │ │ │ -(;)0 1079 y Fo(There)37 b(are)g(corresp)r(onding)e(metho)r(ds)j(for)g │ │ │ │ -(the)g Fm(DenseMtx)c Fo(ob)5 b(ject,)40 b(just)e(replace)f(\\)p │ │ │ │ -Fm(Inp)p Fo(")e(b)n(y)j(\\)p Fm(Dense)p Fo(")c(in)k(the)g(ab)r(o)n(v)n │ │ │ │ -(e)0 1179 y(protot)n(yp)r(es.)125 1303 y(Tw)n(o)g(metho)r(ds)i(tak)n(e) │ │ │ │ -f(as)g(input)h Fm(char)i(*)d Fo(\014le)h(names.)72 b(Eac)n(h)38 │ │ │ │ -b(ob)5 b(ject)40 b(can)f(b)r(e)h(arc)n(hiv)n(ed)d(in)j(its)g(o)n(wn)f │ │ │ │ -(\014le)g(with)h(a)0 1403 y(particular)26 b(su\016x.)38 │ │ │ │ -b(F)-7 b(or)27 b(example,)g Fm(InpMtx)e Fo(ob)5 b(jects)27 │ │ │ │ -b(can)h(b)r(e)g(read)f(from)g(and)h(written)f(to)h(\014les)g(of)f(the)h │ │ │ │ -(form)g Fm(*.inpmtxf)0 1503 y Fo(for)d(a)g(formatted)g(\014le)h(and)f │ │ │ │ -Fm(*.inpmtxb)d Fo(for)i(a)h(binary)g(\014le.)36 b(F)-7 │ │ │ │ -b(or)25 b(a)g Fm(DenseMtx)d Fo(ob)5 b(ject,)26 b(the)g(\014le)f(names)g │ │ │ │ -(are)g Fm(*.densemtxf)0 1602 y Fo(and)35 b Fm(*.densemtxb)p │ │ │ │ -Fo(.)55 b(The)35 b Fm(InpMtx)p 1178 1602 V 29 w(readFromFile\(\))29 │ │ │ │ -b Fo(metho)r(d)35 b(lo)r(oks)f(at)h(the)h Fm(filename)c │ │ │ │ +TeXDict begin 10 11 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(10)125 390 y Ff(\210)42 b Fm(int)g(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 Ff(\210)e Fm(int)g(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 Ff(\210)f Fm(int)g(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 Ff(\210)e Fm(int)g(InpMtx)p │ │ │ │ +651 888 V 29 w(writeForHumanEye)37 b(\()43 b(InpMtx)e(*obj,)h(FILE)f │ │ │ │ +(*fp)i(\))g(;)0 1079 y Fo(There)37 b(are)g(corresp)r(onding)e(metho)r │ │ │ │ +(ds)j(for)g(the)g Fm(DenseMtx)c Fo(ob)5 b(ject,)40 b(just)e(replace)f │ │ │ │ +(\\)p Fm(Inp)p Fo(")e(b)n(y)j(\\)p Fm(Dense)p Fo(")c(in)k(the)g(ab)r(o) │ │ │ │ +n(v)n(e)0 1179 y(protot)n(yp)r(es.)125 1303 y(Tw)n(o)g(metho)r(ds)i │ │ │ │ +(tak)n(e)f(as)g(input)h Fm(char)i(*)d Fo(\014le)h(names.)72 │ │ │ │ +b(Eac)n(h)38 b(ob)5 b(ject)40 b(can)f(b)r(e)h(arc)n(hiv)n(ed)d(in)j │ │ │ │ +(its)g(o)n(wn)f(\014le)g(with)h(a)0 1403 y(particular)26 │ │ │ │ +b(su\016x.)38 b(F)-7 b(or)27 b(example,)g Fm(InpMtx)e │ │ │ │ +Fo(ob)5 b(jects)27 b(can)h(b)r(e)g(read)f(from)g(and)h(written)f(to)h │ │ │ │ +(\014les)g(of)f(the)h(form)g Fm(*.inpmtxf)0 1503 y Fo(for)d(a)g │ │ │ │ +(formatted)g(\014le)h(and)f Fm(*.inpmtxb)d Fo(for)i(a)h(binary)g │ │ │ │ +(\014le.)36 b(F)-7 b(or)25 b(a)g Fm(DenseMtx)d Fo(ob)5 │ │ │ │ +b(ject,)26 b(the)g(\014le)f(names)g(are)g Fm(*.densemtxf)0 │ │ │ │ +1602 y Fo(and)35 b Fm(*.densemtxb)p Fo(.)55 b(The)35 │ │ │ │ +b Fm(InpMtx)p 1178 1602 V 29 w(readFromFile\(\))29 b │ │ │ │ +Fo(metho)r(d)35 b(lo)r(oks)f(at)h(the)h Fm(filename)c │ │ │ │ Fo(argumen)n(t,)j(and)g(calls)g(the)0 1702 y(binary)28 │ │ │ │ b(or)g(formatted)h(read)e(metho)r(ds,)j(dep)r(ending)f(on)g(the)g │ │ │ │ (su\016x)g(of)f Fm(filename)p Fo(.)38 b(A)29 b(normal)f(return)g(co)r │ │ │ │ (de)h(is)f Fm(1)p Fo(.)40 b(If)30 b(the)0 1802 y(su\016x)i(do)r(es)g │ │ │ │ (not)g(matc)n(h)g(either)g Fm(*.inpmtxf)c Fo(or)k Fm(*.inpmtxb)p │ │ │ │ Fo(,)d(an)j(error)e(message)h(is)h(prin)n(ted)g(and)g(the)h(return)e │ │ │ │ (co)r(de)h(is)0 1901 y Fm(0)p Fo(.)48 b(Something)32 │ │ │ │ @@ -8287,18 +8301,18 @@ │ │ │ │ Fm(Bridge)d Fo(metho)r(ds.)0 5115 y Fe(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 Fo(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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(12)125 │ │ │ │ -390 y Ff(\210)42 b Fo(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ +TeXDict begin 12 13 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(12)125 390 y Ff(\210)42 b Fo(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ 606 y Fm(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 │ │ │ │ 1303 y(solFileName)82 b(=)43 b(argv[8])e(;)208 1403 y(seed)390 │ │ │ │ @@ -8352,24 +8366,24 @@ │ │ │ │ 5006 y Fo(The)28 b Fm(nrhs)f Fo(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 Fj(Y)19 b Fo(.)125 5272 y Ff(\210)42 b Fo(Create)26 │ │ │ │ b(and)i(setup)g(the)g Fm(Bridge)d Fo(ob)5 b(ject.)p eop │ │ │ │ end │ │ │ │ %%Page: 13 15 │ │ │ │ -TeXDict begin 13 14 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(13)208 │ │ │ │ -390 y Fm(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 Fo(The)19 │ │ │ │ -b Fm(Bridge)d Fo(ob)5 b(ject)19 b(is)g(allo)r(cated)f(b)n(y)g │ │ │ │ -Fm(Bridge)p 1687 888 27 4 v 29 w(new\(\))p Fo(,)h(and)g(v)-5 │ │ │ │ +TeXDict begin 13 14 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(13)208 390 y Fm(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 Fo(The)19 b Fm(Bridge)d Fo(ob)5 b(ject)19 b(is)g(allo)r(cated)f │ │ │ │ +(b)n(y)g Fm(Bridge)p 1687 888 27 4 v 29 w(new\(\))p Fo(,)h(and)g(v)-5 │ │ │ │ b(arious)17 b(parameters)h(are)f(set.)34 b(The)19 b(actual)g(ordering)e │ │ │ │ (of)208 988 y(the)22 b(matrix,)g(sym)n(b)r(olic)g(factorization,)f(and) │ │ │ │ h(p)r(erm)n(utation)g(creation)e(are)h(p)r(erformed)h(inside)g(the)g │ │ │ │ Fm(Bridge)p 3571 988 V 29 w(setup\(\))208 1088 y Fo(metho)r(d.)125 │ │ │ │ 1254 y Ff(\210)42 b Fo(Compute)27 b(the)h(matrix)f(factorization.)208 │ │ │ │ 1453 y Fm(permuteflag)39 b(=)k(1)g(;)208 1553 y(rc)f(=)h │ │ │ │ (Bridge_factor\(bri)o(dge)o(,)37 b(mtxA,)42 b(permuteflag,)d(&error\))h │ │ │ │ @@ -8418,19 +8432,19 @@ │ │ │ │ (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 Fp({)41 b Fm(int)i(maxsize)24 b Fo(:)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 Fp({)41 b Fm(int)i(seed)26 b Fo(:)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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(14)301 │ │ │ │ -390 y Fp({)41 b Fm(double)g(compressCutoff)22 b Fo(:)36 │ │ │ │ -b(if)28 b(the)g Fm(Neqns)d Fj(<)i Fm(compressCutoff)21 │ │ │ │ +TeXDict begin 14 15 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(14)301 390 y Fp({)41 b Fm(double)g(compressCutoff)22 │ │ │ │ +b Fo(:)36 b(if)28 b(the)g Fm(Neqns)d Fj(<)i Fm(compressCutoff)21 │ │ │ │ b Fc(\003)27 b Fm(neqns)p Fo(,)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 Ff(\210)42 b Fo(Matrix)27 │ │ │ │ b(parameters:)301 795 y Fp({)41 b Fm(int)i(type)26 b │ │ │ │ Fo(:)37 b(t)n(yp)r(e)27 b(of)h(en)n(tries,)f Fm(SPOOLES)p │ │ │ │ 1710 795 27 4 v 28 w(REAL)f Fo(or)h Fm(SPOOLES)p 2350 │ │ │ │ 795 V 29 w(COMPLEX)p Fo(,)d(default)k(v)-5 b(alue)28 │ │ │ │ @@ -8525,26 +8539,26 @@ │ │ │ │ b(factor)g(time)2242 5120 y Fm(cpus[10])d Fo(:)100 b(time)28 │ │ │ │ b(to)f(p)r(erm)n(ute)h(rhs)2242 5220 y Fm(cpus[11])c │ │ │ │ Fo(:)100 b(time)28 b(to)f(solv)n(e)2242 5319 y Fm(cpus[12])d │ │ │ │ Fo(:)100 b(time)28 b(to)f(p)r(erm)n(ute)h(solution)2242 │ │ │ │ 5419 y Fm(cpus[13])c Fo(:)100 b(total)27 b(solv)n(e)g(time)p │ │ │ │ eop end │ │ │ │ %%Page: 15 17 │ │ │ │ -TeXDict begin 15 16 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(15)0 │ │ │ │ -390 y Fe(3.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)58 │ │ │ │ -b Fd(Bridge)42 b Fe(metho)t(ds)0 597 y Fo(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 Fm(Bridge)c │ │ │ │ -Fo(ob)5 b(ject.)0 854 y Fb(3.3.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -1032 y Fo(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 1132 │ │ │ │ -y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 │ │ │ │ +TeXDict begin 15 16 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(15)0 390 y Fe(3.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ +(of)58 b Fd(Bridge)42 b Fe(metho)t(ds)0 597 y Fo(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 │ │ │ │ +Fm(Bridge)c Fo(ob)5 b(ject.)0 854 y Fb(3.3.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 1032 y Fo(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 │ │ │ │ +1132 y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 │ │ │ │ 1340 y(1.)42 b Fm(Bridge)f(*)i(Bridge_new)c(\()k(void)f(\))i(;)208 │ │ │ │ 1472 y Fo(This)23 b(metho)r(d)i(simply)f(allo)r(cates)f(storage)f(for)h │ │ │ │ (the)h Fm(Bridge)e Fo(structure)h(and)h(then)g(sets)g(the)g(default)g │ │ │ │ (\014elds)g(b)n(y)g(a)f(call)208 1572 y(to)k Fm(Bridge)p │ │ │ │ 578 1572 27 4 v 29 w(setDefaultFields)o(\(\))o Fo(.)101 │ │ │ │ 1738 y(2.)42 b Fm(int)g(Bridge_setDefaul)o(tF)o(iel)o(ds)37 │ │ │ │ b(\()43 b(Bridge)e(*bridge)g(\))i(;)208 1871 y Fo(The)27 │ │ │ │ @@ -8593,20 +8607,20 @@ │ │ │ │ b Fm(int)g(Bridge_newToOldI)o(V)37 b(\()44 b(Bridge)d(*bridge,)f(IV)j │ │ │ │ (**pobj)e(\))i(;)208 5229 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fm(*pobj)e Fo(with)i(its)f Fm(newToOldIV)d Fo(p)r(oin)n(ter.)208 │ │ │ │ 5362 y Fg(R)l(eturn)k(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)p eop end │ │ │ │ %%Page: 16 18 │ │ │ │ -TeXDict begin 16 17 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(16)101 │ │ │ │ -390 y(3.)42 b Fm(int)g(Bridge_frontETre)o(e)37 b(\()44 │ │ │ │ -b(Bridge)d(*bridge,)f(ETree)i(**pobj)f(\))i(;)208 523 │ │ │ │ -y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ +TeXDict begin 16 17 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(16)101 390 y(3.)42 b Fm(int)g(Bridge_frontETre)o(e)37 │ │ │ │ +b(\()44 b(Bridge)d(*bridge,)f(ETree)i(**pobj)f(\))i(;)208 │ │ │ │ +523 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ Fm(frontETree)d Fo(p)r(oin)n(ter.)208 656 y Fg(R)l(eturn)k(value:)38 │ │ │ │ b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)101 822 y(4.)42 b │ │ │ │ Fm(int)g(Bridge_symbfacIV)o(L)37 b(\()44 b(Bridge)d(*bridge,)f(IVL)i │ │ │ │ (**pobj)f(\))j(;)208 955 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fm(*pobj)e Fo(with)i(its)f Fm(symbfacIVL)d Fo(p)r(oin)n(ter.)208 │ │ │ │ @@ -8664,19 +8678,19 @@ │ │ │ │ 208 5233 y Fo(This)27 b(metho)r(d)h(sets)g(the)g(message)e(lev)n(el)h │ │ │ │ (and)g(\014le.)208 5366 y Fg(R)l(eturn)h(value:)38 b │ │ │ │ Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b Fm(bridge)25 │ │ │ │ b Fo(is)j Fm(NULL)p Fo(,)e(-2)h(if)34 b Fm(msglvl)26 │ │ │ │ b Fj(>)h Fo(0)g(and)g Fm(msgFile)e Fo(is)j Fm(NULL)p │ │ │ │ Fo(.)p eop end │ │ │ │ %%Page: 17 19 │ │ │ │ -TeXDict begin 17 18 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(17)0 │ │ │ │ -390 y Fb(3.3.4)112 b(Setup)38 b(metho)s(ds)101 568 y │ │ │ │ -Fo(1.)k Fm(int)g(Bridge_setup)d(\()k(Bridge)e(*bridge,)f(InpMtx)h │ │ │ │ +TeXDict begin 17 18 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(17)0 390 y Fb(3.3.4)112 b(Setup)38 b(metho)s(ds)101 │ │ │ │ +568 y Fo(1.)k Fm(int)g(Bridge_setup)d(\()k(Bridge)e(*bridge,)f(InpMtx)h │ │ │ │ (*mtxA)h(\))h(;)208 701 y Fo(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 Fg(R)l(eturn)h(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ (-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(,)e(-2)h(if)34 │ │ │ │ b Fm(mtxA)26 b Fo(is)i Fm(NULL)p Fo(.)101 1100 y(2.)42 │ │ │ │ @@ -8789,18 +8803,18 @@ │ │ │ │ g Fm(BridgeMT)d Fo(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 │ │ │ │ Fm(BridgeMT)d Fo(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 │ │ │ │ Fm(Bridge)d Fo(metho)r(ds.)1908 5656 y(18)p eop end │ │ │ │ %%Page: 19 21 │ │ │ │ -TeXDict begin 19 20 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(19)0 │ │ │ │ -390 y Fe(4.1)135 b(A)45 b(quic)l(k)g(lo)t(ok)g(at)h(the)f(m)l │ │ │ │ +TeXDict begin 19 20 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(19)0 390 y Fe(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 Fo(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 Ff(\210)42 b Fo(Deco)r(de)27 │ │ │ │ b(the)h(input.)208 998 y Fm(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 │ │ │ │ b(=)43 b(atoi\(argv[3]\))c(;)208 1297 y(type)390 b(=)43 │ │ │ │ @@ -8856,44 +8870,44 @@ │ │ │ │ 125 5011 y Ff(\210)42 b Fo(Read)27 b(in)h(the)g Fm(DenseMtx)c │ │ │ │ Fo(ob)5 b(ject)27 b(for)h Fj(Y)18 b Fo(.)208 5208 y Fm(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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(20)208 │ │ │ │ -390 y(The)h Fm(nrhs)f Fo(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 │ │ │ │ -Fj(Y)19 b Fo(.)125 656 y Ff(\210)42 b Fo(Create)26 b(and)i(setup)g(the) │ │ │ │ -g Fm(BridgeMT)c Fo(ob)5 b(ject.)208 855 y Fm(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,) │ │ │ │ -k(msgFile\))f(;)208 1154 y(rc)i(=)h(BridgeMT_setup\(br)o(idg)o(e,)37 │ │ │ │ -b(mtxA\))k(;)208 1353 y Fo(The)35 b Fm(BridgeMT)e Fo(ob)5 │ │ │ │ -b(ject)36 b(is)f(allo)r(cated)g(b)n(y)h Fm(BridgeMT)p │ │ │ │ -1964 1353 27 4 v 28 w(new\(\))p Fo(,)g(and)g(v)-5 b(arious)34 │ │ │ │ -b(parameters)g(are)h(set.)62 b(The)36 b(actual)208 1453 │ │ │ │ -y(ordering)h(of)i(the)g(matrix,)j(sym)n(b)r(olic)c(factorization,)j │ │ │ │ -(and)d(p)r(erm)n(utation)h(creation)f(are)g(p)r(erformed)h(inside)g │ │ │ │ -(the)208 1553 y Fm(BridgeMT)p 565 1553 V 28 w(setup\(\))24 │ │ │ │ -b Fo(metho)r(d.)125 1719 y Ff(\210)42 b Fo(Setup)28 b(the)g(n)n │ │ │ │ -(umerical)f(factorization.)208 1918 y Fm(rc)42 b(=)h(BridgeMT_factorSe) │ │ │ │ -o(tup)o(\(b)o(rid)o(ge)o(,)37 b(nthread,)k(0,)i(0.0\))e(;)208 │ │ │ │ -2117 y Fo(This)31 b(step)g(tells)g(the)g Fm(BridgeMT)d │ │ │ │ -Fo(ob)5 b(ject)31 b(the)g(n)n(um)n(b)r(er)g(of)g(threads)g(to)f(b)r(e)i │ │ │ │ -(used)f(in)g(the)h(factorization)d(and)i(solv)n(e.)208 │ │ │ │ -2217 y(The)c(third)g(and)g(fourth)g(parameters)e(de\014ne)i(the)h │ │ │ │ -(particular)d(t)n(yp)r(e)j(of)f(map)g(of)g(the)g(computations)g(to)f │ │ │ │ -(pro)r(cessors.)208 2316 y(When)k(the)g(third)g(parameter)e(is)h(zero,) │ │ │ │ -g(the)h(defaults)g(map)g(is)f(used.)43 b(If)30 b Fm(rc)43 │ │ │ │ -b(=)g(1)p Fo(,)30 b(the)g(setup)g(completed)g(without)208 │ │ │ │ +TeXDict begin 20 21 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(20)208 390 y(The)i Fm(nrhs)f Fo(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 Fj(Y)19 b Fo(.)125 656 y Ff(\210)42 b Fo(Create)26 │ │ │ │ +b(and)i(setup)g(the)g Fm(BridgeMT)c Fo(ob)5 b(ject.)208 │ │ │ │ +855 y Fm(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,)k(msgFile\))f(;)208 1154 │ │ │ │ +y(rc)i(=)h(BridgeMT_setup\(br)o(idg)o(e,)37 b(mtxA\))k(;)208 │ │ │ │ +1353 y Fo(The)35 b Fm(BridgeMT)e Fo(ob)5 b(ject)36 b(is)f(allo)r(cated) │ │ │ │ +g(b)n(y)h Fm(BridgeMT)p 1964 1353 27 4 v 28 w(new\(\))p │ │ │ │ +Fo(,)g(and)g(v)-5 b(arious)34 b(parameters)g(are)h(set.)62 │ │ │ │ +b(The)36 b(actual)208 1453 y(ordering)h(of)i(the)g(matrix,)j(sym)n(b)r │ │ │ │ +(olic)c(factorization,)j(and)d(p)r(erm)n(utation)h(creation)f(are)g(p)r │ │ │ │ +(erformed)h(inside)g(the)208 1553 y Fm(BridgeMT)p 565 │ │ │ │ +1553 V 28 w(setup\(\))24 b Fo(metho)r(d.)125 1719 y Ff(\210)42 │ │ │ │ +b Fo(Setup)28 b(the)g(n)n(umerical)f(factorization.)208 │ │ │ │ +1918 y Fm(rc)42 b(=)h(BridgeMT_factorSe)o(tup)o(\(b)o(rid)o(ge)o(,)37 │ │ │ │ +b(nthread,)k(0,)i(0.0\))e(;)208 2117 y Fo(This)31 b(step)g(tells)g(the) │ │ │ │ +g Fm(BridgeMT)d Fo(ob)5 b(ject)31 b(the)g(n)n(um)n(b)r(er)g(of)g │ │ │ │ +(threads)g(to)f(b)r(e)i(used)f(in)g(the)h(factorization)d(and)i(solv)n │ │ │ │ +(e.)208 2217 y(The)c(third)g(and)g(fourth)g(parameters)e(de\014ne)i │ │ │ │ +(the)h(particular)d(t)n(yp)r(e)j(of)f(map)g(of)g(the)g(computations)g │ │ │ │ +(to)f(pro)r(cessors.)208 2316 y(When)k(the)g(third)g(parameter)e(is)h │ │ │ │ +(zero,)g(the)h(defaults)g(map)g(is)f(used.)43 b(If)30 │ │ │ │ +b Fm(rc)43 b(=)g(1)p Fo(,)30 b(the)g(setup)g(completed)g(without)208 │ │ │ │ 2416 y(an)n(y)c(error.)125 2582 y Ff(\210)42 b Fo(Compute)27 │ │ │ │ b(the)h(matrix)f(factorization.)208 2781 y Fm(permuteflag)39 │ │ │ │ b(=)k(1)g(;)208 2881 y(rc)f(=)h(BridgeMT_factor\(b)o(rid)o(ge)o(,)38 │ │ │ │ b(mtxA,)j(permuteflag,)e(&error\))h(;)208 3080 y Fo(When)32 │ │ │ │ b Fm(permuteflag)27 b Fo(is)32 b Fm(1)p Fo(,)h(it)f(means)g(that)g(the) │ │ │ │ g(matrix)f(in)i Fm(mtxA)d Fo(has)h(not)h(y)n(et)g(b)r(een)g(p)r(erm)n │ │ │ │ (uted)g(in)n(to)g(the)g(new)208 3180 y(ordering)c(and)h(so)g(is)h(done) │ │ │ │ @@ -8921,18 +8935,18 @@ │ │ │ │ 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 Fm(permuteflag)p │ │ │ │ Fo(.)32 b(When)27 b Fm(1)p Fo(,)f Fm(mtxY)e Fo(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 Fm(mtxX)f Fo(is)h(returned)h(in)g(the)f(original)g(ordering.)p │ │ │ │ eop end │ │ │ │ %%Page: 21 23 │ │ │ │ -TeXDict begin 21 22 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(21)0 │ │ │ │ -390 y Fe(4.2)135 b(The)45 b Fd(BridgeMT)c Fe(Data)46 │ │ │ │ +TeXDict begin 21 22 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(21)0 390 y Fe(4.2)135 b(The)45 b Fd(BridgeMT)c Fe(Data)46 │ │ │ │ b(Structure)0 596 y Fo(The)28 b Fm(BridgeMT)c Fo(structure)j(has)g(the) │ │ │ │ h(follo)n(wing)f(\014elds.)125 784 y Ff(\210)42 b Fo(Graph)27 │ │ │ │ b(parameters:)301 949 y Fp({)41 b Fm(int)i(neqns)25 b │ │ │ │ Fo(:)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 │ │ │ │ Fp({)41 b Fm(int)i(nedges)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ b(of)h(edges)e(\(includes)i(\()p Fj(u;)14 b(v)s Fo(\),)28 │ │ │ │ @@ -9009,20 +9023,20 @@ │ │ │ │ b Fo(:)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 Fp({)41 │ │ │ │ b Fm(SubMtxManager)d(*mtxmanager)33 b Fo(:)55 b(ob)5 │ │ │ │ b(ject)37 b(that)g(manages)f(the)h Fm(SubMtx)d Fo(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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(22)301 │ │ │ │ -390 y Fp({)41 b Fm(FrontMtx)f(*frontmtx)24 b Fo(:)37 │ │ │ │ -b(ob)5 b(ject)28 b(that)g(stores)e(the)i Fj(L)p Fo(,)f │ │ │ │ -Fj(D)j Fo(and)d Fj(U)37 b Fo(factor)27 b(matrices.)301 │ │ │ │ +TeXDict begin 22 23 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(22)301 390 y Fp({)41 b Fm(FrontMtx)f(*frontmtx)24 │ │ │ │ +b Fo(:)37 b(ob)5 b(ject)28 b(that)g(stores)e(the)i Fj(L)p │ │ │ │ +Fo(,)f Fj(D)j Fo(and)d Fj(U)37 b Fo(factor)27 b(matrices.)301 │ │ │ │ 523 y Fp({)41 b Fm(IV)i(*oldToNewIV)23 b Fo(:)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 Fp({)41 b Fm(IV)i(*newToOldIV)23 b │ │ │ │ Fo(:)28 b(ob)5 b(ject)27 b(that)h(stores)e(new-to-old)h(p)r(erm)n │ │ │ │ (utation)g(v)n(ector.)125 822 y Ff(\210)42 b Fo(Multithreaded)27 │ │ │ │ b(information:)301 988 y Fp({)41 b Fm(int)i(nthread)24 │ │ │ │ b Fo(:)37 b(n)n(um)n(b)r(er)28 b(of)f(threads)g(to)h(b)r(e)g(used)f │ │ │ │ @@ -9093,24 +9107,24 @@ │ │ │ │ 4973 y Fb(4.3.1)112 b(Basic)38 b(metho)s(ds)0 5151 y │ │ │ │ Fo(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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(23)101 │ │ │ │ -390 y(1.)42 b Fm(BridgeMT)e(*)j(BridgeMT_new)c(\()k(void)f(\))h(;)208 │ │ │ │ -521 y Fo(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f(storage)f(for)h │ │ │ │ -(the)h Fm(BridgeMT)d Fo(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 Fm(BridgeMT)p │ │ │ │ -818 621 27 4 v 28 w(setDefaultFields\()o(\))p Fo(.)101 │ │ │ │ -783 y(2.)42 b Fm(int)g(BridgeMT_setDefa)o(ul)o(tFi)o(el)o(ds)37 │ │ │ │ -b(\()43 b(BridgeMT)e(*bridge)f(\))j(;)208 913 y Fo(The)27 │ │ │ │ +TeXDict begin 23 24 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(23)101 390 y(1.)42 b Fm(BridgeMT)e(*)j(BridgeMT_new)c(\()k(void)f │ │ │ │ +(\))h(;)208 521 y Fo(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f │ │ │ │ +(storage)f(for)h(the)h Fm(BridgeMT)d Fo(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 │ │ │ │ +Fm(BridgeMT)p 818 621 27 4 v 28 w(setDefaultFields\()o(\))p │ │ │ │ +Fo(.)101 783 y(2.)42 b Fm(int)g(BridgeMT_setDefa)o(ul)o(tFi)o(el)o(ds) │ │ │ │ +37 b(\()43 b(BridgeMT)e(*bridge)f(\))j(;)208 913 y Fo(The)27 │ │ │ │ b(structure's)g(\014elds)h(are)e(set)i(to)f(default)h(v)-5 │ │ │ │ b(alues:)307 1075 y Ff(\210)42 b Fm(neqns)26 b Fo(=)h │ │ │ │ Fm(nedges)e Fo(=)i Fm(Neqns)f Fo(=)h Fm(Nedges)f Fo(=)h(0.)307 │ │ │ │ 1204 y Ff(\210)42 b Fm(maxdomainsize)22 b Fo(=)28 b Fm(maxnzeros)c │ │ │ │ Fo(=)j Fm(maxsize)e Fo(=)i Fm(seed)f Fo(=)h(-1.)36 b │ │ │ │ Fm(compressCutoff)22 b Fo(=)28 b(0.)307 1333 y Ff(\210)42 │ │ │ │ b Fm(type)26 b Fo(=)h Fm(SPOOLES)p 997 1333 V 29 w(REAL)p │ │ │ │ @@ -9167,18 +9181,18 @@ │ │ │ │ b Fm(int)g(BridgeMT_symbfac)o(IV)o(L)c(\()43 b(BridgeMT)d(*bridge,)g │ │ │ │ (IVL)j(**pobj)e(\))i(;)208 5276 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fm(*pobj)e Fo(with)i(its)f Fm(symbfacIVL)d Fo(p)r(oin)n(ter.)208 │ │ │ │ 5407 y Fg(R)l(eturn)k(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)p eop end │ │ │ │ %%Page: 24 26 │ │ │ │ -TeXDict begin 24 25 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(24)101 │ │ │ │ -390 y(5.)42 b Fm(int)g(BridgeMT_mtxmana)o(ge)o(r)c(\()43 │ │ │ │ +TeXDict begin 24 25 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(24)101 390 y(5.)42 b Fm(int)g(BridgeMT_mtxmana)o(ge)o(r)c(\()43 │ │ │ │ b(BridgeMT)d(*bridge,)g(SubMtxManager)f(**pobj)i(\))i(;)208 │ │ │ │ 523 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ Fm(mtxmanager)d Fo(p)r(oin)n(ter.)208 656 y Fg(R)l(eturn)k(value:)38 │ │ │ │ b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)101 822 y(6.)42 b │ │ │ │ Fm(int)g(BridgeMT_frontmt)o(x)37 b(\()44 b(BridgeMT)c(*bridge,)g │ │ │ │ @@ -9238,24 +9252,25 @@ │ │ │ │ (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 Fo(This)27 b(metho)r(d)h(sets)g(parameters)d(needed)j(for)f(the) │ │ │ │ h(factorization.)208 5391 y Fg(R)l(eturn)g(value:)p eop │ │ │ │ end │ │ │ │ %%Page: 25 27 │ │ │ │ -TeXDict begin 25 26 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(25)1135 │ │ │ │ -377 y(1)99 b(normal)27 b(return)1107 477 y(-1)99 b Fm(bridge)25 │ │ │ │ -b Fo(is)j Fm(NULL)1107 576 y Fo(-2)99 b Fm(sparsityflag)23 │ │ │ │ -b Fo(is)k(in)n(v)-5 b(alid)1107 676 y(-3)99 b Fm(pivotingflag)23 │ │ │ │ -b Fo(is)k(in)n(v)-5 b(alid)2278 427 y(-4)98 b Fm(tau)27 │ │ │ │ -b Fj(<)g Fo(2.0)2278 526 y(-5)98 b Fm(droptol)25 b Fj(<)i │ │ │ │ -Fo(0.0)2278 626 y(-6)98 b Fm(lookahead)24 b Fj(<)k Fo(0)101 │ │ │ │ -871 y(4.)42 b Fm(int)g(BridgeMT_setMess)o(ag)o(esI)o(nf)o(o)c(\()43 │ │ │ │ +TeXDict begin 25 26 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(25)1135 377 y(1)99 b(normal)27 b(return)1107 477 │ │ │ │ +y(-1)99 b Fm(bridge)25 b Fo(is)j Fm(NULL)1107 576 y Fo(-2)99 │ │ │ │ +b Fm(sparsityflag)23 b Fo(is)k(in)n(v)-5 b(alid)1107 │ │ │ │ +676 y(-3)99 b Fm(pivotingflag)23 b Fo(is)k(in)n(v)-5 │ │ │ │ +b(alid)2278 427 y(-4)98 b Fm(tau)27 b Fj(<)g Fo(2.0)2278 │ │ │ │ +526 y(-5)98 b Fm(droptol)25 b Fj(<)i Fo(0.0)2278 626 │ │ │ │ +y(-6)98 b Fm(lookahead)24 b Fj(<)k Fo(0)101 871 y(4.)42 │ │ │ │ +b Fm(int)g(BridgeMT_setMess)o(ag)o(esI)o(nf)o(o)c(\()43 │ │ │ │ b(BridgeMT)d(*bridge,)g(int)j(msglvl,)d(FILE)i(*msgFile)f(\))i(;)208 │ │ │ │ 1004 y Fo(This)27 b(metho)r(d)h(sets)g(the)g(message)e(lev)n(el)h(and)g │ │ │ │ (\014le.)208 1137 y Fg(R)l(eturn)h(value:)38 b Fo(1)27 │ │ │ │ b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b Fm(bridge)25 │ │ │ │ b Fo(is)j Fm(NULL)p Fo(,)e(-2)h(if)34 b Fm(msglvl)26 │ │ │ │ b Fj(>)h Fo(0)g(and)g Fm(msgFile)e Fo(is)j Fm(NULL)p │ │ │ │ Fo(.)0 1394 y Fb(4.3.4)112 b(Setup)38 b(metho)s(ds)101 │ │ │ │ @@ -9311,21 +9326,21 @@ │ │ │ │ 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 Fm(maptype)30 b Fo(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 Fm(cutoff)25 b Fo(=)i(1/\(2*)p Fm(nthread)p │ │ │ │ Fo(\).)208 5365 y Fg(R)l(eturn)h(value:)p eop end │ │ │ │ %%Page: 26 28 │ │ │ │ -TeXDict begin 26 27 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(26)618 │ │ │ │ -377 y(1)99 b(normal)26 b(return,)i(factorization)e(did)i(complete)590 │ │ │ │ -477 y(-1)99 b Fm(bridge)25 b Fo(is)i Fm(NULL)2393 377 │ │ │ │ -y Fo(-2)99 b Fm(nthread)24 b Fj(<)k Fo(1)2393 477 y(-5)99 │ │ │ │ -b Fm(frontETree)23 b Fo(is)28 b(not)f(presen)n(t)101 │ │ │ │ +TeXDict begin 26 27 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(26)618 377 y(1)99 b(normal)26 b(return,)i(factorization)e(did)i │ │ │ │ +(complete)590 477 y(-1)99 b Fm(bridge)25 b Fo(is)i Fm(NULL)2393 │ │ │ │ +377 y Fo(-2)99 b Fm(nthread)24 b Fj(<)k Fo(1)2393 477 │ │ │ │ +y(-5)99 b Fm(frontETree)23 b Fo(is)28 b(not)f(presen)n(t)101 │ │ │ │ 672 y(2.)42 b Fm(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 Fo(This)24 b(metho)r(d)g(p)r(erm)n(utes)g │ │ │ │ (the)h(matrix)f(in)n(to)g(the)g(new)h(ordering)d(\(if)32 │ │ │ │ b Fm(permuteflag)19 b Fo(is)24 b(1\),)h(factors)e(the)i(matrix,)f(and) │ │ │ │ 208 904 y(then)k(p)r(ost-pro)r(cesses)d(the)j(factors.)208 │ │ │ │ 1037 y Fg(R)l(eturn)g(value:)822 1265 y Fo(1)99 b(normal)27 │ │ │ │ @@ -9418,20 +9433,20 @@ │ │ │ │ Fm(BridgeMPI)d Fo(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 │ │ │ │ Fm(BridgeMPI)c Fo(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 │ │ │ │ Fm(Bridge)d Fo(metho)r(ds.)1908 5656 y(27)p eop end │ │ │ │ %%Page: 28 30 │ │ │ │ -TeXDict begin 28 29 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(28)0 │ │ │ │ -390 y Fe(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 Fo(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 │ │ │ │ +TeXDict begin 28 29 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(28)0 390 y Fe(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 Fo(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 Ff(\210)42 b Fo(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ 966 y Fm(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 │ │ │ │ b(=)43 b(atoi\(argv[3]\))c(;)208 1265 y(type)390 b(=)43 │ │ │ │ b(atoi\(argv[4]\))c(;)208 1364 y(symmetryflag)f(=)43 │ │ │ │ b(atoi\(argv[5]\))c(;)208 1464 y(mtxFileName)82 b(=)43 │ │ │ │ @@ -9492,18 +9507,18 @@ │ │ │ │ (er)f(of)g(columns)208 5308 y(in)d Fj(Y)18 b Fo(.)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 │ │ │ │ Fm(MPI)p 1541 5407 V 30 w(Finalize\(\))d Fo(and)j(exit.)p │ │ │ │ eop end │ │ │ │ %%Page: 29 31 │ │ │ │ -TeXDict begin 29 30 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(29)125 │ │ │ │ -390 y Ff(\210)42 b Fo(Create)26 b(and)i(setup)g(the)g │ │ │ │ +TeXDict begin 29 30 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(29)125 390 y Ff(\210)42 b Fo(Create)26 b(and)i(setup)g(the)g │ │ │ │ Fm(BridgeMPI)c Fo(ob)5 b(ject.)208 589 y Fm(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 │ │ │ │ 988 y(rc)i(=)h(BridgeMPI_setup\(b)o(rid)o(ge)o(,)38 b(mtxA\))j(;)208 │ │ │ │ @@ -9558,46 +9573,47 @@ │ │ │ │ o(rid)o(ge)o(,)38 b(permuteflag,)g(mtxX,)k(mtxY\))f(;)208 │ │ │ │ 5139 y Fo(Again,)25 b(note)h(the)g(presence)g(of)f Fm(permuteflag)p │ │ │ │ Fo(.)32 b(When)27 b Fm(1)p Fo(,)f Fm(mtxY)e Fo(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 Fm(mtxX)f Fo(is)h(returned)h(in)g(the)f(original)g(ordering.)p │ │ │ │ eop end │ │ │ │ %%Page: 30 32 │ │ │ │ -TeXDict begin 30 31 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(30)0 │ │ │ │ -390 y Fe(5.2)135 b(The)45 b Fd(BridgeMPI)40 b Fe(Data)46 │ │ │ │ -b(Structure)0 595 y Fo(The)28 b Fm(BridgeMPI)c Fo(structure)j(has)g │ │ │ │ -(the)h(follo)n(wing)e(\014elds.)125 776 y Ff(\210)42 │ │ │ │ -b Fo(Graph)27 b(parameters:)301 939 y Fp({)41 b Fm(int)i(neqns)25 │ │ │ │ -b Fo(:)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 │ │ │ │ -Fp({)41 b Fm(int)i(nedges)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ -b(of)h(edges)e(\(includes)i(\()p Fj(u;)14 b(v)s Fo(\),)28 │ │ │ │ -b(\()p Fj(v)s(;)14 b(u)p Fo(\))28 b(and)g(\()p Fj(u;)14 │ │ │ │ -b(u)p Fo(\)\).)301 1196 y Fp({)41 b Fm(int)i(Neqns)25 │ │ │ │ -b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(equations)f(in)h(the)g │ │ │ │ -(compressed)e(graph.)301 1325 y Fp({)41 b Fm(int)i(Nedges)25 │ │ │ │ -b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(edges)e(in)i(the)g(compressed)f │ │ │ │ -(graph.)125 1488 y Ff(\210)42 b Fo(Ordering)26 b(parameters:)301 │ │ │ │ -1650 y Fp({)41 b Fm(int)i(maxdomainsize)29 b Fo(:)51 │ │ │ │ -b(maxim)n(um)34 b(size)g(of)h(a)f(subgraph)g(to)g(not)h(split)g(an)n(y) │ │ │ │ -e(further)i(during)f(the)h(nested)390 1749 y(dissection)27 │ │ │ │ -b(pro)r(cess.)301 1878 y Fp({)41 b Fm(int)i(maxnzeros)22 │ │ │ │ -b Fo(:)36 b(maxim)n(um)26 b(n)n(um)n(b)r(er)f(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 │ │ │ │ -1978 y(tion)j(pro)r(cess.)301 2107 y Fp({)41 b Fm(int)i(maxsize)24 │ │ │ │ -b Fo(:)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 2236 y Fp({)41 b Fm(int)i(seed)26 │ │ │ │ -b Fo(:)37 b(random)26 b(n)n(um)n(b)r(er)i(seed.)301 2365 │ │ │ │ -y Fp({)41 b Fm(double)g(compressCutoff)22 b Fo(:)36 b(if)28 │ │ │ │ -b(the)g Fm(Neqns)d Fj(<)i Fm(compressCutoff)21 b Fc(\003)27 │ │ │ │ -b Fm(neqns)p Fo(,)e(then)j(the)f(compressed)f(graph)390 │ │ │ │ -2465 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 2627 y Ff(\210)42 b Fo(Matrix)27 │ │ │ │ +TeXDict begin 30 31 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(30)0 390 y Fe(5.2)135 b(The)45 b Fd(BridgeMPI)40 │ │ │ │ +b Fe(Data)46 b(Structure)0 595 y Fo(The)28 b Fm(BridgeMPI)c │ │ │ │ +Fo(structure)j(has)g(the)h(follo)n(wing)e(\014elds.)125 │ │ │ │ +776 y Ff(\210)42 b Fo(Graph)27 b(parameters:)301 939 │ │ │ │ +y Fp({)41 b Fm(int)i(neqns)25 b Fo(:)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 Fp({)41 b Fm(int)i(nedges)25 │ │ │ │ +b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(edges)e(\(includes)i(\()p │ │ │ │ +Fj(u;)14 b(v)s Fo(\),)28 b(\()p Fj(v)s(;)14 b(u)p Fo(\))28 │ │ │ │ +b(and)g(\()p Fj(u;)14 b(u)p Fo(\)\).)301 1196 y Fp({)41 │ │ │ │ +b Fm(int)i(Neqns)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(equations)f │ │ │ │ +(in)h(the)g(compressed)e(graph.)301 1325 y Fp({)41 b │ │ │ │ +Fm(int)i(Nedges)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(edges)e(in)i │ │ │ │ +(the)g(compressed)f(graph.)125 1488 y Ff(\210)42 b Fo(Ordering)26 │ │ │ │ +b(parameters:)301 1650 y Fp({)41 b Fm(int)i(maxdomainsize)29 │ │ │ │ +b Fo(:)51 b(maxim)n(um)34 b(size)g(of)h(a)f(subgraph)g(to)g(not)h │ │ │ │ +(split)g(an)n(y)e(further)i(during)f(the)h(nested)390 │ │ │ │ +1749 y(dissection)27 b(pro)r(cess.)301 1878 y Fp({)41 │ │ │ │ +b Fm(int)i(maxnzeros)22 b Fo(:)36 b(maxim)n(um)26 b(n)n(um)n(b)r(er)f │ │ │ │ +(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 1978 y(tion)j(pro)r(cess.)301 │ │ │ │ +2107 y Fp({)41 b Fm(int)i(maxsize)24 b Fo(:)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 │ │ │ │ +2236 y Fp({)41 b Fm(int)i(seed)26 b Fo(:)37 b(random)26 │ │ │ │ +b(n)n(um)n(b)r(er)i(seed.)301 2365 y Fp({)41 b Fm(double)g │ │ │ │ +(compressCutoff)22 b Fo(:)36 b(if)28 b(the)g Fm(Neqns)d │ │ │ │ +Fj(<)i Fm(compressCutoff)21 b Fc(\003)27 b Fm(neqns)p │ │ │ │ +Fo(,)e(then)j(the)f(compressed)f(graph)390 2465 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 2627 y Ff(\210)42 b Fo(Matrix)27 │ │ │ │ b(parameters:)301 2789 y Fp({)41 b Fm(int)i(type)26 b │ │ │ │ Fo(:)37 b(t)n(yp)r(e)27 b(of)h(en)n(tries,)f Fm(SPOOLES)p │ │ │ │ 1710 2789 27 4 v 28 w(REAL)f Fo(or)h Fm(SPOOLES)p 2350 │ │ │ │ 2789 V 29 w(COMPLEX)p Fo(,)d(default)k(v)-5 b(alue)28 │ │ │ │ b(is)f Fm(SPOOLES)p 3619 2789 V 29 w(REAL)p Fo(.)301 │ │ │ │ 2918 y Fp({)41 b Fm(int)i(symmetryflag)20 b Fo(:)36 b(t)n(yp)r(e)26 │ │ │ │ b(of)g(symmetry)f(for)g(the)h(matrix,)g Fm(SPOOLES)p │ │ │ │ @@ -9651,47 +9667,48 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(31)301 │ │ │ │ -390 y Fp({)41 b Fm(IVL)i(*symbfacIVL)23 b Fo(:)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 Fp({)41 b Fm(SubMtxManager)d(*mtxmanager) │ │ │ │ -33 b Fo(:)55 b(ob)5 b(ject)37 b(that)g(manages)f(the)h │ │ │ │ -Fm(SubMtx)d Fo(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 Fp({)41 b Fm(FrontMtx)f(*frontmtx)24 b Fo(:)37 │ │ │ │ -b(ob)5 b(ject)28 b(that)g(stores)e(the)i Fj(L)p Fo(,)f │ │ │ │ -Fj(D)j Fo(and)d Fj(U)37 b Fo(factor)27 b(matrices.)301 │ │ │ │ -849 y Fp({)41 b Fm(IV)i(*oldToNewIV)23 b Fo(:)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 969 y Fp({)41 b Fm(IV)i(*newToOldIV)23 b │ │ │ │ -Fo(:)28 b(ob)5 b(ject)27 b(that)h(stores)e(new-to-old)h(p)r(erm)n │ │ │ │ -(utation)g(v)n(ector.)125 1122 y Ff(\210)42 b Fo(MPI)27 │ │ │ │ -b(information:)301 1275 y Fp({)41 b Fm(int)i(nproc)25 │ │ │ │ -b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(pro)r(cessors.)301 │ │ │ │ -1395 y Fp({)41 b Fm(int)i(myid)26 b Fo(:)37 b(id)27 b(of)h(this)g(pro)r │ │ │ │ -(cessor.)301 1515 y Fp({)41 b Fm(MPI)p 527 1515 27 4 │ │ │ │ -v 30 w(Comm)26 b Fo(:)37 b(MPI)28 b(comm)n(unicator.)301 │ │ │ │ -1634 y Fp({)41 b Fm(IV)i(*ownersIV)24 b Fo(:)k(this)g(ob)5 │ │ │ │ -b(ject)27 b(con)n(tains)g(the)h(map)f(from)g(fron)n(ts)g(to)h(their)f │ │ │ │ -(o)n(wning)g(pro)r(cessors.)301 1754 y Fp({)41 b Fm(SolveMap)f │ │ │ │ -(*solvemap)34 b Fo(:)56 b(this)37 b(ob)5 b(ject)37 b(con)n(tains)f(the) │ │ │ │ -i(map)f(from)f(factor)h(submatrices)f(to)h(their)g(o)n(wning)390 │ │ │ │ -1854 y(pro)r(cessors.)301 1974 y Fp({)k Fm(DV)i(*cumopsDV)24 │ │ │ │ -b Fo(:)k(this)h(ob)5 b(ject)27 b(is)h(formed)g(when)g(the)g(map)g(from) │ │ │ │ -f(fron)n(ts)h(to)f(o)n(wning)g(pro)r(cessors)f(is)i(created.)390 │ │ │ │ -2073 y(Its)37 b(size)g(is)f Fm(nthread)e Fo(and)j(con)n(tains)f(the)h │ │ │ │ -(op)r(erations)f(that)h(eac)n(h)f(thread)g(will)h(p)r(erform)f(during)h │ │ │ │ -(a)f(direct)390 2173 y(factorization)26 b(without)i(piv)n(oting.)301 │ │ │ │ +TeXDict begin 31 32 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(31)301 390 y Fp({)41 b Fm(IVL)i(*symbfacIVL)23 b │ │ │ │ +Fo(:)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 Fp({)41 │ │ │ │ +b Fm(SubMtxManager)d(*mtxmanager)33 b Fo(:)55 b(ob)5 │ │ │ │ +b(ject)37 b(that)g(manages)f(the)h Fm(SubMtx)d Fo(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 │ │ │ │ +Fp({)41 b Fm(FrontMtx)f(*frontmtx)24 b Fo(:)37 b(ob)5 │ │ │ │ +b(ject)28 b(that)g(stores)e(the)i Fj(L)p Fo(,)f Fj(D)j │ │ │ │ +Fo(and)d Fj(U)37 b Fo(factor)27 b(matrices.)301 849 y │ │ │ │ +Fp({)41 b Fm(IV)i(*oldToNewIV)23 b Fo(:)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 │ │ │ │ +969 y Fp({)41 b Fm(IV)i(*newToOldIV)23 b Fo(:)28 b(ob)5 │ │ │ │ +b(ject)27 b(that)h(stores)e(new-to-old)h(p)r(erm)n(utation)g(v)n │ │ │ │ +(ector.)125 1122 y Ff(\210)42 b Fo(MPI)27 b(information:)301 │ │ │ │ +1275 y Fp({)41 b Fm(int)i(nproc)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ +b(of)h(pro)r(cessors.)301 1395 y Fp({)41 b Fm(int)i(myid)26 │ │ │ │ +b Fo(:)37 b(id)27 b(of)h(this)g(pro)r(cessor.)301 1515 │ │ │ │ +y Fp({)41 b Fm(MPI)p 527 1515 27 4 v 30 w(Comm)26 b Fo(:)37 │ │ │ │ +b(MPI)28 b(comm)n(unicator.)301 1634 y Fp({)41 b Fm(IV)i(*ownersIV)24 │ │ │ │ +b Fo(:)k(this)g(ob)5 b(ject)27 b(con)n(tains)g(the)h(map)f(from)g(fron) │ │ │ │ +n(ts)g(to)h(their)f(o)n(wning)g(pro)r(cessors.)301 1754 │ │ │ │ +y Fp({)41 b Fm(SolveMap)f(*solvemap)34 b Fo(:)56 b(this)37 │ │ │ │ +b(ob)5 b(ject)37 b(con)n(tains)f(the)i(map)f(from)f(factor)h │ │ │ │ +(submatrices)f(to)h(their)g(o)n(wning)390 1854 y(pro)r(cessors.)301 │ │ │ │ +1974 y Fp({)k Fm(DV)i(*cumopsDV)24 b Fo(:)k(this)h(ob)5 │ │ │ │ +b(ject)27 b(is)h(formed)g(when)g(the)g(map)g(from)f(fron)n(ts)h(to)f(o) │ │ │ │ +n(wning)g(pro)r(cessors)f(is)i(created.)390 2073 y(Its)37 │ │ │ │ +b(size)g(is)f Fm(nthread)e Fo(and)j(con)n(tains)f(the)h(op)r(erations)f │ │ │ │ +(that)h(eac)n(h)f(thread)g(will)h(p)r(erform)f(during)h(a)f(direct)390 │ │ │ │ +2173 y(factorization)26 b(without)i(piv)n(oting.)301 │ │ │ │ 2293 y Fp({)41 b Fm(IV)i(*vtxmapIV)24 b Fo(:)k(this)g(ob)5 │ │ │ │ b(ject)27 b(con)n(tains)g(the)h(map)f(from)g(v)n(ertices)g(to)g(their)h │ │ │ │ (o)n(wning)e(pro)r(cessors.)301 2412 y Fp({)41 b Fm(IV)i(*rowmapIV)31 │ │ │ │ b Fo(:)j(this)h(ob)5 b(ject)34 b(con)n(tains)g(the)g(map)h(from)f(ro)n │ │ │ │ (ws)f(to)h(their)g(o)n(wning)g(pro)r(cessors)e(during)i(the)390 │ │ │ │ 2512 y(solv)n(e.)i(This)27 b(ma)n(y)g(b)r(e)h(di\013eren)n(t)g(from)f │ │ │ │ Fm(vtxmapIV)e Fo(if)j(piv)n(oting)f(is)g(enabled.)301 │ │ │ │ @@ -9747,19 +9764,19 @@ │ │ │ │ Fo(:)99 b(distribute)28 b(rhs)2257 5020 y Fm(cpus[17])d │ │ │ │ Fo(:)99 b(create)27 b(solution)g(matrix)2257 5120 y Fm(cpus[18])e │ │ │ │ Fo(:)99 b(solv)n(e)2257 5220 y Fm(cpus[19])25 b Fo(:)99 │ │ │ │ b(gather)27 b(solution)2257 5319 y Fm(cpus[20])e Fo(:)99 │ │ │ │ b(p)r(erm)n(ute)28 b(solution)2257 5419 y Fm(cpus[21])d │ │ │ │ Fo(:)99 b(total)28 b(solv)n(e)e(time)p eop end │ │ │ │ %%Page: 32 34 │ │ │ │ -TeXDict begin 32 33 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(32)0 │ │ │ │ -390 y Fe(5.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)58 │ │ │ │ -b Fd(BridgeMPI)40 b Fe(metho)t(ds)0 597 y Fo(This)32 │ │ │ │ +TeXDict begin 32 33 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(32)0 390 y Fe(5.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ +(of)58 b Fd(BridgeMPI)40 b Fe(metho)t(ds)0 597 y Fo(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 │ │ │ │ Fm(BridgeMPI)0 697 y Fo(ob)5 b(ject.)0 954 y Fb(5.3.1)112 │ │ │ │ b(Basic)38 b(metho)s(ds)0 1132 y Fo(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 1232 y(data,)27 b(and)h(free'ing)f(the)h(ob)5 │ │ │ │ @@ -9810,21 +9827,21 @@ │ │ │ │ (\))k(;)208 4561 y Fo(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 Fm(BridgeMPI)p 2351 │ │ │ │ 4561 V 27 w(clearData\(\))c Fo(and)k(then)h(free)f(the)g(space)g(for) │ │ │ │ 208 4660 y Fm(bridge)p Fo(.)208 4793 y Fg(R)l(eturn)28 │ │ │ │ b(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 │ │ │ │ b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)p eop end │ │ │ │ %%Page: 33 35 │ │ │ │ -TeXDict begin 33 34 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(33)0 │ │ │ │ -390 y Fb(5.3.2)112 b(Instance)38 b(metho)s(ds)101 568 │ │ │ │ -y Fo(1.)k Fm(int)g(BridgeMPI_oldToN)o(ew)o(IV)37 b(\()43 │ │ │ │ -b(BridgeMPI)d(*bridge,)h(IV)h(**pobj)f(\))j(;)208 701 │ │ │ │ -y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ +TeXDict begin 33 34 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(33)0 390 y Fb(5.3.2)112 b(Instance)38 b(metho)s(ds)101 │ │ │ │ +568 y Fo(1.)k Fm(int)g(BridgeMPI_oldToN)o(ew)o(IV)37 │ │ │ │ +b(\()43 b(BridgeMPI)d(*bridge,)h(IV)h(**pobj)f(\))j(;)208 │ │ │ │ +701 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ Fm(oldToNewIV)d Fo(p)r(oin)n(ter.)208 834 y Fg(R)l(eturn)k(value:)38 │ │ │ │ b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)101 1000 y(2.)42 │ │ │ │ b Fm(int)g(BridgeMPI_newToO)o(ld)o(IV)37 b(\()43 b(BridgeMPI)d │ │ │ │ (*bridge,)h(IV)h(**pobj)f(\))j(;)208 1133 y Fo(This)27 │ │ │ │ b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f Fm(newToOldIV)d │ │ │ │ @@ -9890,24 +9907,25 @@ │ │ │ │ 5018 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e │ │ │ │ Fo(with)i(its)f Fm(ownedColumnsIV)22 b Fo(p)r(oin)n(ter.)208 │ │ │ │ 5151 y Fg(R)l(eturn)28 b(value:)38 b Fo(1)27 b(for)g(a)g(normal)g │ │ │ │ (return,)g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p │ │ │ │ Fo(.)e(-2)h(if)34 b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)p │ │ │ │ eop end │ │ │ │ %%Page: 34 36 │ │ │ │ -TeXDict begin 34 35 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(34)60 │ │ │ │ -390 y(12.)41 b Fm(int)h(BridgeMPI_Xloc)c(\()43 b(BridgeMPI)d(*bridge,)g │ │ │ │ -(DenseMtx)g(**pobj)h(\))j(;)208 523 y Fo(This)27 b(metho)r(d)h(\014lls) │ │ │ │ -g Fm(*pobj)e Fo(with)i(its)f Fm(Xloc)f Fo(p)r(oin)n(ter.)208 │ │ │ │ -656 y Fg(R)l(eturn)i(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ -(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ -b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)60 822 y(13.)41 │ │ │ │ -b Fm(int)h(BridgeMPI_Yloc)c(\()43 b(BridgeMPI)d(*bridge,)g(DenseMtx)g │ │ │ │ +TeXDict begin 34 35 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(34)60 390 y(12.)41 b Fm(int)h(BridgeMPI_Xloc)c(\()43 │ │ │ │ +b(BridgeMPI)d(*bridge,)g(DenseMtx)g(**pobj)h(\))j(;)208 │ │ │ │ +523 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ +Fm(Xloc)f Fo(p)r(oin)n(ter.)208 656 y Fg(R)l(eturn)i(value:)38 │ │ │ │ +b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ +Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ +Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)60 822 y(13.)41 b │ │ │ │ +Fm(int)h(BridgeMPI_Yloc)c(\()43 b(BridgeMPI)d(*bridge,)g(DenseMtx)g │ │ │ │ (**pobj)h(\))j(;)208 955 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fm(*pobj)e Fo(with)i(its)f Fm(Yloc)f Fo(p)r(oin)n(ter.)208 │ │ │ │ 1088 y Fg(R)l(eturn)i(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)60 1254 y(14.)41 │ │ │ │ b Fm(int)h(BridgeMPI_nproc)37 b(\()43 b(BridgeMPI)d(*bridge,)h(int)h │ │ │ │ (*pnproc)f(\))i(;)208 1386 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ @@ -9955,19 +9973,19 @@ │ │ │ │ y Fg(R)l(eturn)g(value:)1099 4938 y Fo(1)99 b(normal)27 │ │ │ │ b(return)1071 5037 y(-1)99 b Fm(bridge)25 b Fo(is)j Fm(NULL)1071 │ │ │ │ 5137 y Fo(-2)99 b Fm(maxdomainsize)23 b Fc(\024)k Fo(0)2096 │ │ │ │ 4987 y(-3)98 b Fm(maxsize)25 b Fc(\024)i Fo(0)2096 5087 │ │ │ │ y(-4)98 b Fm(compressCutoff)22 b Fj(>)28 b Fo(1)p eop │ │ │ │ end │ │ │ │ %%Page: 35 37 │ │ │ │ -TeXDict begin 35 36 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(35)101 │ │ │ │ -390 y(4.)42 b Fm(int)g(BridgeMPI_setFac)o(to)o(rPa)o(ra)o(ms)37 │ │ │ │ -b(\()43 b(BridgeMPI)d(*bridge,)g(int)j(sparsityflag,)38 │ │ │ │ +TeXDict begin 35 36 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(35)101 390 y(4.)42 b Fm(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 Fo(This)27 b(metho)r(d)h(sets)g(parameters)d(needed)j(for)f(the)h │ │ │ │ (factorization.)208 756 y Fg(R)l(eturn)g(value:)1135 │ │ │ │ 933 y Fo(1)99 b(normal)27 b(return)1107 1033 y(-1)99 │ │ │ │ b Fm(bridge)25 b Fo(is)j Fm(NULL)1107 1132 y Fo(-2)99 │ │ │ │ b Fm(sparsityflag)23 b Fo(is)k(in)n(v)-5 b(alid)1107 │ │ │ │ @@ -10022,18 +10040,18 @@ │ │ │ │ Fo(parameter)h(can)h(b)r(e)h(one)f(of)h(four)f(v)-5 b(alues:)307 │ │ │ │ 4725 y Ff(\210)42 b Fo(1)27 b(|)h(wrap)f(map)307 4858 │ │ │ │ y Ff(\210)42 b Fo(2)27 b(|)h(balanced)f(map)307 4991 │ │ │ │ y Ff(\210)42 b Fo(3)27 b(|)h(subtree-subset)f(map)307 │ │ │ │ 5124 y Ff(\210)42 b Fo(4)27 b(|)h(domain)f(decomp)r(osition)g(map)p │ │ │ │ eop end │ │ │ │ %%Page: 36 38 │ │ │ │ -TeXDict begin 36 37 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(36)208 │ │ │ │ -390 y(The)22 b(wrap)g(map)h(and)g(balanced)f(map)g(are)g(not)h │ │ │ │ +TeXDict begin 36 37 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(36)208 390 y(The)c(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 │ │ │ │ Fm(cutoff)f Fo(parameter)g(in)i([0)p Fj(;)14 b Fo(1])32 │ │ │ │ @@ -10112,18 +10130,18 @@ │ │ │ │ (--)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 Fo(37)p eop end │ │ │ │ %%Page: 38 40 │ │ │ │ -TeXDict begin 38 39 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(38)479 │ │ │ │ -390 y Fm("\\n)391 b(mtxFile)41 b(rhsFile)g(seed")479 │ │ │ │ +TeXDict begin 38 39 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(38)479 390 y Fm("\\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 │ │ │ │ 1088 y("\\n)130 b(type)173 b(--)42 b(type)g(of)h(entries")479 │ │ │ │ @@ -10158,19 +10176,19 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(39)349 │ │ │ │ -390 y Fm("\\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 │ │ │ │ +TeXDict begin 39 40 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(39)349 390 y Fm("\\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 │ │ │ │ 1287 y(read)h(in)g(the)h(matrix)131 1386 y(----------------)o(--)0 │ │ │ │ 1486 y(*/)0 1586 y(mtxA)f(=)h(InpMtx_new\(\))c(;)0 1685 │ │ │ │ @@ -10203,47 +10221,48 @@ │ │ │ │ (--)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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(40)0 │ │ │ │ -390 y Fm(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 │ │ │ │ -1088 y(})0 1187 y(fprintf\(msgFile,)d("\\n\\n)k(-----)h(SETUP)g │ │ │ │ -(-----\\n"\))d(;)0 1287 y(fprintf\(msgFile,)349 1386 │ │ │ │ -y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(construct)c(Graph")349 │ │ │ │ -1486 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(compress)d │ │ │ │ -(Graph")349 1586 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h │ │ │ │ -(order)e(Graph")349 1685 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f │ │ │ │ -(for)g(symbolic)e(factorization")349 1785 y("\\n)i(CPU)g(\0458.3f)g(:)h │ │ │ │ -(total)f(setup)f(time\\n",)349 1885 y(bridge->cpus[0])o(,)d │ │ │ │ -(bridge->cpus[1])o(,)349 1984 y(bridge->cpus[2])o(,)g(bridge->cpus[3])o │ │ │ │ -(,)g(bridge->cpus[4])o(\))g(;)0 2084 y(rc)43 b(=)g(Bridge_factorSta)o │ │ │ │ -(ts)o(\(br)o(id)o(ge,)37 b(type,)k(symmetryflag,)d(&nfront,)1046 │ │ │ │ -2183 y(&nfind,)j(&nfent,)f(&nsolveops,)f(&nfactorops\))g(;)0 │ │ │ │ -2283 y(if)k(\()g(rc)g(!=)f(1)i(\))f({)131 2383 y(fprintf\(stderr,)479 │ │ │ │ -2482 y("\\n)g(error)e(return)g(\045d)i(from)f(Bridge_factorSta)o(ts\()o │ │ │ │ -(\)")o(,)c(rc\))k(;)131 2582 y(exit\(-1\))e(;)0 2682 │ │ │ │ -y(})0 2781 y(fprintf\(msgFile,)349 2881 y("\\n\\n)h(factor)g(matrix)g │ │ │ │ -(statistics")349 2980 y("\\n)h(\045d)h(fronts,)d(\045d)j(indices,)e │ │ │ │ -(\045d)h(entries")349 3080 y("\\n)g(\045d)h(solve)e(operations,)e │ │ │ │ -(\04512.4e)i(factor)h(operations",)349 3180 y(nfront,)e(nfind,)h │ │ │ │ -(nfent,)h(nsolveops,)d(nfactorops\))g(;)0 3279 y(fflush\(msgFile\))e(;) │ │ │ │ -0 3379 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 3479 y(/*)131 3578 y(----------------)o(-)131 │ │ │ │ +TeXDict begin 40 41 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(40)0 390 y Fm(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 1088 y(})0 1187 │ │ │ │ +y(fprintf\(msgFile,)d("\\n\\n)k(-----)h(SETUP)g(-----\\n"\))d(;)0 │ │ │ │ +1287 y(fprintf\(msgFile,)349 1386 y("\\n)173 b(CPU)42 │ │ │ │ +b(\0458.3f)g(:)h(time)f(to)h(construct)c(Graph")349 1486 │ │ │ │ +y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(compress)d(Graph")349 │ │ │ │ +1586 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(order)e(Graph") │ │ │ │ +349 1685 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(for)g(symbolic)e │ │ │ │ +(factorization")349 1785 y("\\n)i(CPU)g(\0458.3f)g(:)h(total)f(setup)f │ │ │ │ +(time\\n",)349 1885 y(bridge->cpus[0])o(,)d(bridge->cpus[1])o(,)349 │ │ │ │ +1984 y(bridge->cpus[2])o(,)g(bridge->cpus[3])o(,)g(bridge->cpus[4])o │ │ │ │ +(\))g(;)0 2084 y(rc)43 b(=)g(Bridge_factorSta)o(ts)o(\(br)o(id)o(ge,)37 │ │ │ │ +b(type,)k(symmetryflag,)d(&nfront,)1046 2183 y(&nfind,)j(&nfent,)f │ │ │ │ +(&nsolveops,)f(&nfactorops\))g(;)0 2283 y(if)k(\()g(rc)g(!=)f(1)i(\))f │ │ │ │ +({)131 2383 y(fprintf\(stderr,)479 2482 y("\\n)g(error)e(return)g │ │ │ │ +(\045d)i(from)f(Bridge_factorSta)o(ts\()o(\)")o(,)c(rc\))k(;)131 │ │ │ │ +2582 y(exit\(-1\))e(;)0 2682 y(})0 2781 y(fprintf\(msgFile,)349 │ │ │ │ +2881 y("\\n\\n)h(factor)g(matrix)g(statistics")349 2980 │ │ │ │ +y("\\n)h(\045d)h(fronts,)d(\045d)j(indices,)e(\045d)h(entries")349 │ │ │ │ +3080 y("\\n)g(\045d)h(solve)e(operations,)e(\04512.4e)i(factor)h │ │ │ │ +(operations",)349 3180 y(nfront,)e(nfind,)h(nfent,)h(nsolveops,)d │ │ │ │ +(nfactorops\))g(;)0 3279 y(fflush\(msgFile\))e(;)0 3379 │ │ │ │ +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 3479 y(/*)131 3578 y(----------------)o(-)131 │ │ │ │ 3678 y(factor)k(the)h(matrix)131 3778 y(----------------)o(-)0 │ │ │ │ 3877 y(*/)0 3977 y(permuteflag)d(=)k(1)g(;)0 4076 y(rc)g(=)g │ │ │ │ (Bridge_factor\(br)o(id)o(ge,)37 b(mtxA,)k(permuteflag,)e(&error\))i(;) │ │ │ │ 0 4176 y(if)i(\()g(rc)g(==)f(1)i(\))f({)131 4276 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(factorization)d(completed)i(successfully\\n"\))d(;)0 │ │ │ │ 4375 y(})43 b(else)f({)131 4475 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n)42 b(return)f(code)h(from)g(factorization)c(=)43 │ │ │ │ @@ -10253,20 +10272,20 @@ │ │ │ │ (-----\\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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(41)349 │ │ │ │ -390 y Fm("\\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 │ │ │ │ +TeXDict begin 41 42 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(41)349 390 y Fm("\\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 │ │ │ │ y("\\n)i(\045d)h(entries)d(in)j(D,)g(\045d)g(entries)d(in)j(L,)g(\045d) │ │ │ │ g(entries)d(in)j(U",)349 1088 y(bridge->stats[0)o(],)37 │ │ │ │ b(bridge->stats[1],)g(bridge->stats[2])o(,)349 1187 y(bridge->stats[3)o │ │ │ │ @@ -10308,24 +10327,24 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(42)131 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 42 43 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(42)131 390 y Fm(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 │ │ │ │ b(;)262 1287 y(exit\(-1\))j(;)131 1386 y(})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(-)131 │ │ │ │ 1885 y(free)i(the)g(working)f(data)131 1984 y(----------------)o(--)o │ │ │ │ (--)o(-)0 2084 y(*/)0 2183 y(InpMtx_free\(mtxA)o(\))d(;)0 │ │ │ │ 2283 y(DenseMtx_free\(mt)o(xX\))f(;)0 2383 y(DenseMtx_free\(mt)o(xY\))g │ │ │ │ @@ -10363,24 +10382,24 @@ │ │ │ │ (---)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 Fo(43)p │ │ │ │ eop end │ │ │ │ %%Page: 44 46 │ │ │ │ -TeXDict begin 44 45 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(44)131 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 44 45 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(44)131 390 y Fm(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 │ │ │ │ 1088 y("\\n)130 b(msgFile)40 b(--)j(message)e(file")392 │ │ │ │ 1187 y("\\n)130 b(neqns)e(--)43 b(#)g(of)g(equations")392 │ │ │ │ 1287 y("\\n)130 b(type)172 b(--)43 b(type)f(of)h(entries")392 │ │ │ │ 1386 y("\\n)261 b(1)43 b(--)f(real")392 1486 y("\\n)261 │ │ │ │ b(2)43 b(--)f(complex")392 1586 y("\\n)130 b(symmetryflag)38 │ │ │ │ b(--)43 b(symmetry)d(flag")392 1685 y("\\n)261 b(0)43 │ │ │ │ b(--)f(symmetric")392 1785 y("\\n)261 b(1)43 b(--)f(hermitian")392 │ │ │ │ @@ -10411,19 +10430,19 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(45)349 │ │ │ │ -390 y Fm("\\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 │ │ │ │ +TeXDict begin 45 46 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(45)349 390 y Fm("\\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(/*--------------) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ @@ -10457,19 +10476,19 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(46)131 │ │ │ │ -390 y Fm(create)41 b(and)h(setup)g(a)h(BridgeMT)d(object)131 │ │ │ │ -490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)0 │ │ │ │ +TeXDict begin 46 47 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(46)131 390 y Fm(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 │ │ │ │ 1088 y(if)h(\()g(rc)g(!=)f(1)i(\))f({)131 1187 y(fprintf\(stderr,)37 │ │ │ │ b("\\n)42 b(error)g(return)f(\045d)i(from)f(BridgeMT_setup\(\))o(",)37 │ │ │ │ @@ -10506,28 +10525,28 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(47)479 │ │ │ │ -390 y Fm("\\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 │ │ │ │ -(--)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 1287 y(factor)k(the)h(matrix)131 │ │ │ │ -1386 y(----------------)o(-)0 1486 y(*/)0 1586 y(permuteflag)83 │ │ │ │ +TeXDict begin 47 48 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(47)479 390 y Fm("\\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(--)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 1287 y(factor)k(the)h(matrix) │ │ │ │ +131 1386 y(----------------)o(-)0 1486 y(*/)0 1586 y(permuteflag)83 │ │ │ │ b(=)43 b(1)g(;)0 1685 y(rc)g(=)g(BridgeMT_factor\()o(br)o(idg)o(e,)37 │ │ │ │ b(mtxA,)42 b(permuteflag,)c(&error\))j(;)0 1785 y(if)i(\()g(rc)g(==)f │ │ │ │ (1)i(\))f({)131 1885 y(fprintf\(msgFile,)37 b("\\n\\n)k(factorization)d │ │ │ │ (completed)i(successfully\\n"\))d(;)0 1984 y(})43 b(else)f({)131 │ │ │ │ 2084 y(fprintf\(msgFile,)479 2183 y("\\n)h(return)e(code)h(from)g │ │ │ │ (factorization)c(=)43 b(\045d\\n")479 2283 y("\\n)g(error)e(code)914 │ │ │ │ b(=)43 b(\045d\\n",)479 2383 y(rc,)g(error\))e(;)131 │ │ │ │ @@ -10555,20 +10574,20 @@ │ │ │ │ (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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(48)0 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 48 49 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(48)0 390 y Fm(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 │ │ │ │ 988 y(/*)131 1088 y(----------------)131 1187 y(solve)k(the)i(system) │ │ │ │ 131 1287 y(----------------)0 1386 y(*/)0 1486 y(mtxX)f(=)h │ │ │ │ (DenseMtx_new\(\))38 b(;)0 1586 y(DenseMtx_init\(mt)o(xX,)f(type,)k(0,) │ │ │ │ @@ -10606,21 +10625,21 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(49)262 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 49 50 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(49)262 390 y Fm(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 │ │ │ │ (;)0 1586 y(BridgeMT_free\(br)o(idg)o(e\))g(;)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 1984 y(return\(1\))j(;)j(})0 2183 y(/*--------------)o(---)o(--) │ │ │ │ @@ -10658,24 +10677,24 @@ │ │ │ │ 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 Fo(50)p │ │ │ │ eop end │ │ │ │ %%Page: 51 53 │ │ │ │ -TeXDict begin 51 52 bop 83 100 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(51)0 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 51 52 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(51)0 390 y Fm(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 │ │ │ │ 1187 y(*/)0 1287 y(if)i(\()g(argc)f(!=)h(10)f(\))i({)131 │ │ │ │ 1386 y(fprintf\(stdout,)479 1486 y("\\n\\n)e(usage)f(:)j(\045s)e │ │ │ │ (msglvl)g(msgFile)e(neqns)i(type)g(symmetryflag")479 │ │ │ │ 1586 y("\\n)391 b(mtxFile)41 b(rhsFile)g(solFile)g(seed")479 │ │ │ │ 1685 y("\\n)130 b(msglvl)85 b(--)42 b(message)f(level")479 │ │ │ │ 1785 y("\\n)261 b(0)43 b(--)g(no)f(output")479 1885 y("\\n)261 │ │ │ │ b(1)43 b(--)g(timings)d(and)j(statistics")479 1984 y("\\n)261 │ │ │ │ @@ -10706,36 +10725,36 @@ │ │ │ │ ("\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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(52)131 │ │ │ │ -390 y Fm(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(:") │ │ │ │ -349 1486 y("\\n)h(msglvl)303 b(=)43 b(\045d")349 1586 │ │ │ │ -y("\\n)f(msgFile)259 b(=)43 b(\045s")349 1685 y("\\n)f(neqns)347 │ │ │ │ -b(=)43 b(\045d")349 1785 y("\\n)f(type)391 b(=)43 b(\045d")349 │ │ │ │ -1885 y("\\n)f(symmetryflag)d(=)k(\045d")349 1984 y("\\n)f(mtxFile)259 │ │ │ │ -b(=)43 b(\045s")349 2084 y("\\n)f(rhsFile)259 b(=)43 │ │ │ │ -b(\045s")349 2183 y("\\n)f(solFile)259 b(=)43 b(\045s")349 │ │ │ │ -2283 y("\\n",)349 2383 y(argv[0],)d(msglvl,)h(argv[2],)f(neqns,)h │ │ │ │ -(type,)h(symmetryflag,)349 2482 y(mtxFileName,)c(rhsFileName,)h │ │ │ │ -(solFileName\))g(;)0 2582 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 2682 y(/*)131 2781 │ │ │ │ -y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)131 │ │ │ │ +TeXDict begin 52 53 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(52)131 390 y Fm(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(:")349 1486 y("\\n)h(msglvl)303 │ │ │ │ +b(=)43 b(\045d")349 1586 y("\\n)f(msgFile)259 b(=)43 │ │ │ │ +b(\045s")349 1685 y("\\n)f(neqns)347 b(=)43 b(\045d")349 │ │ │ │ +1785 y("\\n)f(type)391 b(=)43 b(\045d")349 1885 y("\\n)f(symmetryflag)d │ │ │ │ +(=)k(\045d")349 1984 y("\\n)f(mtxFile)259 b(=)43 b(\045s")349 │ │ │ │ +2084 y("\\n)f(rhsFile)259 b(=)43 b(\045s")349 2183 y("\\n)f(solFile)259 │ │ │ │ +b(=)43 b(\045s")349 2283 y("\\n",)349 2383 y(argv[0],)d(msglvl,)h │ │ │ │ +(argv[2],)f(neqns,)h(type,)h(symmetryflag,)349 2482 y(mtxFileName,)c │ │ │ │ +(rhsFileName,)h(solFileName\))g(;)0 2582 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 2682 y(/*)131 │ │ │ │ +2781 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)131 │ │ │ │ 2881 y(processor)h(zero)i(reads)f(in)i(the)f(matrix.)131 │ │ │ │ 2980 y(if)h(an)f(error)g(is)h(found,)131 3080 y(all)f(processors)e │ │ │ │ (exit)h(cleanly)131 3180 y(----------------)o(--)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(---)o(--)0 3279 y(*/)0 3379 y(if)i(\()g(myid)f(!=)h(0)g(\))g({) │ │ │ │ 131 3479 y(mtxA)f(=)h(NULL)f(;)0 3578 y(})h(else)f({)0 │ │ │ │ 3678 y(/*)131 3778 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)131 3877 │ │ │ │ @@ -10752,20 +10771,20 @@ │ │ │ │ (--)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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(53)0 │ │ │ │ -390 y Fm(*/)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 │ │ │ │ +TeXDict begin 53 54 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(53)0 390 y Fm(*/)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 │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(--)131 1287 │ │ │ │ y(processor)h(zero)i(reads)f(in)i(the)f(right)g(hand)g(side)g(matrix.) │ │ │ │ 131 1386 y(if)h(an)f(error)g(is)h(found,)e(all)h(processors)d(exit)j │ │ │ │ @@ -10800,20 +10819,20 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(54)0 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 54 55 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(54)0 390 y Fm(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 │ │ │ │ (SETUP)f(-----\\n")349 1386 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f │ │ │ │ (to)h(construct)c(Graph")349 1486 y("\\n)173 b(CPU)42 │ │ │ │ b(\0458.3f)g(:)h(time)f(to)h(compress)d(Graph")349 1586 │ │ │ │ @@ -10850,20 +10869,20 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(55)0 │ │ │ │ -390 y Fm(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 │ │ │ │ +TeXDict begin 55 56 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(55)0 390 y Fm(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) │ │ │ │ e(over)k(processors"\))c(;)131 988 y(DV_writeForHuman)o(Ey)o(e\()o(bri) │ │ │ │ o(dg)o(e->)o(cu)o(mop)o(sD)o(V,)f(msgFile\))j(;)131 1088 │ │ │ │ y(fflush\(msgFile\))d(;)0 1187 y(})0 1287 y(/*--------------)o(---)o │ │ │ │ @@ -10907,29 +10926,29 @@ │ │ │ │ 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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(56)0 │ │ │ │ -390 y Fm(/*--------------)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 │ │ │ │ -y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel)f │ │ │ │ -(solve",)349 1287 y(bridge->cpus[14)o(]\))d(;)0 1386 │ │ │ │ -y(if)43 b(\()g(rc)g(!=)f(1)i(\))f({)131 1486 y(fprintf\(stderr,)479 │ │ │ │ -1586 y("\\n)g(error)e(return)g(\045d)i(from)f(BridgeMPI_solveS)o(etu)o │ │ │ │ -(p\()o(\)",)37 b(rc\))42 b(;)131 1685 y(MPI_Finalize\(\))c(;)131 │ │ │ │ +TeXDict begin 56 57 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(56)0 390 y Fm(/*--------------)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 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f │ │ │ │ +(to)h(setup)e(parallel)f(solve",)349 1287 y(bridge->cpus[14)o(]\))d(;)0 │ │ │ │ +1386 y(if)43 b(\()g(rc)g(!=)f(1)i(\))f({)131 1486 y(fprintf\(stderr,) │ │ │ │ +479 1586 y("\\n)g(error)e(return)g(\045d)i(from)f(BridgeMPI_solveS)o │ │ │ │ +(etu)o(p\()o(\)",)37 b(rc\))42 b(;)131 1685 y(MPI_Finalize\(\))c(;)131 │ │ │ │ 1785 y(exit\(-1\))i(;)0 1885 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(/*)131 │ │ │ │ 2183 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(-)131 2283 y(processor)g(0)j(initializes)c(a)k(DenseMtx)d │ │ │ │ (object)131 2383 y(to)j(hold)e(the)i(global)e(solution)f(matrix)131 │ │ │ │ 2482 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -10958,18 +10977,18 @@ │ │ │ │ (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 760 4 v 925 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Octob)r(er)27 b(18,)g(2025)p 3060 100 V 760 w Fo(57)349 │ │ │ │ -390 y Fm(bridge->cpus[15)o(],)37 b(bridge->cpus[16],)g │ │ │ │ +TeXDict begin 57 58 bop 83 100 724 4 v 890 100 a Fp(SPOOLES)31 │ │ │ │ +b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p 3095 100 V 724 │ │ │ │ +w Fo(57)349 390 y Fm(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 │ │ │ │ 1187 y(fprintf\(msgFile)o(,)37 b("\\n\\n)42 b(solution)e(matrix)h(in)i │ │ │ │ ├── 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 │ │ │ │ │ - October 18, 2025 │ │ │ │ │ + November 15, 2025 │ │ │ │ │ 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 : October 18, 2025 2 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 4 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 6 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 7 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 8 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 : October 18, 2025 9 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : November 15, 2025 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 ) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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 ) ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 12 │ │ │ │ │ - • Decode the input. │ │ │ │ │ - msglvl = atoi(argv[1]) ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 13 │ │ │ │ │ + • Create and setup the Bridge object. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 14 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 15 │ │ │ │ │ - 3.3 Prototypes and descriptions of Bridge methods │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 16 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 17 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 19 │ │ │ │ │ - 4.1 Aquick look at the multithreaded driver program │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 20 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 21 │ │ │ │ │ - 4.2 The BridgeMT Data Structure │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 22 │ │ │ │ │ + entries and are used in the solves. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 23 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 24 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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: │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 25 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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: │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 26 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 28 │ │ │ │ │ - 5.1 Aquick look at the MPI driver program │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 29 │ │ │ │ │ - • Create and setup the BridgeMPI object. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 30 │ │ │ │ │ - 5.2 The BridgeMPI Data Structure │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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. │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 32 │ │ │ │ │ - 5.3 Prototypes and descriptions of BridgeMPI methods │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 33 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 34 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 35 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 36 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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) ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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" │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 39 │ │ │ │ │ - "\n solFile = %s" │ │ │ │ │ - "\n seed = %d" │ │ │ │ │ + "\n mtxFile = %s" │ │ │ │ │ + "\n rhsFile = %s" │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ + -------------------------------- │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 40 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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" │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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" │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 ) { │ │ │ │ │ /* │ │ │ │ │ - ----------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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) ; │ │ │ │ │ - } │ │ │ │ │ + ----------------------------------- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 44 │ │ │ │ │ - fprintf(stdout, │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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" │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 45 │ │ │ │ │ - "\n type = %d" │ │ │ │ │ + "\n msglvl = %d" │ │ │ │ │ + "\n msgFile = %s" │ │ │ │ │ + "\n neqns = %d" │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - ---------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 46 │ │ │ │ │ - create and setup a BridgeMT object │ │ │ │ │ - ---------------------------------- │ │ │ │ │ + ---------------------------------- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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, │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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, │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ + ------------------------ │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 48 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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) ; │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 51 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - } │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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) ; │ │ │ │ │ + } │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ │ - --------------------------------------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 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 │ │ │ │ │ + --------------------------------------------------------------- │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 54 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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]) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 55 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 56 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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", │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : October 18, 2025 57 │ │ │ │ │ + SPOOLES2.2 Wrapper Objects : November 15, 2025 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Lock.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1516,23 +1516,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1706,90 +1705,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3001,16 +3009,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 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ -1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +/CMTI10 rf /Fd 137[48 3[36 2[45 1[76 7[40 2[51 19[68 │ │ │ │ +19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fe tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3118,17 +3126,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 1130 4 v │ │ │ │ -1311 w Fg(Lock)30 b Fd(:)40 b Fc(DRAFT)30 b Fd(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 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 1090 4 v │ │ │ │ +1272 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 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 │ │ │ │ @@ -3186,22 +3194,22 @@ │ │ │ │ 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 1130 4 v 1311 100 a Fg(Lock)29 │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Octob)s(er)30 b(18,)i(2025)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 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1090 4 v 1272 100 a Fg(Lock)29 │ │ │ │ +b Fd(:)41 b Fc(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 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 │ │ │ │ 198 1289 29 4 v 33 w(clearData\(\))p Fh(,)28 b(2)0 1402 │ │ │ │ y Fg(Lock)p 198 1402 V 33 w(free\(\))p Fh(,)h(2)0 1515 │ │ │ │ y Fg(Lock)p 198 1515 V 33 w(init\(\))p Fh(,)g(2)0 1628 │ │ │ │ y Fg(Lock)p 198 1628 V 33 w(lock\(\))p Fh(,)g(2)0 1741 │ │ │ │ y Fg(Lock)p 198 1741 V 33 w(new\(\))p Fh(,)g(2)0 1854 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Lock : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Lock : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o MPI.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1745 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1207,23 +1207,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1397,90 +1396,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4896,16 +4904,16 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 175[88 80[{}1 83.022 /CMEX10 rf /Fb 152[42 │ │ │ │ 42 69[83 28[42 65 2[{}5 83.022 /CMSY10 rf /Fc 175[62 │ │ │ │ -2[62 3[62 73[{}3 119.552 /CMTT12 rf /Fd 139[32 1[33 2[42 │ │ │ │ -9[37 1[37 46 18[65 20[23 1[42 2[42 2[42 42 42 3[23 44[{}14 │ │ │ │ +2[62 3[62 73[{}3 119.552 /CMTT12 rf /Fd 137[44 3[33 2[42 │ │ │ │ +1[69 7[37 2[46 19[62 19[23 4[42 2[42 42 42 3[23 44[{}13 │ │ │ │ 83.022 /CMSL10 rf /Fe 132[48 59[45 63[{}2 83.022 /CMBX10 │ │ │ │ rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ @@ -5055,25 +5063,26 @@ │ │ │ │ y Ff(\210)42 b Fl(symflag)24 b Fn(|)k(symmetry)f(\015ag)g(for)g │ │ │ │ Fh(A)301 5278 y Fe({)41 b Fn(0)27 b(\()p Fl(SPOOLES)p │ │ │ │ 804 5278 V 29 w(SYMMETRIC)p Fn(\))d({)k(symmetric)f(matrix)301 │ │ │ │ 5407 y Fe({)41 b Fn(1)27 b(\()p Fl(SPOOLES)p 804 5407 │ │ │ │ V 29 w(HERMITIAN)p Fn(\))d({)k(hermitian)f(matrix)1929 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 301 390 a Fe({)41 b Fn(2)27 b(\()p Fl(SPOOLES)p │ │ │ │ -804 390 27 4 v 29 w(NONSYMMETRIC)p Fn(\))c({)k(nonsymmetric)g(matrix) │ │ │ │ -125 559 y Ff(\210)42 b Fl(opflag)25 b Fn(|)i(op)r(eration)g(\015ag)g │ │ │ │ -(for)g(the)h(m)n(ultiply)301 728 y Fe({)41 b Fn(0)27 │ │ │ │ -b(\()p Fl(MMM)p 628 728 V 31 w(WITH)p 835 728 V 30 w(A)p │ │ │ │ -Fn(\))g(|)h(p)r(erform)f Fh(Y)42 b Fn(:=)22 b Fh(Y)37 │ │ │ │ -b Fn(+)18 b Fh(\013AX)301 862 y Fe({)41 b Fn(1)27 b(\()p │ │ │ │ -Fl(MMM)p 628 862 V 31 w(WITH)p 835 862 V 30 w(AT)p Fn(\))g(|)g(p)r │ │ │ │ -(erform)g Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1915 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 301 390 a Fe({)41 b Fn(2)27 b(\()p │ │ │ │ +Fl(SPOOLES)p 804 390 27 4 v 29 w(NONSYMMETRIC)p Fn(\))c({)k │ │ │ │ +(nonsymmetric)g(matrix)125 559 y Ff(\210)42 b Fl(opflag)25 │ │ │ │ +b Fn(|)i(op)r(eration)g(\015ag)g(for)g(the)h(m)n(ultiply)301 │ │ │ │ +728 y Fe({)41 b Fn(0)27 b(\()p Fl(MMM)p 628 728 V 31 │ │ │ │ +w(WITH)p 835 728 V 30 w(A)p Fn(\))g(|)h(p)r(erform)f │ │ │ │ +Fh(Y)42 b Fn(:=)22 b Fh(Y)37 b Fn(+)18 b Fh(\013AX)301 │ │ │ │ +862 y Fe({)41 b Fn(1)27 b(\()p Fl(MMM)p 628 862 V 31 │ │ │ │ +w(WITH)p 835 862 V 30 w(AT)p Fn(\))g(|)g(p)r(erform)g │ │ │ │ +Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1915 │ │ │ │ 832 y Fg(T)1968 862 y Fh(X)301 996 y Fe({)41 b Fn(2)27 │ │ │ │ b(\()p Fl(MMM)p 628 996 V 31 w(WITH)p 835 996 V 30 w(AH)p │ │ │ │ Fn(\))g(|)g(p)r(erform)g Fh(Y)42 b Fn(:=)23 b Fh(Y)37 │ │ │ │ b Fn(+)18 b Fh(\013A)1915 966 y Fg(H)1979 996 y Fh(X)125 │ │ │ │ 1165 y Ff(\210)42 b Fl(IV)g(*XownedIV)24 b Fn(|)k(list)g(of)f(ro)n(ws)f │ │ │ │ (of)i Fh(X)34 b Fn(that)28 b(are)e(o)n(wned)h(b)n(y)h(this)g(pro)r │ │ │ │ (cessor,)d(these)j(form)f(the)h(ro)n(ws)e(of)i Fh(X)3645 │ │ │ │ @@ -5145,17 +5154,17 @@ │ │ │ │ b(based)h(on)f(the)h Fl(mapIV)d Fn(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 Fl(nproc)f Fn(consecutiv)n(e)h(tags)h(|)g │ │ │ │ (the)h(\014rst)f(is)g(the)h(parameter)208 5407 y Fl(firsttag)p │ │ │ │ Fn(.)33 b(On)28 b(return,)f(the)h Fl(stats[])d Fn(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 1227 4 v 1393 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1191 4 v 1357 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ b(of)g(messages)e(sen)n(t)344 b Fl(stats[1])96 b Fn(|)k(#)28 │ │ │ │ b(of)f(b)n(ytes)g(sen)n(t)556 477 y Fl(stats[2])97 b │ │ │ │ Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 b Fl(stats[3])96 │ │ │ │ b Fn(|)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 Fl(stats[])c Fn(are)j Fm(incr)l(emente)l(d)p │ │ │ │ Fn(,)g(i.e.,)h(the)g Fl(stats[])c Fn(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) │ │ │ │ @@ -5253,17 +5262,17 @@ │ │ │ │ Fn(v)n(ector)j(con)n(tains)f(the)i(follo)n(wing)f(information.)556 │ │ │ │ 5319 y Fl(stats[0])97 b Fn(|)i(#)28 b(of)g(messages)e(sen)n(t)344 │ │ │ │ b Fl(stats[1])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t)556 │ │ │ │ 5419 y Fl(stats[2])97 b Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 │ │ │ │ b Fl(stats[3])96 b Fn(|)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 Fn(4)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 208 390 a Fn(Note,)g(the)h(v)-5 b(alues)27 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 208 390 a Fn(Note,)g(the)h(v)-5 b(alues)27 │ │ │ │ b(in)h Fl(stats[])c Fn(are)j Fm(incr)l(emente)l(d)p Fn(,)g(i.e.,)h(the) │ │ │ │ g Fl(stats[])c Fn(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 Fm(Err)l(or)38 b(che)l(cking:)55 b Fn(If)37 b Fl(firsttag)j(<)j │ │ │ │ (0)36 b Fn(or)f Fl(firsttag)40 b(+)j(nproc)35 b Fn(is)g(larger)g(than)h │ │ │ │ (the)g(largest)f(a)n(v)-5 b(ailable)35 b(tag,)i(an)208 │ │ │ │ @@ -5351,17 +5360,17 @@ │ │ │ │ Fn(or)f Fl(rowmapIV)e Fn(is)j Fl(NULL)p Fn(,)f(or)h(if)h │ │ │ │ Fl(msglvl)41 b(>)i(0)28 b Fn(and)g Fl(msgFile)e Fn(is)i │ │ │ │ Fl(NULL)p Fn(,)f(or)g(if)i Fl(firsttag)40 b(<)208 5407 │ │ │ │ y(0)27 b Fn(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 1227 4 v 1393 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fn(5)0 390 y Fj(1.2.2)112 b(Gather)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1191 4 v 1357 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fn(5)0 390 y Fj(1.2.2)112 b(Gather)38 │ │ │ │ b(and)h(scatter)e(metho)s(ds)0 568 y Fn(These)24 b(metho)r(d)g(gather)f │ │ │ │ (and)h(scatter/add)e(ro)n(ws)h(of)h Fl(DenseMtx)c Fn(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 Fh(X)2150 638 │ │ │ │ y Fg(q)2143 688 y(supp)2309 668 y Fb( )23 b Fh(X)i Fn(is)18 │ │ │ │ b(p)r(erformed)g(b)n(y)g Fl(DenseMtx)p 3434 668 27 4 │ │ │ │ @@ -5443,24 +5452,25 @@ │ │ │ │ 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 Fn(6)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ -(place)f(of)h(the)g Fl(Symbfac)p 1907 390 27 4 v 28 w(initFrom)p │ │ │ │ -Fb(f)p Fl(InpMtx,P)o(en)o(cil)o Fb(g)p Fl(\()o(\))14 │ │ │ │ -b Fn(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 Fl(ETree)e Fn(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 Fl(InpMtx)208 589 y Fn(and)i Fl(Pencil)e │ │ │ │ -Fn(ob)5 b(jects)30 b(are)f(partitioned)h(among)f(the)i(pro)r(cesses.)44 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e(used)i │ │ │ │ +(in)g(place)f(of)h(the)g Fl(Symbfac)p 1907 390 27 4 v │ │ │ │ +28 w(initFrom)p Fb(f)p Fl(InpMtx,P)o(en)o(cil)o Fb(g)p │ │ │ │ +Fl(\()o(\))14 b Fn(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 Fl(ETree)e Fn(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 Fl(InpMtx)208 589 y Fn(and)i Fl(Pencil)e Fn(ob)5 b(jects)30 │ │ │ │ +b(are)f(partitioned)h(among)f(the)i(pro)r(cesses.)44 │ │ │ │ b(Therefore,)30 b(to)g(compute)h(the)f Fl(IVL)g Fn(ob)5 │ │ │ │ b(ject)30 b(that)208 689 y(con)n(tains)g(the)h(sym)n(b)r(olic)g │ │ │ │ (factorization)f(is)h(a)g(distributed,)h(co)r(op)r(erativ)n(e)e(pro)r │ │ │ │ (cess.)46 b(A)n(t)32 b(the)f(end)h(of)f(the)h(sym)n(b)r(olic)208 │ │ │ │ 789 y(factorization,)c(eac)n(h)h(pro)r(cess)g(will)h(o)n(wn)f(a)g(p)r │ │ │ │ (ortion)g(of)h(the)g Fl(IVL)f Fn(ob)5 b(ject.)43 b(The)29 │ │ │ │ b Fl(IVL)g Fn(ob)5 b(ject)29 b(is)h(neither)g(replicated)208 │ │ │ │ @@ -5541,17 +5551,17 @@ │ │ │ │ 2075 5070 y Fl(cpus[9])118 b Fn({)99 b(p)r(ost)28 b(initial)g(receiv)n │ │ │ │ (es)2053 5170 y Fl(cpus[10])96 b Fn({)j(c)n(hec)n(k)27 │ │ │ │ b(for)g(receiv)n(ed)f(messages)2053 5269 y Fl(cpus[11])96 │ │ │ │ b Fn({)j(p)r(ost)28 b(initial)g(sends)2053 5369 y Fl(cpus[12])96 │ │ │ │ b Fn({)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 1227 4 v 1393 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fn(7)208 390 y(On)g(return,)g(the)h │ │ │ │ +TeXDict begin 7 6 bop 83 100 1191 4 v 1357 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fn(7)208 390 y(On)h(return,)g(the)h │ │ │ │ Fl(stats[])d Fn(v)n(ector)h(has)h(the)h(follo)n(wing)f(information.)963 │ │ │ │ 563 y Fl(stats[0])118 b Fn(|)100 b(#)28 b(of)f(piv)n(ots)963 │ │ │ │ 663 y Fl(stats[1])118 b Fn(|)100 b(#)28 b(of)f(piv)n(ot)h(tests)963 │ │ │ │ 762 y Fl(stats[2])118 b Fn(|)100 b(#)28 b(of)f(dela)n(y)n(ed)g(ro)n(ws) │ │ │ │ f(and)i(columns)963 862 y Fl(stats[3])118 b Fn(|)100 │ │ │ │ b(#)28 b(of)f(en)n(tries)g(in)h(D)963 962 y Fl(stats[4])118 │ │ │ │ b Fn(|)100 b(#)28 b(of)f(en)n(tries)g(in)h(L)963 1061 │ │ │ │ @@ -5633,19 +5643,19 @@ │ │ │ │ 5308 y Fn(After)19 b(a)g(factorization)f(with)i(piv)n(oting,)g(the)f │ │ │ │ Fl(frontsizesIV)c Fn(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 │ │ │ │ Fl(IV)g Fn(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 Fl(ownersIV)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1227 4 v │ │ │ │ -1392 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(Octob)r(er)e(18,)h(2025)p │ │ │ │ -2673 100 V 208 390 a Fn(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 │ │ │ │ -Fl(IV)g Fn(ob)5 b(ject)33 b(is)f(presen)n(t)g(on)208 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1191 4 v │ │ │ │ +1357 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(No)n(v)n(em)n(b)r(er)f(15,)h │ │ │ │ +(2025)p 2709 100 V 208 390 a Fn(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 Fl(IV)g Fn(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 Fl(nproc)d Fn(consecutiv)n(e)i(tags)g(|)h(the)g │ │ │ │ (\014rst)f(is)h(the)g(parameter)208 589 y Fl(firsttag)p │ │ │ │ Fn(.)208 740 y Fm(Err)l(or)28 b(che)l(cking:)38 b Fn(If)26 │ │ │ │ b Fl(iv)p Fn(,)g Fl(ownersIV)d Fn(or)i Fl(stats)f Fn(is)h │ │ │ │ Fl(NULL)p Fn(,)g(or)g(if)h Fl(firsttag)41 b(<)i(0)25 │ │ │ │ b Fn(or)g Fl(firsttag)41 b(+)i(nproc)p Fn(,)24 b(is)i(larger)208 │ │ │ │ @@ -5719,17 +5729,17 @@ │ │ │ │ Fl(firsttag)208 5308 y(<)43 b(0)30 b Fn(or)f Fl(firsttag)40 │ │ │ │ b(+)j(2*nfront)27 b Fn(is)j(larger)f(than)h(the)h(largest)d(a)n(v)-5 │ │ │ │ b(ailable)29 b(tag,)i(or)e(if)i Fl(msglvl)41 b(>)i(0)30 │ │ │ │ b Fn(and)g Fl(msgFile)208 5407 y Fn(is)d Fl(NULL)p Fn(,)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 1227 4 v 1393 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2634 100 V 1227 w Fn(9)0 390 y Fj(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ +TeXDict begin 9 8 bop 83 100 1191 4 v 1357 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(No)n(v)n(em)n(b)r(er)27 b(15,)f(2025)p │ │ │ │ +2669 100 V 1191 w Fn(9)0 390 y Fj(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ b(m)m(ultiply)f(metho)s(ds)0 573 y Fn(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 Ff(\210)42 │ │ │ │ b Fn(Set)28 b(up)f(the)h(data)g(structure)f(via)g(a)g(call)g(to)h │ │ │ │ Fl(MatMul)p 1887 771 27 4 v 28 w(MPI)p 2047 771 V 31 │ │ │ │ w(setup\(\))p Fn(.)125 946 y Ff(\210)42 b Fn(Con)n(v)n(ert)26 │ │ │ │ b(the)i(lo)r(cal)f Fh(A)925 916 y Fg(q)989 946 y Fn(matrix)g(to)h(lo)r │ │ │ │ (cal)f(indices)g(via)h(a)f(call)g(to)g Fl(MatMul)p 2557 │ │ │ │ @@ -5804,28 +5814,29 @@ │ │ │ │ (in)g(the)h Fl(info)e Fn(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 Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ b Fn(If)28 b Fl(info)e Fn(or)h Fl(A)g Fn(is)h Fl(NULL)p │ │ │ │ Fn(,)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 Fn(10)p 166 100 1206 4 │ │ │ │ -v 1371 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2694 100 V 101 390 a Fn(3.)42 b Fl(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 Fn(This)35 │ │ │ │ -b(metho)r(d)g(computes)g(a)g(distributed)h(matrix-matrix)e(m)n(ultiply) │ │ │ │ -h Fh(Y)55 b Fn(:=)35 b Fh(Y)42 b Fn(+)23 b Fh(\013AX)7 │ │ │ │ -b Fn(,)37 b Fh(Y)55 b Fn(:=)35 b Fh(Y)42 b Fn(+)23 b │ │ │ │ -Fh(\013A)3662 593 y Fg(T)3715 623 y Fh(X)42 b Fn(or)208 │ │ │ │ -723 y Fh(Y)k Fn(:=)28 b Fh(Y)39 b Fn(+)21 b Fh(\013A)706 │ │ │ │ -692 y Fg(H)769 723 y Fh(X)7 b Fn(,)31 b(dep)r(ending)g(on)g(ho)n(w)f │ │ │ │ -(the)h Fl(info)e Fn(ob)5 b(ject)30 b(w)n(as)g(set)h(up.)46 │ │ │ │ -b(NOTE:)30 b Fl(A)h Fn(m)n(ust)f(ha)n(v)n(e)g(lo)r(cal)g(indices,)208 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1171 4 │ │ │ │ +v 1335 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(No)n(v)n(em)n(b)r(er)e(15,)h │ │ │ │ +(2025)p 2730 100 V 101 390 a Fn(3.)42 b Fl(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 Fn(This)35 b(metho)r(d)g(computes)g(a)g(distributed)h │ │ │ │ +(matrix-matrix)e(m)n(ultiply)h Fh(Y)55 b Fn(:=)35 b Fh(Y)42 │ │ │ │ +b Fn(+)23 b Fh(\013AX)7 b Fn(,)37 b Fh(Y)55 b Fn(:=)35 │ │ │ │ +b Fh(Y)42 b Fn(+)23 b Fh(\013A)3662 593 y Fg(T)3715 623 │ │ │ │ +y Fh(X)42 b Fn(or)208 723 y Fh(Y)k Fn(:=)28 b Fh(Y)39 │ │ │ │ +b Fn(+)21 b Fh(\013A)706 692 y Fg(H)769 723 y Fh(X)7 │ │ │ │ +b Fn(,)31 b(dep)r(ending)g(on)g(ho)n(w)f(the)h Fl(info)e │ │ │ │ +Fn(ob)5 b(ject)30 b(w)n(as)g(set)h(up.)46 b(NOTE:)30 │ │ │ │ +b Fl(A)h Fn(m)n(ust)f(ha)n(v)n(e)g(lo)r(cal)g(indices,)208 │ │ │ │ 822 y(use)i Fl(MatMul)p 625 822 27 4 v 29 w(setLocalIndices\()o(\))27 │ │ │ │ b Fn(to)32 b(con)n(v)n(ert)f(from)i(global)e(to)i(lo)r(cal)f(indices.) │ │ │ │ 52 b Fl(Xloc)31 b Fn(and)i Fl(Yloc)e Fn(con)n(tain)h(the)208 │ │ │ │ 922 y(o)n(wned)27 b(ro)n(ws)f(of)h Fh(X)34 b Fn(and)28 │ │ │ │ b Fh(Y)18 b Fn(,)28 b(resp)r(ectiv)n(ely)-7 b(.)208 1055 │ │ │ │ y(On)27 b(return,)g(the)h(follo)n(wing)f(statistics)g(will)h(ha)n(v)n │ │ │ │ (e)e(b)r(een)i(added.)556 1249 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ @@ -5894,17 +5905,17 @@ │ │ │ │ (p)r(oin)n(ter)f(to)h(its)g Fl(IV)f Fn(ob)5 b(ject.)37 │ │ │ │ b(A)28 b(no)r(de)g(other)f(than)h Fl(root)p Fn(,)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 Fm(Err)l(or)i(che)l(cking:)38 │ │ │ │ b Fn(None)28 b(presen)n(tly)-7 b(.)p eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 83 100 1206 4 v 1372 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2613 100 V 1206 w Fn(11)0 390 y Fj(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1171 4 v 1336 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2649 100 V 1171 w Fn(11)0 390 y Fj(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)101 565 y Fn(1.)k Fl(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 Fn(These)37 b(metho)r(ds)h(are)f(used)h(to)g(return)g(an)f │ │ │ │ @@ -5988,24 +5999,25 @@ │ │ │ │ y Fn(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 │ │ │ │ Fl([tag,tag+nproc-1\))o Fn(.)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 Fn(12)p 166 100 1206 │ │ │ │ -4 v 1371 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2694 100 V 556 377 a Fl(stats[0])97 b Fn(|)i(#)28 b(of)g(messages)e │ │ │ │ -(sen)n(t)344 b Fl(stats[1])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t) │ │ │ │ -556 477 y Fl(stats[2])97 b Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed) │ │ │ │ -198 b Fl(stats[3])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 │ │ │ │ -688 y(This)g(metho)r(d)h(is)g Fm(safe)g Fn(in)g(the)g(sense)f(that)h │ │ │ │ -(it)g(uses)f(only)h Fl(MPI)p 2162 688 27 4 v 30 w(Sendrecv\(\))p │ │ │ │ -Fn(.)208 829 y Fm(Err)l(or)35 b(che)l(cking:)50 b Fn(If)34 │ │ │ │ -b Fl(sendIVL)c Fn(or)i Fl(stats)f Fn(is)j Fl(NULL)p Fn(,)d(or)i(if)g │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 166 100 1171 │ │ │ │ +4 v 1335 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(No)n(v)n(em)n(b)r(er)e(15,) │ │ │ │ +h(2025)p 2730 100 V 556 377 a Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ +b(of)g(messages)e(sen)n(t)344 b Fl(stats[1])96 b Fn(|)k(#)28 │ │ │ │ +b(of)f(b)n(ytes)g(sen)n(t)556 477 y Fl(stats[2])97 b │ │ │ │ +Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 b Fl(stats[3])96 │ │ │ │ +b Fn(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 688 y(This)g(metho)r(d) │ │ │ │ +h(is)g Fm(safe)g Fn(in)g(the)g(sense)f(that)h(it)g(uses)f(only)h │ │ │ │ +Fl(MPI)p 2162 688 27 4 v 30 w(Sendrecv\(\))p Fn(.)208 │ │ │ │ +829 y Fm(Err)l(or)35 b(che)l(cking:)50 b Fn(If)34 b Fl(sendIVL)c │ │ │ │ +Fn(or)i Fl(stats)f Fn(is)j Fl(NULL)p Fn(,)d(or)i(if)g │ │ │ │ Fl(msglvl)41 b(>)j(0)33 b Fn(and)g Fl(msgFile)d Fn(is)j │ │ │ │ Fl(NULL)p Fn(,)f(or)g(if)i Fl(tag)42 b(<)h(0)208 928 │ │ │ │ y Fn(or)28 b Fl(tag)43 b(+)g(nproc)27 b Fn(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 Fl(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 │ │ │ │ @@ -6067,17 +6079,17 @@ │ │ │ │ 208 4893 y(en)n(tries)j(from)g(\014le)i Fl(matrix.)m │ │ │ │ Fh(q)s Fl(.input)c Fn(and)j(righ)n(t)f(hand)h(side)g(en)n(tries)f(from) │ │ │ │ h(\014le)g Fl(rhs.)o Fh(q)s Fl(.input)m Fn(.)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 Fl(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 1206 4 v 1372 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2613 100 V 1206 w Fn(13)208 390 y(where)j Fl(neqns)g │ │ │ │ +TeXDict begin 13 12 bop 83 100 1171 4 v 1336 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2649 100 V 1171 w Fn(13)208 390 y(where)j Fl(neqns)g │ │ │ │ Fn(is)h(the)h(global)e(n)n(um)n(b)r(er)i(of)f(equations)g(and)g │ │ │ │ Fl(nent)f Fn(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 Fl(nent)h │ │ │ │ Fn(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 │ │ │ │ @@ -6152,27 +6164,27 @@ │ │ │ │ y Fl(nrow)i Fn(lines,)i(eac)n(h)f(con)n(taining)g(a)h(ro)n(w)f(index)h │ │ │ │ (and)g(either)g Fl(nrhs)e Fn(or)i Fl(2*nrhs)d Fn(\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 Fl(do)p 1997 5407 27 4 v 31 w(patchAndGo)d │ │ │ │ Fn(for)j(testing.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1206 │ │ │ │ -4 v 1371 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2694 100 V 307 390 a Ff(\210)42 b Fn(The)23 b Fl(msglvl)e │ │ │ │ -Fn(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output.)36 │ │ │ │ -b(Use)23 b Fl(msglvl)41 b(=)i(1)23 b Fn(for)g(just)g(timing)g(output.) │ │ │ │ -307 528 y Ff(\210)42 b Fn(The)32 b Fl(msgFile)c Fn(parameter)i │ │ │ │ -(determines)h(the)h(message)e(\014le)i(|)f(if)h Fl(msgFile)d │ │ │ │ -Fn(is)i Fl(stdout)p Fn(,)f(then)i(the)g(message)390 628 │ │ │ │ -y(\014le)c(is)f Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r │ │ │ │ -(ened)f(with)i Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g │ │ │ │ -(output)h(data.)307 766 y Ff(\210)42 b Fn(The)28 b Fl(type)e │ │ │ │ -Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g(linear)g │ │ │ │ -(system.)456 904 y Fe({)41 b Fl(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1171 │ │ │ │ +4 v 1335 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(No)n(v)n(em)n(b)r(er)e(15,) │ │ │ │ +h(2025)p 2730 100 V 307 390 a Ff(\210)42 b Fn(The)23 │ │ │ │ +b Fl(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ +(output.)36 b(Use)23 b Fl(msglvl)41 b(=)i(1)23 b Fn(for)g(just)g │ │ │ │ +(timing)g(output.)307 528 y Ff(\210)42 b Fn(The)32 b │ │ │ │ +Fl(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ +(if)h Fl(msgFile)d Fn(is)i Fl(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ +628 y(\014le)c(is)f Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ +(op)r(ened)f(with)i Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ +(y)g(output)h(data.)307 766 y Ff(\210)42 b Fn(The)28 │ │ │ │ +b Fl(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ +(linear)g(system.)456 904 y Fe({)41 b Fl(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ 1295 904 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 1023 │ │ │ │ y Fe({)41 b Fl(type)h(=)i(2)f(\(SPOOLES)p 1295 1023 V │ │ │ │ 28 w(COMPLEX\))24 b Fn(for)j(complex.)307 1161 y Ff(\210)42 │ │ │ │ b Fn(The)28 b Fl(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ h(symmetry)f(of)h(the)g(matrix.)456 1299 y Fe({)41 b │ │ │ │ Fl(type)h(=)i(0)f(\(SPOOLES)p 1295 1299 V 28 w(SYMMETRIC\))23 │ │ │ │ b Fn(for)k Fh(A)h Fn(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ @@ -6244,17 +6256,17 @@ │ │ │ │ Fl(X)p Fn(.)307 5131 y Ff(\210)42 b Fl(inc1)26 b Fn(is)i(the)g(ro)n(w)e │ │ │ │ (incremen)n(t)h(for)g Fl(X)p Fn(.)307 5269 y Ff(\210)42 │ │ │ │ b Fl(inc2)26 b Fn(is)i(the)g(column)f(incremen)n(t)h(for)f │ │ │ │ Fl(X)p Fn(.)307 5407 y Ff(\210)42 b Fn(The)28 b Fl(seed)e │ │ │ │ Fn(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 1206 4 v 1372 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2613 100 V 1206 w Fn(15)101 390 y(4.)42 b Fl(testGraph_Bcast)37 │ │ │ │ +TeXDict begin 15 14 bop 83 100 1171 4 v 1336 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2649 100 V 1171 w Fn(15)101 390 y(4.)42 b Fl(testGraph_Bcast)37 │ │ │ │ b(msglvl)k(msgFile)g(type)h(nvtx)g(nitem)f(root)h(seed)208 │ │ │ │ 528 y Fn(This)35 b(driv)n(er)g(program)f(tests)h(the)h(distributed)h │ │ │ │ Fl(Graph)p 2007 528 27 4 v 29 w(MPI)p 2168 528 V 30 w(Bcast\(\))c │ │ │ │ Fn(metho)r(d.)62 b(Pro)r(cessor)33 b Fl(root)h Fn(generates)g(a)208 │ │ │ │ 628 y(random)g(graph)f(of)i(t)n(yp)r(e)g Fl(type)f Fn(\(see)g(the)i(do) │ │ │ │ r(cumen)n(tation)e(for)h(the)g Fl(Graph)e Fn(ob)5 b(ject)35 │ │ │ │ b(in)g(c)n(hapter)f Fe(??)p Fn(\))h(with)h Fl(nvtx)208 │ │ │ │ @@ -6346,34 +6358,35 @@ │ │ │ │ b Fn(The)29 b Fl(type)e Fn(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 Fl(1)h Fn(for)f(real)g(and)g Fl(2)390 5270 y Fn(for)f(complex.)307 │ │ │ │ 5407 y Ff(\210)42 b Fn(The)28 b Fl(symmetryflag)23 b │ │ │ │ Fn(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 Fn(16)p 166 100 1206 │ │ │ │ -4 v 1371 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2694 100 V 456 390 a Fe({)41 b Fn(Use)f Fl(0)g Fn(for)f(a)g(real)g(or)g │ │ │ │ -(complex)g(symmetric)g(matrix)g Fh(A)p Fn(.)74 b(A)40 │ │ │ │ -b(\()p Fh(U)2703 360 y Fg(T)2782 390 y Fn(+)26 b Fh(I)7 │ │ │ │ -b Fn(\))p Fh(D)r Fn(\()p Fh(I)34 b Fn(+)26 b Fh(U)9 b │ │ │ │ -Fn(\))40 b(factorization)e(is)545 490 y(computed.)456 │ │ │ │ -601 y Fe({)j Fn(Use)28 b Fl(1)f Fn(for)g(a)h(complex)f(Hermitian)g │ │ │ │ -(matrix)g Fh(A)p Fn(.)38 b(A)28 b(\()p Fh(U)2273 571 │ │ │ │ -y Fg(H)2354 601 y Fn(+)18 b Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p │ │ │ │ -Fh(I)26 b Fn(+)18 b Fh(U)9 b Fn(\))28 b(factorization)e(is)i(computed.) │ │ │ │ -456 713 y Fe({)41 b Fn(Use)36 b Fl(2)f Fn(for)g(a)h(real)e(or)h │ │ │ │ -(complex)g(nonsymmetric)g(matrix)g Fh(A)p Fn(.)62 b(A)36 │ │ │ │ -b(\()p Fh(L)23 b Fn(+)g Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p │ │ │ │ -Fh(I)32 b Fn(+)23 b Fh(U)9 b Fn(\))36 b(factorization)e(is)545 │ │ │ │ -812 y(computed.)307 936 y Ff(\210)42 b Fn(The)31 b Fl(sparsityflag)26 │ │ │ │ -b Fn(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 Fl(0)390 1035 y Fn(for)e(a)g(direct)h(factorization)e(and)i │ │ │ │ -Fl(1)f Fn(is)g(for)g(an)h(appro)n(ximate)e(factorization.)307 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 166 100 1171 │ │ │ │ +4 v 1335 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(No)n(v)n(em)n(b)r(er)e(15,) │ │ │ │ +h(2025)p 2730 100 V 456 390 a Fe({)41 b Fn(Use)f Fl(0)g │ │ │ │ +Fn(for)f(a)g(real)g(or)g(complex)g(symmetric)g(matrix)g │ │ │ │ +Fh(A)p Fn(.)74 b(A)40 b(\()p Fh(U)2703 360 y Fg(T)2782 │ │ │ │ +390 y Fn(+)26 b Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p Fh(I)34 │ │ │ │ +b Fn(+)26 b Fh(U)9 b Fn(\))40 b(factorization)e(is)545 │ │ │ │ +490 y(computed.)456 601 y Fe({)j Fn(Use)28 b Fl(1)f Fn(for)g(a)h │ │ │ │ +(complex)f(Hermitian)g(matrix)g Fh(A)p Fn(.)38 b(A)28 │ │ │ │ +b(\()p Fh(U)2273 571 y Fg(H)2354 601 y Fn(+)18 b Fh(I)7 │ │ │ │ +b Fn(\))p Fh(D)r Fn(\()p Fh(I)26 b Fn(+)18 b Fh(U)9 b │ │ │ │ +Fn(\))28 b(factorization)e(is)i(computed.)456 713 y Fe({)41 │ │ │ │ +b Fn(Use)36 b Fl(2)f Fn(for)g(a)h(real)e(or)h(complex)g(nonsymmetric)g │ │ │ │ +(matrix)g Fh(A)p Fn(.)62 b(A)36 b(\()p Fh(L)23 b Fn(+)g │ │ │ │ +Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p Fh(I)32 b Fn(+)23 b Fh(U)9 │ │ │ │ +b Fn(\))36 b(factorization)e(is)545 812 y(computed.)307 │ │ │ │ +936 y Ff(\210)42 b Fn(The)31 b Fl(sparsityflag)26 b Fn(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 Fl(0)390 1035 │ │ │ │ +y Fn(for)e(a)g(direct)h(factorization)e(and)i Fl(1)f │ │ │ │ +Fn(is)g(for)g(an)h(appro)n(ximate)e(factorization.)307 │ │ │ │ 1158 y Ff(\210)42 b Fn(The)29 b Fl(pivotingflag)24 b │ │ │ │ Fn(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 Fl(0)g Fn(for)g(no)h(piv)n(oting)f(and)g │ │ │ │ Fl(1)g Fn(to)h(enable)f(piv)n(oting.)307 1381 y Ff(\210)42 │ │ │ │ b Fn(The)30 b Fl(tau)f Fn(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 │ │ │ │ @@ -6454,17 +6467,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 Fl(MPI)p 1835 5279 V 31 w(Alltoallv\(\))c Fn(metho)r(d.)208 │ │ │ │ 5407 y(Use)k(the)h(script)f(\014le)h Fl(do)p 968 5407 │ │ │ │ V 31 w(IVL)p 1131 5407 V 30 w(alltoall)c Fn(for)j(testing.)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 83 100 1206 4 v 1372 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2613 100 V 1206 w Fn(17)307 390 y Ff(\210)42 b Fn(The)23 │ │ │ │ +TeXDict begin 17 16 bop 83 100 1171 4 v 1336 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2649 100 V 1171 w Fn(17)307 390 y Ff(\210)42 b Fn(The)23 │ │ │ │ b Fl(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ (output.)36 b(Use)23 b Fl(msglvl)41 b(=)i(1)23 b Fn(for)g(just)g │ │ │ │ (timing)g(output.)307 524 y Ff(\210)42 b Fn(The)32 b │ │ │ │ Fl(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fl(msgFile)d Fn(is)i Fl(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ 624 y(\014le)c(is)f Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ @@ -6563,44 +6576,45 @@ │ │ │ │ y Ff(\210)42 b Fn(The)32 b Fl(msgFile)c Fn(parameter)i(determines)h │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fl(msgFile)d Fn(is)i │ │ │ │ Fl(stdout)p Fn(,)f(then)i(the)g(message)390 5407 y(\014le)c(is)f │ │ │ │ Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ Fm(app)l(end)g Fn(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 Fn(18)p 166 100 1206 │ │ │ │ -4 v 1371 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2694 100 V 307 390 a Ff(\210)42 b Fn(The)28 b Fl(nrowA)d │ │ │ │ -Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(ro)n(ws)e(in)i │ │ │ │ -Fh(A)p Fn(.)307 524 y Ff(\210)42 b Fn(The)28 b Fl(ncolA)d │ │ │ │ -Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f(in)h │ │ │ │ -Fh(A)p Fn(.)307 658 y Ff(\210)42 b Fn(The)28 b Fl(nentA)d │ │ │ │ -Fn(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 Fh(A)p Fn(.)307 792 y Ff(\210)42 │ │ │ │ -b Fn(The)28 b Fl(nrowX)d Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f │ │ │ │ -(of)h(ro)n(ws)e(in)i Fh(X)7 b Fn(.)307 926 y Ff(\210)42 │ │ │ │ -b Fn(The)24 b Fl(coordType)c Fn(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 Fl(1)g Fn(for)g(ro)n(ws,)f Fl(2)i Fn(for)f(columns)g(and)g │ │ │ │ -Fl(3)h Fn(for)f(c)n(hevrons.)307 1160 y Ff(\210)42 b │ │ │ │ -Fn(The)26 b Fl(inputMode)d Fn(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 │ │ │ │ -Fl(1)g Fn(for)h(real)f(en)n(tries)g(and)h Fl(2)g Fn(for)390 │ │ │ │ -1260 y(complex)h(en)n(tries.)307 1394 y Ff(\210)42 b │ │ │ │ -Fn(The)c Fl(symflag)c Fn(parameter)i(sp)r(eci\014es)h(whether)h(the)f │ │ │ │ -(matrix)g(is)g(symmetric)g(\()p Fl(symflag)e Fn(=)i(0\),)j(Hermitian) │ │ │ │ -390 1493 y(\()p Fl(symflag)25 b Fn(=)j(1\))f(or)g(nonsymmetric)g(\()p │ │ │ │ -Fl(symflag)e Fn(=)i(2\))307 1627 y Ff(\210)42 b Fn(The)25 │ │ │ │ -b Fl(opflag)d Fn(parameter)h(sp)r(eci\014es)i(the)g(t)n(yp)r(e)g(of)g │ │ │ │ -(m)n(ultiply)-7 b(,)26 b Fl(0)e Fn(for)g Fh(Y)42 b Fn(:=)22 │ │ │ │ -b Fh(Y)32 b Fn(+)13 b Fh(\013AX)7 b Fn(,)24 b Fl(1)h │ │ │ │ -Fn(for)f Fh(Y)42 b Fn(:=)22 b Fh(Y)32 b Fn(+)13 b Fh(\013A)3773 │ │ │ │ -1597 y Fg(T)3825 1627 y Fh(X)390 1727 y Fn(or)27 b Fl(2)g │ │ │ │ -Fn(for)g Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1174 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 166 100 1171 │ │ │ │ +4 v 1335 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(No)n(v)n(em)n(b)r(er)e(15,) │ │ │ │ +h(2025)p 2730 100 V 307 390 a Ff(\210)42 b Fn(The)28 │ │ │ │ +b Fl(nrowA)d Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(ro)n(ws)e │ │ │ │ +(in)i Fh(A)p Fn(.)307 524 y Ff(\210)42 b Fn(The)28 b │ │ │ │ +Fl(ncolA)d Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f │ │ │ │ +(in)h Fh(A)p Fn(.)307 658 y Ff(\210)42 b Fn(The)28 b │ │ │ │ +Fl(nentA)d Fn(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 Fh(A)p Fn(.)307 792 y │ │ │ │ +Ff(\210)42 b Fn(The)28 b Fl(nrowX)d Fn(parameter)i(is)g(the)h(n)n(um)n │ │ │ │ +(b)r(er)f(of)h(ro)n(ws)e(in)i Fh(X)7 b Fn(.)307 926 y │ │ │ │ +Ff(\210)42 b Fn(The)24 b Fl(coordType)c Fn(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 Fl(1)g Fn(for)g(ro)n(ws,)f Fl(2)i │ │ │ │ +Fn(for)f(columns)g(and)g Fl(3)h Fn(for)f(c)n(hevrons.)307 │ │ │ │ +1160 y Ff(\210)42 b Fn(The)26 b Fl(inputMode)d Fn(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 Fl(1)g Fn(for)h(real)f(en)n(tries)g(and)h │ │ │ │ +Fl(2)g Fn(for)390 1260 y(complex)h(en)n(tries.)307 1394 │ │ │ │ +y Ff(\210)42 b Fn(The)c Fl(symflag)c Fn(parameter)i(sp)r(eci\014es)h │ │ │ │ +(whether)h(the)f(matrix)g(is)g(symmetric)g(\()p Fl(symflag)e │ │ │ │ +Fn(=)i(0\),)j(Hermitian)390 1493 y(\()p Fl(symflag)25 │ │ │ │ +b Fn(=)j(1\))f(or)g(nonsymmetric)g(\()p Fl(symflag)e │ │ │ │ +Fn(=)i(2\))307 1627 y Ff(\210)42 b Fn(The)25 b Fl(opflag)d │ │ │ │ +Fn(parameter)h(sp)r(eci\014es)i(the)g(t)n(yp)r(e)g(of)g(m)n(ultiply)-7 │ │ │ │ +b(,)26 b Fl(0)e Fn(for)g Fh(Y)42 b Fn(:=)22 b Fh(Y)32 │ │ │ │ +b Fn(+)13 b Fh(\013AX)7 b Fn(,)24 b Fl(1)h Fn(for)f Fh(Y)42 │ │ │ │ +b Fn(:=)22 b Fh(Y)32 b Fn(+)13 b Fh(\013A)3773 1597 y │ │ │ │ +Fg(T)3825 1627 y Fh(X)390 1727 y Fn(or)27 b Fl(2)g Fn(for)g │ │ │ │ +Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1174 │ │ │ │ 1697 y Fg(H)1237 1727 y Fh(X)7 b Fn(.)307 1861 y Ff(\210)42 │ │ │ │ b Fn(The)28 b Fl(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ (er)i(seed.)307 1995 y Ff(\210)42 b Fn(The)28 b Fl(real)e │ │ │ │ Fn(parameter)g(is)h(the)h(real)f(part)g(of)h(the)g(scalar)e │ │ │ │ Fh(\013)p Fn(.)307 2129 y Ff(\210)42 b Fn(The)28 b Fl(imag)e │ │ │ │ Fn(parameter)g(is)h(the)h(imaginary)e(part)i(of)f(the)h(scalar)e │ │ │ │ Fh(\013)p Fn(,)i(ignored)f(for)g(real)f(en)n(tries.)60 │ │ │ │ @@ -6663,17 +6677,17 @@ │ │ │ │ (timing)g(output.)307 5308 y Ff(\210)42 b Fn(The)32 b │ │ │ │ Fl(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fl(msgFile)d Fn(is)i Fl(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ 5407 y(\014le)c(is)f Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fm(app)l(end)g Fn(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 1206 4 v 1372 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2613 100 V 1206 w Fn(19)307 390 y Ff(\210)42 b Fn(The)28 │ │ │ │ +TeXDict begin 19 18 bop 83 100 1171 4 v 1336 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2649 100 V 1171 w Fn(19)307 390 y Ff(\210)42 b Fn(The)28 │ │ │ │ b Fl(neqns)d Fn(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 Ff(\210)42 │ │ │ │ b Fn(The)28 b Fl(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ (er)i(seed.)307 647 y Ff(\210)42 b Fn(The)24 b Fl(coordType)c │ │ │ │ Fn(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 Fl(1)g │ │ │ │ @@ -6766,19 +6780,19 @@ │ │ │ │ g Fl(IVL)208 5308 y Fn(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 Fl(Graph)e Fn(and)j │ │ │ │ Fl(ETree)d Fn(ob)5 b(jects.)60 b(Eac)n(h)35 b(pro)r(cessor)e(creates)i │ │ │ │ (a)g(global)f Fl(InpMtx)f Fn(ob)5 b(ject)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1206 │ │ │ │ -4 v 1371 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(18,)g(2025)p │ │ │ │ -2694 100 V 208 390 a Fn(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 Fl(SymbFac)p │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1171 │ │ │ │ +4 v 1335 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(No)n(v)n(em)n(b)r(er)e(15,) │ │ │ │ +h(2025)p 2730 100 V 208 390 a Fn(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 Fl(SymbFac)p │ │ │ │ 521 490 27 4 v 28 w(initFromInpMtx\(\))23 b Fn(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 Fl(InpMtx)e Fn(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 October 18, 2025 │ │ │ │ │ + 2 MPI : DRAFT November 15, 2025 │ │ │ │ │ – 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 October 18, 2025 3 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 MPI : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 MPI : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 MPI : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 MPI : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 MPI : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 MPI : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 15 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 MPI : DRAFT November 15, 2025 │ │ │ │ │ – 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 October 18, 2025 17 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 MPI : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 19 │ │ │ │ │ + MPI : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 MPI : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o MSMD.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1230,23 +1230,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1420,90 +1419,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5198,26 +5206,26 @@ │ │ │ │ 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 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ -18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 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 42 46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ -7[46 4[33 45[{}29 90.9091 /CMTI10 rf /Fl 206[35 49[{}1 │ │ │ │ -66.4176 /CMR8 rf │ │ │ │ +119.552 /CMBX12 rf /Fe 137[48 3[36 2[45 1[76 7[40 2[51 │ │ │ │ +19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 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 42 46 12[65 1[66 11[59 62 69 2[68 6[28 7[46 4[33 │ │ │ │ +45[{}29 90.9091 /CMTI10 rf /Fl 206[35 49[{}1 66.4176 │ │ │ │ +/CMR8 rf │ │ │ │ %DVIPSBitmapFont: Fm tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -5321,19 +5329,19 @@ │ │ │ │ 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 1135 4 v │ │ │ │ -1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(18,)g(2025)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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1096 4 v │ │ │ │ +1277 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2805 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 │ │ │ │ (it)i(will)0 760 y(b)s(e)e(eliminated.)141 896 y(Presen)m(tly)40 │ │ │ │ b(there)f(is)h(one)f(ordering)g(metho)s(d,)i Fn(MSMD)p │ │ │ │ @@ -5392,17 +5400,17 @@ │ │ │ │ (ob)5 b(ject.)137 5294 y Fm(\210)45 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 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2719 100 V 1135 w Fo(3)137 399 y Fm(\210)45 b Fn(MSMDstageInfo)25 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1096 4 v 1277 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2758 100 V 1096 w Fo(3)137 399 y Fm(\210)45 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.)137 │ │ │ │ 702 y Fm(\210)45 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 │ │ │ │ @@ -5462,22 +5470,22 @@ │ │ │ │ (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 1135 4 v │ │ │ │ -1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(18,)g(2025)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(.)137 625 y Fm(\210)45 │ │ │ │ -b Fn(int)i(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.)137 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1096 4 v │ │ │ │ +1277 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2805 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(.)137 │ │ │ │ +625 y Fm(\210)45 b Fn(int)i(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.)137 │ │ │ │ 964 y Fm(\210)45 b Fn(int)i(msglvl)33 b Fo({)i(message)g(lev)m(el)h │ │ │ │ (for)e(statistics,)k(diagnostics)e(and)d(monitoring.)54 │ │ │ │ b(The)33 b(default)i(v)-5 b(alue)35 b(is)227 1077 y(zero,)28 │ │ │ │ b(no)e(statistics.)41 b(Set)26 b Fn(msglvl)e Fo(to)j(one)f(and)f(get)i │ │ │ │ (elimination)g(monitoring.)40 b(Increase)26 b Fn(msglvl)e │ │ │ │ Fo(slo)m(wly)227 1190 y(to)31 b(get)h(more)e(mostly)h(debug)f │ │ │ │ (information.)137 1416 y Fm(\210)45 b Fn(FILE)i(*msgFile)28 │ │ │ │ @@ -5517,17 +5525,17 @@ │ │ │ │ Fo(ob)5 b(jects)31 b(that)g(represen)m(t)g(the)f(v)m(ertices.)137 │ │ │ │ 5181 y Fm(\210)45 b Fn(IV)i(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.)137 5407 y Fm(\210)45 b Fn(IV)i(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 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2719 100 V 1135 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1096 4 v 1277 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2758 100 V 1096 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.)137 838 y Fm(\210)45 │ │ │ │ b Fn(int)i(nstep)29 b Fo(|)h(n)m(um)m(b)s(er)f(of)i(elimination)h │ │ │ │ (steps)e(in)g(this)g(stage)137 1028 y Fm(\210)45 b Fn(int)i(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 │ │ │ │ @@ -5569,25 +5577,25 @@ │ │ │ │ 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 1135 4 v │ │ │ │ -1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(18,)g(2025)p │ │ │ │ -2766 100 V 137 399 a Fm(\210)45 b Fn(int)i(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.)137 │ │ │ │ -581 y Fm(\210)45 b Fn(int)i(wght)29 b Fo(|)i(w)m(eigh)m(t)g(of)g(the)g │ │ │ │ -(v)m(ertex)137 763 y Fm(\210)45 b Fn(int)i(nadj)29 b │ │ │ │ -Fo(|)i(size)g(of)f(the)h Fn(adj)e Fo(v)m(ector)137 945 │ │ │ │ -y Fm(\210)45 b Fn(int)i(*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 │ │ │ │ -(ered)g(adjacen)m(t)g(edges;)h(for)227 1058 y(an)e(eliminated)g(v)m │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1096 4 v │ │ │ │ +1277 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2805 100 V 137 399 a Fm(\210)45 b Fn(int)i(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.)137 581 y Fm(\210)45 b Fn(int)i(wght)29 b Fo(|)i(w)m(eigh)m(t)g │ │ │ │ +(of)g(the)g(v)m(ertex)137 763 y Fm(\210)45 b Fn(int)i(nadj)29 │ │ │ │ +b Fo(|)i(size)g(of)f(the)h Fn(adj)e Fo(v)m(ector)137 │ │ │ │ +945 y Fm(\210)45 b Fn(int)i(*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(ered)g(adjacen)m(t)g(edges;)h(for)227 1058 y(an)e(eliminated)g(v)m │ │ │ │ (ertex,)i Fn(adj)d Fo(p)s(oin)m(ts)g(p)s(oin)m(ts)g(to)i(a)f(list)g(of) │ │ │ │ g(its)f(b)s(oundary)f(v)m(ertices)j(\(only)f(v)-5 b(alid)28 │ │ │ │ b(when)f(the)227 1171 y(v)m(ertex)32 b(is)e(a)h(leaf)g(of)g(the)f │ │ │ │ (elimination)i(tree)f(or)f(a)h(ro)s(ot)g(of)f(a)h(subtree)f(of)h │ │ │ │ (uneliminated)f(v)m(ertices\).)137 1353 y Fm(\210)45 │ │ │ │ b Fn(int)i(bndwght)29 b Fo(|)h(for)g(an)g(eliminated)i(v)m(ertex,)f │ │ │ │ (the)g(w)m(eigh)m(t)h(of)e(the)h(v)m(ertices)h(on)e(its)h(b)s(oundary) │ │ │ │ @@ -5636,17 +5644,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 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2719 100 V 1135 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1096 4 v 1277 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2758 100 V 1096 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 │ │ │ │ @@ -5699,25 +5707,25 @@ │ │ │ │ (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 1135 4 v │ │ │ │ -1316 w Fn(MSMD)30 b Fe(:)g Fk(DRAFT)g Fe(Octob)s(er)h(18,)g(2025)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 │ │ │ │ -(tly)f(a)h Fk(private)g Fo(metho)s(d)e(for)h(the)h(ob)5 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1096 4 v │ │ │ │ +1277 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2805 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(tly)f(a)h Fk(private)g Fo(metho)s(d)e(for)h(the)h(ob)5 │ │ │ │ b(ject.)39 b(Ho)m(w)m(ev)m(er,)28 b(when)23 b(designing)i(more)227 │ │ │ │ 1211 y(complicated)34 b(ordering)e(metho)s(ds,)g(this)g(ob)5 │ │ │ │ b(ject)34 b(is)e(necessary)g(to)h(set)g(up)e(the)i(data)g(structures.) │ │ │ │ 45 b(There)227 1324 y(are)30 b(t)m(w)m(o)g(input)e(argumen)m(ts:)41 │ │ │ │ b Fn(graph)27 b Fo(is)i(a)h(p)s(oin)m(ter)f(to)h(a)f │ │ │ │ Fn(Graph)f Fo(ob)5 b(ject)30 b(that)g(holds)e(the)i(adjacency)f(lists) │ │ │ │ 227 1436 y(and)g(w)m(eigh)m(ts)h(of)g(the)f(v)m(ertices,)i(and)e │ │ │ │ @@ -5776,17 +5784,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 1135 4 v 1316 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2719 100 V 1135 w Fo(9)227 399 y(\014lls)i(the)h Fn(IV)f │ │ │ │ +TeXDict begin 9 8 bop 91 100 1096 4 v 1277 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2758 100 V 1096 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 │ │ │ │ @@ -5844,39 +5852,39 @@ │ │ │ │ 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 1112 4 │ │ │ │ -v 1294 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(18,)i(2025)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 │ │ │ │ -(prin)m(ted)g(and)h(the)f(program)h(exits.)111 993 y(7.)46 │ │ │ │ -b Fn(void)h(MSMD_cleanEdgeList)c(\()k(MSMD)g(*msmd,)f(MSMDvtx)g(*v,)h │ │ │ │ -(MSMD)f(*info)h(\))g(;)227 1141 y Fo(This)29 b(metho)s(d)h(cleans)g │ │ │ │ -(the)g(list)h(of)f(unco)m(v)m(ered)g(edges)g(for)g(v)m(ertex)h │ │ │ │ -Fn(v)p Fo(,)f(remo)m(ving)g(an)m(y)h(edge)f Fn(\(v,w\))e │ │ │ │ -Fo(where)227 1254 y Fn(v)i Fo(and)g Fn(w)g Fo(share)g(a)h(common)g │ │ │ │ -(adjacen)m(t)g(subtree.)227 1403 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 │ │ │ │ -(prin)m(ted)g(and)h(the)f(program)h(exits.)111 1587 y(8.)46 │ │ │ │ -b Fn(void)h(MSMD_update)e(\()i(MSMD)g(*msmd,)f(MSMD)g(*info)h(\))g(;) │ │ │ │ -227 1735 y Fo(This)30 b(metho)s(d)g(up)s(dates)f(the)i(priorities)f(of) │ │ │ │ -h(all)g(no)s(des)f(in)g(the)g(reac)m(h)i(set.)227 1884 │ │ │ │ -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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1073 4 │ │ │ │ +v 1255 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2828 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(prin)m(ted)g(and)h(the)f(program)h │ │ │ │ +(exits.)111 993 y(7.)46 b Fn(void)h(MSMD_cleanEdgeList)c(\()k(MSMD)g │ │ │ │ +(*msmd,)f(MSMDvtx)g(*v,)h(MSMD)f(*info)h(\))g(;)227 1141 │ │ │ │ +y Fo(This)29 b(metho)s(d)h(cleans)g(the)g(list)h(of)f(unco)m(v)m(ered)g │ │ │ │ +(edges)g(for)g(v)m(ertex)h Fn(v)p Fo(,)f(remo)m(ving)g(an)m(y)h(edge)f │ │ │ │ +Fn(\(v,w\))e Fo(where)227 1254 y Fn(v)i Fo(and)g Fn(w)g │ │ │ │ +Fo(share)g(a)h(common)g(adjacen)m(t)g(subtree.)227 1403 │ │ │ │ +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(prin)m(ted)g(and)h(the)f(program)h │ │ │ │ +(exits.)111 1587 y(8.)46 b Fn(void)h(MSMD_update)e(\()i(MSMD)g(*msmd,)f │ │ │ │ +(MSMD)g(*info)h(\))g(;)227 1735 y Fo(This)30 b(metho)s(d)g(up)s(dates)f │ │ │ │ +(the)i(priorities)f(of)h(all)g(no)s(des)f(in)g(the)g(reac)m(h)i(set.) │ │ │ │ +227 1884 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.)111 │ │ │ │ 2068 y(9.)46 b Fn(int)h(MSMD_exactDegree2)c(\()48 b(MSMD)e(*msmd,)g │ │ │ │ (MSMDvtx)g(*v,)h(MSMD)g(*info)f(\))i(;)227 2217 y Fo(This)30 │ │ │ │ b(metho)s(d)g(computes)g(and)g(returns)f(the)i(exact)h(external)f │ │ │ │ (degree)g(for)f(v)m(ertex)i Fn(v)p Fo(.)227 2365 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) │ │ │ │ @@ -5919,17 +5927,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 1112 4 v 1293 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2696 100 V 1112 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1073 4 v 1254 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2735 100 V 1073 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 │ │ │ │ @@ -5991,20 +5999,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 1112 │ │ │ │ -4 v 1294 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(18,)i(2025)p │ │ │ │ -2789 100 V 337 399 a Fm(\210)45 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 1073 │ │ │ │ +4 v 1255 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2828 100 V 337 399 a Fm(\210)45 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(.)337 770 y Fm(\210)45 │ │ │ │ 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 October 18, 2025 │ │ │ │ │ + 2 MSMD : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + MSMD : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 MSMD : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + MSMD : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 MSMD : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 7 │ │ │ │ │ + MSMD : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 MSMD : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + MSMD : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 MSMD : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + MSMD : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 MSMD : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o MT.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1745 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1602,23 +1602,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1792,90 +1791,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5009,18 +5017,18 @@ │ │ │ │ X/FBB X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ /Fd 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 /Fe 171[62 6[62 77[{}2 │ │ │ │ 119.552 /CMTT12 rf /Ff 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 /Fg 139[32 │ │ │ │ -1[33 2[42 9[37 1[37 46 18[65 20[23 1[42 2[42 2[42 42 │ │ │ │ -42 3[23 44[{}14 83.022 /CMSL10 rf /Fh 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 │ │ │ │ +16[67 67 67 2[37 46[{}26 119.552 /CMBX12 rf /Fg 137[44 │ │ │ │ +3[33 2[42 1[69 7[37 2[46 19[62 19[23 4[42 2[42 42 42 │ │ │ │ +3[23 44[{}13 83.022 /CMSL10 rf /Fh 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 /Fi 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 40[{}72 83.022 /CMTT10 │ │ │ │ rf /Fj 148[42 3[42 42 81[65 16[42 65 1[65{}7 83.022 /CMSY10 │ │ │ │ @@ -5143,19 +5151,19 @@ │ │ │ │ (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 │ │ │ │ Fi(SolveMap)e Fn(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 Fn(2)p 125 100 1005 4 v │ │ │ │ -1170 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(Octob)r(er)g(18,)g(2025)p 2896 100 V 0 390 a Ff(1.1)135 │ │ │ │ -b(Data)46 b(Structure)0 597 y Fn(There)23 b(are)g(no)g(m)n │ │ │ │ -(ultithreaded)h(sp)r(eci\014c)f(data)h(structures.)34 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 969 4 v │ │ │ │ +1134 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(No)n(v)n(em)n(b)r(er)g(15,)g(2025)p 2932 100 V 0 390 │ │ │ │ +a Ff(1.1)135 b(Data)46 b(Structure)0 597 y Fn(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 Fi(Lock)e Fn(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 Ff(1.2)135 │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fe(MT)f │ │ │ │ Ff(metho)t(ds)0 1205 y Fn(This)25 b(section)f(con)n(tains)g(brief)g │ │ │ │ (descriptions)g(including)h(protot)n(yp)r(es)f(of)g(all)h(metho)r(ds)g │ │ │ │ (found)g(in)g(the)g Fi(MT)f Fn(source)f(directory)-7 │ │ │ │ @@ -5261,54 +5269,54 @@ │ │ │ │ Fi(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 Fn(,)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 Fm(\013)g Fn(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 1005 4 v 1170 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)36 b Fh(DRAFT)111 b Fg(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2856 100 V 1005 w Fn(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 Fi(nthread)d Fn(parameter;)h(if,)i Fi(nthread)d │ │ │ │ -Fn(is)i Fi(1)p Fn(,)208 490 y(the)k(serial)e(metho)r(d)i(is)g(called.) │ │ │ │ -43 b(The)30 b Fi(msglvl)d Fn(and)j Fi(msgFile)c Fn(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 Fh(Err)l(or)k(che)l(cking:)43 b Fn(If)30 b Fi(A)p Fn(,)f │ │ │ │ -Fi(Y)g Fn(or)f Fi(X)h Fn(are)g Fi(NULL)p Fn(,)f(or)g(if)i │ │ │ │ -Fi(coordType)c Fn(is)j(not)h Fi(INPMTX)p 2711 722 27 │ │ │ │ -4 v 28 w(BY)p 2827 722 V 31 w(ROWS)p Fn(,)e Fi(INPMTX)p │ │ │ │ -3349 722 V 29 w(BY)p 3466 722 V 30 w(COLUMNS)f Fn(or)208 │ │ │ │ -822 y Fi(INPMTX)p 477 822 V 28 w(BY)p 593 822 V 31 w(CHEVRONS)p │ │ │ │ -Fn(,)15 b(or)j(if)h Fi(storageMode)13 b Fn(is)19 b(not)f(one)g(of)g │ │ │ │ -Fi(INPMTX)p 2376 822 V 29 w(RAW)p 2537 822 V 30 w(DATA)p │ │ │ │ -Fn(,)f Fi(INPMTX)p 3047 822 V 29 w(SORTED)f Fn(or)i Fi(INPMTX)p │ │ │ │ -3713 822 V 29 w(BY)p 3830 822 V 30 w(VECTORS)p Fn(,)208 │ │ │ │ -921 y(or)i(if)j Fi(inputMode)18 b Fn(is)j(not)h Fi(SPOOLES)p │ │ │ │ -1320 921 V 28 w(REAL)f Fn(or)f Fi(SPOOLES)p 1948 921 │ │ │ │ -V 29 w(COMPLEX)p Fn(,)f(an)i(error)f(message)g(is)i(prin)n(ted)f(and)h │ │ │ │ -(the)g(program)208 1021 y(exits.)101 1187 y(3.)42 b Fi(void)f │ │ │ │ -(InpMtx_MT_nonsym_)o(mmm)o(_H)c(\()43 b(InpMtx)e(*A,)i(DenseMtx)d(*Y,)i │ │ │ │ -(double)f(alpha[],)g(DenseMtx)f(*X,)1428 1287 y(int)i(nthread,)f(int)h │ │ │ │ -(msglvl,)f(int)h(msgFile)f(\))i(;)208 1419 y Fn(This)24 │ │ │ │ -b(metho)r(d)i(computes)f(the)g(matrix-v)n(ector)d(pro)r(duct)j │ │ │ │ -Fm(y)h Fn(:=)d Fm(y)15 b Fn(+)e Fm(\013A)2453 1389 y │ │ │ │ -Fl(H)2517 1419 y Fm(x)p Fn(,)26 b(where)e Fm(y)k Fn(is)d(found)g(in)g │ │ │ │ -(the)g Fi(Y)43 b(DenseMtx)208 1519 y Fn(ob)5 b(ject,)25 │ │ │ │ -b Fm(\013)g Fn(is)g(complex)f(in)i Fi(alpha[])p Fn(,)c │ │ │ │ -Fm(A)j Fn(is)g(found)g(in)h(the)f Fi(A)43 b(Inpmtx)22 │ │ │ │ -b Fn(ob)5 b(ject,)26 b(and)e Fm(x)i Fn(is)f(found)g(in)g(the)g │ │ │ │ -Fi(X)43 b(DenseMtx)208 1619 y Fn(ob)5 b(ject.)43 b(If)30 │ │ │ │ -b(an)n(y)f(of)g(the)h(input)h(ob)5 b(jects)29 b(are)g │ │ │ │ -Fi(NULL)p Fn(,)f(an)h(error)f(message)g(is)i(prin)n(ted)g(and)f(the)h │ │ │ │ -(program)e(exits.)43 b Fi(A)p Fn(,)29 b Fi(X)208 1718 │ │ │ │ -y Fn(and)c Fi(Y)h Fn(m)n(ust)f(all)h(b)r(e)g(complex.)36 │ │ │ │ -b(The)26 b(n)n(um)n(b)r(er)f(of)h(threads)f(is)h(sp)r(eci\014ed)g(b)n │ │ │ │ -(y)f(the)h Fi(nthread)d Fn(parameter;)i(if,)i Fi(nthread)208 │ │ │ │ +TeXDict begin 3 2 bop 83 100 969 4 v 1134 100 a Fi(Multithreaded)23 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2892 100 V 969 w Fn(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 Fi(nthread)d Fn(parameter;)h(if,)i │ │ │ │ +Fi(nthread)d Fn(is)i Fi(1)p Fn(,)208 490 y(the)k(serial)e(metho)r(d)i │ │ │ │ +(is)g(called.)43 b(The)30 b Fi(msglvl)d Fn(and)j Fi(msgFile)c │ │ │ │ +Fn(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 Fh(Err)l(or)k(che)l(cking:)43 b Fn(If)30 b │ │ │ │ +Fi(A)p Fn(,)f Fi(Y)g Fn(or)f Fi(X)h Fn(are)g Fi(NULL)p │ │ │ │ +Fn(,)f(or)g(if)i Fi(coordType)c Fn(is)j(not)h Fi(INPMTX)p │ │ │ │ +2711 722 27 4 v 28 w(BY)p 2827 722 V 31 w(ROWS)p Fn(,)e │ │ │ │ +Fi(INPMTX)p 3349 722 V 29 w(BY)p 3466 722 V 30 w(COLUMNS)f │ │ │ │ +Fn(or)208 822 y Fi(INPMTX)p 477 822 V 28 w(BY)p 593 822 │ │ │ │ +V 31 w(CHEVRONS)p Fn(,)15 b(or)j(if)h Fi(storageMode)13 │ │ │ │ +b Fn(is)19 b(not)f(one)g(of)g Fi(INPMTX)p 2376 822 V │ │ │ │ +29 w(RAW)p 2537 822 V 30 w(DATA)p Fn(,)f Fi(INPMTX)p │ │ │ │ +3047 822 V 29 w(SORTED)f Fn(or)i Fi(INPMTX)p 3713 822 │ │ │ │ +V 29 w(BY)p 3830 822 V 30 w(VECTORS)p Fn(,)208 921 y(or)i(if)j │ │ │ │ +Fi(inputMode)18 b Fn(is)j(not)h Fi(SPOOLES)p 1320 921 │ │ │ │ +V 28 w(REAL)f Fn(or)f Fi(SPOOLES)p 1948 921 V 29 w(COMPLEX)p │ │ │ │ +Fn(,)f(an)i(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program)208 │ │ │ │ +1021 y(exits.)101 1187 y(3.)42 b Fi(void)f(InpMtx_MT_nonsym_)o(mmm)o │ │ │ │ +(_H)c(\()43 b(InpMtx)e(*A,)i(DenseMtx)d(*Y,)i(double)f(alpha[],)g │ │ │ │ +(DenseMtx)f(*X,)1428 1287 y(int)i(nthread,)f(int)h(msglvl,)f(int)h │ │ │ │ +(msgFile)f(\))i(;)208 1419 y Fn(This)24 b(metho)r(d)i(computes)f(the)g │ │ │ │ +(matrix-v)n(ector)d(pro)r(duct)j Fm(y)h Fn(:=)d Fm(y)15 │ │ │ │ +b Fn(+)e Fm(\013A)2453 1389 y Fl(H)2517 1419 y Fm(x)p │ │ │ │ +Fn(,)26 b(where)e Fm(y)k Fn(is)d(found)g(in)g(the)g Fi(Y)43 │ │ │ │ +b(DenseMtx)208 1519 y Fn(ob)5 b(ject,)25 b Fm(\013)g │ │ │ │ +Fn(is)g(complex)f(in)i Fi(alpha[])p Fn(,)c Fm(A)j Fn(is)g(found)g(in)h │ │ │ │ +(the)f Fi(A)43 b(Inpmtx)22 b Fn(ob)5 b(ject,)26 b(and)e │ │ │ │ +Fm(x)i Fn(is)f(found)g(in)g(the)g Fi(X)43 b(DenseMtx)208 │ │ │ │ +1619 y Fn(ob)5 b(ject.)43 b(If)30 b(an)n(y)f(of)g(the)h(input)h(ob)5 │ │ │ │ +b(jects)29 b(are)g Fi(NULL)p Fn(,)f(an)h(error)f(message)g(is)i(prin)n │ │ │ │ +(ted)g(and)f(the)h(program)e(exits.)43 b Fi(A)p Fn(,)29 │ │ │ │ +b Fi(X)208 1718 y Fn(and)c Fi(Y)h Fn(m)n(ust)f(all)h(b)r(e)g(complex.) │ │ │ │ +36 b(The)26 b(n)n(um)n(b)r(er)f(of)h(threads)f(is)h(sp)r(eci\014ed)g(b) │ │ │ │ +n(y)f(the)h Fi(nthread)d Fn(parameter;)i(if,)i Fi(nthread)208 │ │ │ │ 1818 y Fn(is)g Fi(1)p Fn(,)h(the)g(serial)e(metho)r(d)i(is)g(called.)37 │ │ │ │ b(The)27 b Fi(msglvl)f Fn(and)h Fi(msgFile)e Fn(parameters)h(are)g │ │ │ │ (used)i(for)f(diagnostics)g(during)208 1918 y(the)h(creation)e(of)i │ │ │ │ (the)g(threads')e(individual)i(data)f(structures.)208 │ │ │ │ 2050 y Fh(Err)l(or)k(che)l(cking:)43 b Fn(If)30 b Fi(A)p │ │ │ │ Fn(,)f Fi(Y)g Fn(or)f Fi(X)h Fn(are)g Fi(NULL)p Fn(,)f(or)g(if)i │ │ │ │ Fi(coordType)c Fn(is)j(not)h Fi(INPMTX)p 2711 2050 V │ │ │ │ @@ -5371,48 +5379,48 @@ │ │ │ │ (assem)n(bling)f(aggregate)f(fron)n(ts.)307 5142 y Fc(\210)42 │ │ │ │ b Fi(cpus[5])25 b Fn(|)j(time)g(sp)r(en)n(t)g(assem)n(bling)e(p)r(ostp) │ │ │ │ r(oned)i(data.)307 5274 y Fc(\210)42 b Fi(cpus[6])25 │ │ │ │ b Fn(|)j(time)g(sp)r(en)n(t)g(to)f(factor)g(the)h(fron)n(ts.)307 │ │ │ │ 5407 y Fc(\210)42 b Fi(cpus[7])25 b Fn(|)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 Fn(4)p 125 100 1005 4 v │ │ │ │ -1170 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(Octob)r(er)g(18,)g(2025)p 2896 100 V 307 390 a Fc(\210)42 │ │ │ │ -b Fi(cpus[8])25 b Fn(|)j(time)g(sp)r(en)n(t)g(to)f(store)g(the)h │ │ │ │ -(factor)e(en)n(tries.)307 524 y Fc(\210)42 b Fi(cpus[9])25 │ │ │ │ -b Fn(|)j(miscellaneous)e(time.)208 691 y(On)h(return,)g(the)h │ │ │ │ -Fi(stats[])d Fn(v)n(ector)h(is)i(\014lled)g(with)g(the)g(follo)n(wing)e │ │ │ │ -(information.)307 859 y Fc(\210)42 b Fi(stats[0])25 b │ │ │ │ -Fn(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ots.)307 993 y Fc(\210)42 │ │ │ │ -b Fi(stats[1])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ot)g(tests.)307 │ │ │ │ -1126 y Fc(\210)42 b Fi(stats[2])25 b Fn(|)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 │ │ │ │ -Fc(\210)42 b Fi(stats[3])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(en)n(tries) │ │ │ │ -g(in)h Fm(D)r Fn(.)307 1394 y Fc(\210)42 b Fi(stats[4])25 │ │ │ │ -b Fn(|)i(n)n(um)n(b)r(er)h(of)f(en)n(tries)g(in)h Fm(L)p │ │ │ │ -Fn(.)307 1527 y Fc(\210)42 b Fi(stats[5])25 b Fn(|)i(n)n(um)n(b)r(er)h │ │ │ │ -(of)f(en)n(tries)g(in)h Fm(U)9 b Fn(.)307 1661 y Fc(\210)42 │ │ │ │ -b Fi(stats[6])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(lo)r(c)n(ks)g(of)g │ │ │ │ -(the)h Fi(FrontMtx)d Fn(ob)5 b(ject.)307 1795 y Fc(\210)42 │ │ │ │ -b Fi(stats[7])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(lo)r(c)n(ks)g(of)g │ │ │ │ -(aggregate)e(list.)307 1928 y Fc(\210)42 b Fi(stats[8])25 │ │ │ │ -b Fn(|)i(n)n(um)n(b)r(er)h(of)f(lo)r(c)n(ks)g(of)g(p)r(ostp)r(oned)h │ │ │ │ -(list.)208 2096 y Fh(Err)l(or)h(che)l(cking:)38 b Fn(If)27 │ │ │ │ -b Fi(frontmtx)p Fn(,)d Fi(inpmtxA)p Fn(,)g Fi(cpus)h │ │ │ │ -Fn(or)h Fi(stats)f Fn(is)h Fi(NULL)p Fn(,)g(or)g(if)h │ │ │ │ -Fi(msglvl)41 b(>)i(0)26 b Fn(and)h Fi(msgFile)d Fn(is)j │ │ │ │ -Fi(NULL)p Fn(,)208 2195 y(an)g(error)e(message)i(is)g(prin)n(ted)h(and) │ │ │ │ -f(the)h(program)e(exits.)0 2455 y Fd(1.2.3)112 b(Multithreaded)39 │ │ │ │ -b Fb(QR)g Fd(F)-9 b(actorization)38 b(metho)s(d)101 2634 │ │ │ │ -y Fn(1.)k Fi(void)f(FrontMtx_MT_QR_fa)o(cto)o(r)c(\()44 │ │ │ │ -b(FrontMtx)c(*frontmtx,)f(InpMtx)i(*mtxA,)1472 2733 y(ChvManager)e │ │ │ │ -(*chvmanager,)g(IV)j(*ownersIV,)e(double)h(cpus[],)1472 │ │ │ │ -2833 y(double)g(*pfacops,)83 b(int)42 b(msglvl,)f(FILE)h(*msgFile)e(\)) │ │ │ │ -k(;)208 2967 y Fn(This)28 b(metho)r(d)g(computes)g(the)h(\()p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 969 4 v │ │ │ │ +1134 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(No)n(v)n(em)n(b)r(er)g(15,)g(2025)p 2932 100 V 307 │ │ │ │ +390 a Fc(\210)42 b Fi(cpus[8])25 b Fn(|)j(time)g(sp)r(en)n(t)g(to)f │ │ │ │ +(store)g(the)h(factor)e(en)n(tries.)307 524 y Fc(\210)42 │ │ │ │ +b Fi(cpus[9])25 b Fn(|)j(miscellaneous)e(time.)208 691 │ │ │ │ +y(On)h(return,)g(the)h Fi(stats[])d Fn(v)n(ector)h(is)i(\014lled)g │ │ │ │ +(with)g(the)g(follo)n(wing)e(information.)307 859 y Fc(\210)42 │ │ │ │ +b Fi(stats[0])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ots.)307 │ │ │ │ +993 y Fc(\210)42 b Fi(stats[1])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(piv)n │ │ │ │ +(ot)g(tests.)307 1126 y Fc(\210)42 b Fi(stats[2])25 b │ │ │ │ +Fn(|)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 Fc(\210)42 b Fi(stats[3])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f │ │ │ │ +(en)n(tries)g(in)h Fm(D)r Fn(.)307 1394 y Fc(\210)42 │ │ │ │ +b Fi(stats[4])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(en)n(tries)g(in)h │ │ │ │ +Fm(L)p Fn(.)307 1527 y Fc(\210)42 b Fi(stats[5])25 b │ │ │ │ +Fn(|)i(n)n(um)n(b)r(er)h(of)f(en)n(tries)g(in)h Fm(U)9 │ │ │ │ +b Fn(.)307 1661 y Fc(\210)42 b Fi(stats[6])25 b Fn(|)i(n)n(um)n(b)r(er) │ │ │ │ +h(of)f(lo)r(c)n(ks)g(of)g(the)h Fi(FrontMtx)d Fn(ob)5 │ │ │ │ +b(ject.)307 1795 y Fc(\210)42 b Fi(stats[7])25 b Fn(|)i(n)n(um)n(b)r │ │ │ │ +(er)h(of)f(lo)r(c)n(ks)g(of)g(aggregate)e(list.)307 1928 │ │ │ │ +y Fc(\210)42 b Fi(stats[8])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(lo)r(c)n │ │ │ │ +(ks)g(of)g(p)r(ostp)r(oned)h(list.)208 2096 y Fh(Err)l(or)h(che)l │ │ │ │ +(cking:)38 b Fn(If)27 b Fi(frontmtx)p Fn(,)d Fi(inpmtxA)p │ │ │ │ +Fn(,)g Fi(cpus)h Fn(or)h Fi(stats)f Fn(is)h Fi(NULL)p │ │ │ │ +Fn(,)g(or)g(if)h Fi(msglvl)41 b(>)i(0)26 b Fn(and)h Fi(msgFile)d │ │ │ │ +Fn(is)j Fi(NULL)p Fn(,)208 2195 y(an)g(error)e(message)i(is)g(prin)n │ │ │ │ +(ted)h(and)f(the)h(program)e(exits.)0 2455 y Fd(1.2.3)112 │ │ │ │ +b(Multithreaded)39 b Fb(QR)g Fd(F)-9 b(actorization)38 │ │ │ │ +b(metho)s(d)101 2634 y Fn(1.)k Fi(void)f(FrontMtx_MT_QR_fa)o(cto)o(r)c │ │ │ │ +(\()44 b(FrontMtx)c(*frontmtx,)f(InpMtx)i(*mtxA,)1472 │ │ │ │ +2733 y(ChvManager)e(*chvmanager,)g(IV)j(*ownersIV,)e(double)h(cpus[],) │ │ │ │ +1472 2833 y(double)g(*pfacops,)83 b(int)42 b(msglvl,)f(FILE)h(*msgFile) │ │ │ │ +e(\))k(;)208 2967 y Fn(This)28 b(metho)r(d)g(computes)g(the)h(\()p │ │ │ │ Fm(U)1312 2937 y Fl(T)1383 2967 y Fn(+)18 b Fm(I)7 b │ │ │ │ Fn(\))p Fm(D)r Fn(\()p Fm(I)27 b Fn(+)18 b Fm(U)9 b Fn(\))28 │ │ │ │ b(factorization)f(of)h Fm(A)2556 2937 y Fl(T)2609 2967 │ │ │ │ y Fm(A)g Fn(if)h Fm(A)f Fn(is)h(real)e(or)g(\()p Fm(U)3313 │ │ │ │ 2937 y Fl(H)3395 2967 y Fn(+)18 b Fm(I)7 b Fn(\))p Fm(D)r │ │ │ │ Fn(\()p Fm(I)27 b Fn(+)18 b Fm(U)9 b Fn(\))208 3066 y(factorization)23 │ │ │ │ b(of)j Fm(A)842 3036 y Fl(H)905 3066 y Fm(A)f Fn(if)h │ │ │ │ @@ -5452,27 +5460,28 @@ │ │ │ │ b Fm(I)7 b Fn(\))p Fm(D)r Fn(\()p Fm(I)24 b Fn(+)15 b │ │ │ │ Fm(U)9 b Fn(\))p Fm(X)30 b Fn(=)22 b Fm(B)31 b Fn(or)26 │ │ │ │ b(\()p Fm(L)15 b Fn(+)h Fm(I)7 b Fn(\))p Fm(D)r Fn(\()p │ │ │ │ Fm(I)24 b Fn(+)15 b Fm(U)9 b Fn(\))p Fm(X)30 b Fn(=)22 │ │ │ │ b Fm(B)t Fn(.)37 b(En)n(tries)25 b(of)h Fm(B)31 b Fn(are)25 │ │ │ │ b Fh(r)l(e)l(ad)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 83 100 1005 4 v 1170 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)36 b Fh(DRAFT)111 b Fg(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2856 100 V 1005 w Fn(5)208 390 y(from)31 b Fi(mtxB)g │ │ │ │ -Fn(and)h(en)n(tries)g(of)g Fm(X)39 b Fn(are)31 b(written)i(to)f │ │ │ │ -Fi(mtxX)p Fn(.)e(Therefore,)j Fi(mtxX)d Fn(and)j Fi(mtxB)d │ │ │ │ -Fn(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 Fi(solvemap)d Fn(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 Fi(ownersIV)c Fn(ob)5 b(ject.)64 b(On)37 b(return)f(the)208 │ │ │ │ +TeXDict begin 5 4 bop 83 100 969 4 v 1134 100 a Fi(Multithreaded)23 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2892 100 V 969 w Fn(5)208 390 y(from)k │ │ │ │ +Fi(mtxB)g Fn(and)h(en)n(tries)g(of)g Fm(X)39 b Fn(are)31 │ │ │ │ +b(written)i(to)f Fi(mtxX)p Fn(.)e(Therefore,)j Fi(mtxX)d │ │ │ │ +Fn(and)j Fi(mtxB)d Fn(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 Fi(solvemap)d Fn(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 │ │ │ │ +Fi(ownersIV)c Fn(ob)5 b(ject.)64 b(On)37 b(return)f(the)208 │ │ │ │ 789 y Fi(cpus[])25 b Fn(v)n(ector)h(is)i(\014lled)f(with)i(the)f(follo) │ │ │ │ n(wing.)35 b(The)28 b Fi(stats[])d Fn(v)n(ector)h(is)i(not)f(curren)n │ │ │ │ (tly)g(used.)307 951 y Fc(\210)42 b Fi(cpus[0])25 b Fn(|)j(set)f(up)h │ │ │ │ (the)g(solv)n(es)307 1080 y Fc(\210)42 b Fi(cpus[1])25 │ │ │ │ b Fn(|)j(fetc)n(h)g(righ)n(t)e(hand)i(side)g(and)f(store)g(solution)307 │ │ │ │ 1209 y Fc(\210)42 b Fi(cpus[2])25 b Fn(|)j(forw)n(ard)e(solv)n(e)307 │ │ │ │ 1338 y Fc(\210)42 b Fi(cpus[3])25 b Fn(|)j(diagonal)e(solv)n(e)307 │ │ │ │ @@ -5542,110 +5551,110 @@ │ │ │ │ b(matrix,)h(factors)e Fm(A)h Fn(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ (system)h Fm(AX)40 b Fn(=)33 b Fm(B)38 b Fn(for)c Fm(X)40 │ │ │ │ b Fn(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 │ │ │ │ Fi(do)p 1237 5407 27 4 v 30 w(gridMT)d Fn(for)i(testing.)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1005 4 v │ │ │ │ -1170 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(Octob)r(er)g(18,)g(2025)p 2896 100 V 307 390 a Fc(\210)42 │ │ │ │ -b Fn(The)23 b Fi(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ -(of)h(output.)36 b(Use)23 b Fi(msglvl)41 b(=)i(1)23 b │ │ │ │ -Fn(for)g(just)g(timing)g(output.)307 524 y Fc(\210)42 │ │ │ │ -b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h(the)h(message)e │ │ │ │ -(\014le)i(|)f(if)h Fi(msgFile)d Fn(is)i Fi(stdout)p Fn(,)f(then)i(the)g │ │ │ │ -(message)390 624 y(\014le)c(is)f Fh(stdout)p Fn(,)h(otherwise)e(a)i │ │ │ │ -(\014le)f(is)h(op)r(ened)f(with)i Fh(app)l(end)g Fn(status)e(to)g │ │ │ │ -(receiv)n(e)g(an)n(y)g(output)h(data.)307 758 y Fc(\210)42 │ │ │ │ -b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h │ │ │ │ -(complex)g(linear)g(system.)456 892 y Fa({)41 b Fi(type)h(=)i(1)f │ │ │ │ -(\(SPOOLES)p 1295 892 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 │ │ │ │ -1009 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1009 │ │ │ │ -V 28 w(COMPLEX\))24 b Fn(for)j(complex.)307 1143 y Fc(\210)42 │ │ │ │ -b Fn(The)28 b Fi(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ -h(symmetry)f(of)h(the)g(matrix.)456 1278 y Fa({)41 b │ │ │ │ -Fi(type)h(=)i(0)f(\(SPOOLES)p 1295 1278 V 28 w(SYMMETRIC\))23 │ │ │ │ -b Fn(for)k Fm(A)h Fn(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ -1394 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 1394 │ │ │ │ -V 28 w(HERMITIAN\))23 b Fn(for)k Fm(A)h Fn(complex)g(Hermitian,)456 │ │ │ │ -1511 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1511 │ │ │ │ -V 28 w(NONSYMMETRIC\))390 1645 y Fn(for)27 b Fm(A)h Fn(real)f(or)g │ │ │ │ -(complex)g(nonsymmetric.)307 1780 y Fc(\210)42 b Fn(The)28 │ │ │ │ -b Fi(pivotingflag)23 b Fn(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 Fn(If)28 b Fi(pivotingflag)39 b(=)k(0)g(\(SPOOLES)p │ │ │ │ -1726 1914 V 29 w(NO)p 1843 1914 V 30 w(PIVOTING\))p Fn(,)24 │ │ │ │ -b(no)j(piv)n(oting)g(will)h(b)r(e)g(done.)456 2031 y │ │ │ │ -Fa({)41 b Fn(If)31 b Fi(pivotingflag)38 b(=)44 b(1)f(\(SPOOLES)p │ │ │ │ -1729 2031 V 28 w(PIVOTING\))p Fn(,)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 Fm(U)37 b Fn(and)27 b Fm(L)g Fn(ha)n(v)n(e)g(magnitude)g(less)g │ │ │ │ -(than)h Fi(tau)p Fn(.)307 2264 y Fc(\210)42 b Fn(The)29 │ │ │ │ -b Fi(matrixFileName)23 b Fn(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 Fi(neqns)42 b(neqns)f(nent)390 2615 y(irow)h(jcol)g(entry)390 │ │ │ │ -2715 y(...)86 b(...)g(...)390 2866 y Fn(where)36 b Fi(neqns)e │ │ │ │ -Fn(is)i(the)g(global)f(n)n(um)n(b)r(er)h(of)g(equations)f(and)h │ │ │ │ -Fi(nent)f Fn(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 Fi(nent)f Fn(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 Fc(\210)42 b Fn(The)32 b Fi(rhsFileName)27 b Fn(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 Fi(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 Fn(where)28 │ │ │ │ -b Fi(nrow)g Fn(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 Fi(nrhs)e Fn(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 Fi(nrow)f Fn(lines,)j(eac)n(h)e(con)n(taining)f(a)i(ro)n(w)e(index)i │ │ │ │ -(and)g(either)f Fi(nrhs)f Fn(or)h Fi(2*nrhs)f Fn(\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 Fc(\210)42 b Fn(The)28 │ │ │ │ -b Fi(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.) │ │ │ │ -307 4269 y Fc(\210)42 b Fn(The)28 b Fi(nthread)d Fn(parameter)h(is)h │ │ │ │ -(the)h(n)n(um)n(b)r(er)g(of)f(threads.)101 4455 y(2.)42 │ │ │ │ -b Fi(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 Fn(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 Fi(PatchAndGoInfo)208 4888 y │ │ │ │ -Fn(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 Fm(A)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 969 4 v │ │ │ │ +1134 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(No)n(v)n(em)n(b)r(er)g(15,)g(2025)p 2932 100 V 307 │ │ │ │ +390 a Fc(\210)42 b Fn(The)23 b Fi(msglvl)e Fn(parameter)g(determines)i │ │ │ │ +(the)h(amoun)n(t)e(of)h(output.)36 b(Use)23 b Fi(msglvl)41 │ │ │ │ +b(=)i(1)23 b Fn(for)g(just)g(timing)g(output.)307 524 │ │ │ │ +y Fc(\210)42 b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h │ │ │ │ +(the)h(message)e(\014le)i(|)f(if)h Fi(msgFile)d Fn(is)i │ │ │ │ +Fi(stdout)p Fn(,)f(then)i(the)g(message)390 624 y(\014le)c(is)f │ │ │ │ +Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ +Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ +307 758 y Fc(\210)42 b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r │ │ │ │ +(eci\014es)h(a)h(real)e(or)h(complex)g(linear)g(system.)456 │ │ │ │ +892 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 892 │ │ │ │ +27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 1009 y Fa({)41 │ │ │ │ +b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1009 V 28 w(COMPLEX\))24 │ │ │ │ +b Fn(for)j(complex.)307 1143 y Fc(\210)42 b Fn(The)28 │ │ │ │ +b Fi(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the)h(symmetry)f │ │ │ │ +(of)h(the)g(matrix.)456 1278 y Fa({)41 b Fi(type)h(=)i(0)f(\(SPOOLES)p │ │ │ │ +1295 1278 V 28 w(SYMMETRIC\))23 b Fn(for)k Fm(A)h Fn(real)f(or)g │ │ │ │ +(complex)g(symmetric,)456 1394 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES) │ │ │ │ +p 1295 1394 V 28 w(HERMITIAN\))23 b Fn(for)k Fm(A)h Fn(complex)g │ │ │ │ +(Hermitian,)456 1511 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p │ │ │ │ +1295 1511 V 28 w(NONSYMMETRIC\))390 1645 y Fn(for)27 │ │ │ │ +b Fm(A)h Fn(real)f(or)g(complex)g(nonsymmetric.)307 1780 │ │ │ │ +y Fc(\210)42 b Fn(The)28 b Fi(pivotingflag)23 b Fn(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 Fn(If)28 b Fi(pivotingflag)39 │ │ │ │ +b(=)k(0)g(\(SPOOLES)p 1726 1914 V 29 w(NO)p 1843 1914 │ │ │ │ +V 30 w(PIVOTING\))p Fn(,)24 b(no)j(piv)n(oting)g(will)h(b)r(e)g(done.) │ │ │ │ +456 2031 y Fa({)41 b Fn(If)31 b Fi(pivotingflag)38 b(=)44 │ │ │ │ +b(1)f(\(SPOOLES)p 1729 2031 V 28 w(PIVOTING\))p Fn(,)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 Fm(U)37 b Fn(and)27 b Fm(L)g Fn(ha)n(v)n(e)g │ │ │ │ +(magnitude)g(less)g(than)h Fi(tau)p Fn(.)307 2264 y Fc(\210)42 │ │ │ │ +b Fn(The)29 b Fi(matrixFileName)23 b Fn(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 Fi(neqns)42 b(neqns)f(nent)390 │ │ │ │ +2615 y(irow)h(jcol)g(entry)390 2715 y(...)86 b(...)g(...)390 │ │ │ │ +2866 y Fn(where)36 b Fi(neqns)e Fn(is)i(the)g(global)f(n)n(um)n(b)r(er) │ │ │ │ +h(of)g(equations)f(and)h Fi(nent)f Fn(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 │ │ │ │ +Fi(nent)f Fn(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 Fc(\210)42 b Fn(The)32 b Fi(rhsFileName)27 │ │ │ │ +b Fn(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 Fi(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 Fn(where)28 b Fi(nrow)g Fn(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 Fi(nrhs)e Fn(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 Fi(nrow)f Fn(lines,)j(eac)n(h)e(con)n(taining)f(a)i │ │ │ │ +(ro)n(w)e(index)i(and)g(either)f Fi(nrhs)f Fn(or)h Fi(2*nrhs)f │ │ │ │ +Fn(\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 Fc(\210)42 b Fn(The)28 b Fi(seed)e Fn(parameter)g(is)h(a)h │ │ │ │ +(random)e(n)n(um)n(b)r(er)i(seed.)307 4269 y Fc(\210)42 │ │ │ │ +b Fn(The)28 b Fi(nthread)d Fn(parameter)h(is)h(the)h(n)n(um)n(b)r(er)g │ │ │ │ +(of)f(threads.)101 4455 y(2.)42 b Fi(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 Fn(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 Fi(PatchAndGoInfo)208 │ │ │ │ +4888 y Fn(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 Fm(A)g │ │ │ │ Fn(and)g(righ)n(t)f(hand)h(side)g Fm(B)t Fn(,)i(generates)c(the)j │ │ │ │ (graph)e(for)g Fm(A)h Fn(and)g(orders)f(the)208 5122 │ │ │ │ y(matrix,)27 b(factors)f Fm(A)i Fn(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ (system)g Fm(AX)j Fn(=)23 b Fm(B)31 b Fn(for)d Fm(X)34 │ │ │ │ b Fn(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 Fi(do)p 968 5221 │ │ │ │ V 31 w(patchAndGo)23 b Fn(for)k(testing.)307 5407 y Fc(\210)42 │ │ │ │ b Fn(The)23 b Fi(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ (of)h(output.)36 b(Use)23 b Fi(msglvl)41 b(=)i(1)23 b │ │ │ │ Fn(for)g(just)g(timing)g(output.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 83 100 1005 4 v 1170 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)36 b Fh(DRAFT)111 b Fg(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2856 100 V 1005 w Fn(7)307 390 y Fc(\210)42 b Fn(The)32 │ │ │ │ -b Fi(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ -(if)h Fi(msgFile)d Fn(is)i Fi(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ -490 y(\014le)c(is)f Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ -(op)r(ened)f(with)i Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ -(y)g(output)h(data.)307 620 y Fc(\210)42 b Fn(The)28 │ │ │ │ -b Fi(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ -(linear)g(system.)456 750 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ -1295 750 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 865 │ │ │ │ -y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 865 V │ │ │ │ -28 w(COMPLEX\))24 b Fn(for)j(complex.)307 995 y Fc(\210)42 │ │ │ │ +TeXDict begin 7 6 bop 83 100 969 4 v 1134 100 a Fi(Multithreaded)23 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2892 100 V 969 w Fn(7)307 390 y Fc(\210)42 │ │ │ │ +b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h(the)h(message)e │ │ │ │ +(\014le)i(|)f(if)h Fi(msgFile)d Fn(is)i Fi(stdout)p Fn(,)f(then)i(the)g │ │ │ │ +(message)390 490 y(\014le)c(is)f Fh(stdout)p Fn(,)h(otherwise)e(a)i │ │ │ │ +(\014le)f(is)h(op)r(ened)f(with)i Fh(app)l(end)g Fn(status)e(to)g │ │ │ │ +(receiv)n(e)g(an)n(y)g(output)h(data.)307 620 y Fc(\210)42 │ │ │ │ +b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h │ │ │ │ +(complex)g(linear)g(system.)456 750 y Fa({)41 b Fi(type)h(=)i(1)f │ │ │ │ +(\(SPOOLES)p 1295 750 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 │ │ │ │ +865 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 865 │ │ │ │ +V 28 w(COMPLEX\))24 b Fn(for)j(complex.)307 995 y Fc(\210)42 │ │ │ │ b Fn(The)28 b Fi(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ h(symmetry)f(of)h(the)g(matrix.)456 1125 y Fa({)41 b │ │ │ │ Fi(type)h(=)i(0)f(\(SPOOLES)p 1295 1125 V 28 w(SYMMETRIC\))23 │ │ │ │ b Fn(for)k Fm(A)h Fn(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ 1240 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 1240 │ │ │ │ V 28 w(HERMITIAN\))23 b Fn(for)k Fm(A)h Fn(complex)g(Hermitian,)456 │ │ │ │ 1355 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1355 │ │ │ │ @@ -5712,22 +5721,22 @@ │ │ │ │ 5277 y Fl(T)3144 5308 y Fj(\003)g Fm(X)27 b Fn(or)19 │ │ │ │ b Fm(Y)24 b Fn(+)5 b Fm(\013)g Fj(\003)g Fm(A)3690 5277 │ │ │ │ y Fl(H)3756 5308 y Fj(\003)g Fm(X)i Fn(.)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 Fn(8)p 125 100 1005 4 v │ │ │ │ -1170 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(Octob)r(er)g(18,)g(2025)p 2896 100 V 307 390 a Fc(\210)42 │ │ │ │ -b Fn(The)19 b Fi(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ -(of)h(output)h(|)f(taking)f Fi(msglvl)41 b(>=)i(3)19 │ │ │ │ -b Fn(means)f(the)h Fi(InpMtx)390 490 y Fn(ob)5 b(ject)28 │ │ │ │ -b(is)f(written)h(to)f(the)h(message)e(\014le.)307 624 │ │ │ │ -y Fc(\210)42 b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 969 4 v │ │ │ │ +1134 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(No)n(v)n(em)n(b)r(er)g(15,)g(2025)p 2932 100 V 307 │ │ │ │ +390 a Fc(\210)42 b Fn(The)19 b Fi(msglvl)e Fn(parameter)g(determines)i │ │ │ │ +(the)h(amoun)n(t)e(of)h(output)h(|)f(taking)f Fi(msglvl)41 │ │ │ │ +b(>=)i(3)19 b Fn(means)f(the)h Fi(InpMtx)390 490 y Fn(ob)5 │ │ │ │ +b(ject)28 b(is)f(written)h(to)f(the)h(message)e(\014le.)307 │ │ │ │ +624 y Fc(\210)42 b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fi(msgFile)d Fn(is)i │ │ │ │ Fi(stdout)p Fn(,)f(then)i(the)g(message)390 724 y(\014le)c(is)f │ │ │ │ Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ 307 858 y Fc(\210)42 b Fi(dataType)25 b Fn(is)i(the)h(t)n(yp)r(e)g(of)f │ │ │ │ (en)n(tries,)g Fi(0)h Fn(for)f(real,)f Fi(1)i Fn(for)f(complex.)307 │ │ │ │ 993 y Fc(\210)42 b Fi(symflag)25 b Fn(is)i(the)h(symmetry)g(\015ag,)e │ │ │ │ @@ -5806,23 +5815,23 @@ │ │ │ │ V 28 w(HERMITIAN\))23 b Fn(for)k Fm(A)h Fn(complex)g(Hermitian,)456 │ │ │ │ 5138 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 5138 │ │ │ │ V 28 w(NONSYMMETRIC\))390 5273 y Fn(for)27 b Fm(A)h Fn(real)f(or)g │ │ │ │ (complex)g(nonsymmetric.)307 5407 y Fc(\210)42 b Fn(The)28 │ │ │ │ b Fi(sparsityflag)23 b Fn(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 1005 4 v 1170 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)36 b Fh(DRAFT)111 b Fg(Octob)r(er)27 b(18,)f(2025)p │ │ │ │ -2856 100 V 1005 w Fn(9)456 390 y Fa({)41 b Fi(sparsityflag)e(=)k(0)g │ │ │ │ -(\(FRONTMTX)p 1687 390 27 4 v 28 w(DENSE)p 1935 390 V │ │ │ │ -29 w(FRONTS\))26 b Fn(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 Fi(sparsityflag)e(=)k(1)g(\(FRONTMTX)p │ │ │ │ -1687 607 V 28 w(SPARSE)p 1979 607 V 29 w(FRONTS\))29 │ │ │ │ -b Fn(implies)j(an)g(appro)n(ximate)e(factorization.)48 │ │ │ │ +TeXDict begin 9 8 bop 83 100 969 4 v 1134 100 a Fi(Multithreaded)23 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2892 100 V 969 w Fn(9)456 390 y Fa({)41 │ │ │ │ +b Fi(sparsityflag)e(=)k(0)g(\(FRONTMTX)p 1687 390 27 │ │ │ │ +4 v 28 w(DENSE)p 1935 390 V 29 w(FRONTS\))26 b Fn(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 Fi(sparsityflag)e(=)k(1) │ │ │ │ +g(\(FRONTMTX)p 1687 607 V 28 w(SPARSE)p 1979 607 V 29 │ │ │ │ +w(FRONTS\))29 b Fn(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 │ │ │ │ (submatrices,)g(where)h(the)g(en)n(tries)f(in)i(the)f(triangular)e │ │ │ │ (factors)h(will)i(b)r(e)545 806 y(sub)5 b(jected)25 b(to)f(a)h(drop)e │ │ │ │ (tolerance)h(test)h(|)f(if)h(the)g(magnitude)f(of)h(an)f(en)n(try)g(is) │ │ │ │ g Fi(droptol)e Fn(or)i(larger,)f(it)i(will)545 906 y(b)r(e)j(stored,)f │ │ │ │ (otherwise)g(it)h(will)g(b)r(e)g(dropp)r(ed.)307 1040 │ │ │ │ y Fc(\210)42 b Fn(The)28 b Fi(pivotingflag)23 b Fn(parameter)j(signals) │ │ │ │ @@ -5901,21 +5910,21 @@ │ │ │ │ b Fi(n1)27 b Fn(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 Fc(\210)42 │ │ │ │ b Fi(n2)27 b Fn(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 Fc(\210)42 │ │ │ │ b Fi(n3)27 b Fn(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 Fn(10)p 166 100 984 4 │ │ │ │ -v 1148 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 │ │ │ │ -b Fg(Octob)r(er)g(18,)g(2025)p 2917 100 V 307 390 a Fc(\210)42 │ │ │ │ -b Fn(The)28 b Fi(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ -(er)i(seed.)307 523 y Fc(\210)42 b Fn(The)28 b Fi(nrhs)e │ │ │ │ -Fn(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 Fn(10)p 166 100 948 4 │ │ │ │ +v 1113 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 │ │ │ │ +b Fg(No)n(v)n(em)n(b)r(er)g(15,)f(2025)p 2952 100 V 307 │ │ │ │ +390 a Fc(\210)42 b Fn(The)28 b Fi(seed)e Fn(parameter)g(is)h(a)h │ │ │ │ +(random)e(n)n(um)n(b)r(er)i(seed.)307 523 y Fc(\210)42 │ │ │ │ +b Fn(The)28 b Fi(nrhs)e Fn(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 Fc(\210)42 b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r(eci\014es) │ │ │ │ h(a)h(real)e(or)h(complex)g(linear)g(system.)456 789 │ │ │ │ y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 789 27 │ │ │ │ 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 905 y Fa({)41 │ │ │ │ b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 905 V 28 w(COMPLEX\))24 │ │ │ │ b Fn(for)j(complex.)307 1038 y Fc(\210)42 b Fn(The)28 │ │ │ │ b Fi(nthread)d Fn(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 October 18, 2025 │ │ │ │ │ + 2 Multithreaded : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Multithreaded : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Multithreaded : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 5 │ │ │ │ │ + Multithreaded : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Multithreaded : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 7 │ │ │ │ │ + Multithreaded : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 Multithreaded : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 9 │ │ │ │ │ + Multithreaded : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 Multithreaded : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Network.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1544,23 +1544,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1734,90 +1733,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4679,16 +4687,16 @@ │ │ │ │ 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 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 │ │ │ │ -2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Ff 212[55 │ │ │ │ +/Fe 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 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 │ │ │ │ %DVIPSBitmapFont: Fj tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ @@ -4820,62 +4828,62 @@ │ │ │ │ y Fn(and)j Fl(y)g Fk(2)d Fl(Y)1814 5308 y Fh(I)1886 5294 │ │ │ │ y Fn(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p Fl(x;)15 │ │ │ │ b(y)2871 5261 y Fg(\000)2930 5294 y Fn(\))33 b(and)g(\()p │ │ │ │ Fl(y)3261 5261 y Ff(+)3320 5294 y Fl(;)15 b(x)p Fn(\),)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 Fn(2)p 136 100 1058 4 v │ │ │ │ -1240 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 137 399 a Fj(\210)45 b Fn(An)33 b(edge)g(\()p │ │ │ │ -Fl(y)s(;)15 b(z)t Fn(\))35 b(where)d Fl(y)g Fk(2)e Fl(Y)1313 │ │ │ │ -413 y Fh(I)1385 399 y Fn(and)i Fl(z)i Fk(2)29 b Fl(Y)1783 │ │ │ │ -413 y Fh(W)1897 399 y Fn(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p │ │ │ │ -Fl(y)2790 366 y Ff(+)2849 399 y Fl(;)15 b(z)t Fn(\))34 │ │ │ │ -b(and)e(\()p Fl(z)t(;)15 b(y)3352 366 y Fg(\000)3412 │ │ │ │ -399 y Fn(\),)34 b(b)s(oth)e(with)227 511 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ -b(.)137 695 y Fj(\210)45 b Fn(An)27 b(edge)h(\()p Fl(x;)15 │ │ │ │ -b(y)s Fn(\))27 b(where)g Fl(x)e Fk(2)g Fl(Y)1290 709 │ │ │ │ -y Fh(I)1357 695 y Fn(and)h Fl(y)i Fk(2)d Fl(Y)1742 709 │ │ │ │ -y Fh(I)1809 695 y Fn(b)s(ecomes)i(t)m(w)m(o)h(edges,)h(\()p │ │ │ │ -Fl(x)2688 662 y Ff(+)2747 695 y Fl(;)15 b(y)2835 662 │ │ │ │ -y Fg(\000)2894 695 y Fn(\))28 b(and)e(\()p Fl(y)3213 │ │ │ │ -662 y Ff(+)3272 695 y Fl(;)15 b(x)3364 662 y Fg(\000)3424 │ │ │ │ -695 y Fn(\),)28 b(b)s(oth)e(with)227 808 y(in\014nite)k(capacit)m(y)-8 │ │ │ │ -b(.)141 1010 y(The)29 b Fm(Network)d Fn(ob)5 b(ject)30 │ │ │ │ -b(can)f(b)s(e)g(constructed)g(fairly)g(simply)-8 b(.)40 │ │ │ │ -b(It)29 b(is)g(initialized)i(b)m(y)d(sp)s(ecifying)h(the)g(n)m(um)m(b)s │ │ │ │ -(er)0 1123 y(of)36 b(no)s(des)e(in)i(the)f(net)m(w)m(ork,)j(including)d │ │ │ │ -(the)h(source)g(and)f(sink.)55 b(Arcs)36 b(can)g(b)s(e)e(added)h(one)h │ │ │ │ -(at)g(a)g(time)g(and)f(it)0 1236 y(is)f(not)h(necessary)g(to)g(kno)m(w) │ │ │ │ -f(the)h(total)h(n)m(um)m(b)s(er)d(of)h(arcs)h(ahead)f(of)h(time.)53 │ │ │ │ -b(T)-8 b(o)35 b(sp)s(ecify)f(an)g(arc)h(one)f(needs)g(to)0 │ │ │ │ -1348 y(pro)m(vide)c(the)h(\014rst)f(and)f(second)i(v)m(ertices,)h(the)f │ │ │ │ -(capacit)m(y)h(and)e(the)h(presen)m(t)f(\015o)m(w.)141 │ │ │ │ -1484 y(Once)25 b(w)m(e)h(ha)m(v)m(e)h(constructed)e(the)h(net)m(w)m │ │ │ │ -(ork,)h(w)m(e)f(solv)m(e)h(the)e(max)h(\015o)m(w)f(problem)g(in)g(a)h │ │ │ │ -(v)m(ery)f(simple)h(manner,)0 1597 y(basically)40 b(the)f(F)-8 │ │ │ │ -b(ord-F)g(ulk)m(erson)40 b(algorithm)g(that)f(generates)h(augmen)m │ │ │ │ -(ting)g(paths.)65 b(No)39 b(doubt)f(this)h(can)g(b)s(e)0 │ │ │ │ -1710 y(impro)m(v)m(ed,)27 b(and)e(it)h(w)m(ould)g(b)s(e)f(w)m(elcome)i │ │ │ │ -(b)s(ecause)e(for)h(large)g(three)g(dimensional)g(\014nite)f(elemen)m │ │ │ │ -(t)j(graphs,)e(up)e(to)0 1823 y(sixt)m(y)29 b(p)s(er)f(cen)m(t)h(of)g │ │ │ │ -(the)g(time)g(is)g(sp)s(en)m(t)f(smo)s(othing)g(the)h(separators,)h │ │ │ │ -(and)d(most)i(of)g(this)f(time)i(is)e(sp)s(en)m(t)g(solving)0 │ │ │ │ -1936 y(a)j(max)f(\015o)m(w)h(problem.)141 2072 y(Ho)m(w)m(ev)m(er,)i │ │ │ │ -(the)d(net)m(w)m(ork)i(w)m(e)e(generate)i(in)e(practice)i(ha)m(v)m(e)g │ │ │ │ -(t)m(w)m(o)f(sp)s(ecial)g(prop)s(erties:)137 2274 y Fj(\210)45 │ │ │ │ -b Fn(The)31 b(net)m(w)m(orks)h(are)g(v)m(ery)g(shallo)m(w,)g(i.e.,)h │ │ │ │ -(the)f(distance)g(from)f(the)h(source)f(to)h(the)g(sink)f(is)g │ │ │ │ -(generally)i(3-6)227 2386 y(in)d(practice.)42 b(This)30 │ │ │ │ -b(reduces)g(the)h(p)s(oten)m(tial)g(impro)m(v)m(emen)m(t)h(of)f(a)f │ │ │ │ -(pre-push)f(algorithm.)137 2570 y Fj(\210)45 b Fn(The)32 │ │ │ │ -b(maxim)m(um)g(capacit)m(y)i(of)f(an)f(edge)h(is)f(small,)i(usually)d │ │ │ │ -(6-12.)48 b(Therefore)32 b(scaling)i(algorithms)f(ha)m(v)m(e)227 │ │ │ │ -2683 y(little)f(applicabilit)m(y)-8 b(.)0 2885 y(Finding)33 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1019 4 v │ │ │ │ +1201 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 137 399 a Fj(\210)45 b Fn(An)33 │ │ │ │ +b(edge)g(\()p Fl(y)s(;)15 b(z)t Fn(\))35 b(where)d Fl(y)g │ │ │ │ +Fk(2)e Fl(Y)1313 413 y Fh(I)1385 399 y Fn(and)i Fl(z)i │ │ │ │ +Fk(2)29 b Fl(Y)1783 413 y Fh(W)1897 399 y Fn(b)s(ecomes)k(t)m(w)m(o)h │ │ │ │ +(edges,)h(\()p Fl(y)2790 366 y Ff(+)2849 399 y Fl(;)15 │ │ │ │ +b(z)t Fn(\))34 b(and)e(\()p Fl(z)t(;)15 b(y)3352 366 │ │ │ │ +y Fg(\000)3412 399 y Fn(\),)34 b(b)s(oth)e(with)227 511 │ │ │ │ +y(in\014nite)e(capacit)m(y)-8 b(.)137 695 y Fj(\210)45 │ │ │ │ +b Fn(An)27 b(edge)h(\()p Fl(x;)15 b(y)s Fn(\))27 b(where)g │ │ │ │ +Fl(x)e Fk(2)g Fl(Y)1290 709 y Fh(I)1357 695 y Fn(and)h │ │ │ │ +Fl(y)i Fk(2)d Fl(Y)1742 709 y Fh(I)1809 695 y Fn(b)s(ecomes)i(t)m(w)m │ │ │ │ +(o)h(edges,)h(\()p Fl(x)2688 662 y Ff(+)2747 695 y Fl(;)15 │ │ │ │ +b(y)2835 662 y Fg(\000)2894 695 y Fn(\))28 b(and)e(\()p │ │ │ │ +Fl(y)3213 662 y Ff(+)3272 695 y Fl(;)15 b(x)3364 662 │ │ │ │ +y Fg(\000)3424 695 y Fn(\),)28 b(b)s(oth)e(with)227 808 │ │ │ │ +y(in\014nite)k(capacit)m(y)-8 b(.)141 1010 y(The)29 b │ │ │ │ +Fm(Network)d Fn(ob)5 b(ject)30 b(can)f(b)s(e)g(constructed)g(fairly)g │ │ │ │ +(simply)-8 b(.)40 b(It)29 b(is)g(initialized)i(b)m(y)d(sp)s(ecifying)h │ │ │ │ +(the)g(n)m(um)m(b)s(er)0 1123 y(of)36 b(no)s(des)e(in)i(the)f(net)m(w)m │ │ │ │ +(ork,)j(including)d(the)h(source)g(and)f(sink.)55 b(Arcs)36 │ │ │ │ +b(can)g(b)s(e)e(added)h(one)h(at)g(a)g(time)g(and)f(it)0 │ │ │ │ +1236 y(is)f(not)h(necessary)g(to)g(kno)m(w)f(the)h(total)h(n)m(um)m(b)s │ │ │ │ +(er)d(of)h(arcs)h(ahead)f(of)h(time.)53 b(T)-8 b(o)35 │ │ │ │ +b(sp)s(ecify)f(an)g(arc)h(one)f(needs)g(to)0 1348 y(pro)m(vide)c(the)h │ │ │ │ +(\014rst)f(and)f(second)i(v)m(ertices,)h(the)f(capacit)m(y)h(and)e(the) │ │ │ │ +h(presen)m(t)f(\015o)m(w.)141 1484 y(Once)25 b(w)m(e)h(ha)m(v)m(e)h │ │ │ │ +(constructed)e(the)h(net)m(w)m(ork,)h(w)m(e)f(solv)m(e)h(the)e(max)h │ │ │ │ +(\015o)m(w)f(problem)g(in)g(a)h(v)m(ery)f(simple)h(manner,)0 │ │ │ │ +1597 y(basically)40 b(the)f(F)-8 b(ord-F)g(ulk)m(erson)40 │ │ │ │ +b(algorithm)g(that)f(generates)h(augmen)m(ting)g(paths.)65 │ │ │ │ +b(No)39 b(doubt)f(this)h(can)g(b)s(e)0 1710 y(impro)m(v)m(ed,)27 │ │ │ │ +b(and)e(it)h(w)m(ould)g(b)s(e)f(w)m(elcome)i(b)s(ecause)e(for)h(large)g │ │ │ │ +(three)g(dimensional)g(\014nite)f(elemen)m(t)j(graphs,)e(up)e(to)0 │ │ │ │ +1823 y(sixt)m(y)29 b(p)s(er)f(cen)m(t)h(of)g(the)g(time)g(is)g(sp)s(en) │ │ │ │ +m(t)f(smo)s(othing)g(the)h(separators,)h(and)d(most)i(of)g(this)f(time) │ │ │ │ +i(is)e(sp)s(en)m(t)g(solving)0 1936 y(a)j(max)f(\015o)m(w)h(problem.) │ │ │ │ +141 2072 y(Ho)m(w)m(ev)m(er,)i(the)d(net)m(w)m(ork)i(w)m(e)e(generate)i │ │ │ │ +(in)e(practice)i(ha)m(v)m(e)g(t)m(w)m(o)f(sp)s(ecial)g(prop)s(erties:) │ │ │ │ +137 2274 y Fj(\210)45 b Fn(The)31 b(net)m(w)m(orks)h(are)g(v)m(ery)g │ │ │ │ +(shallo)m(w,)g(i.e.,)h(the)f(distance)g(from)f(the)h(source)f(to)h(the) │ │ │ │ +g(sink)f(is)g(generally)i(3-6)227 2386 y(in)d(practice.)42 │ │ │ │ +b(This)30 b(reduces)g(the)h(p)s(oten)m(tial)g(impro)m(v)m(emen)m(t)h │ │ │ │ +(of)f(a)f(pre-push)f(algorithm.)137 2570 y Fj(\210)45 │ │ │ │ +b Fn(The)32 b(maxim)m(um)g(capacit)m(y)i(of)f(an)f(edge)h(is)f(small,)i │ │ │ │ +(usually)d(6-12.)48 b(Therefore)32 b(scaling)i(algorithms)f(ha)m(v)m(e) │ │ │ │ +227 2683 y(little)f(applicabilit)m(y)-8 b(.)0 2885 y(Finding)33 │ │ │ │ b(a)h(minimal)g(separator)g(giv)m(es)h(rise)f(to)g(net)m(w)m(orks)g(of) │ │ │ │ g(a)g(sp)s(ecial)g(nature)f(and)g(that)h(ma)m(y)g(require)f(sp)s(e-)0 │ │ │ │ 2998 y(cialized)41 b(solution)f(tec)m(hniques.)67 b(In)38 │ │ │ │ b(fact,)43 b(there)c(is)g(a)h(more)f(straigh)m(tforw)m(ard)h(approac)m │ │ │ │ (h)f(that)h(generates)h(a)0 3111 y(net)m(w)m(ork)f(where)f(eac)m(h)i(v) │ │ │ │ m(ertex)f(in)f Fl(Y)60 b Fn(b)s(ecomes)39 b Fd(one)h │ │ │ │ Fn(no)s(de)f(in)g(the)g(net)m(w)m(ork)i(\(as)f(opp)s(osed)e(to)i(t)m(w) │ │ │ │ @@ -4905,29 +4913,30 @@ │ │ │ │ Fm(nnode)g Fn(arc)227 4891 y(structures.)141 5093 y(The)30 │ │ │ │ b Fm(Network)e Fn(ob)5 b(ject)32 b(has)e(six)g(\014elds.)137 │ │ │ │ 5294 y Fj(\210)45 b Fm(int)i(nnode)24 b Fn(|)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 Fm(nnode-1)p Fn(\).)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1058 4 v 1239 100 a Fm(Network)29 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)121 b Fe(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2795 100 V 1058 w Fn(3)137 399 y Fj(\210)45 b Fm(int)i(narc)29 │ │ │ │ -b Fn(|)i(the)f(n)m(um)m(b)s(er)f(of)i(arcs)f(in)g(the)h(net)m(w)m(ork) │ │ │ │ -137 601 y Fj(\210)45 b Fm(int)i(ntrav)29 b Fn(|)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.)137 803 y Fj(\210)45 b Fm(Arc)i(**inheads)29 │ │ │ │ -b Fn(|)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 Fm(Arc)p Fn(,)e Fm(inheads[v])e Fn(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 │ │ │ │ -Fm(v)p Fn(.)137 1117 y Fj(\210)45 b Fm(Arc)i(**outheads)32 │ │ │ │ -b Fn(|)j(p)s(oin)m(ter)g(to)g(a)h(v)m(ector)g(of)f(p)s(oin)m(ters)g(to) │ │ │ │ -g Fm(Arc)p Fn(,)h Fm(outheads[v])31 b Fn(p)s(oin)m(ts)k(to)h(the)f │ │ │ │ -(\014rst)227 1230 y(arc)c(in)f(the)h(out-list)g(for)f(no)s(de)g │ │ │ │ -Fm(v)p Fn(.)137 1432 y Fj(\210)45 b Fm(ArcChunk)h(*chunk)28 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1019 4 v 1200 100 a Fm(Network)29 │ │ │ │ +b Fe(:)40 b Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2834 100 V 1019 w Fn(3)137 399 y Fj(\210)45 │ │ │ │ +b Fm(int)i(narc)29 b Fn(|)i(the)f(n)m(um)m(b)s(er)f(of)i(arcs)f(in)g │ │ │ │ +(the)h(net)m(w)m(ork)137 601 y Fj(\210)45 b Fm(int)i(ntrav)29 │ │ │ │ +b Fn(|)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.)137 │ │ │ │ +803 y Fj(\210)45 b Fm(Arc)i(**inheads)29 b Fn(|)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 Fm(Arc)p │ │ │ │ +Fn(,)e Fm(inheads[v])e Fn(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 Fm(v)p Fn(.)137 │ │ │ │ +1117 y Fj(\210)45 b Fm(Arc)i(**outheads)32 b Fn(|)j(p)s(oin)m(ter)g(to) │ │ │ │ +g(a)h(v)m(ector)g(of)f(p)s(oin)m(ters)g(to)g Fm(Arc)p │ │ │ │ +Fn(,)h Fm(outheads[v])31 b Fn(p)s(oin)m(ts)k(to)h(the)f(\014rst)227 │ │ │ │ +1230 y(arc)c(in)f(the)h(out-list)g(for)f(no)s(de)g Fm(v)p │ │ │ │ +Fn(.)137 1432 y Fj(\210)45 b Fm(ArcChunk)h(*chunk)28 │ │ │ │ b Fn(|)j(p)s(oin)m(ter)f(to)h(the)g(\014rst)e Fm(ArcChunk)f │ │ │ │ Fn(structure.)137 1634 y Fj(\210)45 b Fm(int)i(msglvl)32 │ │ │ │ b Fn(|)h(message)i(lev)m(el)g(for)f(debugging)f(and)g(diagnostics.)52 │ │ │ │ b(Setting)34 b Fm(msglvl)46 b(=)h(0)34 b Fn(means)f(no)227 │ │ │ │ 1747 y(output.)137 1949 y Fj(\210)45 b Fm(FILE)i(*msgFile)28 │ │ │ │ b Fn(|)i(message)i(\014le)e(for)g(debugging)h(and)e(diagnostics.)0 │ │ │ │ 2176 y(A)e(correctly)h(initialized)g(and)e(non)m(trivial)i │ │ │ │ @@ -4960,25 +4969,25 @@ │ │ │ │ (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 Fn(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 Fm(Network)28 b Fn(ob)5 b(ject.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1058 4 v │ │ │ │ -1240 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -589 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 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 Fm(Network)g(*)i │ │ │ │ -(Network_new)c(\()k(void)e(\))i(;)227 1038 y Fn(This)39 │ │ │ │ -b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ -Fm(Network)f Fn(structure)g(and)h(then)g(sets)g(the)h(default)227 │ │ │ │ -1151 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fm(Network)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1019 4 v │ │ │ │ +1201 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 589 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 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 Fm(Network)g(*)i(Network_new)c(\()k(void)e(\))i(;)227 │ │ │ │ +1038 y Fn(This)39 b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e │ │ │ │ +(the)g Fm(Network)f Fn(structure)g(and)h(then)g(sets)g(the)h(default) │ │ │ │ +227 1151 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fm(Network)p │ │ │ │ 1282 1151 29 4 v 32 w(setDefaultFields\(\))p Fn(.)111 │ │ │ │ 1326 y(2.)46 b Fm(void)h(Network_setDefaultFields)41 │ │ │ │ b(\()48 b(Network)d(*network)h(\))h(;)227 1470 y Fn(This)30 │ │ │ │ b(metho)s(d)g(sets)g(the)h(structure's)f(\014elds)g(to)h(default)g(v)-5 │ │ │ │ b(alues.)227 1614 y Fd(Err)g(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(network)f Fn(is)h Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ @@ -5033,29 +5042,29 @@ │ │ │ │ Fk(\024)h Fn(0,)k(or)d(if)f Fm(nnode)g Fk(\024)227 5294 │ │ │ │ y Fm(firstNode)n Fn(,)d(or)g(if)f Fm(secondNode)29 b │ │ │ │ Fk(\024)j Fn(0,)k(or)e(if)h Fm(nnode)30 b Fk(\024)i Fm(secondNode)m │ │ │ │ Fn(,)k(or)e(if)h Fm(capacity)29 b Fk(\024)j Fn(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 1058 4 v 1239 100 a Fm(Network)29 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)121 b Fe(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2795 100 V 1058 w Fn(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ -b(metho)s(ds)111 610 y Fn(1.)46 b Fm(void)h(Network_findMaxFlow)42 │ │ │ │ -b(\()48 b(Network)e(*network)f(\))j(;)227 777 y Fn(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 Fm(Ideq)f Fn(ob)5 b(ject)227 1002 y(to)31 │ │ │ │ -b(main)m(tain)h(a)e(priorit)m(y)h(dequeue.)227 1168 y │ │ │ │ -Fd(Err)-5 b(or)42 b(che)-5 b(cking:)57 b Fn(If)39 b Fm(network)e │ │ │ │ -Fn(is)h Fm(NULL)p Fn(,)g(or)h(if)g Fm(nnode)f Fk(\024)h │ │ │ │ -Fn(0,)j(an)d(error)f(message)i(is)f(prin)m(ted)f(and)h(the)227 │ │ │ │ -1281 y(program)30 b(exits.)111 1501 y(2.)46 b Fm(int)h │ │ │ │ +TeXDict begin 5 4 bop 91 100 1019 4 v 1200 100 a Fm(Network)29 │ │ │ │ +b Fe(:)40 b Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2834 100 V 1019 w Fn(5)0 399 y Fa(1.2.3)112 │ │ │ │ +b(Utilit)m(y)38 b(metho)s(ds)111 610 y Fn(1.)46 b Fm(void)h │ │ │ │ +(Network_findMaxFlow)42 b(\()48 b(Network)e(*network)f(\))j(;)227 │ │ │ │ +777 y Fn(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 Fm(Ideq)f Fn(ob)5 b(ject)227 1002 │ │ │ │ +y(to)31 b(main)m(tain)h(a)e(priorit)m(y)h(dequeue.)227 │ │ │ │ +1168 y Fd(Err)-5 b(or)42 b(che)-5 b(cking:)57 b Fn(If)39 │ │ │ │ +b Fm(network)e Fn(is)h Fm(NULL)p Fn(,)g(or)h(if)g Fm(nnode)f │ │ │ │ +Fk(\024)h Fn(0,)j(an)d(error)f(message)i(is)f(prin)m(ted)f(and)h(the) │ │ │ │ +227 1281 y(program)30 b(exits.)111 1501 y(2.)46 b Fm(int)h │ │ │ │ (Network_findAugmentingPat)o(h)42 b(\()47 b(Network)f(*network,)f(int)i │ │ │ │ (node,)g(int)g(delta,)418 1614 y(int)g(tag,)g(Ideq)f(*deq,)h(int)g │ │ │ │ (tags[],)e(int)i(deltas[],)f(int)h(pres[])f(\))h(;)227 │ │ │ │ 1780 y Fn(This)22 b(metho)s(ds)g(tries)h(to)g(\014nd)f(an)g(augmen)m │ │ │ │ (ting)i(path.)38 b(If)22 b(successful,)i(the)f(return)e(v)-5 │ │ │ │ b(alue)24 b(is)e(the)h(additional)227 1893 y(\015o)m(w)37 │ │ │ │ b(that)h(can)f(\015o)m(w)g(do)m(wn)g(the)g(path.)61 b(The)36 │ │ │ │ @@ -5117,36 +5126,36 @@ │ │ │ │ Fn(is)g(in)g(the)h(comp)s(onen)m(t)g(that)g(con)m(tains)g(the)g(sink,)f │ │ │ │ (then)g Fm(mark[v])46 b(=)h(2)p Fn(.)227 5294 y Fd(Err)-5 │ │ │ │ b(or)32 b(che)-5 b(cking:)39 b Fn(If)28 b Fm(network)p │ │ │ │ Fn(,)f Fm(deq)g Fn(or)i Fm(mark)e Fn(is)h Fm(NULL)p Fn(,)f(or)i(if)f │ │ │ │ Fm(nnode)c Fk(\024)h Fn(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 Fn(6)p 136 100 1058 4 v │ │ │ │ -1240 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ -595 y Fn(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 Fm(void)h(Network_writeForHumanEye)41 │ │ │ │ -b(\()48 b(Network)d(*network,)h(FILE)g(*fp)h(\))h(;)227 │ │ │ │ -983 y Fn(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 Fm(Network)p 3762 983 29 4 v 33 w(writeStats\(\))227 │ │ │ │ -1096 y Fn(is)29 b(called)h(to)f(write)g(out)g(the)f(header)h(and)f │ │ │ │ -(statistics.)42 b(Then)28 b(the)g(in-list)i(and)e(out-lists)h(for)g │ │ │ │ -(the)f(no)s(des)g(in)227 1209 y(the)j(net)m(w)m(ork)g(are)g(prin)m │ │ │ │ -(ted.)227 1359 y Fd(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ -b Fn(If)28 b Fm(network)f Fn(or)i Fm(fp)g Fn(is)g Fm(NULL)p │ │ │ │ -Fn(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)g(program)g │ │ │ │ -(exits.)111 1546 y(2.)46 b Fm(void)h(Network_writeStats)c(\()k(Network) │ │ │ │ -f(*network,)f(FILE)i(*fp)g(\))g(;)227 1697 y Fn(This)30 │ │ │ │ -b(metho)s(d)g(writes)g(a)h(header)f(and)g(statistics)i(to)f(a)g │ │ │ │ -(\014le.)227 1847 y Fd(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ -b Fn(If)28 b Fm(network)f Fn(or)i Fm(fp)g Fn(is)g Fm(NULL)p │ │ │ │ -Fn(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)g(program)g │ │ │ │ -(exits.)p eop end │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1019 4 v │ │ │ │ +1201 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 0 399 a Fa(1.2.4)112 b(IO)38 │ │ │ │ +b(metho)s(ds)0 595 y Fn(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 Fm(void)h │ │ │ │ +(Network_writeForHumanEye)41 b(\()48 b(Network)d(*network,)h(FILE)g │ │ │ │ +(*fp)h(\))h(;)227 983 y Fn(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 Fm(Network)p 3762 983 29 4 v 33 │ │ │ │ +w(writeStats\(\))227 1096 y Fn(is)29 b(called)h(to)f(write)g(out)g(the) │ │ │ │ +f(header)h(and)f(statistics.)42 b(Then)28 b(the)g(in-list)i(and)e │ │ │ │ +(out-lists)h(for)g(the)f(no)s(des)g(in)227 1209 y(the)j(net)m(w)m(ork)g │ │ │ │ +(are)g(prin)m(ted.)227 1359 y Fd(Err)-5 b(or)33 b(che)-5 │ │ │ │ +b(cking:)40 b Fn(If)28 b Fm(network)f Fn(or)i Fm(fp)g │ │ │ │ +Fn(is)g Fm(NULL)p Fn(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h │ │ │ │ +(the)g(program)g(exits.)111 1546 y(2.)46 b Fm(void)h │ │ │ │ +(Network_writeStats)c(\()k(Network)f(*network,)f(FILE)i(*fp)g(\))g(;) │ │ │ │ +227 1697 y Fn(This)30 b(metho)s(d)g(writes)g(a)h(header)f(and)g │ │ │ │ +(statistics)i(to)f(a)g(\014le.)227 1847 y Fd(Err)-5 b(or)33 │ │ │ │ +b(che)-5 b(cking:)40 b Fn(If)28 b Fm(network)f Fn(or)i │ │ │ │ +Fm(fp)g Fn(is)g Fm(NULL)p Fn(,)f(an)h(error)g(message)h(is)f(prin)m │ │ │ │ +(ted)f(and)h(the)g(program)g(exits.)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ TeXDict begin 7 6 bop 0 866 a Fo(Index)0 1289 y Fm(Network)p │ │ │ │ 342 1289 29 4 v 32 w(addArc\(\))p Fn(,)29 b(4)0 1402 │ │ │ │ y Fm(Network)p 342 1402 V 32 w(augmentPath\(\))p Fn(,)e(5)0 │ │ │ │ 1515 y Fm(Network)p 342 1515 V 32 w(clearData\(\))p Fn(,)h(4)0 │ │ │ │ 1628 y Fm(Network)p 342 1628 V 32 w(findAugmentingPath\(\))p │ │ │ │ Fn(,)e(5)0 1741 y Fm(Network)p 342 1741 V 32 w(findMaxFlow\(\))p │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Network : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + Network : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Network : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Network : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Network : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o PatchAndGoInfo.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2042,23 +2042,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2232,90 +2231,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4771,16 +4779,16 @@ │ │ │ │ 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 149[25 2[45 │ │ │ │ 45 81[71 18[25 1[{}5 90.9091 /CMSY10 rf /Fd 132[52 123[{}1 │ │ │ │ 90.9091 /CMBX10 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 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 /Fg 139[35 1[36 2[45 │ │ │ │ -9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Fg 137[48 3[36 2[45 │ │ │ │ +1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 │ │ │ │ 90.9091 /CMSL10 rf /Fh 255[55{}1 66.4176 /CMSY8 rf /Fi │ │ │ │ 220[48 48 34[{}2 83.022 /CMEX10 rf /Fj 149[29 24 20[41 │ │ │ │ 21[55 2[20 59[{}5 66.4176 /CMMI8 rf /Fk 205[35 35 49[{}2 │ │ │ │ 66.4176 /CMR8 rf /Fl 149[37 31 16[75 11[62 7[75 1[69 │ │ │ │ 68 2[71 2[25 59[{}9 90.9091 /CMMI10 rf │ │ │ │ %DVIPSBitmapFont: Fm tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ @@ -4910,24 +4918,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 Fo(2)p 136 100 891 4 v │ │ │ │ -1073 w Fn(PatchAndGoInfo)26 b Fg(:)41 b Ff(DRAFT)30 b │ │ │ │ -Fg(Octob)s(er)g(18,)i(2025)p 3010 100 V 227 399 a Fo(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 Fn(PatchAndGoInfo)c Fo(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 Fo(2)p 136 100 852 4 v │ │ │ │ +1034 w Fn(PatchAndGoInfo)26 b Fg(:)41 b Ff(DRAFT)30 b │ │ │ │ +Fg(No)m(v)m(em)m(b)s(er)h(15,)h(2025)p 3049 100 V 227 │ │ │ │ +399 a Fo(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 Fn(PatchAndGoInfo)c Fo(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 Fe(1.1)135 b(Data)46 b(Structure)0 1500 y Fo(The)30 │ │ │ │ b Fn(PatchAndGoInfo)c Fo(structure)k(has)g(\014v)m(e)h(\014elds.)137 │ │ │ │ 1716 y Fm(\210)45 b Fn(int)i(strategy)28 b Fo(:)41 b(t)m(yp)s(e)30 │ │ │ │ @@ -4974,18 +4982,18 @@ │ │ │ │ (default)h(v)-5 b(alues:)41 b Fn(strategy)28 b Fo(=)i(-1,)h │ │ │ │ Fn(toosmall)d Fo(=)h Fn(fudge)227 5255 y Fo(=)h(0.0,)i(and)e │ │ │ │ Fn(fudgeIV)e Fo(=)i Fn(fudgeDV)f Fo(=)h Fn(NULL)f Fo(.)227 │ │ │ │ 5407 y Ff(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: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 891 4 v 1072 100 a Fn(PatchAndGoInfo)27 │ │ │ │ -b Fg(:)40 b Ff(DRAFT)122 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2962 100 V 891 w Fo(3)111 399 y(3.)46 b Fn(void)h │ │ │ │ -(PatchAndGoInfo_clearData)41 b(\()48 b(PatchAndGoInfo)43 │ │ │ │ +TeXDict begin 3 2 bop 91 100 852 4 v 1033 100 a Fn(PatchAndGoInfo)27 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 3001 100 V 852 w Fo(3)111 399 y(3.)46 │ │ │ │ +b Fn(void)h(PatchAndGoInfo_clearData)41 b(\()48 b(PatchAndGoInfo)43 │ │ │ │ b(*info)k(\))g(;)227 549 y Fo(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 Fn(fudgeIV)f Fo(is)i(not)h Fn(NULL)e Fo(it)h(is)h(free'd)f(b)m(y)g(a) │ │ │ │ 227 662 y(call)c(to)f Fn(IV)p 605 662 29 4 v 34 w(free\(\))p │ │ │ │ Fo(.)38 b(If)29 b Fn(fudgeDV)e Fo(is)i(not)h Fn(NULL)e │ │ │ │ Fo(it)i(is)f(free'd)g(b)m(y)g(a)h(call)g(to)g Fn(DV)p │ │ │ │ 2914 662 V 34 w(free\(\))p Fo(.)39 b(The)28 b(structure's)227 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 PatchAndGoInfo : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + PatchAndGoInfo : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Pencil.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1883,23 +1883,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2073,90 +2072,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4106,17 +4114,17 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 171[41 84[{}1 66.4176 /CMMI8 rf /Fb 152[45 │ │ │ │ 45 102[{}2 90.9091 /CMSY10 rf /Fc 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 /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 139[35 1[36 │ │ │ │ -2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 │ │ │ │ -44[{}14 90.9091 /CMSL10 rf /Ff 145[62 1[62 2[62 3[62 │ │ │ │ +69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf /Fe 137[48 3[36 │ │ │ │ +2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 │ │ │ │ +44[{}13 90.9091 /CMSL10 rf /Ff 145[62 1[62 2[62 3[62 │ │ │ │ 1[62 18[62 80[{}6 119.552 /CMTT12 rf /Fg 132[52 6[41 │ │ │ │ 4[52 9[48 22[82 19[29 58[{}6 90.9091 /CMBX10 rf │ │ │ │ %DVIPSBitmapFont: Fh tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ @@ -4215,24 +4223,24 @@ │ │ │ │ (shift)f(v)-5 b(alue.)0 5061 y Fi(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Ff(Pencil)d Fi(metho)t(ds)0 │ │ │ │ 5294 y Fl(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 Fj(Pencil)29 b Fl(ob)5 b(ject.)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1153 4 v │ │ │ │ -1335 w Fj(Chv)30 b Fe(:)40 b Fd(DRAFT)31 b Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2747 100 V 0 399 a Fc(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ -600 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 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 Fj(Pencil)g(*)i │ │ │ │ -(Pencil_new)d(\()i(void)g(\))g(;)227 1117 y Fl(This)25 │ │ │ │ -b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ -Fj(Pencil)d Fl(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1114 4 v │ │ │ │ +1296 w Fj(Chv)30 b Fe(:)40 b Fd(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2786 100 V 0 399 a Fc(1.2.1)112 b(Basic)38 │ │ │ │ +b(metho)s(ds)0 600 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 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 Fj(Pencil)g(*)i(Pencil_new)d(\()i(void)g(\))g(;)227 │ │ │ │ +1117 y Fl(This)25 b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e │ │ │ │ +(the)h Fj(Pencil)d Fl(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ (\014elds)227 1230 y(b)m(y)31 b(a)f(call)i(to)f Fj(Pencil)p │ │ │ │ 1001 1230 29 4 v 33 w(setDefaultFields\(\))p Fl(.)111 │ │ │ │ 1427 y(2.)46 b Fj(void)h(Pencil_setDefaultFields)41 b(\()48 │ │ │ │ b(Pencil)e(*pencil)g(\))h(;)227 1581 y Fl(The)35 b(structure's)h │ │ │ │ (\014elds)f(are)h(set)g(to)g(default)g(v)-5 b(alues:)52 │ │ │ │ b Fj(sigma[2])45 b(=)j Fb(f)p Fj(0,0)p Fb(g)p Fl(,)37 │ │ │ │ b Fj(type)d Fl(=)h Fj(SPOOLES)p 3657 1581 V 33 w(REAL)p │ │ │ │ @@ -4281,19 +4289,19 @@ │ │ │ │ (the)e Fj(InpMtx)p 1709 5139 V 33 w(changeStorageMode\(\))25 │ │ │ │ b Fl(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 Fd(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fl(If)30 b Fj(pencil)f Fl(is)h Fj(NULL)p │ │ │ │ Fl(,)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 1153 4 v 1335 100 a Fj(Chv)29 │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2700 100 V 1153 w Fl(3)111 399 y(3.)46 b Fj(void)h │ │ │ │ -(Pencil_sortAndCompress)42 b(\()47 b(Pencil)f(*pencil)g(\))h(;)227 │ │ │ │ -554 y Fl(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 1114 4 v 1296 100 a Fj(Chv)29 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2739 100 V 1114 w Fl(3)111 399 y(3.)46 │ │ │ │ +b Fj(void)h(Pencil_sortAndCompress)42 b(\()47 b(Pencil)f(*pencil)g(\))h │ │ │ │ +(;)227 554 y Fl(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ Fj(InpMtx)p 1662 554 29 4 v 33 w(sortAndCompress\(\))16 │ │ │ │ b Fl(metho)s(d)k(for)h(eac)m(h)h(of)f(its)g(t)m(w)m(o)i(matrices.)227 │ │ │ │ 709 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fj(pencil)f Fl(is)h Fj(NULL)p Fl(,)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 │ │ │ │ b Fj(void)h(Pencil_convertToVectors)41 b(\()48 b(Pencil)e(*pencil)g(\)) │ │ │ │ h(;)227 1061 y Fl(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ @@ -4352,19 +4360,19 @@ │ │ │ │ 5294 y Fj(SPOOLES)p 569 5294 V 33 w(HERMITIAN)p Fl(,)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 Fj(randomflag)e Fl(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 Fj(Drand)f Fl(random)h(n)m(um)m(b)s(er)f(generator)j │ │ │ │ Fj(drand)p Fl(.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1153 4 v │ │ │ │ -1335 w Fj(Chv)30 b Fe(:)40 b Fd(DRAFT)31 b Fe(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2747 100 V 227 399 a Fg(Note:)52 b Fl(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 │ │ │ │ -Fj(myid)f Fl(is)h(zero,)j(then)d(the)g(\014les)h(are)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1114 4 v │ │ │ │ +1296 w Fj(Chv)30 b Fe(:)40 b Fd(DRAFT)30 b Fe(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2786 100 V 227 399 a Fg(Note:)52 b Fl(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 Fj(myid)f Fl(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 Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ b Fj(pencil)f Fl(or)h Fj(fp)g Fl(are)h Fj(NULL)p Fl(,)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 October 18, 2025 │ │ │ │ │ + 2 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Chv : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Chv : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Perm.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1017,23 +1017,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1207,90 +1206,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3515,19 +3523,19 @@ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ cleartomark │ │ │ │ {restore}if │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 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 139[35 1[36 2[45 9[40 │ │ │ │ -1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ -90.9091 /CMSL10 rf /Fc 141[62 4[62 7[62 20[62 80[{}4 │ │ │ │ -119.552 /CMTT12 rf /Fd 222[91 32[71{}2 90.9091 /CMSY10 │ │ │ │ -rf /Fe 132[52 123[{}1 90.9091 /CMBX10 rf │ │ │ │ +46[{}24 99.6264 /CMBX12 rf /Fb 137[48 3[36 2[45 1[76 │ │ │ │ +7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ +/CMSL10 rf /Fc 141[62 4[62 7[62 20[62 80[{}4 119.552 │ │ │ │ +/CMTT12 rf /Fd 222[91 32[71{}2 90.9091 /CMSY10 rf /Fe │ │ │ │ +132[52 123[{}1 90.9091 /CMBX10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3619,17 +3627,17 @@ │ │ │ │ b(to)h(the)g(old-to-new)g(v)m(ector)0 5045 y Fh(1.2)135 │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(Perm)e │ │ │ │ Fh(metho)t(ds)0 5294 y Fj(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 Fi(Perm)0 5407 y 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 1135 4 v │ │ │ │ -1316 w Fi(PERM)30 b Fb(:)g Fg(DRAFT)g Fb(Octob)s(er)h(18,)g(2025)p │ │ │ │ -2766 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 1096 4 v │ │ │ │ +1277 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2805 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(Perm)h(*)g │ │ │ │ (Perm_new)f(\()h(void)g(\))g(;)227 1121 y Fj(This)32 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fi(Perm)f Fj(structure)h(and)f(then)h(sets)h(the)f(default)g(\014elds) │ │ │ │ @@ -3684,17 +3692,17 @@ │ │ │ │ (*perm)f(\))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 Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fj(If)30 b Fi(perm)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 1135 4 v 1316 100 a Fi(PERM)29 │ │ │ │ -b Fb(:)i Fg(DRAFT)121 b Fb(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2719 100 V 1135 w Fj(3)111 399 y(2.)46 b Fi(int)h(Perm_checkPerm)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1096 4 v 1277 100 a Fi(PERM)29 │ │ │ │ +b Fb(:)i Fg(DRAFT)121 b Fb(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2758 100 V 1096 w Fj(3)111 399 y(2.)46 b Fi(int)h(Perm_checkPerm)d(\()k │ │ │ │ (Perm)e(*perm)h(\))g(;)227 557 y Fj(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 Fi(Perm)e Fj(ob)5 │ │ │ │ b(ject.)69 b(If)39 b Fi(oldToNew)f Fj(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 Fi([0,size\))d Fj(to)227 783 y Fi([0,size\))p │ │ │ │ Fj(,)d(and)h(similarly)h(for)g Fi(newToOld)d Fj(if)j(it)g(is)f(presen)m │ │ │ │ @@ -3754,38 +3762,39 @@ │ │ │ │ b(metho)s(ds)0 4952 y Fj(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 │ │ │ │ Fi(Perm)e Fj(ob)5 b(ject)31 b(is)g(simple:)0 5181 y Fi(isPresent)d │ │ │ │ (size)0 5294 y(oldToNew[size])e Fj(\(if)31 b(presen)m(t\))0 │ │ │ │ 5407 y Fi(newToOld[size])26 b Fj(\(if)31 b(presen)m(t\))p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1135 4 v │ │ │ │ -1316 w Fi(PERM)30 b Fb(:)g Fg(DRAFT)g Fb(Octob)s(er)h(18,)g(2025)p │ │ │ │ -2766 100 V 111 399 a Fj(1.)46 b Fi(int)h(Perm_readFromFile)c(\()48 │ │ │ │ -b(Perm)e(*perm,)g(char)h(*fn)g(\))g(;)227 552 y Fj(This)29 │ │ │ │ -b(metho)s(d)f(reads)h(a)g Fi(Perm)f Fj(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 Fi(Perm)p 845 665 29 4 v 33 w(readFromFormattedFile\(\))29 │ │ │ │ -b Fj(or)36 b Fi(Perm)p 2320 665 V 33 w(readFromBinaryFile\(\))p │ │ │ │ -Fj(,)c(closes)k(the)g(\014le)227 778 y(and)30 b(returns)f(the)i(v)-5 │ │ │ │ -b(alue)31 b(returned)e(from)h(the)g(called)i(routine.)227 │ │ │ │ -931 y Fg(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fj(If)31 │ │ │ │ -b Fi(perm)f Fj(or)h Fi(fn)g Fj(are)h Fi(NULL)p Fj(,)e(or)i(if)f │ │ │ │ -Fi(fn)g Fj(is)h(not)f(of)h(the)g(form)e Fi(*.permf)g │ │ │ │ -Fj(\(for)i(a)f(formatted)227 1044 y(\014le\))g(or)f Fi(*.permb)f │ │ │ │ -Fj(\(for)h(a)h(binary)f(\014le\),)h(an)f(error)g(message)i(is)e(prin)m │ │ │ │ -(ted)g(and)g(the)g(metho)s(d)g(returns)f(zero.)111 1239 │ │ │ │ -y(2.)46 b Fi(int)h(Perm_readFromFormattedFil)o(e)42 b(\()47 │ │ │ │ -b(Perm)g(*perm,)f(FILE)h(*fp)g(\))g(;)227 1392 y Fj(This)33 │ │ │ │ -b(metho)s(d)g(reads)h(in)f(a)h Fi(Perm)f Fj(ob)5 b(ject)35 │ │ │ │ -b(from)e(a)h(formatted)g(\014le.)51 b(If)33 b(there)h(are)h(no)e │ │ │ │ -(errors)g(in)h(reading)227 1505 y(the)27 b(data,)h(the)f(v)-5 │ │ │ │ -b(alue)27 b Fi(1)g Fj(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ -h(encoun)m(tered)g(from)f Fi(fscanf)p Fj(,)g(zero)h(is)g(returned.)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1096 4 v │ │ │ │ +1277 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(No)m(v)m(em)m(b)s(er)i(15,)f │ │ │ │ +(2025)p 2805 100 V 111 399 a Fj(1.)46 b Fi(int)h(Perm_readFromFile)c │ │ │ │ +(\()48 b(Perm)e(*perm,)g(char)h(*fn)g(\))g(;)227 552 │ │ │ │ +y Fj(This)29 b(metho)s(d)f(reads)h(a)g Fi(Perm)f Fj(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 Fi(Perm)p 845 665 29 4 v 33 w │ │ │ │ +(readFromFormattedFile\(\))29 b Fj(or)36 b Fi(Perm)p │ │ │ │ +2320 665 V 33 w(readFromBinaryFile\(\))p Fj(,)c(closes)k(the)g(\014le) │ │ │ │ +227 778 y(and)30 b(returns)f(the)i(v)-5 b(alue)31 b(returned)e(from)h │ │ │ │ +(the)g(called)i(routine.)227 931 y Fg(Err)-5 b(or)35 │ │ │ │ +b(che)-5 b(cking:)43 b Fj(If)31 b Fi(perm)f Fj(or)h Fi(fn)g │ │ │ │ +Fj(are)h Fi(NULL)p Fj(,)e(or)i(if)f Fi(fn)g Fj(is)h(not)f(of)h(the)g │ │ │ │ +(form)e Fi(*.permf)g Fj(\(for)i(a)f(formatted)227 1044 │ │ │ │ +y(\014le\))g(or)f Fi(*.permb)f Fj(\(for)h(a)h(binary)f(\014le\),)h(an)f │ │ │ │ +(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(metho)s(d)g(returns)f │ │ │ │ +(zero.)111 1239 y(2.)46 b Fi(int)h(Perm_readFromFormattedFil)o(e)42 │ │ │ │ +b(\()47 b(Perm)g(*perm,)f(FILE)h(*fp)g(\))g(;)227 1392 │ │ │ │ +y Fj(This)33 b(metho)s(d)g(reads)h(in)f(a)h Fi(Perm)f │ │ │ │ +Fj(ob)5 b(ject)35 b(from)e(a)h(formatted)g(\014le.)51 │ │ │ │ +b(If)33 b(there)h(are)h(no)e(errors)g(in)h(reading)227 │ │ │ │ +1505 y(the)27 b(data,)h(the)f(v)-5 b(alue)27 b Fi(1)g │ │ │ │ +Fj(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is)h(encoun)m(tered)g │ │ │ │ +(from)f Fi(fscanf)p Fj(,)g(zero)h(is)g(returned.)227 │ │ │ │ 1618 y(Note,)36 b(if)d(the)g(p)s(erm)m(utation)g(v)m(ectors)h(are)g │ │ │ │ (one-based)f(\(as)h(for)f(F)-8 b(ortran\),)35 b(they)e(are)g(con)m(v)m │ │ │ │ (erted)i(to)f(zero-)227 1731 y(based)c(v)m(ectors.)227 │ │ │ │ 1884 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(perm)g Fj(or)g Fi(fp)g Fj(are)g Fi(NULL)p Fj(,)g(an)g(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)111 │ │ │ │ 2079 y(3.)46 b Fi(int)h(Perm_readFromBinaryFile)42 b(\()47 │ │ │ │ @@ -3844,17 +3853,17 @@ │ │ │ │ 34 w(writeStats\(\))26 b Fj(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 Fi(1)e Fj(is)h(returned.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fj(If)30 b Fi(perm)g Fj(or)g Fi(fp)g │ │ │ │ Fj(are)g Fi(NULL)p Fj(,)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 1135 4 v 1316 100 a Fi(PERM)29 │ │ │ │ -b Fb(:)i Fg(DRAFT)121 b Fb(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2719 100 V 1135 w Fj(5)111 399 y(8.)46 b Fi(int)h(Perm_writeStats)d(\() │ │ │ │ +TeXDict begin 5 4 bop 91 100 1096 4 v 1277 100 a Fi(PERM)29 │ │ │ │ +b Fb(:)i Fg(DRAFT)121 b Fb(No)m(v)m(em)m(b)s(er)31 b(15,)h(2025)p │ │ │ │ +2758 100 V 1096 w Fj(5)111 399 y(8.)46 b Fi(int)h(Perm_writeStats)d(\() │ │ │ │ j(Perm)g(*perm,)f(FILE)h(*fp)g(\))g(;)227 549 y Fj(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 Fi(1)f Fj(is)h(returned.)227 │ │ │ │ 699 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ b Fi(perm)g Fj(or)g Fi(fp)g Fj(are)g Fi(NULL)p Fj(,)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 October 18, 2025 │ │ │ │ │ + 2 PERM : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + PERM : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 PERM : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + PERM : DRAFT November 15, 2025 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 │ │ │ │ @@ -12,15 +12,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ReferenceManual.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -4809,23 +4809,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -4999,90 +4998,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -10606,32 +10614,32 @@ │ │ │ │ 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 53 /five 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 78 /N 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 │ │ │ │ @@ -10813,181 +10821,189 @@ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753 │ │ │ │ A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ -DAAAB2896FCFB745795C4D2C87CC14FE0D165EF1C2A06A9B89855A1E543F3691 │ │ │ │ -B90E4EE9F324FFCE2D59A8810987DCF0CC270D5E734D22592A1B77DB98075341 │ │ │ │ -C48676342C1C74660E7D79B7329A7F6AB723AEED60BF2E1158F0591CC962E5A6 │ │ │ │ -ACDD131797F623F38B06F9E9EBCBCB1FE26371AC95C993BF2A625BDF1D49FAB3 │ │ │ │ -AFF04E871B6F2BF4F0127C5A92A54E9D2307AFBAEF86AA35B1AAD6E5330470DA │ │ │ │ -6A84A8C260EF31ECBCD67CAB9BA3B37D12C31E41D1E495C18DD72C72032FFAB1 │ │ │ │ -0E6CBFDC1B0748E2AD3FB518D59BBB422674ABD2EA15473C0FCE24C3F559CB6F │ │ │ │ -4CDC952EECB94E85C971DFA753D5623A032218BFEF7F1FEEB7B5F9D8EDC6BC41 │ │ │ │ -E90EE95A9FA2BE4ADCC951D23F067BD336C887236518DB0919C09A062B0871DB │ │ │ │ -050C5AAC61B490830F0E850226DB45393AB4C2277225EB6B36856AA4EC06CA02 │ │ │ │ -553B7764E14671316E2CEA6E5FCDB613597D38A3D0FF1DE1E457BF114E6CD9DC │ │ │ │ -64DE1112D94E63D5DC9BE645FF7FF073D4F08432AC7DF2702C859767E2FF555C │ │ │ │ -32F915EFF6D20269A6F4F99A21237EF394B3AA3E9A461D887E252CADE52A2C3B │ │ │ │ -8BCDCD72D457C09BF610FE1ADE603615BB682B556F54555373DD9034DBAF91FD │ │ │ │ -A699D9E6553BBA161FFFE6E928EEAB1B377BD35AD54788B18B6E82ADCE44E8F1 │ │ │ │ -8336D8B456D90806750425C5931630449C081148E560790CC5710BC1A6798BAC │ │ │ │ -78E98FE4DD69B4540F15B4F6264233D05BB85F7828D6AF8F85276C3B04D4DE2E │ │ │ │ -51D84D8DBB7F4C41AED1CFB4DD19EE284A575E039D9D8FAD2D4A5E552C668481 │ │ │ │ -758CE5267462B2406B29098DC348591AB885F92DC896D9A81C78A86EE0596979 │ │ │ │ -8C4F1FC0CDAD7DB3C96CEDBCF57144E528804EF98162F034F9BE681D0B5FE2DA │ │ │ │ -E84F4873EB4A48EA20127A52F560FA71E9CB3BC4587A45B005A6D59B5B553B82 │ │ │ │ -21672673EF241E4E2686EBA38D36959C47B021832592C86D38D730A6F55AA56C │ │ │ │ -2B2FE2C22E1007A768FDDD89816EF59205E3920FF740E1CB847E48AD770D5C59 │ │ │ │ -0260B2A4069867BFBD7C8F464E59EAE6A5570EBA2229EEC904EE1BBE87457ADD │ │ │ │ -8F48723A79ACB3102BE57852DA7A7338938ABFF7D3EECEFF24BC72C60E78790A │ │ │ │ -CC3BB46AF3E9F3165F321ED6F6817A158EE3B5DC982FB47566181A908315447C │ │ │ │ -388547D3A8E869BEAA1058B20B82BA4A9D33FE838CC94BC3BAB930D4AFBE0648 │ │ │ │ -9908D78EC83C6CC0611E759D84E9A2ED7FE20EA33552B693A0863121FC54DB35 │ │ │ │ -BCC1464601CB56ACCC8AEA269F129C1E6EE70B41AB76315C609D95958BE69952 │ │ │ │ -56CB3FCC5618234E82689336AB2EDA9A4615F7593D90DDB980E93B9CDF490974 │ │ │ │ -14932C129A9CE8872E921B52D6F3801632BC7CE8A52CE7B6496398E70870A23A │ │ │ │ -3D3D816C158EB9F9C811E5B7F5BDE1528C629A15A12FA73F25A27E07399B9754 │ │ │ │ -3773787147048074215FD96A8ADB4E1EE97E401365E6C81E0C1CAB3C9C29069D │ │ │ │ -9CB7E81DD4CF568EBC0B8C780D31F3A97122047B141065AE3595391B43B16FD5 │ │ │ │ -9AF9471CB7626FC3366ED4F149BA745DE3CA0AD6298BE6253D04F017B119CDE1 │ │ │ │ -B629F45E363503A54695EF5DBAD1204CB2C5509F81D3340A6BE0A22AE90E5819 │ │ │ │ -4F5D4B296D7AAC0F91761B1DCAB0D4F099C4E4163B68AA4180C3E7072993515A │ │ │ │ -0653B3E2E214FA92AE260BB5B85F5A73836267658B054E51F564C464428ED276 │ │ │ │ -B5ADDDE278064D690C4D09368264EE2EDDD9E0DE3E9B7E98DF3E1FCBC80078B9 │ │ │ │ -36FE9DCDAD6D3B246CAB643C05775F7759518AE6BEB2A79ECFD39748721ECA6D │ │ │ │ -2DD5757E8C58B101442E8BCFBA935942FA543C0A6EF233F427DEA1906EAD2733 │ │ │ │ -48F5F94CB5C96DF55B6CF82FB2881221DB2283CF4D5405E485F781CEDA45B15B │ │ │ │ -9DCC61FD2B6C28E980B6D101066FE63DB0CB54AA90D38A57E2D3F61769FA8C32 │ │ │ │ -D80C43441236825EF43B5B4E361E4ACA2CCEA8282A83E80383C5C937DF642C0F │ │ │ │ -EB4F46CDC45E54BE3E8CE762417164CD1A7F20855A6BEFC921B4439B179B6E8D │ │ │ │ -AE13E05180A7BF9CF2AD2031C5A2DE871CFC42ADC6DED31EEDD5E28776193DE4 │ │ │ │ -E30CD0478F6E05CA850F60188D00803E8308EED9DDE03F92869946C4E6AB20DC │ │ │ │ -E2A6A396CD194E17DE384A0EE2DD1326E9B95CC22B3ED235AD41553C91F840F9 │ │ │ │ -60D346C07DC2FB8887AA435D6491D55D98CF9B74306DA49500FF43E23051F36B │ │ │ │ -650E175D288DA1003B767744F9D63022336671200EE0C3BF2DD0CC689B23FD5F │ │ │ │ -F12A04DBE58BF58843FA4E3CF39F1C2C84C7BD622014472AB93A2522EDB88021 │ │ │ │ -7C354EDDE1DA399FDFC3E7632532362F723BA03912E015D96FA35A8B873BD5A7 │ │ │ │ -29EBC24056AEC1DDAF012F38BB06D0F944C7FA3A9890925C943A8484F7912FF9 │ │ │ │ -9848F09CDAB2BA401B7C66DE6594836920F8B2ADB6EB677C60DAF9384CAC43DA │ │ │ │ -0FBA46FA4BD1EE643AEC505AC9ADA97C02EA1ADA831628C59EAE4A45C6DF1B8D │ │ │ │ -F02DD74BE0E94567F4A4A73E4AF30E4DBBD67B92BFBB5BD0DFF012626AB11BC9 │ │ │ │ -96A8F653528BCC8FAB7A170E7ACB4EB54EAC74B53426F45340C9FB190BF7094F │ │ │ │ -CE9EC7D1E26BD6492795205608C1445C9E73916438A8CAF6AEAD49685116C02B │ │ │ │ -A07760B654084610A5CF7192B5C48189FCE9BFB1B845420551469A82C70297A8 │ │ │ │ -3A3C65013CD67D7D94DE90273D9E2B7A7ADB875E5DC3AB09B10057B75C82404F │ │ │ │ -51B1973EB72D3B0E3FDE271DE3266F944866075FDAB58C9A4D3B72C7384E6E85 │ │ │ │ -C1F6EE1989DB6292DC9BE4E19F98F1EFA7F5B6A6A49AC06CA84ACCE6A6A28044 │ │ │ │ -321CE8F99E2FF5EA0FF6B2D47454522B077691B6457FC84ABA00BAEAF0A3068B │ │ │ │ -27FE74D3CC2C8F00BF413AFDE81256952CFFF9075EA0A8D934DB1AA0379963AF │ │ │ │ -EC6B76E6DE8C6A866CE114F21354909B9EE9E5773957C559AB105657087E3B82 │ │ │ │ -80C4AE1B87C882D1979FE9A1BE316549DD4A0D0AD5F4B576CEA96CAB3FC597BA │ │ │ │ -A2B5782914C336241D50828C982EE78D4D850F664C52A11E55BD80D782AF11E3 │ │ │ │ -1676BAFCFB9D929C9BE07DD6B442BA9206EDA3941C098ECD37C0DB9BEFC0D4DE │ │ │ │ -E89FDF4CEADDFABFE7F28684F2C4E0FCC72FF2C26483A4DE859D3C3C1D73C60F │ │ │ │ -D7B3D9CC237A7CD9B88DA3A4173AF5EF9D72D36840D2EF23919319DF23F07D9A │ │ │ │ -2B730A766C9FD24EBC27E0B2CDE5A0F8E95E4F64F546EC3D22FD0D29B686703F │ │ │ │ -2ABA3D945D8A35F0D65151DF6CB1D986264C6838048A3CE5F6636C0526826491 │ │ │ │ -CE5B2369E2846BFB37F353F21EA0F1B4807CEE9D2076851E1B97A9CB37E2659C │ │ │ │ -32E986BE514AFCBC8A91E06715A638F69710D7AFDDE07D47242117793BE47D7F │ │ │ │ -B8F76D0CEB2DCD839372BB6E216A590B2B4D4250B23EB8FDB5C5514A1DE39577 │ │ │ │ -30D404710E2A1FE0704924D54FB50936DDB2242C4B368D1B4CB24E31E779A5B7 │ │ │ │ -9F1D5339774D00D57625E58E41ABFBE13D52BB72629C395091E53A1D1F06204F │ │ │ │ -C12A234294AE65071F7BDEBA8AE71BC1AEE9CA1A24BF72C70464447E25597392 │ │ │ │ -89241A98D093D96615FFA80A7A6A15D661FC0391FDC54E2D20E28592C9B86CD9 │ │ │ │ -E79F2F4EAAE29794200C2AF7172E1BC845E07B36131B95E69A56FB8FF39C1D6A │ │ │ │ -C42FB72BC119077B7726C3B3B810B3BD475DEB6C9E91C5ED67B5F52781792605 │ │ │ │ -A091376C917CBBCC37256AB6DE934B10A1B6A7A11C8D3E7D7FAF3B29767F683D │ │ │ │ -83DDB31DBFAA9A8783095284F86135337A68417087E63E5D8711B4F4DE4997AD │ │ │ │ -BFBBFABC5C5536E59A588ED47D5D00EBDE0E1919B6B3BE71773A353AE17B7AF3 │ │ │ │ -6D1C3B36A224FF87CCF87350B8AD71E5966D4FEDDD3099DBC9977C5F4AB0285A │ │ │ │ -38B7C6B50BA1CDA18D2D20145F3F55AB22BB3434F00F3A35A153BAE8CD9BC976 │ │ │ │ -A1F55B6B8EAD0032C9CE50C26566BD4D8AE349F068B31F657A8F797589595013 │ │ │ │ -9A1953706A6497C28BB41D60B8A3B1F6078AB985FF686096E318EDB4A6CD2480 │ │ │ │ -D185AAD61D2E3E486445F7AFAF02A0E58E6181FE077749A0DD3CADEB178E8A2D │ │ │ │ -8C6F081E9C034CDF3D615C993BD0E88DED260B1A950B724BADEC450AFA2F07A5 │ │ │ │ -1C1F3731A9542A12F4EF56A08917E12FD81CB6431C15EEE6FDE0AD705CC7EAC3 │ │ │ │ -C40EE93DB5FB560395F5A21DBE11C830222AC90787A94C02BC9CF22F5CA0A52F │ │ │ │ -A3A941EB9ABFC3047B138773360993ABE0F32D1E645A7A4B86E265B4F5ECADDA │ │ │ │ -C87114BA465C05195C55DDDFDDDA2FA4CBDC799E1E2D0E7E1E14FC602CFCAA8B │ │ │ │ -60D9525E02470BB0BA290D0F161883C5CD54D857B913067C0C87B694F99AC2C8 │ │ │ │ -0AFA47FE4D0E2CF82F07E89C52A14D3C15C112B1EC81DA1B969E738067B61716 │ │ │ │ -B044E5EB768C3ECCA4339A33602159831B092AB39624E1CDC1C178B03E7E06FF │ │ │ │ -F8D1A4CA722AA4D1B1C39FC70DBA44B58BC04374A6232A03A9BD61D0D11F6FD0 │ │ │ │ -669E02F45CDB8F664E873202A74C8334CA2187A719EA07A7ADE92920A122D648 │ │ │ │ -6FAB4FC667EA4D070E4CA5CB9150004F590B9175F1A672F8011DF83C84FFFA50 │ │ │ │ -5C304DF4EBD87B632AFC74BBAEFD1D378C5992BF43224C23133289879C185EBB │ │ │ │ -90A51A4A5174557DBB7415D1E3C86092F6CF5F3DAE518F7CA95FB76318DEAF23 │ │ │ │ -93C8DACA217101AEB251353D2F914D9BAAC07450E7A060B0FB48985CD478A32B │ │ │ │ -309F509AC531D74DB52627A77CF1E785E2B1E68825EF6933FBB28F343A086E63 │ │ │ │ -72163BB8DFD2032EA5BD9C4654A9EDCB88353689DDB1102F19D4C26C51B7D106 │ │ │ │ -421CB629B98C5021F1CEA32DC00009B1B250A46F0E491B18974682FDE988CC79 │ │ │ │ -CD55EC067F1C17FB991B395E982EB3CA23D7312F8A79C1B76138E74409CF6617 │ │ │ │ -F0EC23A8E9DB6E5CA0D5DF8C4321F1736034B569CAC7327A8537733EE21C96BE │ │ │ │ -524241B72D0BE05A89673FE179563372505DECA1656B85982FFAD6E229417672 │ │ │ │ -1867B110933248A40633F110C8163AAA51E4C903240411B931DFD986B4B34FE2 │ │ │ │ -F6925EFB001C88954F0948B2ECF3F4B4428C44E48F5537481D6A45B2D11AEBBE │ │ │ │ -3398938EE50A31B683B1B6CF834CBEBBD3EA84E0E7B38730C7DA0071BC4BECC6 │ │ │ │ -C443346E21846BFBEE7D459C87F04B1C1BBA3230D9EBE01E11804180AA7FEC72 │ │ │ │ -29E6F7F576783C9CC3FD3EBF10098F8F02AEC4C0804AA5AE06875DFEEABBF183 │ │ │ │ -265327078D27EED469AF1BD7BD9770D7999AFA8F16EC24ECCFC39749AF97D44F │ │ │ │ -D71C8BDF5E985F41E8A9EBE5356305D1D94D6A0E387C99FB2BB9F7BF8BC9A801 │ │ │ │ -06B32E996783D314458286592A6A386DB9CC04F5B69A6A92D139F15342BFE628 │ │ │ │ -4672C2B2285B3C6F7F58FE3E23FD05BF6DA08BCF9209B3F8D7F2599585A83532 │ │ │ │ -2CC984AE7BDA9307FE7BA0EF972CDC1796A45CABCF3C147D5CBD3F195B975625 │ │ │ │ -379AB9931890DFA1C0B2E2B9B6098B16858044619707FE597242E097E493C6AB │ │ │ │ -4E834AB3A229A4B3BFE495855AEB6B03966CDF1EA18F3F1E68695410551EA8F0 │ │ │ │ -912EBA4FAC5EB4B629F86AF66F2E571B5FA84DABC27351515C36C44FECC8D56F │ │ │ │ -7AEE2966C2EE5D7CFB78DD900A2939E90FE7AEC516721FF0C7FF8C6B3E56264D │ │ │ │ -03A7757A46D751D6A6F8AEB28B843ACC217148FC37CEFA015056CE25420D71D7 │ │ │ │ -5BF6E4659A20E3DE369777D31C507CC0C51BBDA957FA34CA37279CBF4D594EC8 │ │ │ │ -26217A6D2AB18FCFD76548FDC44D31A165FA5F92043D402E09D2062FA81AD49E │ │ │ │ -4471C2BD7AB9021C36CF22BAC9FD78DD175CC7771DDC98FC7770420EDC810317 │ │ │ │ -18F7EA5AD060FB2AEA3B0A656D17755F583867F5922E123DEA5D0AEA67335504 │ │ │ │ -D2623044D65FDC190B14B4D8BC6138B1A1AB2ACCAA6366E6F24AC01928BB2993 │ │ │ │ -65A7F11AB54E69ED19C2AB0EF596C3C247DA02B95A79C7669832A056EBC9EE66 │ │ │ │ -EDEB0823C7929CFD201BB6B48AA443B7BEFD31E716F3E727ECADE6D656BC1DCF │ │ │ │ -4177CF724B72790E9FB9C6D0E23664ED33B680D284F389E42879288795DB1F21 │ │ │ │ -575902D21D3E71F2331CD8338A60A5BAA4BDCF606CC9A9283BBAD17EF538BF01 │ │ │ │ -417BC68A26E64162A7ACCC4317002E47BB9F5BF949D085FDEA7E8072A0CD326B │ │ │ │ -1E046BE261B1E7634994FD618F01A7A4F7978B4533DA97BB3D9772BF4A1B5930 │ │ │ │ -BDE58B26FF464831A50891E2C870B30F3A599F8FA260B80AB373569180A017D0 │ │ │ │ -9339705DBDC9DE34B0ED3F517B6606044E5764E0D883461A4F3C1D5AC88A93F3 │ │ │ │ -4216E523C083C48399EAC308AA6689EB9E6B2B1CEEC6F23880F0D66A0EAAF448 │ │ │ │ -5E86C3C926B87797847841306E336FA4FB88FE403BCB46ED09FC7633632B35C5 │ │ │ │ -2C82D24E7B468D62BDC736EB70969D7319AA5E3423F9BC2ACD8BB3A226E8B46D │ │ │ │ -6A794B43D8C5BA618344FB04751841E4AD2DA4E83F9F7DA0140626DEC222976F │ │ │ │ -005E1350B89E076C4DCB16EEBDC19E645F67321880C54484174C259732A2A1F7 │ │ │ │ -7731AD6FD0CFE3D43774F6F1B35DBB2164FC130E062CC3FB3054B0AC7E8AFE30 │ │ │ │ -4A464E9451CF775CF2F7D31F64AC3898DA0E4533D6CFE9DB83DD7D919C060914 │ │ │ │ -BF48CA8489726303323CAC694FDFF77485753ED14AB7E9F1BFF7ECB355E97494 │ │ │ │ -58BA371C3DC7868A01E8C1C60E954558D205D9336886BF6A391AA7838165EF14 │ │ │ │ -7768CF432BF8838376062FE1491FE7C7ED416E75AF82FDEA85A31259E3C7DBE6 │ │ │ │ -CBC0EDE365AE1C2F917CA88B77BFE548FA1CA07D35337D796A855A16467477EF │ │ │ │ -C1B97DAA29309742054E1B03AF9FF620A09B33AA55F540C8E2EFE126FBA25595 │ │ │ │ -44037D95E119B936792B8F039A1325E818640A45AF49B5B72E23AF4B28CEFB7D │ │ │ │ -63E696056D325521ED05733DB1B0D9BE61F16254A45702D474CCD140593AF816 │ │ │ │ -81E03FA1F4F4880881179BDEEFC091DEA7044D727E6A6094C64C97CE29ACD943 │ │ │ │ -BB6DC547EEE78C683FCFB464E5D4D01F033532586A086A17D2F39814BF7BC161 │ │ │ │ -45A31AA5FFCE6594CCE37336EAB865B871345CB22D56BD4B5D0DE927D8DD01F3 │ │ │ │ -39AF0D7268ED8311D4355BF65D4FB6A414F62768A5B039513D99A05F12B7D25A │ │ │ │ -528B37DA8E3332E93A6228E0CA1E05B33F854787AA89E468BA472ACAFE291B8E │ │ │ │ -761230297159F4F89C7C839F30D2066E0DE6A8485719454071DB00D2285D451C │ │ │ │ -EA99A76277EABADADDBC749CA3DFC56C42B2E39F3D941758A87963441EAEEBF0 │ │ │ │ -7CF3EAFC1572D2E56FB9AE844DDB2EE7B2DE8842AC3A4B753632ABB92B374761 │ │ │ │ -BFE0A978EC7D01AA9A858C6FDA6C3D7D29DD89E5B4AEE0B949481CB593A954E1 │ │ │ │ -3AF3C060A3AE92D5F227F8D0DC65D50DA049F540B2421D40DF7B294AFBACBB2A │ │ │ │ -949B81A2F1D205F813C9A26AADEF84DE84CB305C77779304730A467BFFF13FEA │ │ │ │ -1DBDE95D82EA0E0823C80A57F6D7378E375AE4D9E55DC08C4D6731DD12470745 │ │ │ │ -67351186A247657DFFE40A811BF61BEE22E40A5A93DD9562B9441DA3F058522D │ │ │ │ -9CEB62FB411E3BB23E253F84D0437579A35462B0B2102C6232A84B573BAB9AA9 │ │ │ │ -CEDA873E705CF864A821B9D3BAFC0611EEB5DB995D63C257D79A1872FC787990 │ │ │ │ -AF5744DFB5DC48255B965310CC4254BF7CBF233DEBF996C480F7D88C14D558 │ │ │ │ +DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ +073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ +EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ +8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CB8279 │ │ │ │ +86D2D942871606D4B8A274C720E46E43BE44C74224A8520232F7F6C96FC7D6D2 │ │ │ │ +EB817F578B294EC22FA123ED64613F3AE96DE23AA1833D2A527F282DC80C38CA │ │ │ │ +B5A9D66708ED2293AC1F832C82B70993055FCF9BDE6F5DEAECBE5345572E7D78 │ │ │ │ +71D938095EE457512DAABB5278FFBB263323B7FBDC84B52650114DC3DF9E57BB │ │ │ │ +C1835D2D17273F234A45642152EA125D909CA252173DAE4D0073D71DC3823955 │ │ │ │ +488FADCF5F3B1E500A3059C4E00DAECB29BCACE5456AE77DB22FB7F97E9B9BF2 │ │ │ │ +6D89F8080F41B03D402E59FFA3ED920D4DA409ECA9AAD57BAC91C3F1B51279EA │ │ │ │ +A3133501892E9E53F3F8A6BDA0FFF9456D027AE49BD31372050313BE55845B85 │ │ │ │ +F15380257D6687D5F609325220D553D0F5C384A88E22325B42E6A336A12560BE │ │ │ │ +70E273FE85B4E68DD94BD530295F6D981DF936B92F136DF95AEF560EB138CB11 │ │ │ │ +EC45F6D29743E46A4DDCB80283409F2C52FF83976BA136A4534307A8DDA639B6 │ │ │ │ +2AAD5AA364DDE7579E5946794FC3999FF332D8850933C290757862426C8CBBA7 │ │ │ │ +D2AFAC107C0A501BB747EFB9183E5697A649E88DAF39DD80A24B433DE4B2B5D9 │ │ │ │ +315579CC46C0FD847530C5F5B784D1282ED79F8BB99F0BB731CF670F82B3B4B9 │ │ │ │ +79425967950E55CDA0857D295131E35E83D1CA6EF30BD1B730A2ADEC51A35988 │ │ │ │ +E1401D65025C18B8A9D20D1F534CE189AB7F4C276347F590154CAEFE11447B6E │ │ │ │ +B26B54D9EA5045D16663BFFFC9226ACB4C4F27E6FCC900581013D8F35F591F21 │ │ │ │ +5C29B2514AE0D5D84EE17EE329F031B0686CA3B7B917B70EFABF61C6AD15A635 │ │ │ │ +79F42A008A655E3B5EA2588812CE356634B3087BAD1DC71AF15CB1717D51DD38 │ │ │ │ +0C7888AD6C8C70430067D73D315E27E3AE5D030DC949562620FCFDBD9F116385 │ │ │ │ +726E903CA4F5802499D9F307CB6002AD4A893FC97A35DBD452D51C813766FA39 │ │ │ │ +664820570263277FE24B4FF2BF60D1841DEE9779FC4CBC8A066F5426975CD4DD │ │ │ │ +7D18B0819DDE871776C0424C2C14F3BE36D0BA94394122BFAD6F689A99F2206C │ │ │ │ +9C53FA56403FD2110F01A4F5CDD8B99F6F90BC6E66C01DA942FE331680C37B41 │ │ │ │ +66ADAD552326F13BEA2B42E88D556DE709282788C73571B0D045F341639DEBED │ │ │ │ +2A3DD42FF29A707E892BCDADCC7BF15AE538B98001E0EBD278C223E6D76DDF2F │ │ │ │ +5C342D625A3841BC7B2BA4981794A16C5308504791BC2BFA24986AF552740CF5 │ │ │ │ +082CCA8BBDEB346422D1F80DDC1BD196E2B602F1A07B227AB65C91E0E130AABC │ │ │ │ +D6CCB8F8A5C6EEC309F283BE15DBD6505452C8503CD0151AB51D4AD86EB7C5CF │ │ │ │ +0DBF93D21BB1CAE70D2EAC9DD6F629C9F3304B639B591CF37DC4460B4DE979DB │ │ │ │ +768D97D41363FF3B2E05ACF19F17E83E61971C84D5C36A10F7847010D6CB8F0F │ │ │ │ +6968E4271382A0E039BD598CB0C98203DAB740B42590D828410EF84E2E6F4C6D │ │ │ │ +F89300F2C1338193D0FE0BECA8027AF11A5B55ADA077F9451F0D63E34DEF542B │ │ │ │ +C5EB0EA03F4F2E3F14EF447D7E09A12C370559C6002F0769DF7EF566A31DB6F2 │ │ │ │ +41E273580FE3311C6C0F20600D7B4117883CFD51DDB7D95B0C198A6A7C114C39 │ │ │ │ +1BD005425D75CBF69DE0E94D1A68C7B3CEF3965E0D8E0AFE4EEDAF7979702873 │ │ │ │ +742F966135E8E1168960A2D82D4F0404AE70531E8979C52E66E22A245A28A364 │ │ │ │ +730DC7182F544BB75569E60C2023B9FB3E6EC60FE170C70036E2E8C1494640BC │ │ │ │ +4E4E81B208280FCD62D916DE5085D09AD2CD0046D67CD3CC9C734544A05EC6DC │ │ │ │ +4894CAA3D14598DEC788D35447EC1B38C22EF99D8A2B1E45BE6D7407FF328BB3 │ │ │ │ +ACADAD380A8E3D4F51A2F58C0806D8D95DF026B71CF42CD14DCD7DE5DC22D646 │ │ │ │ +B29DFB9DD06377E23FB44BBD6C8A91056DFDCE23CD0CBF1FF29A50FF5EECBE80 │ │ │ │ +F4F0307A738C9EE0A86DF6B644B17561C29ED9E7BBA02CEE6B2E7DD84012E4B6 │ │ │ │ +18775D7566BDA2ED68FEB40BD1104F15F9E3FA808937BBD28AA21D37E500476F │ │ │ │ +95779F14F81336E356C319D919BB8F6EFD9387F5FFFFAEFF246AE78E29358524 │ │ │ │ +83B8A294F17EBD18CC713BBC8973A0ED06E35F0A604BDDA5A44CBBF059DA2674 │ │ │ │ +5AF33B07E0C04592AD19A1433738D8ABBFD4591F56261EFEBF59DAEE7E7397DF │ │ │ │ +F5502EEC80BEEBD0B5C7C3EAA373C47C26DAFB0748B75FD2C40A26ED2FF720E1 │ │ │ │ +4AAD72280D36FDBCFACD099840360EF1E7B7DEBB92DB18BD8A9A5D630E8B276E │ │ │ │ +2E58FE97CDDFBA3783B28854BFEBA5521C290A0904ED7F73AB34498EFCDEA4B0 │ │ │ │ +A6A49495FB389FA54A08FCD93E30D4F47054C33C952EC56FE7C0630C61D96F9C │ │ │ │ +A63A999C9CAEE5FAC3C0D14354FB4A319F9101AA403332EF37FF5151F5C30ABE │ │ │ │ +6A8D97A821898407E5BF5D83EA6BF586B4E56D9D4E9FDA068420802CF419EF7C │ │ │ │ +EC96E63F813F2760F39C8BA8F5338924B739A277161002E24C88AA9EF6DC034B │ │ │ │ +643F78E7124B4A6E107DBFDD567819BE6134F211965C46A0D8F1C2F87179EEF7 │ │ │ │ +61963D8DCEF47D2564AE5E906C8C1D99C187757249B2A05B4085D3A0633CD80B │ │ │ │ +8C4E3E706FEE709B71673DA4037AE2702EFD1ED4132A368A0B2032E53C8841C1 │ │ │ │ +BBD0A6D3F1FC4DDFDA194120CEEB814740C9D23A92360FEBB269D57A9FD15B0E │ │ │ │ +6F76B4FA216DB8781E033603598EDFE8725BFFE29738AAEC9693EB81FA3D758D │ │ │ │ +BEE4CDF84C24C6A44643B3C5D9AD701A1FAF3EF7B2A17C708385AB9AC261CC79 │ │ │ │ +7380EFD7D230A52176DA4F269CDE633B7391DFD8E398D36E273DD36165854511 │ │ │ │ +60918415CA62DF3E94556B85039A174A755A6C09755FAB2A045D30C78CF5A5B2 │ │ │ │ +DB94EF4263A9EBF4F97E39C55C5A23B5BED437E3A795BA5A71A6DB1DF90F567E │ │ │ │ +A42C2A32234F01DDCC12C82D1645D505C502DCAFD732D7FC1564A39987B23064 │ │ │ │ +8E899929527733B4750EAE8B7A26CC18C48FE982559B0475398888C5A3226967 │ │ │ │ +AB38EA292EA38918389F5942FB2F19CE4F91AE4298F9C20822085F69614EFAD8 │ │ │ │ +D32983487B1A75C8D60E8A84F7BB11332143F46402F4945B5A09734C285DCEFB │ │ │ │ +DEBA6B757419B7CC50ED12E7E450495998FB0D052683AB267F36436E39723412 │ │ │ │ +E3428079DA68BE02399655AC05E84846F93E8A4276A204803556A0F158684E7A │ │ │ │ +A7617E2C8E789CF5687F3DE8F897134E40045FCEA2654B8DBE804C302859D62C │ │ │ │ +6383A3457844DFE47A930E6F5D8FB59B865ED4D1DA552B458DD68B36FDC87B89 │ │ │ │ +5EFCA405458DE3DBD1A9F8AD6D7F2B34A2ECE435640B99D181ADA91B1AA7924D │ │ │ │ +26C4784854677B1677AA90883E874F36F8F806553590409A189314022E3B2BAE │ │ │ │ +35E1FEECF33703DEEE3B07AD12782EE71E1B01A008624D3523FB34A4D4E27D5F │ │ │ │ +0EF2B0991DF5D0876158ABC400C90E3AC97B71ED1AD7FC6586413C9BFF25811C │ │ │ │ +4872A4B3129898BC4E30D6D85F3864D6A533C6B4F2DA8D911235A99656B42926 │ │ │ │ +5C6AE1B500A0DB539DFB35BB74BAA1FD42F65AB729A5A1910D51C04C0F0C0D3E │ │ │ │ +34702A6118A37DE5328C7DEACCE64AD87BAC339CD879351B9427CEAD128933DF │ │ │ │ +C07C16513569D82E9860B23161ED492CFEA4AC5B6005EA41CF2AEFD997AD21C5 │ │ │ │ +568BB3F6A8C56209C9620AA67AF99F60F42B1A0D07397A6C2D3D5AA3F016D1C2 │ │ │ │ +1E6D5E69DB4661F9151628B732B48520AADA2DF344E60BE6318C78D433AE00E0 │ │ │ │ +223698DA0841B815800C9E1CC3731810A8CC12860912CE77F6F621CE26ECDBA4 │ │ │ │ +BF835D09A5AE7CE62EE3FDEE024BF78FCE110EC96447ECBC93D2C75F5424CC7F │ │ │ │ +4396EC6105B8F950FE64E4968B621FFE5EC13DB1038B63900CCC45A057FC9A60 │ │ │ │ +87D2F5C9F49686DEC6C4F8EF454A0AED7ECB4CCA72B325C2EB4CB77642CDABEB │ │ │ │ +6F2EA84753D435C23C062715259977CF78A247B8BF9DCF43D091487B8DBED453 │ │ │ │ +DAC95E6DFE8C98D7EE99CF357C1C1F05EDB7037D77B6A9948B913CE3E049693D │ │ │ │ +605D700414A70ED5FE88B415F6F0EC2EE8B46A1DA9C2FC7D250A6865BB3F55DC │ │ │ │ +32C3112006BF85C00D4E8E6E8FAF79BA8A772B14B5627C726A1063AC92D693D2 │ │ │ │ +87C2B543AF217DDC90F4DD84A47648E3CCC055D6B0D3C1D6C61B52A0792B7BBD │ │ │ │ +2A424A5B827E0F8B5D16F9A6098E8524200A8E62D4C52EA9CCF7C368B604A482 │ │ │ │ +587F25D1F0A47C093420D9D67CA9E780D71AD904678F287A485DAD357018FC2D │ │ │ │ +6D6C175B854422DCECA3E9F06F07724B9B089F19614200FA4F3514D3A5157E41 │ │ │ │ +15CE3BCFBA92B3C175F4A52D2FC49FA3FDA6BB5E22437E8C100A848CDD8E05EB │ │ │ │ +86FDCC759DA6E606EDBC833210C2BE6B0F7BBE351B4F762F3A1C82CD156A4614 │ │ │ │ +750C5EF76D993A84747EFCD4596F238E6CD57DD0C68D9FFF04048A8FD43E0694 │ │ │ │ +FC8F7196C64660B769F6EE5B3D595D3700283B204E687F46D6523AB7742FC79D │ │ │ │ +6F1C61968F1D84E303C1360D8B148DEFD871CEF49322D45A68E6713BE04981D0 │ │ │ │ +9A6BB8DA618C9741DCFFA86AF3EEE16ED34ED08AB9F2D6172C1C567560C4F627 │ │ │ │ +2A03736C399B9F27BCFE04C63622062662369524E8EE30A4880B513EB3F9DA53 │ │ │ │ +82CA06F2AB885E4E71B1938D6DA18A26B05CE534A322A5EF2665C7708AB3264E │ │ │ │ +1F1E687B6B83D6006CF1089A78FED58A6EBFE1AE5AA2409548C3FA69B12030DF │ │ │ │ +39AA081D78E3F698FB1AE5C718BE10F35501038FBAAED6F5E9CF7B19D5972C4A │ │ │ │ +884AD7F8DD9AF22E66C45B8BE9DAC88A3AEA3528E628B5FB541980CF1F50E50F │ │ │ │ +ACB05B1359AA4C7EE81B4E7EF877FD3D054F7D47A62D7E3E703BE74C797D15BB │ │ │ │ +459F74F7155E5A3989234B1F82F476EFEF5DB774D44EADB85E0AC9DA63C1ED9D │ │ │ │ +70E2F24907E4A56225ACF8C2CF59466B16B4EAB9C2340EA4A9A53AA2BCBE2E4A │ │ │ │ +C9E2B9D116A3FCDB71D8B1A68E12C96A68F607BB30F4EE2088891DA39C1827C1 │ │ │ │ +D05EACA2D96FE20D3128E2B6022A44D9FC15BB78B972CAF9CE8A60BF0E3215D1 │ │ │ │ +26300FD03B1026A2798DCB97D399EEF55BE8595B5F6CC29D42860608504CB6F0 │ │ │ │ +A2CD5AA83FCAC5C0CAD317EEDFA7F588A75DD0C4D4826B1629FBF37E5886CA9E │ │ │ │ +4607EE3D040C80BC234D4402FE62037AB1F38346BAEBA7D3A27374688B30FB47 │ │ │ │ +B7076B88C0F8F7A4C53A557251265A0524257D2868DD5B15EC9D29FD317E34F0 │ │ │ │ +7636CF413CFE2A72A0A6018BCB64A33CE21CCB75F51582C51176A9CE8E4B6C42 │ │ │ │ +11CB5B9A967AA1F8ADFE43AB5ED239156A4BA3703E55006D43C1BB296766E27D │ │ │ │ +CFFE2070F9DE52A1BE4D1E3FF230B35D86638D1080B1EEA680691D688C244A83 │ │ │ │ +6F8DEFDB58C606F049323D02B3C264D9BCBA40952DCBC8008F043961210338B5 │ │ │ │ +C133FD1F32319C8287CB4E7D01641F861BD5E1760DC315D2F52E345B0575C323 │ │ │ │ +9EC54405049D6C9FAA13FD40C68E823F3A07176E3EEEC22E240DE4DE2A6C74B1 │ │ │ │ +8DC1148B7418ECAC2F905AD91065ECCC2338863592541EA3EB06E4F190AB2855 │ │ │ │ +64640B209978B2408EFF432984010864BF7759BFDC4F7C43BE1F555289A20C2E │ │ │ │ +CFB403C1DFF27526689879CBF585E036AAAF0AC0353C714458512B14744BFF76 │ │ │ │ +C0D0420AE6FE5679B92DFA9C497225E15AD6A5613A5B65EB789D89F28F1B9CD7 │ │ │ │ +81A7A4EC27835D92F801030E108ECAFD3FF11833EDD9D505F1BFD1AFA1243026 │ │ │ │ +2EB8129F4D79E7C6AEFF65FDC6AC9C667C96B13E7DCF4CA0E84ABE41B78A1511 │ │ │ │ +3BDE176686D46FC81FB854796379714567AAF5E5F6A14BDD87B4146771948731 │ │ │ │ +82F4AA08A0B3D691BA174B5E292457B3740E7E1A24866EB6238BA2CA0A114356 │ │ │ │ +F4F9912658A91CDDFBC6ABB24B68BD21FAEF6E8BC20D56CD506144394B9CC429 │ │ │ │ +E82D73FFCFB963BC8A215FAB3F24A575D32F1E76754315A87E7F817EC2CBA55F │ │ │ │ +0C2D53DB2366ABAC4FCDEB7CFBBF8A86728785B8C51A9DD88F04551E079CDBBE │ │ │ │ +D385B7161B188347DFB34AF128A602918F329D69F2324781096DF8798B83B68E │ │ │ │ +60793C08A13C44B727AF545A3B4D37138D52672E0C7A311E5D364A76C74CBE9E │ │ │ │ +2E9C28367ACBB620B6E57CCF48EB17EC833CEAA4D9526D090DF596CAF30DCCCA │ │ │ │ +C2BD9C064C2830015255C6F1B05E1F78734FD97DFB5C2F71F47DCDA593E2EF8A │ │ │ │ +73573C9B7C60BB017ACBD3E5CC1A75B222A43AD9CCC153D64F13F4257701DF02 │ │ │ │ +8EA244E2185D71181ECC4EBC38454599B09CF7E3E745D7EB917D98474B7D9823 │ │ │ │ +44981DB1AE4D2B94AE2F69AEBC55FC8BB7E79D15DD623737989C650CD31B6454 │ │ │ │ +A8E1A7CBD42831F4A967A5E26F2B9F1866AA021A59A36A6794C394FA458D5EC4 │ │ │ │ +23985F63F718DAA2FF45BB5D58787D583731FD59C39E924E275568CF77FA353B │ │ │ │ +D1E88C03CB449122FA450ABACAD747FF01EF0170363C45B17EE2ABC1C9A6CB7D │ │ │ │ +4DB81D9C0342E6EE6A13BB8998B91D985DE978254DEC2A02CF441A362FAABAA7 │ │ │ │ +5072C55ADCBD5ACDFBFECBBB3B77DDEE68007A89D385695A01CE2FC5AC1D5E7A │ │ │ │ +0E345340EAA8125921E0C83E594C3DB7CAB0666688856EDD4B6205EFC01D5E35 │ │ │ │ +56E1483C3E8279B7B6D27BC5885CA7C061D3D00135030446A44070FE69816008 │ │ │ │ +383374ABBDCCB82BBB6122FE7EBDCCAD3F0DAE356FC4309B17E6120E157E9A5D │ │ │ │ +10C315AEC936FD0226898AF367E110A410115CF129DA27E31FDE714B9309E483 │ │ │ │ +B1DB429969DE098F744B7DA6D4AF509B76DC1511A7689697670F9C58D739373B │ │ │ │ +BEA19B27F82B980DA6BB8A6C09C90A5C0E660831B4A9CD1F057DF49BBE7FF8CE │ │ │ │ +2277B8F10581A673005D92F4E4003282024E8DAD638CECFF0CDDB969C8E092BF │ │ │ │ +AA6F2101EC224100F43767C6B725496E1A709D5681221DB0B3F493091FF426C3 │ │ │ │ +258A1D5EBA1D73479A7CAC84B6FA0CD2DC8983584C2F051BAEDFF2E093C658B1 │ │ │ │ +8B972C1935249E9673EFBCC11956067E2E6494AC6D53F4AA96FE095757A75B83 │ │ │ │ +E3BA940DF30701589411D268B21FC34D52CE79E4FBA3A6DA583C6EA8288C38BD │ │ │ │ +79506613DB935ADE56DB566167535A1D99DE020337F0ADC5EADD12F3E46BAEE7 │ │ │ │ +13E743E14A93C29A36DD5EFD03F5DCAD9E62C55A41A4F3DFB7D77D9DDFE607EA │ │ │ │ +1B25A995C1D640ED68D555D241CB8F4E808C1331E8186C4A861A509C4996D113 │ │ │ │ +1BF47A05946DF028200CAE8088B40D26D70F75B72C081E51A74F4E5D1F69A9FA │ │ │ │ +E8D18007C60A8A5C5B568984F13AA518E8782483E6759DF4D5C490C1C8CC5627 │ │ │ │ +9AE1CEC6C48069D692AFE7C15D9CBB11932BE96D7C3DB201A185289C9AD45020 │ │ │ │ +320C980D2C33C5748ED2DB66E5559C16946C1C454319A62993D9B62A74C98EF2 │ │ │ │ +AE8ACE93B86A8D2352EC0AE67E8B95392F6C2C52CD72D3C635376F8864F9DBAF │ │ │ │ +F143E89577B88D03F01D79EF85E14CDE734CB5070CB8F1C369B802149DB75D30 │ │ │ │ +5E9F373C638FD9773D29C14588C132D05571B9A5A19207769DA396342AAF87A7 │ │ │ │ +D23A3150CBB9DD9776F13021AAD8BDA2DD9D3FDF7B47661EBCD32C932A602F15 │ │ │ │ +F0D02072C1C98280F060BDAC4F91319D5C468A1C757E6222E856FC0900C1443F │ │ │ │ +C9B62792DFDE3575EA312170352DC7E6AF632D12CE7EC3D1C3C0BA2FEAF0DEDA │ │ │ │ +8847B4F747F974CA9560B80E387344A661FB3410BD9879A903C1422B621845D8 │ │ │ │ +26B6A0E562560A44C9FD45BFA4AC69F640B9ED9AEF42345A8439C872C8AE13E3 │ │ │ │ +5398288565E9BAB12DF0743971F9C1FC26D5F3AD070E11A80F217426DBC5A556 │ │ │ │ +4B6B1F17EED4862BB09885C32E64FF3089A8 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -11519,65 +11535,66 @@ │ │ │ │ /CMBX12 rf /Fo 143[69 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 │ │ │ │ 14[42 65 23 65{}27 83.022 /CMSY10 rf /Fp 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 /Fq 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 /Fr 139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 │ │ │ │ -1[42 2[42 2[42 42 42 3[23 44[{}14 83.022 /CMSL10 rf /Fs │ │ │ │ -133[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[{}59 83.022 /CMMI10 │ │ │ │ -rf /Ft 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 │ │ │ │ +/CMCSC10 rf /Fr 137[44 3[33 2[42 1[69 7[37 2[46 19[62 │ │ │ │ +19[23 4[42 2[42 42 42 3[23 44[{}13 83.022 /CMSL10 rf │ │ │ │ +/Fs 133[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[{}59 83.022 │ │ │ │ +/CMMI10 rf /Ft 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 44 44 44 44 44 44 44 44 44 2[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 44 44 44 44 44 44 44 44 44 44 │ │ │ │ -44 1[44 44 44 33[{}89 83.022 /CMTT10 rf /Fu 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 /Fv 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 /Fw 172[45 2[55 │ │ │ │ -61 2[49 6[53 69[{}5 66.4176 /CMBX8 rf /Fx 190[49 3[51 │ │ │ │ -4[33 33 33 2[33 33 33 33 4[51 43[{}10 58.1154 /CMR7 rf │ │ │ │ -/Fy 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 │ │ │ │ -23 51 62 62 85 62 62 60 46 61 65 57 65 62 76 52 65 43 │ │ │ │ -30 62 65 54 57 63 60 59 62 1[39 39 65 1[23 23 42 42 42 │ │ │ │ -42 42 42 42 42 42 42 42 23 28 23 65 42 32 32 23 1[69 │ │ │ │ -1[69 42 18[69 69 46 46 48 60 1[60 6[69 1[{}94 83.022 │ │ │ │ -/CMR10 rf /Fz 132[48 42 50 50 69 50 53 37 38 39 50 53 │ │ │ │ -48 53 80 27 50 29 27 53 48 1[44 53 42 53 46 8[72 1[72 │ │ │ │ -73 66 53 72 72 65 72 75 91 57 75 1[36 75 75 60 63 73 │ │ │ │ -69 68 72 6[27 48 48 48 48 48 48 48 48 48 48 48 27 32 │ │ │ │ -27 2[37 37 26[53 53 12[{}67 83.022 /CMBX10 rf /FA 136[39 │ │ │ │ -39 39 39 39 39 1[39 39 39 39 39 1[39 39 39 39 39 39 39 │ │ │ │ -39 39 39 32[39 17[39 46[{}23 74.7198 /CMTT9 rf /FB 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 │ │ │ │ -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 /FC 203[30 30 30 30 49[{}4 │ │ │ │ -49.8132 /CMR6 rf /FD 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 │ │ │ │ -/FE 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 8[49 2[49 │ │ │ │ -2[49 49 49 1[27 1[27 44[{}31 99.6264 /CMR12 rf /FF 172[90 │ │ │ │ -2[110 121 2[97 6[106 69[{}5 143.462 /CMBX12 rf /FG 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 │ │ │ │ +44 44 44 44 1[44 44 44 33[{}89 83.022 /CMTT10 rf /Fu │ │ │ │ +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 /Fv 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 /Fw 172[45 2[55 61 2[49 6[53 69[{}5 66.4176 │ │ │ │ +/CMBX8 rf /Fx 190[49 3[51 4[33 33 33 2[33 33 33 33 4[51 │ │ │ │ +43[{}10 58.1154 /CMR7 rf /Fy 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 23 51 62 62 85 62 62 60 46 │ │ │ │ +61 65 57 65 62 76 52 65 43 30 62 65 54 57 63 60 59 62 │ │ │ │ +1[39 39 65 1[23 23 42 42 42 42 42 42 42 42 42 42 42 23 │ │ │ │ +28 23 65 42 32 32 23 1[69 1[69 42 18[69 69 46 46 48 60 │ │ │ │ +1[60 6[69 1[{}94 83.022 /CMR10 rf /Fz 132[48 42 50 50 │ │ │ │ +69 50 53 37 38 39 50 53 48 53 80 27 50 29 27 53 48 1[44 │ │ │ │ +53 42 53 46 8[72 1[72 73 66 53 72 72 65 72 75 91 57 75 │ │ │ │ +1[36 75 75 60 63 73 69 68 72 6[27 48 48 48 48 48 48 48 │ │ │ │ +48 48 48 48 27 32 27 2[37 37 26[53 53 12[{}67 83.022 │ │ │ │ +/CMBX10 rf /FA 136[39 39 39 39 39 39 1[39 39 39 39 39 │ │ │ │ +1[39 39 39 39 39 39 39 39 39 39 32[39 17[39 46[{}23 74.7198 │ │ │ │ +/CMTT9 rf /FB 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 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 │ │ │ │ +/FC 203[30 30 30 30 49[{}4 49.8132 /CMR6 rf /FD 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 /FE 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 1[73 │ │ │ │ +2[76 50 5[75 70 1[73 11[49 2[49 49 49 1[27 1[27 44[{}31 │ │ │ │ +99.6264 /CMR12 rf /FF 172[90 2[110 121 2[97 6[106 69[{}5 │ │ │ │ +143.462 /CMBX12 rf /FG 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 } │ │ │ │ @@ -11590,18 +11607,18 @@ │ │ │ │ TeXDict begin 1 0 bop 407 1704 a FG(The)44 b(Reference)g(Man)l(ual)f │ │ │ │ (for)g FF(SPOOLES)p FG(,)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 FE(Clev)m(e)35 b(Ashcraft)1004 2423 y FD(1)1297 │ │ │ │ 2459 y FE(Daniel)d(Pierce)1864 2423 y FD(2)2158 2459 │ │ │ │ y FE(Da)m(vid)g(K.)h(W)-8 b(ah)2774 2423 y FD(3)3066 │ │ │ │ -2459 y FE(Jason)33 b(W)-8 b(u)3485 2423 y FD(4)1586 2725 │ │ │ │ -y FE(Octob)s(er)32 b(18,)g(2025)104 4280 y FC(1)138 4312 │ │ │ │ -y FB(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 FE(Jason)33 b(W)-8 b(u)3485 2423 y FD(4)1544 2725 │ │ │ │ +y FE(No)m(v)m(em)m(b)s(er)34 b(15,)e(2025)104 4280 y │ │ │ │ +FC(1)138 4312 y FB(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 FA │ │ │ │ (cleve.ashcraft@boeing.com)p FB(.)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 FC(2)138 4585 y FB(Bo)r(eing)70 b(Shared)d(Services)i │ │ │ │ @@ -11769,37 +11786,38 @@ │ │ │ │ (.)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 │ │ │ │ Ft(Coords)e Fy(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 1157 4 v 1322 100 a Fz(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fr(:)120 b(Octob)r(er)26 b(18,)h(2025)p 2704 │ │ │ │ -100 V 1157 w Fy(3)0 390 y Fz(4)77 b Ft(DV)p Fz(:)30 b(Double)h(V)-8 │ │ │ │ -b(ector)33 b(Ob)5 b(ject)2617 b(39)125 511 y Fy(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 │ │ │ │ -Ft(DV)g Fy(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(.) │ │ │ │ +TeXDict begin 3 3 bop 83 100 1121 4 v 1287 100 a Fz(SPOOLES)31 │ │ │ │ +b(2.2)c Fr(:)120 b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2740 100 V 1121 w Fy(3)0 390 y Fz(4)77 b Ft(DV)p Fz(:)30 │ │ │ │ +b(Double)h(V)-8 b(ector)33 b(Ob)5 b(ject)2617 b(39)125 │ │ │ │ +511 y Fy(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(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(42)315 1235 │ │ │ │ +(.)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 Ft(DV)g Fy(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 │ │ │ │ Ft(DV)43 b(object)32 b Fy(.)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 Fz(5)77 b Ft(Drand)p │ │ │ │ @@ -11892,17 +11910,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 │ │ │ │ Ft(IV)43 b(object)32 b Fy(.)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 Fy(4)p 125 100 1157 4 v │ │ │ │ -1322 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(Octob)r(er)27 │ │ │ │ -b(18,)g(2025)p 2744 100 V 0 390 a Fz(9)77 b Ft(IVL)p │ │ │ │ +TeXDict begin 4 4 bop 0 100 a Fy(4)p 125 100 1121 4 v │ │ │ │ +1286 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2780 100 V 0 390 a Fz(9)77 b Ft(IVL)p │ │ │ │ Fz(:)30 b(In)m(teger)i(V)-8 b(ector)32 b(List)g(Ob)5 │ │ │ │ b(ject)2382 b(64)125 513 y Fy(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 │ │ │ │ Ft(IVL)g Fy(metho)r(ds)39 b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ @@ -12018,20 +12036,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 Ft(FV)27 b Fy(:)h Ft(float)d │ │ │ │ Fy(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 1157 4 v 1322 100 a Fz(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fr(:)120 b(Octob)r(er)26 b(18,)h(2025)p 2704 │ │ │ │ -100 V 1157 w Fy(5)315 390 y(13.2.6)52 b Ft(PCV)27 b Fy(:)g │ │ │ │ -Ft(char)42 b(*)28 b Fy(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 1121 4 v 1287 100 a Fz(SPOOLES)31 │ │ │ │ +b(2.2)c Fr(:)120 b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2740 100 V 1121 w Fy(5)315 390 y(13.2.6)52 b Ft(PCV)27 │ │ │ │ +b Fy(:)g Ft(char)42 b(*)28 b Fy(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 Ft(PDV)27 b Fy(:)g Ft(double)41 │ │ │ │ b(*)28 b Fy(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 Ft(PFV)27 │ │ │ │ b Fy(:)g Ft(float)42 b(*)27 b Fy(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 │ │ │ │ @@ -12133,17 +12151,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 │ │ │ │ Ft(BPG)f Fy(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 Fy(6)p 125 100 1157 4 v │ │ │ │ -1322 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(Octob)r(er)27 │ │ │ │ -b(18,)g(2025)p 2744 100 V 0 390 a Fz(17)i Ft(DSTree)p │ │ │ │ +TeXDict begin 6 6 bop 0 100 a Fy(6)p 125 100 1121 4 v │ │ │ │ +1286 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2780 100 V 0 390 a Fz(17)j Ft(DSTree)p │ │ │ │ Fz(:)125 490 y(A)j(Domain/Separator)g(T)-8 b(ree)32 b(Ob)5 │ │ │ │ b(ject)2217 b(126)125 616 y Fy(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 │ │ │ │ Ft(DSTree)e Fy(metho)r(ds)38 b(.)k(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ @@ -12255,57 +12273,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 Ft(GPart)f Fy(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 1157 4 v 1322 100 a Fz(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fr(:)120 b(Octob)r(er)26 b(18,)h(2025)p 2704 │ │ │ │ -100 V 1157 w Fy(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(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 Ft(DDsepInfo)24 b Fy(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 Ft(GPart)e Fy(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 Fz(21)29 b Ft(Graph)p Fz(:)39 b(A)32 b(Graph)h(ob)5 │ │ │ │ -b(ject)2685 b(174)125 1834 y Fy(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(.) │ │ │ │ +TeXDict begin 7 7 bop 83 100 1121 4 v 1287 100 a Fz(SPOOLES)31 │ │ │ │ +b(2.2)c Fr(:)120 b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2740 100 V 1121 w Fy(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(175)125 1969 │ │ │ │ -y(21.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ -Ft(Graph)f Fy(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 │ │ │ │ +(.)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(175)315 2240 y(21.2.2)h(Initializer)27 │ │ │ │ +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 Ft(DDsepInfo)24 │ │ │ │ +b Fy(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 Ft(GPart)e Fy(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 Fz(21)29 b Ft(Graph)p Fz(:)39 b(A)32 │ │ │ │ +b(Graph)h(ob)5 b(ject)2685 b(174)125 1834 y Fy(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 Ft(Graph)f Fy(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 │ │ │ │ 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 │ │ │ │ @@ -12371,17 +12389,17 @@ │ │ │ │ f(of)g Ft(MSMDvtx)e Fy(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 │ │ │ │ Ft(MSMD)e Fy(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 Fy(8)p 125 100 1157 4 v │ │ │ │ -1322 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(Octob)r(er)27 │ │ │ │ -b(18,)g(2025)p 2744 100 V 0 390 a Fz(23)i Ft(Network)p │ │ │ │ +TeXDict begin 8 8 bop 0 100 a Fy(8)p 125 100 1121 4 v │ │ │ │ +1286 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2780 100 V 0 390 a Fz(23)j Ft(Network)p │ │ │ │ Fz(:)39 b(Simple)30 b(Max-\015o)m(w)i(solv)m(er)2283 │ │ │ │ b(195)125 514 y Fy(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 Ft(Network)e │ │ │ │ Fy(metho)r(ds)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ @@ -12491,17 +12509,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 1157 4 v 1322 100 a Fz(SPOOLES)32 │ │ │ │ -b(2.2)27 b Fr(:)120 b(Octob)r(er)26 b(18,)h(2025)p 2704 │ │ │ │ -100 V 1157 w Fy(9)315 390 y(26.2.4)52 b(Searc)n(h)27 │ │ │ │ +TeXDict begin 9 9 bop 83 100 1121 4 v 1287 100 a Fz(SPOOLES)31 │ │ │ │ +b(2.2)c Fr(:)120 b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2740 100 V 1121 w Fy(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 │ │ │ │ @@ -12616,17 +12634,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 Fy(10)p 166 100 1136 │ │ │ │ -4 v 1301 w Fz(SPOOLES)31 b(2.2)c Fr(:)37 b(Octob)r(er)27 │ │ │ │ -b(18,)f(2025)p 2765 100 V 315 390 a Fy(30.2.5)52 b(Serial)27 │ │ │ │ +TeXDict begin 10 10 bop 0 100 a Fy(10)p 166 100 1100 │ │ │ │ +4 v 1265 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2800 100 V 315 390 a Fy(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 Fs(QR)h Fy(F)-7 b(actorization)26 b(metho)r(d)82 b(.)41 │ │ │ │ @@ -12747,17 +12765,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 1136 4 v 1302 100 a Fz(SPOOLES)31 │ │ │ │ -b(2.2)c Fr(:)120 b(Octob)r(er)27 b(18,)f(2025)p 2683 │ │ │ │ -100 V 1136 w Fy(11)0 390 y Fz(34)j Ft(PatchAndGoInfo)p │ │ │ │ +TeXDict begin 11 11 bop 83 100 1100 4 v 1266 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fr(:)120 b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2719 100 V 1100 w Fy(11)0 390 y Fz(34)i Ft(PatchAndGoInfo)p │ │ │ │ Fz(:)36 b(Piv)m(ot)c(Mo)s(di\014cation)f(Ob)5 b(ject)1856 │ │ │ │ b(307)125 513 y Fy(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 Ft(PatchAndGoInfo)22 │ │ │ │ b Fy(metho)r(ds)76 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ @@ -12870,17 +12888,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 Fy(12)p 166 100 1136 │ │ │ │ -4 v 1301 w Fz(SPOOLES)31 b(2.2)c Fr(:)37 b(Octob)r(er)27 │ │ │ │ -b(18,)f(2025)p 2765 100 V 0 390 a Fz(39)j Ft(SubMtxManager)p │ │ │ │ +TeXDict begin 12 12 bop 0 100 a Fy(12)p 166 100 1100 │ │ │ │ +4 v 1265 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(No)n(v)n(em)n(b)r(er)26 │ │ │ │ +b(15,)h(2025)p 2800 100 V 0 390 a Fz(39)i Ft(SubMtxManager)p │ │ │ │ Fz(:)36 b Ft(SubMtx)29 b Fz(ob)5 b(ject)33 b(manager)2057 │ │ │ │ b(336)125 515 y Fy(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 Ft(SubMtxManager)22 │ │ │ │ b Fy(metho)r(ds)56 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ @@ -12966,17 +12984,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 Ft(MatMulInfo)24 b Fy(:)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 1136 4 v 1302 100 a Fz(SPOOLES)31 │ │ │ │ -b(2.2)c Fr(:)120 b(Octob)r(er)27 b(18,)f(2025)p 2683 │ │ │ │ -100 V 1136 w Fy(13)125 390 y(43.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ +TeXDict begin 13 13 bop 83 100 1100 4 v 1266 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fr(:)120 b(No)n(v)n(em)n(b)r(er)26 b(15,)h(2025)p │ │ │ │ +2719 100 V 1100 w Fy(13)125 390 y(43.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ b(and)i(descriptions)f(of)g Ft(MPI)g Fy(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 │ │ │ │ │ - October 18, 2025 │ │ │ │ │ + November 15, 2025 │ │ │ │ │ 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 : October 18, 2025 3 │ │ │ │ │ + SPOOLES2.2: November 15, 2025 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: October 18, 2025 │ │ │ │ │ + 4 SPOOLES 2.2: November 15, 2025 │ │ │ │ │ 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 : October 18, 2025 5 │ │ │ │ │ + SPOOLES2.2: November 15, 2025 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: October 18, 2025 │ │ │ │ │ + 6 SPOOLES 2.2: November 15, 2025 │ │ │ │ │ 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 : October 18, 2025 7 │ │ │ │ │ + SPOOLES2.2: November 15, 2025 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: October 18, 2025 │ │ │ │ │ + 8 SPOOLES 2.2: November 15, 2025 │ │ │ │ │ 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 : October 18, 2025 9 │ │ │ │ │ + SPOOLES2.2: November 15, 2025 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: October 18, 2025 │ │ │ │ │ + 10 SPOOLES 2.2: November 15, 2025 │ │ │ │ │ 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: October 18, 2025 11 │ │ │ │ │ + SPOOLES 2.2: November 15, 2025 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: October 18, 2025 │ │ │ │ │ + 12 SPOOLES 2.2: November 15, 2025 │ │ │ │ │ 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: October 18, 2025 13 │ │ │ │ │ + SPOOLES 2.2: November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SemiImplMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1202,23 +1202,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1392,90 +1391,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4845,17 +4853,17 @@ │ │ │ │ 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 139[32 1[33 │ │ │ │ -2[42 9[37 1[37 46 18[65 20[23 1[42 2[42 2[42 42 42 3[23 │ │ │ │ -44[{}14 83.022 /CMSL10 rf /Fe 137[38 45 28 34 35 1[42 │ │ │ │ +67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fd 137[44 3[33 │ │ │ │ +2[42 1[69 7[37 2[46 19[62 19[23 4[42 2[42 42 42 3[23 │ │ │ │ +44[{}13 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 │ │ │ │ 104[23 65{}3 83.022 /CMSY10 rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ @@ -5040,21 +5048,21 @@ │ │ │ │ Fn(2)p Ff(j)p Fl(D)722 5419 y Fj(1)p Fi(;)p Fj(1)812 │ │ │ │ 5407 y Ff(j)g(\000)g(j)p Fl(A)1021 5419 y Fj(2)p Fi(;)p │ │ │ │ Fj(1)1112 5407 y Ff(j)g(\000)g(j)p Fl(A)1321 5419 y Fj(1)p │ │ │ │ Fi(;)p Fj(2)1412 5407 y Ff(j)p Fn(,)27 b(where)h Ff(j)18 │ │ │ │ b(\001)h(j)27 b Fn(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 Fn(2)p 125 100 1048 4 v │ │ │ │ -1213 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)28 b Fd(Octob)r(er)e(18,) │ │ │ │ -h(2025)p 2852 100 V 0 390 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ -595 y Fn(The)28 b Fm(SemiImplMtx)23 b Fn(structure)k(has)g(the)h(follo) │ │ │ │ -n(wing)e(\014elds.)125 776 y Fg(\210)42 b Fm(int)g(neqns)26 │ │ │ │ -b Fn(:)36 b(n)n(um)n(b)r(er)28 b(of)f(equations.)125 │ │ │ │ -939 y Fg(\210)42 b Fm(int)g(type)26 b Fn(:)37 b(t)n(yp)r(e)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1013 4 v │ │ │ │ +1178 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(No)n(v)n(em)n(b)r │ │ │ │ +(er)f(15,)h(2025)p 2888 100 V 0 390 a Fc(1.1)135 b(Data)46 │ │ │ │ +b(Structure)0 595 y Fn(The)28 b Fm(SemiImplMtx)23 b Fn(structure)k(has) │ │ │ │ +g(the)h(follo)n(wing)e(\014elds.)125 776 y Fg(\210)42 │ │ │ │ +b Fm(int)g(neqns)26 b Fn(:)36 b(n)n(um)n(b)r(er)28 b(of)f(equations.) │ │ │ │ +125 939 y Fg(\210)42 b Fm(int)g(type)26 b Fn(:)37 b(t)n(yp)r(e)28 │ │ │ │ b(of)f(en)n(tries,)g Fm(SPOOLES)p 1527 939 27 4 v 29 │ │ │ │ w(REAL)f Fn(or)g Fm(SPOOLES)p 2167 939 V 29 w(COMPLEX)p │ │ │ │ Fn(.)125 1101 y Fg(\210)42 b Fm(int)g(symmetryflag)13 │ │ │ │ b Fn(:)33 b(t)n(yp)r(e)18 b(of)h(matrix)e(symmetry)-7 │ │ │ │ b(,)20 b Fm(SPOOLES)p 2212 1101 V 29 w(SYMMETRIC)p Fn(,)15 │ │ │ │ b Fm(SPOOLES)p 2983 1101 V 28 w(HERMITIAN)g Fn(or)i Fm(SPOOLES)p │ │ │ │ 3822 1101 V 29 w(NONSYMMETRIC)p Fn(.)125 1263 y Fg(\210)42 │ │ │ │ @@ -5124,21 +5132,21 @@ │ │ │ │ Fn(.)101 5145 y(3.)42 b Fm(int)g(SemiImplMtx_clea)o(rD)o(ata)37 │ │ │ │ b(\()43 b(SemiImplMtx)c(*mtx)j(\))h(;)208 5276 y Fn(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 Fm(1)27 b Fn(means)g(a)g(normal)g(return,)g Fm(-1)g │ │ │ │ Fn(means)g Fm(mtx)f Fn(is)i Fm(NULL)p Fn(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 83 100 1048 4 v 1214 100 a Fm(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2813 100 V 1048 w Fn(3)101 390 y(4.)42 b Fm(int)g(SemiImplMtx_free)37 │ │ │ │ -b(\()43 b(SemiImplMtx)c(*mtx)j(\))h(;)208 518 y Fn(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 Fm(SemiImplMtx)p 2968 │ │ │ │ -518 27 4 v 27 w(clearData\(\))p Fn(,)d(then)j(free'd)208 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1013 4 v 1178 100 a Fm(SemiImplMtx)23 │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2848 100 V 1013 w Fn(3)101 390 y(4.)42 │ │ │ │ +b Fm(int)g(SemiImplMtx_free)37 b(\()43 b(SemiImplMtx)c(*mtx)j(\))h(;) │ │ │ │ +208 518 y Fn(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 Fm(SemiImplMtx)p │ │ │ │ +2968 518 27 4 v 27 w(clearData\(\))p Fn(,)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 Fm(1)27 b Fn(means)g(a)g │ │ │ │ (normal)g(return,)g Fm(-1)g Fn(means)g Fm(mtx)f Fn(is)i │ │ │ │ Fm(NULL)p Fn(.)0 993 y Fa(1.2.2)112 b(Initialization)39 │ │ │ │ b(Metho)s(ds)101 1166 y Fn(1.)j Fm(int)g(SemiImplMtx_init)o(Fr)o(omF)o │ │ │ │ (ro)o(ntM)o(tx)37 b(\()43 b(SemiImplMtx)c(*semimtx,)h(FrontMtx)g │ │ │ │ (*frontmtx,)905 1265 y(InpMtx)h(*inpmtx,)f(IV)j(*frontmapIV,)c(int)j │ │ │ │ @@ -5228,22 +5236,22 @@ │ │ │ │ Fn(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 Fm(X)g Fn(and)h Fm(B)g Fn(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 Fm(B)g Fn(and)h(written)g(to)f Fm(X)p Fn(.)g(On)h(return,)f │ │ │ │ (the)h Fm(cpus[])d Fn(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 Fn(4)p 125 100 1048 4 v │ │ │ │ -1213 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)28 b Fd(Octob)r(er)e(18,) │ │ │ │ -h(2025)p 2852 100 V 369 377 a Fm(cpus[0])97 b Fn(initialize)27 │ │ │ │ -b(w)n(orking)f(matrices)369 477 y Fm(cpus[1])97 b Fn(load)27 │ │ │ │ -b(righ)n(t)f(hand)i(side)369 576 y Fm(cpus[2])97 b Fn(\014rst)27 │ │ │ │ -b(solv)n(e)f(with)j(domains)369 676 y Fm(cpus[3])97 b │ │ │ │ -Fn(compute)27 b(Sc)n(h)n(ur)g(righ)n(t)g(hand)h(side)369 │ │ │ │ -775 y Fm(cpus[4])97 b Fn(Sc)n(h)n(ur)27 b(solv)n(e)2099 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1013 4 v │ │ │ │ +1178 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(No)n(v)n(em)n(b)r │ │ │ │ +(er)f(15,)h(2025)p 2888 100 V 369 377 a Fm(cpus[0])97 │ │ │ │ +b Fn(initialize)27 b(w)n(orking)f(matrices)369 477 y │ │ │ │ +Fm(cpus[1])97 b Fn(load)27 b(righ)n(t)f(hand)i(side)369 │ │ │ │ +576 y Fm(cpus[2])97 b Fn(\014rst)27 b(solv)n(e)f(with)j(domains)369 │ │ │ │ +676 y Fm(cpus[3])97 b Fn(compute)27 b(Sc)n(h)n(ur)g(righ)n(t)g(hand)h │ │ │ │ +(side)369 775 y Fm(cpus[4])97 b Fn(Sc)n(h)n(ur)27 b(solv)n(e)2099 │ │ │ │ 377 y Fm(cpus[5])97 b Fn(compute)27 b(domains')g(righ)n(t)g(hand)h │ │ │ │ (side)2099 477 y Fm(cpus[6])97 b Fn(second)27 b(solv)n(e)f(with)i │ │ │ │ (domains)2099 576 y Fm(cpus[7])97 b Fn(store)26 b(solution)2099 │ │ │ │ 676 y Fm(cpus[8])97 b Fn(miscellaneous)26 b(time)2099 │ │ │ │ 775 y Fm(cpus[9])97 b Fn(total)27 b(time)208 972 y Fe(R)l(eturn)h(c)l │ │ │ │ (o)l(des:)1193 1150 y Fn(1)99 b(normal)26 b(return)1165 │ │ │ │ 1250 y(-1)99 b Fm(mtx)26 b Fn(is)i Fm(NULL)1165 1350 │ │ │ │ @@ -5301,42 +5309,42 @@ │ │ │ │ (loaded)f(with)i(random)e(en)n(tries.)50 b(The)32 b(linear)208 │ │ │ │ 5240 y(system)27 b Fl(AX)j Fn(=)22 b Fl(B)32 b Fn(is)27 │ │ │ │ b(solv)n(ed)g(as)g(follo)n(ws.)307 5407 y Fg(\210)42 │ │ │ │ b Fn(First)28 b Fl(A)g Fn(is)f(factored,)g(and)g(a)h │ │ │ │ Fm(FrontMtx)c Fn(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 1048 4 v 1214 100 a Fm(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Octob)r(er)27 b(18,)g(2025)p │ │ │ │ -2813 100 V 1048 w Fn(5)307 390 y Fg(\210)42 b Fn(The)28 │ │ │ │ -b(system)f(is)h(solv)n(ed)e(using)h(the)h Fm(FrontMtx)d │ │ │ │ -Fn(ob)5 b(ject.)307 523 y Fg(\210)42 b Fn(A)28 b Fm(SemiImplMtx)23 │ │ │ │ -b Fn(matrix)k(ob)5 b(ject)28 b(is)f(constructed)g(from)h(the)g │ │ │ │ -Fm(FrontMtx)c Fn(ob)5 b(ject)27 b(and)h Fl(A)p Fn(.)307 │ │ │ │ -656 y Fg(\210)42 b Fn(The)28 b(system)f(is)h(solv)n(ed)e(using)h(the)h │ │ │ │ -Fm(SemiImplMtx)c Fn(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 │ │ │ │ -(message)e(\014le)h(to)g(compare)f(the)i(t)n(w)n(o)e(solution)h(pro-) │ │ │ │ -208 922 y(cesses.)k(Use)28 b(the)g Fm(do)p 872 922 27 │ │ │ │ -4 v 31 w(grid)e Fn(shell)h(script)g(for)h(testing.)307 │ │ │ │ -1104 y Fg(\210)42 b Fn(The)28 b Fm(msglvl)d Fn(parameter)h(determines)i │ │ │ │ -(the)g(amoun)n(t)f(of)g(output.)307 1237 y Fg(\210)42 │ │ │ │ -b Fn(The)32 b Fm(msgFile)c Fn(parameter)i(determines)h(the)h(message)e │ │ │ │ -(\014le)i(|)f(if)h Fm(msgFile)d Fn(is)i Fm(stdout)p Fn(,)f(then)i(the)g │ │ │ │ -(message)390 1337 y(\014le)c(is)f Fe(stdout)p Fn(,)h(otherwise)e(a)i │ │ │ │ -(\014le)f(is)h(op)r(ened)f(with)i Fe(app)l(end)g Fn(status)e(to)g │ │ │ │ -(receiv)n(e)g(an)n(y)g(output)h(data.)307 1469 y Fg(\210)42 │ │ │ │ -b Fm(n1)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(grid)g(p)r(oin)n(ts)h │ │ │ │ -(in)g(the)g(\014rst)f(direction.)307 1602 y Fg(\210)42 │ │ │ │ -b Fm(n2)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(grid)g(p)r(oin)n(ts)h │ │ │ │ -(in)g(the)g(second)f(direction.)307 1735 y Fg(\210)42 │ │ │ │ -b Fm(n3)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(grid)g(p)r(oin)n(ts)h │ │ │ │ -(in)g(the)g(third)f(direction.)307 1868 y Fg(\210)42 │ │ │ │ -b Fm(maxzeros)25 b Fn(is)i(the)h(maxim)n(um)f(n)n(um)n(b)r(er)h(of)f │ │ │ │ -(zero)r(es)g(to)g(place)g(in)n(to)h(a)f(fron)n(t.)307 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1013 4 v 1178 100 a Fm(SemiImplMtx)23 │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(No)n(v)n(em)n(b)r(er)27 │ │ │ │ +b(15,)f(2025)p 2848 100 V 1013 w Fn(5)307 390 y Fg(\210)42 │ │ │ │ +b Fn(The)28 b(system)f(is)h(solv)n(ed)e(using)h(the)h │ │ │ │ +Fm(FrontMtx)d Fn(ob)5 b(ject.)307 523 y Fg(\210)42 b │ │ │ │ +Fn(A)28 b Fm(SemiImplMtx)23 b Fn(matrix)k(ob)5 b(ject)28 │ │ │ │ +b(is)f(constructed)g(from)h(the)g Fm(FrontMtx)c Fn(ob)5 │ │ │ │ +b(ject)27 b(and)h Fl(A)p Fn(.)307 656 y Fg(\210)42 b │ │ │ │ +Fn(The)28 b(system)f(is)h(solv)n(ed)e(using)h(the)h Fm(SemiImplMtx)c │ │ │ │ +Fn(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(message)e(\014le)h(to)g(compare)f │ │ │ │ +(the)i(t)n(w)n(o)e(solution)h(pro-)208 922 y(cesses.)k(Use)28 │ │ │ │ +b(the)g Fm(do)p 872 922 27 4 v 31 w(grid)e Fn(shell)h(script)g(for)h │ │ │ │ +(testing.)307 1104 y Fg(\210)42 b Fn(The)28 b Fm(msglvl)d │ │ │ │ +Fn(parameter)h(determines)i(the)g(amoun)n(t)f(of)g(output.)307 │ │ │ │ +1237 y Fg(\210)42 b Fn(The)32 b Fm(msgFile)c Fn(parameter)i(determines) │ │ │ │ +h(the)h(message)e(\014le)i(|)f(if)h Fm(msgFile)d Fn(is)i │ │ │ │ +Fm(stdout)p Fn(,)f(then)i(the)g(message)390 1337 y(\014le)c(is)f │ │ │ │ +Fe(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ +Fe(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ +307 1469 y Fg(\210)42 b Fm(n1)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g │ │ │ │ +(grid)g(p)r(oin)n(ts)h(in)g(the)g(\014rst)f(direction.)307 │ │ │ │ +1602 y Fg(\210)42 b Fm(n2)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g │ │ │ │ +(grid)g(p)r(oin)n(ts)h(in)g(the)g(second)f(direction.)307 │ │ │ │ +1735 y Fg(\210)42 b Fm(n3)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g │ │ │ │ +(grid)g(p)r(oin)n(ts)h(in)g(the)g(third)f(direction.)307 │ │ │ │ +1868 y Fg(\210)42 b Fm(maxzeros)25 b Fn(is)i(the)h(maxim)n(um)f(n)n(um) │ │ │ │ +n(b)r(er)h(of)f(zero)r(es)g(to)g(place)g(in)n(to)h(a)f(fron)n(t.)307 │ │ │ │ 2001 y Fg(\210)42 b Fm(maxsize)25 b Fn(is)i(the)h(maxim)n(um)g(n)n(um)n │ │ │ │ (b)r(er)f(of)h(in)n(ternal)f(ro)n(ws)f(and)h(columns)h(in)f(a)h(fron)n │ │ │ │ (t.)307 2134 y Fg(\210)42 b Fm(type)26 b Fn(m)n(ust)i(b)r(e)g(either)f │ │ │ │ Fm(SPOOLES)p 1459 2134 V 29 w(REAL)f Fn(or)h Fm(SPOOLES)p │ │ │ │ 2100 2134 V 28 w(COMPLEX)p Fn(.)307 2267 y Fg(\210)42 │ │ │ │ b Fm(symmetryflag)23 b Fn(m)n(ust)28 b(b)r(e)g(either)f │ │ │ │ Fm(SPOOLES)p 1808 2267 V 29 w(SYMMETRIC)p Fn(,)d Fm(SPOOLES)p │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 SemiImplMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + SemiImplMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SemiImplMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + SemiImplMtx : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SolveMap.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1441,23 +1441,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1631,90 +1630,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4344,16 +4352,16 @@ │ │ │ │ %%EndFont │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 234[71 21[{}1 90.9091 /CMSY10 rf /Fb 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 /Fc 137[62 5[62 │ │ │ │ 62 2[62 6[62 3[62 13[62 5[62 77[{}8 119.552 /CMTT12 rf │ │ │ │ -/Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 │ │ │ │ -2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fe 132[52 │ │ │ │ +/Fd 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fe 132[52 │ │ │ │ 123[{}1 90.9091 /CMBX10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -4468,39 +4476,40 @@ │ │ │ │ b Fl(int)i(*rowidsUpper)27 b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f │ │ │ │ (for)g(the)h(upp)s(er)d(triangle)137 5213 y Ff(\210)45 │ │ │ │ b Fl(int)i(*colidsUpper)27 b Fm({)k(v)m(ector)h(of)e(column)h(ids)f │ │ │ │ (for)g(the)g(upp)s(er)f(triangle)137 5407 y Ff(\210)45 │ │ │ │ b Fl(int)i(*mapUpper)28 b Fm({)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 Fm(2)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 137 399 a Ff(\210)45 b Fl(int)i(nblockLower)27 │ │ │ │ -b Fm({)k(n)m(um)m(b)s(er)e(of)i(submatrices)f(in)g(the)h(lo)m(w)m(er)g │ │ │ │ -(triangle)137 588 y Ff(\210)45 b Fl(int)i(*rowidsLower)27 │ │ │ │ -b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f(for)g(the)h(lo)m(w)m(er)g │ │ │ │ -(triangle)137 778 y Ff(\210)45 b Fl(int)i(*colidsLower)27 │ │ │ │ -b Fm({)k(v)m(ector)h(of)e(column)h(ids)f(for)g(the)g(lo)m(w)m(er)i │ │ │ │ -(triangle)137 967 y Ff(\210)45 b Fl(int)i(*mapLower)28 │ │ │ │ -b Fm({)j(map)f(from)g(submatrices)g(to)h(threads)f(or)g(pro)s(cesses)h │ │ │ │ -(pro)s(cesses)0 1281 y Fg(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ -b(and)f(descriptions)g(of)g Fc(SolveMap)c Fg(metho)t(ds)0 │ │ │ │ -1510 y Fm(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 1623 y Fl(SolveMap)28 b Fm(ob)5 b(ject.)0 │ │ │ │ -1894 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 2092 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 2204 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h │ │ │ │ -(the)g(ob)5 b(ject.)111 2444 y(1.)46 b Fl(SolveMap)g(*)h(SolveMap_new)e │ │ │ │ -(\()i(void)g(\))g(;)227 2596 y Fm(This)35 b(metho)s(d)g(simply)g(allo)s │ │ │ │ -(cates)j(storage)f(for)e(the)h Fl(SolveMap)d Fm(structure)i(and)g(then) │ │ │ │ -g(sets)h(the)g(default)227 2708 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f │ │ │ │ -Fl(SolveMap)p 1330 2708 29 4 v 32 w(setDefaultFields\(\))p │ │ │ │ -Fm(.)111 2898 y(2.)46 b Fl(void)h(SolveMap_setDefaultField)o(s)42 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 995 4 v │ │ │ │ +1177 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 137 399 a Ff(\210)45 b │ │ │ │ +Fl(int)i(nblockLower)27 b Fm({)k(n)m(um)m(b)s(er)e(of)i(submatrices)f │ │ │ │ +(in)g(the)h(lo)m(w)m(er)g(triangle)137 588 y Ff(\210)45 │ │ │ │ +b Fl(int)i(*rowidsLower)27 b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f │ │ │ │ +(for)g(the)h(lo)m(w)m(er)g(triangle)137 778 y Ff(\210)45 │ │ │ │ +b Fl(int)i(*colidsLower)27 b Fm({)k(v)m(ector)h(of)e(column)h(ids)f │ │ │ │ +(for)g(the)g(lo)m(w)m(er)i(triangle)137 967 y Ff(\210)45 │ │ │ │ +b Fl(int)i(*mapLower)28 b Fm({)j(map)f(from)g(submatrices)g(to)h │ │ │ │ +(threads)f(or)g(pro)s(cesses)h(pro)s(cesses)0 1281 y │ │ │ │ +Fg(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ +Fc(SolveMap)c Fg(metho)t(ds)0 1510 y Fm(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 1623 y Fl(SolveMap)28 │ │ │ │ +b Fm(ob)5 b(ject.)0 1894 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +2092 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 2204 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ +(free'ing)h(the)g(ob)5 b(ject.)111 2444 y(1.)46 b Fl(SolveMap)g(*)h │ │ │ │ +(SolveMap_new)e(\()i(void)g(\))g(;)227 2596 y Fm(This)35 │ │ │ │ +b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e(the)h │ │ │ │ +Fl(SolveMap)d Fm(structure)i(and)g(then)g(sets)h(the)g(default)227 │ │ │ │ +2708 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fl(SolveMap)p │ │ │ │ +1330 2708 29 4 v 32 w(setDefaultFields\(\))p Fm(.)111 │ │ │ │ +2898 y(2.)46 b Fl(void)h(SolveMap_setDefaultField)o(s)42 │ │ │ │ b(\()47 b(SolveMap)f(*solvemap)f(\))j(;)227 3049 y Fm(This)36 │ │ │ │ b(metho)s(d)h(sets)g(the)g(default)h(\014elds)e(of)h(the)g(ob)5 │ │ │ │ b(ject)38 b(|)f Fl(symmetryflag)44 b(=)k(SPOOLES)p 3419 │ │ │ │ 3049 V 32 w(SYMMETRIC)p Fm(,)227 3162 y Fl(nfront)p Fm(,)35 │ │ │ │ b Fl(nproc)p Fm(,)g Fl(nblockUpper)e Fm(and)h Fl(nblockLower)e │ │ │ │ Fm(are)k(set)g(to)g(zero,)h(and)e Fl(owners)p Fm(,)g │ │ │ │ Fl(rowidsUpper)p Fm(,)227 3275 y Fl(colidsUpper)p Fm(,)28 │ │ │ │ @@ -4530,24 +4539,25 @@ │ │ │ │ b(SolveMap)d(*solvemap)g(\))j(;)227 5256 y Fm(This)30 │ │ │ │ b(metho)s(d)g(returns)f Fl(symmetryflag)p Fm(,)e(the)k(symmetry)f │ │ │ │ (\015ag.)227 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fm(If)30 b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)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 1034 4 v 1215 100 a Fl(SolveMap)29 │ │ │ │ -b Fd(:)40 b Fk(DRAFT)121 b Fd(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\() │ │ │ │ -j(SolveMap)f(*solvemap)f(\))j(;)227 552 y Fm(This)30 │ │ │ │ -b(metho)s(d)g(returns)f Fl(nfront)p Fm(,)g(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ -(fron)m(ts.)227 706 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ -b Fm(If)30 b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)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 Fl(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\)) │ │ │ │ -j(;)227 1055 y Fm(This)30 b(metho)s(d)g(returns)f Fl(nproc)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 995 4 v 1176 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(3)111 399 y(2.)46 │ │ │ │ +b Fl(int)h(SolveMap_nfront)d(\()j(SolveMap)f(*solvemap)f(\))j(;)227 │ │ │ │ +552 y Fm(This)30 b(metho)s(d)g(returns)f Fl(nfront)p │ │ │ │ +Fm(,)g(the)h(n)m(um)m(b)s(er)f(of)i(fron)m(ts.)227 706 │ │ │ │ +y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b │ │ │ │ +Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)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 Fl(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\))j(;)227 │ │ │ │ +1055 y Fm(This)30 b(metho)s(d)g(returns)f Fl(nproc)p │ │ │ │ Fm(,)g(the)i(n)m(um)m(b)s(er)e(of)h(threads)g(or)h(pro)s(cesses.)227 │ │ │ │ 1209 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)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 Fl(int)h(SolveMap_nblockUpper)42 b(\()48 b(SolveMap)d(*solvemap)h(\)) │ │ │ │ h(;)227 1558 y Fm(This)d(metho)s(d)g(returns)g Fl(nblockUpper)p │ │ │ │ Fm(,)i(the)f(n)m(um)m(b)s(er)e(of)i(o\013-diagonal)i(submatrices)e(in)f │ │ │ │ @@ -4596,17 +4606,17 @@ │ │ │ │ Fl(rowidsLower)p Fm(,)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 Fk(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(solvemap)e │ │ │ │ Fm(is)j Fl(NULL)p Fm(,)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 Fm(4)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 66 399 a Fm(11.)46 b Fl(int)h(*)h │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 995 4 v │ │ │ │ +1177 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 66 399 a Fm(11.)46 b Fl(int)h(*)h │ │ │ │ (SolveMap_colidsLower)42 b(\()47 b(SolveMap)f(*solvemap)f(\))j(;)227 │ │ │ │ 567 y Fm(This)31 b(metho)s(d)g(returns)f Fl(colidsLower)p │ │ │ │ Fm(,)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 Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)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 │ │ │ │ @@ -4664,34 +4674,35 @@ │ │ │ │ (fashion.)227 5294 y Fk(Err)-5 b(or)43 b(che)-5 b(cking:)59 │ │ │ │ b Fm(If)39 b Fl(solvemap)p Fm(,)i Fl(upperBlockIVL)36 │ │ │ │ b Fm(or)k Fl(ownersIV)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)f │ │ │ │ Fl(symmetryflag)e Fm(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 1034 4 v 1215 100 a Fl(SolveMap)29 │ │ │ │ -b Fd(:)40 b Fk(DRAFT)121 b Fd(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(5)0 399 y Fb(1.2.5)112 b(Solv)m(e)38 │ │ │ │ -b(setup)g(metho)s(ds)111 591 y Fm(1.)46 b Fl(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 Fm(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 Fl(IP)f Fm(ob)5 │ │ │ │ -b(jects)21 b(that)h(con)m(tain)f(the)g(list)g(of)g(submatrices)227 │ │ │ │ -1189 y(that)31 b(thread)f(or)h(pro)s(cess)f Fl(myid)f │ │ │ │ -Fm(will)i(use)f(during)f(the)h(forw)m(ard)g(or)h(bac)m(kw)m(ard)f(solv) │ │ │ │ -m(es.)227 1336 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)39 │ │ │ │ -b Fm(If)30 b Fl(solvemap)d Fm(is)j Fl(NULL)p Fm(,)f(or)g(if)h │ │ │ │ -Fl(myid)47 b(<)g(0)29 b Fm(or)h Fl(myid)47 b(>=)g(solvemap->nproc)p │ │ │ │ -Fm(,)26 b(an)j(error)227 1449 y(message)j(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ -(program)h(exits.)0 1709 y Fb(1.2.6)112 b(Utilit)m(y)38 │ │ │ │ -b(metho)s(ds)111 1902 y Fm(1.)46 b Fl(int)h(SolveMap_owners)d(\()j │ │ │ │ -(SolveMap)f(*solvemap,)f(int)i(rowid,)f(int)h(colid)f(\))i(;)227 │ │ │ │ +TeXDict begin 5 4 bop 91 100 995 4 v 1176 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(5)0 399 y Fb(1.2.5)112 │ │ │ │ +b(Solv)m(e)38 b(setup)g(metho)s(ds)111 591 y Fm(1.)46 │ │ │ │ +b Fl(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 │ │ │ │ +Fm(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 Fl(IP)f Fm(ob)5 b(jects)21 b(that)h(con)m(tain)f │ │ │ │ +(the)g(list)g(of)g(submatrices)227 1189 y(that)31 b(thread)f(or)h(pro)s │ │ │ │ +(cess)f Fl(myid)f Fm(will)i(use)f(during)f(the)h(forw)m(ard)g(or)h(bac) │ │ │ │ +m(kw)m(ard)f(solv)m(es.)227 1336 y Fk(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)39 b Fm(If)30 b Fl(solvemap)d Fm(is)j │ │ │ │ +Fl(NULL)p Fm(,)f(or)g(if)h Fl(myid)47 b(<)g(0)29 b Fm(or)h │ │ │ │ +Fl(myid)47 b(>=)g(solvemap->nproc)p Fm(,)26 b(an)j(error)227 │ │ │ │ +1449 y(message)j(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)0 │ │ │ │ +1709 y Fb(1.2.6)112 b(Utilit)m(y)38 b(metho)s(ds)111 │ │ │ │ +1902 y Fm(1.)46 b Fl(int)h(SolveMap_owners)d(\()j(SolveMap)f │ │ │ │ +(*solvemap,)f(int)i(rowid,)f(int)h(colid)f(\))i(;)227 │ │ │ │ 2048 y Fm(If)37 b Fl(rowid)46 b(=)i(colid)p Fm(,)37 b(this)g(metho)s(d) │ │ │ │ g(returns)f(the)h(o)m(wner)g(of)h(fron)m(t)f Fl(rowid)p │ │ │ │ Fm(.)60 b(Otherwise,)38 b(this)f(metho)s(d)227 2161 y(returns)32 │ │ │ │ b(the)h(thread)f(or)h(pro)s(cess)g(of)g(the)g(o)m(wner)f(of)h │ │ │ │ Fj(L)2127 2175 y Fi(rowid)r Fh(;)p Fi(colid)2537 2161 │ │ │ │ y Fm(if)f Fl(rowid)c Fa(\025)h Fl(colid)j Fm(or)h Fj(U)3438 │ │ │ │ 2175 y Fi(rowid)q Fh(;)p Fi(colid)3847 2161 y Fm(if)227 │ │ │ │ @@ -4742,29 +4753,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 Fl(myid)32 │ │ │ │ b Fm(o)m(wns)g(fron)m(t)h Fl(J)p Fm(,)g(then)f(en)m(try)h │ │ │ │ Fl(J)f Fm(of)h(the)g(returned)f Fl(IV)g Fm(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 Fm(6)p 136 100 1034 4 v │ │ │ │ -1216 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2866 100 V 227 399 a Fm(\(other)c(than)e Fl(myid)p │ │ │ │ -Fm(\))g(that)i(o)m(wn)f(an)f Fj(L)1522 413 y Fi(J)p Fh(;)p │ │ │ │ -Fi(I)1643 399 y Fm(submatrix,)h(\(or)h Fj(U)2304 413 │ │ │ │ -y Fi(I)p Fh(;)p Fi(J)2425 399 y Fm(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 Fl(myid)f │ │ │ │ -Fm(exp)s(ects)i(for)f(fron)m(t)g Fl(J)p Fm(.)227 665 │ │ │ │ -y Fk(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fm(If)31 b │ │ │ │ -Fl(solvemap)f Fm(is)i Fl(NULL)e Fm(or)i Fl(nlist)46 b(<)h(0)32 │ │ │ │ -b Fm(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 Fb(1.2.7)112 b(IO)38 │ │ │ │ -b(metho)s(ds)0 1258 y Fm(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 Fm(6)p 136 100 995 4 v │ │ │ │ +1177 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2906 100 V 227 399 a Fm(\(other)c(than)e │ │ │ │ +Fl(myid)p Fm(\))g(that)i(o)m(wn)f(an)f Fj(L)1522 413 │ │ │ │ +y Fi(J)p Fh(;)p Fi(I)1643 399 y Fm(submatrix,)h(\(or)h │ │ │ │ +Fj(U)2304 413 y Fi(I)p Fh(;)p Fi(J)2425 399 y Fm(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 │ │ │ │ +Fl(myid)f Fm(exp)s(ects)i(for)f(fron)m(t)g Fl(J)p Fm(.)227 │ │ │ │ +665 y Fk(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fm(If)31 │ │ │ │ +b Fl(solvemap)f Fm(is)i Fl(NULL)e Fm(or)i Fl(nlist)46 │ │ │ │ +b(<)h(0)32 b Fm(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 Fb(1.2.7)112 │ │ │ │ +b(IO)38 b(metho)s(ds)0 1258 y Fm(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 │ │ │ │ Fl(SolveMap)e Fm(ob)5 b(ject)21 b(is)g(simple:)35 b Fl(symmetryflag)p │ │ │ │ Fm(,)0 1371 y Fl(nfront)p Fm(,)21 b Fl(nproc)p Fm(,)g │ │ │ │ Fl(nblockUpper)c Fm(and)j Fl(nblockLower)p Fm(,)f(follo)m(w)m(ed)j(b)m │ │ │ │ (y)e Fl(owners[*])p Fm(,)g Fl(rowidsUpper[*])p Fm(,)f │ │ │ │ Fl(colidsUpper[*])0 1484 y Fm(and)h Fl(mapidsUpper[*])p │ │ │ │ Fm(,)e(and)i(if)g Fl(symmetryflag)45 b(=)i(SPOOLES)p │ │ │ │ 2180 1484 29 4 v 33 w(NONSYMMETRIC)p Fm(,)17 b(follo)m(w)m(ed)22 │ │ │ │ @@ -4831,34 +4842,34 @@ │ │ │ │ Fm(is)h(returned.)37 b(If)24 b(an)f(IO)g(error)g(is)h(encoun)m(tered)g │ │ │ │ (from)f Fl(fprintf)p Fm(,)h(zero)g(is)g(returned.)227 │ │ │ │ 5407 y Fk(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 │ │ │ │ b Fl(solvemap)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(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 1034 4 v 1215 100 a Fl(SolveMap)29 │ │ │ │ -b Fd(:)40 b Fk(DRAFT)121 b Fd(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2819 100 V 1034 w Fm(7)111 399 y(6.)46 b Fl(int)h │ │ │ │ -(SolveMap_writeToBinaryFil)o(e)42 b(\()47 b(SolveMap)f(*solvemap,)f │ │ │ │ -(FILE)h(*fp)h(\))h(;)227 549 y Fm(This)29 b(metho)s(d)h(writes)g(an)f │ │ │ │ -Fl(SolveMap)f Fm(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 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(fwrite)p Fm(,)f(zero)i(is)g(returned.)227 812 y Fk(Err)-5 │ │ │ │ -b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 b Fl(solvemap)f │ │ │ │ -Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g(message)h(is)f(prin) │ │ │ │ -m(ted)f(and)h(zero)h(is)f(returned.)111 1000 y(7.)46 │ │ │ │ -b Fl(int)h(SolveMap_writeForHumanEye)41 b(\()48 b(SolveMap)d │ │ │ │ -(*solvemap,)g(FILE)i(*fp)g(\))g(;)227 1150 y Fm(This)33 │ │ │ │ -b(metho)s(d)g(writes)h(an)f Fl(SolveMap)e Fm(ob)5 b(ject)35 │ │ │ │ -b(to)f(a)g(\014le)g(in)f(an)g(easily)i(readable)f(format.)50 │ │ │ │ -b(The)33 b(metho)s(d)227 1263 y Fl(SolveMap)p 617 1263 │ │ │ │ -29 4 v 32 w(writeStats\(\))41 b Fm(is)i(called)i(to)f(write)g(out)f │ │ │ │ -(the)h(header)f(and)g(statistics.)82 b(The)43 b(v)-5 │ │ │ │ +TeXDict begin 7 6 bop 91 100 995 4 v 1176 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2858 100 V 995 w Fm(7)111 399 y(6.)46 │ │ │ │ +b Fl(int)h(SolveMap_writeToBinaryFil)o(e)42 b(\()47 b(SolveMap)f │ │ │ │ +(*solvemap,)f(FILE)h(*fp)h(\))h(;)227 549 y Fm(This)29 │ │ │ │ +b(metho)s(d)h(writes)g(an)f Fl(SolveMap)f Fm(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 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(fwrite)p Fm(,)f(zero)i(is)g(returned.)227 │ │ │ │ +812 y Fk(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 │ │ │ │ +b Fl(solvemap)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g │ │ │ │ +(message)h(is)f(prin)m(ted)f(and)h(zero)h(is)f(returned.)111 │ │ │ │ +1000 y(7.)46 b Fl(int)h(SolveMap_writeForHumanEye)41 │ │ │ │ +b(\()48 b(SolveMap)d(*solvemap,)g(FILE)i(*fp)g(\))g(;)227 │ │ │ │ +1150 y Fm(This)33 b(metho)s(d)g(writes)h(an)f Fl(SolveMap)e │ │ │ │ +Fm(ob)5 b(ject)35 b(to)f(a)g(\014le)g(in)f(an)g(easily)i(readable)f │ │ │ │ +(format.)50 b(The)33 b(metho)s(d)227 1263 y Fl(SolveMap)p │ │ │ │ +617 1263 29 4 v 32 w(writeStats\(\))41 b Fm(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 Fl(1)f Fm(is)227 1376 y(returned.)227 1526 │ │ │ │ y Fk(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 b │ │ │ │ Fl(solvemap)f Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g │ │ │ │ (message)h(is)f(prin)m(ted)f(and)h(zero)h(is)f(returned.)111 │ │ │ │ 1714 y(8.)46 b Fl(int)h(SolveMap_writeStats)c(\()k(SolveMap)f │ │ │ │ (*solvemap,)f(FILE)h(*fp)h(\))h(;)227 1864 y Fm(This)21 │ │ │ │ b(metho)s(d)f(writes)i(some)f(statistics)j(ab)s(out)d(an)g │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 SolveMap : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + SolveMap : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SolveMap : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + SolveMap : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 SolveMap : DRAFT November 15, 2025 │ │ │ │ │ (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 October 18, 2025 7 │ │ │ │ │ + SolveMap : DRAFT November 15, 2025 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2121,23 +2121,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2311,90 +2310,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5239,18 +5247,17 @@ │ │ │ │ 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 139[35 1[36 2[45 9[40 │ │ │ │ -1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ -90.9091 /CMSL10 rf /Fh 132[52 123[{}1 90.9091 /CMBX10 │ │ │ │ -rf │ │ │ │ +58[{}23 90.9091 /CMTI10 rf /Fg 137[48 3[36 2[45 1[76 │ │ │ │ +7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ +/CMSL10 rf /Fh 132[52 123[{}1 90.9091 /CMBX10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -5374,39 +5381,40 @@ │ │ │ │ y Fh({)45 b Fo(sparse)30 b(using)g(dense)g(sub)s(columns)330 │ │ │ │ 5111 y Fh({)45 b Fo(sparse)30 b(using)g(sparse)g(ro)m(ws)330 │ │ │ │ 5259 y Fh({)45 b Fo(sparse)30 b(using)g(sparse)g(columns)330 │ │ │ │ 5407 y Fh({)45 b Fo(sparse)30 b(using)g(\()p Fm(i;)15 │ │ │ │ b(j;)g(a)1170 5421 y Fl(i;j)1252 5407 y Fo(\))31 b(triples)1927 │ │ │ │ 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1082 4 v │ │ │ │ -1264 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 330 399 a Fh({)45 b Fo(a)31 b(diagonal)h(matrix)330 │ │ │ │ -541 y Fh({)45 b Fo(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 Fj(\002)f │ │ │ │ -Fo(1)41 b(or)f(2)28 b Fj(\002)e Fo(2,)43 b(used)d(in)g(the)427 │ │ │ │ -654 y(symmetric)31 b(inde\014nite)f(factorization.)330 │ │ │ │ -796 y Fh({)45 b Fo(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 Fj(\002)g │ │ │ │ -Fo(1)42 b(or)e(2)28 b Fj(\002)f Fo(2,)44 b(used)c(in)h(the)427 │ │ │ │ -909 y(hermitian)31 b(inde\014nite)f(factorization.)137 │ │ │ │ -1092 y Fi(\210)45 b Fo(The)30 b Fn(SubMtx)e Fo(ob)5 b(ject)31 │ │ │ │ -b(can)f(b)s(e)g(self-con)m(tained,)i(in)d(the)i(sense)f(that)g(its)h │ │ │ │ -(structure)e(con)m(tains)i(a)g Fn(DV)e Fo(ob)5 b(ject)227 │ │ │ │ -1205 y(that)27 b(manages)f(a)g(con)m(tiguous)h(v)m(ector)h(of)e(w)m │ │ │ │ -(orkspace)g(that)h(is)f(used)f(to)h(store)g(all)h(information)f(ab)s │ │ │ │ -(out)g(the)227 1318 y Fn(SubMtx)31 b Fo(ob)5 b(ject)34 │ │ │ │ -b(|)e(its)h(scalar)g(parameters,)h(an)m(y)f(in)m(teger)h(index)e(or)g │ │ │ │ -(dimension)g(information,)i(and)e(all)227 1431 y(matrix)e(en)m(tries.) │ │ │ │ -41 b(In)29 b(a)g(distributed)g(en)m(vironmen)m(t,)h(this)f(allo)m(ws)i │ │ │ │ -(a)f Fn(SubMtx)d Fo(ob)5 b(ject)31 b(to)f(b)s(e)e(sen)m(t)i(b)s(et)m(w) │ │ │ │ -m(een)227 1544 y(pro)s(cessors)j(as)h(one)g(message,)i(no)d(cop)m(ying) │ │ │ │ -h(to)h(an)e(in)m(ternal)h(bu\013er)f(is)g(needed,)i(nor)e(an)m(y)g │ │ │ │ -(custom)h(data)227 1657 y(t)m(yp)s(e)e(needs)f(to)h(b)s(e)e(de\014ned)g │ │ │ │ -(as)i(for)f(MPI.)g(In)g(an)g(out-of-core)i(en)m(vironmen)m(t,)g(a)e │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1043 4 v │ │ │ │ +1224 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 330 399 a Fh({)45 b Fo(a)31 │ │ │ │ +b(diagonal)h(matrix)330 541 y Fh({)45 b Fo(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 Fj(\002)f Fo(1)41 b(or)f(2)28 b Fj(\002)e Fo(2,)43 │ │ │ │ +b(used)d(in)g(the)427 654 y(symmetric)31 b(inde\014nite)f │ │ │ │ +(factorization.)330 796 y Fh({)45 b Fo(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 Fj(\002)g Fo(1)42 b(or)e(2)28 b Fj(\002)f Fo(2,)44 │ │ │ │ +b(used)c(in)h(the)427 909 y(hermitian)31 b(inde\014nite)f │ │ │ │ +(factorization.)137 1092 y Fi(\210)45 b Fo(The)30 b Fn(SubMtx)e │ │ │ │ +Fo(ob)5 b(ject)31 b(can)f(b)s(e)g(self-con)m(tained,)i(in)d(the)i │ │ │ │ +(sense)f(that)g(its)h(structure)e(con)m(tains)i(a)g Fn(DV)e │ │ │ │ +Fo(ob)5 b(ject)227 1205 y(that)27 b(manages)f(a)g(con)m(tiguous)h(v)m │ │ │ │ +(ector)h(of)e(w)m(orkspace)g(that)h(is)f(used)f(to)h(store)g(all)h │ │ │ │ +(information)f(ab)s(out)g(the)227 1318 y Fn(SubMtx)31 │ │ │ │ +b Fo(ob)5 b(ject)34 b(|)e(its)h(scalar)g(parameters,)h(an)m(y)f(in)m │ │ │ │ +(teger)h(index)e(or)g(dimension)g(information,)i(and)e(all)227 │ │ │ │ +1431 y(matrix)e(en)m(tries.)41 b(In)29 b(a)g(distributed)g(en)m │ │ │ │ +(vironmen)m(t,)h(this)f(allo)m(ws)i(a)f Fn(SubMtx)d Fo(ob)5 │ │ │ │ +b(ject)31 b(to)f(b)s(e)e(sen)m(t)i(b)s(et)m(w)m(een)227 │ │ │ │ +1544 y(pro)s(cessors)j(as)h(one)g(message,)i(no)d(cop)m(ying)h(to)h(an) │ │ │ │ +e(in)m(ternal)h(bu\013er)f(is)g(needed,)i(nor)e(an)m(y)g(custom)h(data) │ │ │ │ +227 1657 y(t)m(yp)s(e)e(needs)f(to)h(b)s(e)e(de\014ned)g(as)i(for)f │ │ │ │ +(MPI.)g(In)g(an)g(out-of-core)i(en)m(vironmen)m(t,)g(a)e │ │ │ │ Fn(SubMtx)f Fo(ob)5 b(ject)32 b(can)g(b)s(e)227 1770 │ │ │ │ y(read)f(from)e(or)i(written)f(to)h(a)g(\014le)g(b)m(y)f(a)h(single)g │ │ │ │ (op)s(eration.)141 1970 y(The)k Fn(SubMtx)e Fo(ob)5 b(ject)35 │ │ │ │ b(is)g(a)h(sup)s(erset)d(of)i(the)h Fn(DenseMtx)c Fo(ob)5 │ │ │ │ b(ject)36 b(in)e(terms)h(of)g(data)h(structure)e(and)h(func-)0 │ │ │ │ 2083 y(tionalit)m(y)-8 b(.)42 b(If)27 b(w)m(e)g(w)m(ere)g(w)m(orking)g │ │ │ │ (in)g(a)g(language)h(that)f(supp)s(orts)e(inheritance,)k │ │ │ │ @@ -5455,24 +5463,24 @@ │ │ │ │ b(Data)46 b(Structure)0 5023 y Fo(The)30 b Fn(SubMtx)f │ │ │ │ Fo(structure)g(has)i(the)f(follo)m(wing)i(\014elds.)137 │ │ │ │ 5224 y Fi(\210)45 b Fn(int)i(type)29 b Fo(:)41 b(t)m(yp)s(e)31 │ │ │ │ b(of)f(en)m(tries.)330 5407 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ 769 5407 29 4 v 33 w(REAL)29 b Fo(:)h(double)g(precision)h(real)g(en)m │ │ │ │ (tries.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1082 4 v 1263 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ -769 399 29 4 v 33 w(COMPLEX)28 b Fo(:)j(double)f(precision)g(complex)h │ │ │ │ -(en)m(tries.)137 590 y Fi(\210)45 b Fn(int)i(mode)29 │ │ │ │ -b Fo(:)41 b(storage)32 b(mo)s(de.)330 781 y Fh({)45 b │ │ │ │ -Fn(SUBMTX)p 721 781 V 33 w(DENSE)p 994 781 V 33 w(ROWS)29 │ │ │ │ -b Fo(:)i(dense,)f(storage)i(b)m(y)e(ro)m(ws.)330 929 │ │ │ │ -y Fh({)45 b Fn(SUBMTX)p 721 929 V 33 w(DENSE)p 994 929 │ │ │ │ -V 33 w(COLUMNS)28 b Fo(:)j(dense,)f(storage)i(b)m(y)e(columns.)330 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1043 4 v 1224 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fo(3)330 399 y Fh({)45 │ │ │ │ +b Fn(SPOOLES)p 769 399 29 4 v 33 w(COMPLEX)28 b Fo(:)j(double)f │ │ │ │ +(precision)g(complex)h(en)m(tries.)137 590 y Fi(\210)45 │ │ │ │ +b Fn(int)i(mode)29 b Fo(:)41 b(storage)32 b(mo)s(de.)330 │ │ │ │ +781 y Fh({)45 b Fn(SUBMTX)p 721 781 V 33 w(DENSE)p 994 │ │ │ │ +781 V 33 w(ROWS)29 b Fo(:)i(dense,)f(storage)i(b)m(y)e(ro)m(ws.)330 │ │ │ │ +929 y Fh({)45 b Fn(SUBMTX)p 721 929 V 33 w(DENSE)p 994 │ │ │ │ +929 V 33 w(COLUMNS)28 b Fo(:)j(dense,)f(storage)i(b)m(y)e(columns.)330 │ │ │ │ 1077 y Fh({)45 b Fn(SUBMTX)p 721 1077 V 33 w(SPARSE)p │ │ │ │ 1042 1077 V 33 w(ROWS)29 b Fo(:)h(sparse,)h(storage)h(b)m(y)e(ro)m(ws.) │ │ │ │ 330 1225 y Fh({)45 b Fn(SUBMTX)p 721 1225 V 33 w(SPARSE)p │ │ │ │ 1042 1225 V 33 w(COLUMNS)28 b Fo(:)j(sparse,)f(storage)i(b)m(y)e │ │ │ │ (columns.)330 1373 y Fh({)45 b Fn(SUBMTX)p 721 1373 V │ │ │ │ 33 w(SPARSE)p 1042 1373 V 33 w(TRIPLES)28 b Fo(:)j(sparse,)f(storage)i │ │ │ │ (b)m(y)e(\()p Fm(i;)15 b(j;)g(a)2459 1387 y Fl(i;j)2541 │ │ │ │ @@ -5527,17 +5535,17 @@ │ │ │ │ g(storage)h(format,)f(and)f Fn(0)g Fo(other-)227 5103 │ │ │ │ y(wise.)137 5294 y Fi(\210)45 b Fn(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 Fo(is)30 b Fn(1)e Fo(if)h Fn(mtx)g Fo(has)g(sparse)f(columns)h(as)h │ │ │ │ (its)f(storage)i(format,)f(and)e Fn(0)227 5407 y Fo(otherwise.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1082 4 v │ │ │ │ -1264 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 137 399 a Fi(\210)45 b Fn(SUBMTX)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1043 4 v │ │ │ │ +1224 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 137 399 a Fi(\210)45 b Fn(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 Fo(is)k Fn(1)g Fo(if)g │ │ │ │ Fn(mtx)f Fo(has)g(sparse)h(triples)g(as)g(its)g(storage)i(format,)f │ │ │ │ Fn(0)e Fo(other-)227 511 y(wise.)137 691 y Fi(\210)45 │ │ │ │ b Fn(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 Fo(is)j Fn(1)g Fo(if)g │ │ │ │ Fn(mtx)g Fo(has)g(dense)g(subro)m(ws)f(as)i(its)f(storage)i(format,)f │ │ │ │ @@ -5601,19 +5609,19 @@ │ │ │ │ (a)h(call)g(to)h Fn(SubMtx)p 2355 5148 V 32 w(clearData\(\))c │ │ │ │ Fo(and)h(then)h(frees)h(the)f(space)227 5261 y(for)g │ │ │ │ Fn(mtx)p Fo(.)227 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)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 1082 4 v 1263 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ -b(metho)s(ds)111 597 y Fo(1.)46 b Fn(void)h(SubMtx_ids)e(\()i(SubMtx)f │ │ │ │ -(*mtx,)h(int)g(*prowid,)e(int)i(*pcolid)f(\))h(;)227 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1043 4 v 1224 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fo(5)0 399 y Fc(1.2.2)112 │ │ │ │ +b(Instance)38 b(metho)s(ds)111 597 y Fo(1.)46 b Fn(void)h(SubMtx_ids)e │ │ │ │ +(\()i(SubMtx)f(*mtx,)h(int)g(*prowid,)e(int)i(*pcolid)f(\))h(;)227 │ │ │ │ 748 y Fo(This)30 b(metho)s(d)g(\014lls)g Fn(*prowid)e │ │ │ │ Fo(with)i(the)h(ro)m(w)f(id)g(and)g Fn(*pcolid)f Fo(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 Fo(If)22 b Fn(mtx)p Fo(,)h │ │ │ │ Fn(prowid)e Fo(or)h Fn(pcolid)f Fo(is)h Fn(NULL)p Fo(,)g(an)g(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)227 │ │ │ │ 1013 y(exits.)111 1204 y(2.)46 b Fn(void)h(SubMtx_setIds)d(\()k(SubMtx) │ │ │ │ @@ -5679,18 +5687,18 @@ │ │ │ │ (address)f(of)i(the)227 5294 y Fn(sizes[nrow])24 b Fo(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 Fn(*indices)c Fo(with)j(the)g(base)227 5407 │ │ │ │ y(address)41 b(of)g(the)h Fn(indices[nent])c Fo(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 Fo(6)p 136 100 1082 4 v │ │ │ │ -1264 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 227 399 a Fn(*pentries)f Fo(with)i(the)g(base)g │ │ │ │ -(address)f(of)i Fn(entries[nent])29 b Fo(v)m(ector.)51 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1043 4 v │ │ │ │ +1224 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 227 399 a Fn(*pentries)g Fo(with)i(the)g(base) │ │ │ │ +g(address)f(of)i Fn(entries[nent])29 b Fo(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 Fo(If)24 │ │ │ │ b Fn(mtx)p Fo(,)h Fn(pnrow)p Fo(,)f Fn(pnent)p Fo(,)g │ │ │ │ Fn(psizes)p Fo(,)g Fn(pindices)d Fo(or)j Fn(pentries)e │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g(the)h(matrix)227 775 │ │ │ │ y(t)m(yp)s(e)31 b(is)f(not)h Fn(SUBMTX)p 979 775 29 4 │ │ │ │ @@ -5776,45 +5784,46 @@ │ │ │ │ 5294 y(base)48 b(address)f(of)h(the)g Fn(firstlocs[ncol])c │ │ │ │ Fo(v)m(ector,)54 b Fn(*plastlocs)45 b Fo(with)i(the)h(base)g(address)f │ │ │ │ (of)h(the)227 5407 y Fn(lastlocs[ncol])22 b Fo(v)m(ector,)29 │ │ │ │ b(and)c Fn(*pentries)e Fo(with)j(the)g(base)f(address)g(of)h │ │ │ │ Fn(entries[nent])c Fo(v)m(ector.)41 b(F)-8 b(or)p eop │ │ │ │ end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1082 4 v 1263 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ -Fo(,)h(the)g(nonzero)f(en)m(tries)h(are)f(found)f(in)h(ro)m(ws)g │ │ │ │ -Fn([firstlocs[jcol],lastlo)o(cs[j)o(col])o(])227 511 │ │ │ │ -y Fo(when)32 b Fn(firstlocs[jcol])24 b Fj(\025)k Fo(0)33 │ │ │ │ -b(and)f Fn(firstlocs[jcol])24 b Fj(\024)29 b Fn(lastlocs[jcol])l │ │ │ │ -Fo(.)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 Fo(If)28 b Fn(mtx)p Fo(,)g Fn(pnrow)p │ │ │ │ -Fo(,)f Fn(pnent)p Fo(,)g Fn(pfirstlocs)p Fo(,)f Fn(plastlocs)g │ │ │ │ -Fo(or)i Fn(pentries)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g(the)227 │ │ │ │ -900 y(matrix)33 b(t)m(yp)s(e)f(is)g(not)g Fn(SUBMTX)p │ │ │ │ -1281 900 29 4 v 33 w(DENSE)p 1554 900 V 33 w(SUBCOLUMNS)p │ │ │ │ -Fo(,)d(an)j(error)g(message)h(is)f(prin)m(ted)g(and)f(the)h(program)227 │ │ │ │ -1013 y(exits.)66 1225 y(12.)46 b Fn(void)h(SubMtx_diagonalInfo)42 │ │ │ │ -b(\()48 b(SubMtx)e(*mtx,)g(int)h(*pncol,)f(double)g(**pentries)f(\))j │ │ │ │ -(;)227 1388 y Fo(This)32 b(metho)s(d)g(is)h(used)f(when)g(the)h │ │ │ │ -(storage)h(mo)s(de)e(is)h(diagonal.)49 b(It)33 b(\014lls)f │ │ │ │ -Fn(*pncol)f Fo(with)h(the)h(n)m(um)m(b)s(er)f(of)227 │ │ │ │ -1501 y(columns)e(and)g Fn(*pentries)e Fo(with)i(the)h(base)f(address)g │ │ │ │ -(of)g Fn(entries[])e Fo(v)m(ector.)227 1663 y Ff(Err)-5 │ │ │ │ -b(or)25 b(che)-5 b(cking:)35 b Fo(If)20 b Fn(mtx)p Fo(,)i │ │ │ │ -Fn(pncol)c Fo(or)j Fn(pentries)d Fo(is)i Fn(NULL)p Fo(,)f(or)i(if)f │ │ │ │ -(the)g(matrix)h(t)m(yp)s(e)f(is)h(not)f Fn(SUBMTX)p 3541 │ │ │ │ -1663 V 33 w(DIAGONAL)p Fo(,)227 1776 y(an)31 b(error)f(message)h(is)f │ │ │ │ -(prin)m(ted)g(and)g(the)h(program)f(exits.)66 1988 y(13.)46 │ │ │ │ -b Fn(void)h(SubMtx_blockDiagonalInfo)41 b(\()48 b(SubMtx)e(*mtx,)g(int) │ │ │ │ -h(*pncol,)f(int)h(*pnent,)1755 2101 y(int)f(**ppivotsizes,)e(double)i │ │ │ │ -(**pentries)f(\))j(;)227 2264 y Fo(This)24 b(metho)s(d)f(is)i(used)e │ │ │ │ -(when)g(the)i(storage)g(mo)s(de)f(is)g(blo)s(c)m(k)h(diagonal.)40 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1043 4 v 1224 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fo(7)227 399 y(column)38 │ │ │ │ +b Fn(jcol)p Fo(,)h(the)g(nonzero)f(en)m(tries)h(are)f(found)f(in)h(ro)m │ │ │ │ +(ws)g Fn([firstlocs[jcol],lastlo)o(cs[j)o(col])o(])227 │ │ │ │ +511 y Fo(when)32 b Fn(firstlocs[jcol])24 b Fj(\025)k │ │ │ │ +Fo(0)33 b(and)f Fn(firstlocs[jcol])24 b Fj(\024)29 b │ │ │ │ +Fn(lastlocs[jcol])l Fo(.)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 Fo(If)28 │ │ │ │ +b Fn(mtx)p Fo(,)g Fn(pnrow)p Fo(,)f Fn(pnent)p Fo(,)g │ │ │ │ +Fn(pfirstlocs)p Fo(,)f Fn(plastlocs)g Fo(or)i Fn(pentries)e │ │ │ │ +Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g(the)227 900 y(matrix)33 │ │ │ │ +b(t)m(yp)s(e)f(is)g(not)g Fn(SUBMTX)p 1281 900 29 4 v │ │ │ │ +33 w(DENSE)p 1554 900 V 33 w(SUBCOLUMNS)p Fo(,)d(an)j(error)g(message)h │ │ │ │ +(is)f(prin)m(ted)g(and)f(the)h(program)227 1013 y(exits.)66 │ │ │ │ +1225 y(12.)46 b Fn(void)h(SubMtx_diagonalInfo)42 b(\()48 │ │ │ │ +b(SubMtx)e(*mtx,)g(int)h(*pncol,)f(double)g(**pentries)f(\))j(;)227 │ │ │ │ +1388 y Fo(This)32 b(metho)s(d)g(is)h(used)f(when)g(the)h(storage)h(mo)s │ │ │ │ +(de)e(is)h(diagonal.)49 b(It)33 b(\014lls)f Fn(*pncol)f │ │ │ │ +Fo(with)h(the)h(n)m(um)m(b)s(er)f(of)227 1501 y(columns)e(and)g │ │ │ │ +Fn(*pentries)e Fo(with)i(the)h(base)f(address)g(of)g │ │ │ │ +Fn(entries[])e Fo(v)m(ector.)227 1663 y Ff(Err)-5 b(or)25 │ │ │ │ +b(che)-5 b(cking:)35 b Fo(If)20 b Fn(mtx)p Fo(,)i Fn(pncol)c │ │ │ │ +Fo(or)j Fn(pentries)d Fo(is)i Fn(NULL)p Fo(,)f(or)i(if)f(the)g(matrix)h │ │ │ │ +(t)m(yp)s(e)f(is)h(not)f Fn(SUBMTX)p 3541 1663 V 33 w(DIAGONAL)p │ │ │ │ +Fo(,)227 1776 y(an)31 b(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h │ │ │ │ +(program)f(exits.)66 1988 y(13.)46 b Fn(void)h │ │ │ │ +(SubMtx_blockDiagonalInfo)41 b(\()48 b(SubMtx)e(*mtx,)g(int)h(*pncol,)f │ │ │ │ +(int)h(*pnent,)1755 2101 y(int)f(**ppivotsizes,)e(double)i(**pentries)f │ │ │ │ +(\))j(;)227 2264 y Fo(This)24 b(metho)s(d)f(is)i(used)e(when)g(the)i │ │ │ │ +(storage)g(mo)s(de)f(is)g(blo)s(c)m(k)h(diagonal.)40 │ │ │ │ b(It)24 b(\014lls)g Fn(*pncol)f Fo(with)h(the)g(n)m(um)m(b)s(er)227 │ │ │ │ 2377 y(of)33 b(columns,)h Fn(*pnent)d Fo(with)h(the)h(n)m(um)m(b)s(er)f │ │ │ │ (of)h(en)m(tries,)h Fn(*ppivotsizes)29 b Fo(with)k(the)g(base)g │ │ │ │ (address)f(of)h(the)227 2490 y(piv)m(ot)f(sizes)f(v)m(ector,)h(and)e │ │ │ │ Fn(*pentries)e Fo(with)i(the)g(base)h(address)e(of)i │ │ │ │ Fn(entries[])d Fo(v)m(ector.)227 2652 y Ff(Err)-5 b(or)41 │ │ │ │ b(che)-5 b(cking:)54 b Fo(If)37 b Fn(mtx)p Fo(,)i Fn(pncol)p │ │ │ │ @@ -5861,17 +5870,17 @@ │ │ │ │ Fn(pReal)e Fo(or)i Fn(pImag)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ Fn(irow)e Fo(or)i Fn(jcol)f Fo(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 Fn(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 Fo(8)p 136 100 1082 4 v │ │ │ │ -1264 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2819 100 V 227 399 a Fo(If)h(the)g Fn(\(irow,jcol\))d │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1043 4 v │ │ │ │ +1224 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2858 100 V 227 399 a Fo(If)i(the)g Fn(\(irow,jcol\))d │ │ │ │ Fo(en)m(try)j(is)g(presen)m(t,)h(this)f(metho)s(d)g(\014lls)g │ │ │ │ Fn(*ppValue)d Fo(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 Fn(irow)g Fo(and)g(column)p Fn(jcol)p │ │ │ │ Fo(.)41 b(Otherwise,)30 b Fn(*ppValue)f Fo(is)h(set)i(to)f │ │ │ │ Fn(NULL)p Fo(.)f(Note,)i Fn(irow)e Fo(and)g Fn(jcol)g │ │ │ │ Fo(are)227 624 y Ff(lo)-5 b(c)g(al)32 b Fo(indices,)f(i.e.,)h(0)26 │ │ │ │ b Fj(\024)f Fn(irow)f Fj(\024)h Fn(nrow)k Fo(and)h(0)25 │ │ │ │ @@ -5944,23 +5953,24 @@ │ │ │ │ Ff(Err)-5 b(or)37 b(che)-5 b(cking:)46 b Fo(If)33 b Fn(mtx)f │ │ │ │ Fo(is)h Fn(NULL)p Fo(,)g(or)g(if)g Fn(nrow)p Fo(,)g Fn(ncol)p │ │ │ │ Fo(,)g Fn(inc1)g Fo(or)g Fn(inc2)f Fo(is)h(less)h(than)f(or)g(equal)h │ │ │ │ (to)g(zero,)227 5407 y(or)d(if)f(neither)g Fn(inc1)g │ │ │ │ Fo(nor)f Fn(inc2)h Fo(are)g Fn(1)p Fo(,)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 1082 4 v 1263 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2771 100 V 1082 w Fo(9)111 399 y(4.)46 b Fn(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 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1043 4 v 1224 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)g(2025)p 2811 100 V 1043 w Fo(9)111 399 y(4.)46 │ │ │ │ +b Fn(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 │ │ │ │ y Fo(This)c(is)g(used)g(to)h(initialize)h(an)e(ob)5 b(ject)45 │ │ │ │ b(to)f(ha)m(v)m(e)g(random)f(en)m(tries)h(and)e(\(p)s(ossibly\))h │ │ │ │ (random)g(struc-)227 998 y(ture.)54 b(The)34 b(matrix)h(t)m(yp)s(e)g │ │ │ │ (ma)m(y)h(not)f(b)s(e)f(diagonal,)j(blo)s(c)m(k)f(diagonal,)h(or)e │ │ │ │ (triples.)54 b(If)34 b Fn(strict)46 b(=)i(1)p Fo(,)36 │ │ │ │ b(the)227 1111 y(matrix)j(will)f(b)s(e)g(strict)h(lo)m(w)m(er)g(or)g │ │ │ │ @@ -6036,19 +6046,19 @@ │ │ │ │ (er)e(triangular,)j(then)f Fn(mtxA)e Fo(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 Fo(If)30 │ │ │ │ b Fn(mtxA)g Fo(or)g Fn(mtxB)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 1059 4 │ │ │ │ -v 1241 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2841 100 V 111 399 a Fo(2.)46 b Fn(void)h(SubMtx_solveH)d(\()k │ │ │ │ -(SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\))i(;)227 547 y │ │ │ │ -Fo(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 Fo(10)p 182 100 1020 4 │ │ │ │ +v 1202 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2881 100 V 111 399 a Fo(2.)46 b Fn(void)h │ │ │ │ +(SubMtx_solveH)d(\()k(SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\))i(;)227 │ │ │ │ +547 y Fo(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(\()p │ │ │ │ Fm(I)15 b Fo(+)8 b Fm(A)1598 514 y Fl(H)1665 547 y Fo(\))p │ │ │ │ Fm(X)33 b Fo(=)25 b Fm(B)5 b Fo(,)26 b(where)d Fm(A)i │ │ │ │ Fo(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 Fm(X)38 b Fo(o)m(v)m(erwrites)32 │ │ │ │ b Fm(B)5 b Fo(,)31 b(and)f Fn(mtxB)g Fo(m)m(ust)g(ha)m(v)m(e)i(dense)f │ │ │ │ (columns.)42 b(If)30 b Fm(A)h Fo(is)g(strict)g(lo)m(w)m(er)h │ │ │ │ (triangular,)227 773 y(then)27 b Fn(mtxA)g Fo(m)m(ust)g(ha)m(v)m(e)i │ │ │ │ @@ -6119,87 +6129,87 @@ │ │ │ │ (prin)m(ted)g(and)g(the)g(program)g(exits.)111 5146 y(2.)46 │ │ │ │ b Fn(int)h(SubMtx_nbytesInUse)c(\()k(SubMtx)g(*mtx)f(\))i(;)227 │ │ │ │ 5294 y Fo(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 1059 4 v 1240 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2749 100 V 1059 w Fo(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)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 Fn(int)h(SubMtx_nbytesInWorkspace)41 b(\()48 │ │ │ │ -b(SubMtx)e(*mtx)h(\))g(;)227 766 y Fo(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 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1020 4 v 1201 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2788 100 V 1020 w Fo(11)227 399 y Ff(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g │ │ │ │ Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g │ │ │ │ -(program)g(exits.)111 1133 y(4.)46 b Fn(void)h │ │ │ │ -(SubMtx_setNbytesInWorksp)o(ace)41 b(\()48 b(SubMtx)e(*mtx,)g(int)h │ │ │ │ -(nbytes)f(\))i(;)227 1293 y Fo(This)29 b(metho)s(d)g(sets)i(the)f(n)m │ │ │ │ -(um)m(b)s(er)e(of)i(b)m(ytes)g(in)g(the)g(w)m(orkspace)g(of)g(this)g │ │ │ │ -(ob)5 b(ject.)41 b(If)29 b Fn(nbytes)f Fo(is)i(less)g(than)227 │ │ │ │ -1406 y(the)h(presen)m(t)f(n)m(um)m(b)s(er)f(of)i(b)m(ytes,)g(the)g(w)m │ │ │ │ -(orkspace)g(is)f(not)h(resized.)227 1566 y Ff(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g │ │ │ │ -Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g │ │ │ │ -(program)g(exits.)111 1773 y(5.)46 b Fn(void)h(*)g(SubMtx_workspace)d │ │ │ │ -(\()j(SubMtx)f(*mtx)h(\))g(;)227 1933 y Fo(This)30 b(metho)s(d)g │ │ │ │ -(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g(base)f(address)g(of)g(the)h │ │ │ │ -(w)m(orkspace.)227 2093 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g │ │ │ │ -(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 │ │ │ │ -2300 y(6.)46 b Fn(void)h(SubMtx_setFields\()c(SubMtx)j(*mtx,)g(int)h │ │ │ │ -(type,)g(int)g(mode,)f(int)h(rowid,)1325 2413 y(int)g(colid,)f(int)h │ │ │ │ -(nrow,)f(int)h(ncol,)g(int)f(nent)h(\))h(;)227 2573 y │ │ │ │ -Fo(This)30 b(metho)s(d)g(sets)g(the)h(scalar)g(\014elds.)227 │ │ │ │ -2733 y Ff(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fo(If)28 │ │ │ │ -b Fn(mtx)g Fo(is)i Fn(NULL)p Fo(,)e(or)h(if)g Fn(nrow)p │ │ │ │ -Fo(,)f Fn(ncol)p Fo(,)h Fn(nent)f Fo(is)h(less)g(than)g(or)g(equal)h │ │ │ │ -(to)g(zero,)g(or)f(if)g Fn(type)227 2846 y Fo(or)i Fn(mode)e │ │ │ │ -Fo(is)h(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.)111 3054 y(7.)46 b Fn(void)h │ │ │ │ -(SubMtx_sortRowsUp)c(\()k(SubMtx)g(*mtx)f(\))i(;)227 │ │ │ │ -3214 y Fo(This)30 b(metho)s(d)g(sort)g(the)h(ro)m(ws)f(so)h(the)f(ro)m │ │ │ │ -(w)h(ids)f(are)h(in)f(ascending)g(order.)227 3374 y Ff(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g │ │ │ │ -Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g │ │ │ │ -(program)g(exits.)111 3581 y(8.)46 b Fn(void)h(SubMtx_sortColumnsUp)42 │ │ │ │ -b(\()48 b(SubMtx)e(*mtx)g(\))i(;)227 3741 y Fo(This)30 │ │ │ │ -b(metho)s(d)g(sort)g(the)h(ro)m(ws)f(so)h(the)f(column)h(ids)e(are)i │ │ │ │ -(in)f(ascending)h(order.)227 3901 y Ff(Err)-5 b(or)34 │ │ │ │ -b(che)-5 b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p │ │ │ │ -Fo(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ -(exits.)111 4108 y(9.)46 b Fn(void)h(SubMtx_fillRowDV)c(\()48 │ │ │ │ -b(SubMtx)e(*mtx,)g(int)h(irow,)f(DV)i(*rowDV)e(\))h(;)227 │ │ │ │ -4268 y Fo(This)29 b(metho)s(d)g(is)h(used)f(for)g(real)h(submatrices.) │ │ │ │ -41 b(It)29 b(copies)i(the)f(en)m(tries)g(in)f(ro)m(w)h │ │ │ │ -Fn(irow)f Fo(of)g(the)h Fn(mtx)f Fo(ob)5 b(ject)227 4381 │ │ │ │ -y(in)m(to)32 b(the)e Fn(rowDV)f Fo(v)m(ector)j(ob)5 b(ject.)227 │ │ │ │ -4541 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ -b Fn(mtx)f Fo(or)h Fn(rowDV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ -Fn(irow)f Fo(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin) │ │ │ │ -m(ted)227 4654 y(and)k(the)h(program)f(exits.)66 4861 │ │ │ │ -y(10.)46 b Fn(void)h(SubMtx_fillColumnDV)42 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ -(int)h(jcol,)g(DV)g(*rowDV)f(\))h(;)227 5021 y Fo(This)36 │ │ │ │ -b(metho)s(d)h(is)g(used)f(for)h(real)h(submatrices.)60 │ │ │ │ -b(It)37 b(copies)h(the)f(en)m(tries)h(in)f(column)g Fn(jcol)e │ │ │ │ -Fo(of)j(the)f Fn(mtx)227 5134 y Fo(ob)5 b(ject)32 b(in)m(to)f(the)f │ │ │ │ -Fn(colDV)f Fo(v)m(ector)j(ob)5 b(ject.)227 5294 y Ff(Err)-5 │ │ │ │ -b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 b Fn(mtx)f Fo(or)h │ │ │ │ -Fn(colDV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g Fn(jcol)f │ │ │ │ -Fo(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 │ │ │ │ +(program)g(exits.)111 606 y(3.)46 b Fn(int)h(SubMtx_nbytesInWorkspace) │ │ │ │ +41 b(\()48 b(SubMtx)e(*mtx)h(\))g(;)227 766 y Fo(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 Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g(message)h │ │ │ │ +(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 1133 │ │ │ │ +y(4.)46 b Fn(void)h(SubMtx_setNbytesInWorksp)o(ace)41 │ │ │ │ +b(\()48 b(SubMtx)e(*mtx,)g(int)h(nbytes)f(\))i(;)227 │ │ │ │ +1293 y Fo(This)29 b(metho)s(d)g(sets)i(the)f(n)m(um)m(b)s(er)e(of)i(b)m │ │ │ │ +(ytes)g(in)g(the)g(w)m(orkspace)g(of)g(this)g(ob)5 b(ject.)41 │ │ │ │ +b(If)29 b Fn(nbytes)f Fo(is)i(less)g(than)227 1406 y(the)h(presen)m(t)f │ │ │ │ +(n)m(um)m(b)s(er)f(of)i(b)m(ytes,)g(the)g(w)m(orkspace)g(is)f(not)h │ │ │ │ +(resized.)227 1566 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g(message)h │ │ │ │ +(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 1773 │ │ │ │ +y(5.)46 b Fn(void)h(*)g(SubMtx_workspace)d(\()j(SubMtx)f(*mtx)h(\))g(;) │ │ │ │ +227 1933 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h │ │ │ │ +(the)g(base)f(address)g(of)g(the)h(w)m(orkspace.)227 │ │ │ │ +2093 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ +b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ +(ted)f(and)g(the)g(program)g(exits.)111 2300 y(6.)46 │ │ │ │ +b Fn(void)h(SubMtx_setFields\()c(SubMtx)j(*mtx,)g(int)h(type,)g(int)g │ │ │ │ +(mode,)f(int)h(rowid,)1325 2413 y(int)g(colid,)f(int)h(nrow,)f(int)h │ │ │ │ +(ncol,)g(int)f(nent)h(\))h(;)227 2573 y Fo(This)30 b(metho)s(d)g(sets)g │ │ │ │ +(the)h(scalar)g(\014elds.)227 2733 y Ff(Err)-5 b(or)33 │ │ │ │ +b(che)-5 b(cking:)40 b Fo(If)28 b Fn(mtx)g Fo(is)i Fn(NULL)p │ │ │ │ +Fo(,)e(or)h(if)g Fn(nrow)p Fo(,)f Fn(ncol)p Fo(,)h Fn(nent)f │ │ │ │ +Fo(is)h(less)g(than)g(or)g(equal)h(to)g(zero,)g(or)f(if)g │ │ │ │ +Fn(type)227 2846 y Fo(or)i Fn(mode)e Fo(is)h(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.)111 3054 y(7.)46 b Fn(void)h(SubMtx_sortRowsUp)c(\()k │ │ │ │ +(SubMtx)g(*mtx)f(\))i(;)227 3214 y Fo(This)30 b(metho)s(d)g(sort)g(the) │ │ │ │ +h(ro)m(ws)f(so)h(the)f(ro)m(w)h(ids)f(are)h(in)f(ascending)g(order.)227 │ │ │ │ +3374 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ +b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ +(ted)f(and)g(the)g(program)g(exits.)111 3581 y(8.)46 │ │ │ │ +b Fn(void)h(SubMtx_sortColumnsUp)42 b(\()48 b(SubMtx)e(*mtx)g(\))i(;) │ │ │ │ +227 3741 y Fo(This)30 b(metho)s(d)g(sort)g(the)h(ro)m(ws)f(so)h(the)f │ │ │ │ +(column)h(ids)e(are)i(in)f(ascending)h(order.)227 3901 │ │ │ │ +y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b │ │ │ │ +Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ +(ted)f(and)g(the)g(program)g(exits.)111 4108 y(9.)46 │ │ │ │ +b Fn(void)h(SubMtx_fillRowDV)c(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f │ │ │ │ +(DV)i(*rowDV)e(\))h(;)227 4268 y Fo(This)29 b(metho)s(d)g(is)h(used)f │ │ │ │ +(for)g(real)h(submatrices.)41 b(It)29 b(copies)i(the)f(en)m(tries)g(in) │ │ │ │ +f(ro)m(w)h Fn(irow)f Fo(of)g(the)h Fn(mtx)f Fo(ob)5 b(ject)227 │ │ │ │ +4381 y(in)m(to)32 b(the)e Fn(rowDV)f Fo(v)m(ector)j(ob)5 │ │ │ │ +b(ject.)227 4541 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 │ │ │ │ +b Fo(If)26 b Fn(mtx)f Fo(or)h Fn(rowDV)e Fo(is)i Fn(NULL)p │ │ │ │ +Fo(,)f(or)h(if)g Fn(irow)f Fo(is)h(out)g(of)g(range,)i(an)e(error)f │ │ │ │ +(message)i(is)f(prin)m(ted)227 4654 y(and)k(the)h(program)f(exits.)66 │ │ │ │ +4861 y(10.)46 b Fn(void)h(SubMtx_fillColumnDV)42 b(\()48 │ │ │ │ +b(SubMtx)e(*mtx,)g(int)h(jcol,)g(DV)g(*rowDV)f(\))h(;)227 │ │ │ │ +5021 y Fo(This)36 b(metho)s(d)h(is)g(used)f(for)h(real)h(submatrices.) │ │ │ │ +60 b(It)37 b(copies)h(the)f(en)m(tries)h(in)f(column)g │ │ │ │ +Fn(jcol)e Fo(of)j(the)f Fn(mtx)227 5134 y Fo(ob)5 b(ject)32 │ │ │ │ +b(in)m(to)f(the)f Fn(colDV)f Fo(v)m(ector)j(ob)5 b(ject.)227 │ │ │ │ +5294 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ +b Fn(mtx)f Fo(or)h Fn(colDV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ +Fn(jcol)f Fo(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 Fo(12)p 182 100 1059 │ │ │ │ -4 v 1241 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2841 100 V 66 399 a Fo(11.)46 b Fn(void)h(SubMtx_fillRowZV)c │ │ │ │ -(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(ZV)i(*rowZV)e(\))h(;)227 │ │ │ │ -551 y Fo(This)35 b(metho)s(d)f(is)h(used)f(for)h(complex)h │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1020 │ │ │ │ +4 v 1202 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2881 100 V 66 399 a Fo(11.)46 b Fn(void)h │ │ │ │ +(SubMtx_fillRowZV)c(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(ZV)i(*rowZV) │ │ │ │ +e(\))h(;)227 551 y Fo(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 │ │ │ │ Fn(irow)f Fo(of)i(the)f Fn(mtx)227 664 y Fo(ob)5 b(ject)32 │ │ │ │ b(in)m(to)f(the)f Fn(rowZV)f Fo(v)m(ector)j(ob)5 b(ject.)227 │ │ │ │ 816 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ b Fn(mtx)f Fo(or)h Fn(rowZV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ Fn(irow)f Fo(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 │ │ │ │ @@ -6261,33 +6271,34 @@ │ │ │ │ Fn(SubMtx)e Fo(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 Fn(1)f │ │ │ │ Fo(is)h(returned.)39 b(If)29 b(an)h(IO)f(error)g(is)h(encoun)m(tered)g │ │ │ │ (from)f Fn(fread)p Fo(,)g(zero)h(is)g(returned.)p eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 1059 4 v 1240 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2749 100 V 1059 w Fo(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 Fo(If)30 b Fn(mtx)g Fo(or)g Fn(fp)g Fo(are)h Fn(NULL)p │ │ │ │ -Fo(,)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 Fn(int)h(SubMtx_writeToFile)c(\()k(SubMtx) │ │ │ │ -g(*mtx,)f(char)h(*fn)f(\))i(;)227 991 y Fo(This)32 b(metho)s(d)g │ │ │ │ -(writes)g(a)h Fn(SubMtx)e Fo(ob)5 b(ject)33 b(to)h(a)e(\014le.)47 │ │ │ │ -b(It)33 b(tries)g(to)g(op)s(en)f(the)h(\014le)f(and)g(if)g(it)h(is)g │ │ │ │ -(successful,)227 1104 y(it)25 b(then)e(calls)i Fn(SubMtx)p │ │ │ │ -1002 1104 29 4 v 33 w(writeFromFormattedFile\(\))17 b │ │ │ │ -Fo(or)24 b Fn(SubMtx)p 2597 1104 V 33 w(writeFromBinaryFile\(\))p │ │ │ │ -Fo(,)c(closes)227 1217 y(the)31 b(\014le)f(and)g(returns)f(the)i(v)-5 │ │ │ │ -b(alue)31 b(returned)e(from)h(the)g(called)i(routine.)227 │ │ │ │ -1366 y Ff(Err)-5 b(or)31 b(che)-5 b(cking:)39 b Fo(If)26 │ │ │ │ -b Fn(mtx)g Fo(or)h Fn(fn)g Fo(are)g Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ +TeXDict begin 13 12 bop 91 100 1020 4 v 1201 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2788 100 V 1020 w Fo(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 Fo(If)30 b Fn(mtx)g Fo(or)g Fn(fp)g │ │ │ │ +Fo(are)h Fn(NULL)p Fo(,)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 Fn(int)h(SubMtx_writeToFile)c │ │ │ │ +(\()k(SubMtx)g(*mtx,)f(char)h(*fn)f(\))i(;)227 991 y │ │ │ │ +Fo(This)32 b(metho)s(d)g(writes)g(a)h Fn(SubMtx)e Fo(ob)5 │ │ │ │ +b(ject)33 b(to)h(a)e(\014le.)47 b(It)33 b(tries)g(to)g(op)s(en)f(the)h │ │ │ │ +(\014le)f(and)g(if)g(it)h(is)g(successful,)227 1104 y(it)25 │ │ │ │ +b(then)e(calls)i Fn(SubMtx)p 1002 1104 29 4 v 33 w │ │ │ │ +(writeFromFormattedFile\(\))17 b Fo(or)24 b Fn(SubMtx)p │ │ │ │ +2597 1104 V 33 w(writeFromBinaryFile\(\))p Fo(,)c(closes)227 │ │ │ │ +1217 y(the)31 b(\014le)f(and)g(returns)f(the)i(v)-5 b(alue)31 │ │ │ │ +b(returned)e(from)h(the)g(called)i(routine.)227 1366 │ │ │ │ +y Ff(Err)-5 b(or)31 b(che)-5 b(cking:)39 b Fo(If)26 b │ │ │ │ +Fn(mtx)g Fo(or)h Fn(fn)g Fo(are)g Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ Fn(fn)g Fo(is)g(not)g(of)g(the)g(form)g Fn(*.mtxf)e Fo(\(for)i(a)h │ │ │ │ (formatted)f(\014le\))227 1478 y(or)k Fn(*.mtxb)d Fo(\(for)j(a)g │ │ │ │ (binary)e(\014le\),)i(an)f(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(metho)s(d)e(returns)h(zero.)111 1662 y(5.)46 b │ │ │ │ Fn(int)h(SubMtx_writeToFormattedFi)o(le)42 b(\()47 b(SubMtx)f(*mtx,)g │ │ │ │ (FILE)h(*fp)g(\))g(;)227 1810 y Fo(This)30 b(metho)s(d)f(writes)h(out)h │ │ │ │ (a)f Fn(SubMtx)f Fo(ob)5 b(ject)31 b(to)g(a)f(formatted)h(\014le.)41 │ │ │ │ @@ -6340,17 +6351,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 Fo(If)42 b Fn(mtx)p Fo(,)i Fn(mtxname)c │ │ │ │ Fo(or)i Fn(fp)f Fo(are)h Fn(NULL)p Fo(,)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 Fo(14)p 182 100 1059 │ │ │ │ -4 v 1241 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2841 100 V 0 399 a Fe(1.3)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1020 │ │ │ │ +4 v 1202 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2881 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 Fo(1.)46 b Fn(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 │ │ │ │ 782 y Fo(This)c(driv)m(er)f(program)h(reads)g(in)g(a)g │ │ │ │ Fn(SubMtx)e Fo(ob)5 b(ject)43 b(from)f Fn(inFile)e Fo(and)i(writes)g │ │ │ │ (out)g(the)g(ob)5 b(ject)43 b(to)227 895 y Fn(outFile)337 │ │ │ │ 1114 y Fi(\210)i Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g │ │ │ │ (the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ @@ -6417,20 +6428,20 @@ │ │ │ │ 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.)337 5294 y Fi(\210)45 b Fo(The)f │ │ │ │ Fn(msglvl)e Fo(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ 82 b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 5407 │ │ │ │ y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1059 4 v 1240 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2749 100 V 1059 w Fo(15)337 399 y Fi(\210)45 b Fo(The)33 │ │ │ │ -b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ -511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ +TeXDict begin 15 14 bop 91 100 1020 4 v 1201 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2788 100 V 1020 w Fo(15)337 399 y Fi(\210)45 │ │ │ │ +b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g │ │ │ │ +(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the) │ │ │ │ +427 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)337 772 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ Fo(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ Fn(SPOOLES)p 2342 772 29 4 v 33 w(REAL)p Fo(\))f(or)g(2)h(\()p │ │ │ │ Fn(SPOOLES)p 3190 772 V 32 w(COMPLEX)p Fo(\).)337 920 │ │ │ │ y Fi(\210)45 b Fo(The)20 b Fn(mode)f Fo(parameter)i(m)m(ust)f(b)s(e)g │ │ │ │ @@ -6507,20 +6518,20 @@ │ │ │ │ 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.)337 5294 y Fi(\210)45 b Fo(The)f Fn(msglvl)e │ │ │ │ Fo(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 5407 │ │ │ │ y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1059 │ │ │ │ -4 v 1241 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2841 100 V 337 399 a Fi(\210)45 b Fo(The)33 b │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ -511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1020 │ │ │ │ +4 v 1202 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2881 100 V 337 399 a Fi(\210)45 b │ │ │ │ +Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g │ │ │ │ +(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the) │ │ │ │ +427 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)337 767 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ Fo(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ Fn(SPOOLES)p 2342 767 29 4 v 33 w(REAL)p Fo(\))f(or)g(2)h(\()p │ │ │ │ Fn(SPOOLES)p 3190 767 V 32 w(COMPLEX)p Fo(\).)337 910 │ │ │ │ y Fi(\210)45 b Fo(The)20 b Fn(mode)f Fo(parameter)i(m)m(ust)f(b)s(e)g │ │ │ │ @@ -6599,20 +6610,20 @@ │ │ │ │ y(columns,)i(and)d Fm(A)h Fo(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 Fn(do)p 329 5294 V 34 w(solveupdH)32 b Fo(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 1059 4 v 1240 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2749 100 V 1059 w Fo(17)337 399 y Fi(\210)45 b Fo(The)f │ │ │ │ -Fn(msglvl)e Fo(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ -82 b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 511 │ │ │ │ -y(timing)31 b(output.)337 655 y Fi(\210)45 b Fo(The)33 │ │ │ │ +TeXDict begin 17 16 bop 91 100 1020 4 v 1201 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2788 100 V 1020 w Fo(17)337 399 y Fi(\210)45 │ │ │ │ +b Fo(The)f Fn(msglvl)e Fo(parameter)j(determines)f(the)g(amoun)m(t)h │ │ │ │ +(of)f(output.)82 b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 │ │ │ │ +511 y(timing)31 b(output.)337 655 y Fi(\210)45 b Fo(The)33 │ │ │ │ b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ 767 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 880 │ │ │ │ y(data.)337 1024 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ Fo(parameter)i(m)m(ust)f(b)s(e)g(2)h(\()p Fn(SPOOLES)p │ │ │ │ @@ -6688,18 +6699,18 @@ │ │ │ │ (en)m(tries)g(in)f(the)h(submatrix,)g(when)e(appro-)427 │ │ │ │ 5121 y(priate.)337 5264 y Fi(\210)45 b Fo(The)30 b Fn(nrowX)f │ │ │ │ Fo(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(in)g │ │ │ │ Fm(X)7 b Fo(,)31 b Fn(nrowA)24 b Fj(\024)h Fn(nrowY)n │ │ │ │ Fo(.)337 5407 y Fi(\210)45 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.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1059 │ │ │ │ -4 v 1241 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2841 100 V 111 399 a Fo(9.)46 b Fn(test_sort)g(msglvl)g │ │ │ │ -(msgFile)f(type)i(mode)g(nrowA)f(ncolA)g(nentA)h(seed)227 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1020 │ │ │ │ +4 v 1202 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)h(15,)h(2025)p 2881 100 V 111 399 a Fo(9.)46 b Fn(test_sort)g │ │ │ │ +(msglvl)g(msgFile)f(type)i(mode)g(nrowA)f(ncolA)g(nentA)h(seed)227 │ │ │ │ 549 y Fo(This)22 b(driv)m(er)h(program)f(tests)i(the)f │ │ │ │ Fn(SubMtx)p 1688 549 29 4 v 32 w(sortRowsUp\(\))d Fo(and)i │ │ │ │ Fn(SubMtx)p 2773 549 V 33 w(sortColumnsUp\(\))c Fo(metho)s(ds.)227 │ │ │ │ 662 y(Use)34 b(the)g(script)f(\014le)h Fn(do)p 1073 662 │ │ │ │ V 33 w(sort)f Fo(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 │ │ │ │ y(lines)d(to)g(the)g(screen)f(con)m(tain)i(the)e(errors.)337 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ – 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 October 18, 2025 3 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 5 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ *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 October 18, 2025 7 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 15 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 17 │ │ │ │ │ + SubMtx : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 SubMtx : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtxList.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1779,23 +1779,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1969,90 +1968,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3318,16 +3326,16 @@ │ │ │ │ 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 135[62 2[62 62 62 9[62 6[62 14[62 5[62 62 76[{}9 │ │ │ │ 119.552 /CMTT12 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 139[35 1[36 2[45 │ │ │ │ -9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Ff 137[48 3[36 2[45 │ │ │ │ +1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 │ │ │ │ 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -3440,56 +3448,57 @@ │ │ │ │ (ciated)g(with)e(a)g Fh(SubMtxList)e Fi(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 │ │ │ │ Fh(SubMtxList)d Fi(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 Fi(2)p 136 100 986 4 v │ │ │ │ -1168 w Fh(SubMtxList)28 b Ff(:)40 b Fe(DRAFT)31 b Ff(Octob)s(er)f(18,)h │ │ │ │ -(2025)p 2914 100 V 0 399 a Fi(F)-8 b(or)26 b(a)f(m)m(ultithreaded)h │ │ │ │ -(solv)m(e)g(there)g(is)f(one)g Fh(SubMtxList)e Fi(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 Fh(SubMtxList)e │ │ │ │ -Fi(ob)5 b(ject)34 b(is)e(a)h Fh(Lock)f Fi(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 │ │ │ │ -Fh(Lock)f Fi(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 │ │ │ │ -(pac)m(k)-5 b(ages.)48 b(P)m(orting)33 b(the)g(m)m(ultithreaded)f(co)s │ │ │ │ -(des)g(to)h(another)g(platform)f(should)0 850 y(b)s(e)37 │ │ │ │ -b(simple)h(if)g(the)h(POSIX)e(thread)h(pac)m(k)-5 b(age)40 │ │ │ │ -b(is)e(presen)m(t.)64 b(Another)38 b(t)m(yp)s(e)g(of)g(thread)g(pac)m │ │ │ │ -(k)-5 b(age)40 b(will)e(require)0 963 y(some)31 b(mo)s(di\014cations)f │ │ │ │ -(to)h(the)g Fh(Lock)e Fi(ob)5 b(ject,)32 b(but)d(none)i(to)g(the)f │ │ │ │ -Fh(SubMtxList)e Fi(ob)5 b(jects.)0 1293 y Fd(1.1)135 │ │ │ │ -b(Data)46 b(Structure)0 1527 y Fi(The)30 b Fh(SubMtxList)d │ │ │ │ -Fi(structure)j(has)g(the)h(follo)m(wing)h(\014elds.)137 │ │ │ │ -1752 y Fg(\210)45 b Fh(int)i(nlist)29 b Fi(:)41 b(n)m(um)m(b)s(er)29 │ │ │ │ -b(of)h(lists.)137 1952 y Fg(\210)45 b Fh(SubMtx)h(**heads)29 │ │ │ │ -b Fi(:)40 b(v)m(ector)32 b(of)f(p)s(oin)m(ters)f(to)h(the)g(heads)f(of) │ │ │ │ -g(the)h(list)g(of)g Fh(SubMtx)d Fi(ob)5 b(jects.)137 │ │ │ │ -2152 y Fg(\210)45 b Fh(int)i(*counts)29 b Fi(:)40 b(v)m(ector)32 │ │ │ │ -b(of)f(incoming)g(coun)m(ts)f(for)h(the)f(lists.)137 │ │ │ │ -2353 y Fg(\210)45 b Fh(Lock)i(*lock)29 b Fi(:)41 b(m)m(utual)30 │ │ │ │ -b(exclusion)h(lo)s(c)m(k.)137 2553 y Fg(\210)45 b Fh(char)i(*flags)32 │ │ │ │ -b Fi(:)48 b(v)m(ector)36 b(of)e(lo)s(c)m(k)h(\015ags)f(for)g(the)g │ │ │ │ -(lists.)52 b(If)33 b Fh(flags[ilist])45 b(==)i('N')p │ │ │ │ -Fi(,)33 b(the)h(list)h(do)s(es)f(not)227 2666 y(need)27 │ │ │ │ -b(to)h(b)s(e)e(lo)s(c)m(k)m(ed.)41 b(If)27 b Fh(flags[ilist])44 │ │ │ │ -b(==)j('Y')p Fi(,)27 b(the)g(list)g(do)s(es)g(need)g(to)h(b)s(e)e(lo)s │ │ │ │ -(c)m(k)m(ed.)41 b(Used)27 b(only)g(when)227 2779 y Fh(lock)i │ │ │ │ -Fi(is)i(not)g Fh(NULL)p Fi(.)137 2979 y Fg(\210)45 b │ │ │ │ -Fh(int)i(nlocks)29 b Fi(:)41 b(total)32 b(n)m(um)m(b)s(er)d(of)h(lo)s │ │ │ │ -(c)m(ks)i(made)e(on)g(the)h(m)m(utual)f(exclusion)h(lo)s(c)m(k.)0 │ │ │ │ -3309 y Fd(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ -Fc(SubMtxList)c Fd(metho)t(ds)0 3543 y Fi(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 3656 y Fh(SubMtxList)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 947 4 v │ │ │ │ +1129 w Fh(SubMtxList)28 b Ff(:)40 b Fe(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2953 100 V 0 399 a Fi(F)-8 b(or)26 │ │ │ │ +b(a)f(m)m(ultithreaded)h(solv)m(e)g(there)g(is)f(one)g │ │ │ │ +Fh(SubMtxList)e Fi(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 │ │ │ │ +Fh(SubMtxList)e Fi(ob)5 b(ject)34 b(is)e(a)h Fh(Lock)f │ │ │ │ +Fi(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 Fh(Lock)f Fi(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(pac)m(k)-5 b(ages.)48 │ │ │ │ +b(P)m(orting)33 b(the)g(m)m(ultithreaded)f(co)s(des)g(to)h(another)g │ │ │ │ +(platform)f(should)0 850 y(b)s(e)37 b(simple)h(if)g(the)h(POSIX)e │ │ │ │ +(thread)h(pac)m(k)-5 b(age)40 b(is)e(presen)m(t.)64 b(Another)38 │ │ │ │ +b(t)m(yp)s(e)g(of)g(thread)g(pac)m(k)-5 b(age)40 b(will)e(require)0 │ │ │ │ +963 y(some)31 b(mo)s(di\014cations)f(to)h(the)g Fh(Lock)e │ │ │ │ +Fi(ob)5 b(ject,)32 b(but)d(none)i(to)g(the)f Fh(SubMtxList)e │ │ │ │ +Fi(ob)5 b(jects.)0 1293 y Fd(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ +1527 y Fi(The)30 b Fh(SubMtxList)d Fi(structure)j(has)g(the)h(follo)m │ │ │ │ +(wing)h(\014elds.)137 1752 y Fg(\210)45 b Fh(int)i(nlist)29 │ │ │ │ +b Fi(:)41 b(n)m(um)m(b)s(er)29 b(of)h(lists.)137 1952 │ │ │ │ +y Fg(\210)45 b Fh(SubMtx)h(**heads)29 b Fi(:)40 b(v)m(ector)32 │ │ │ │ +b(of)f(p)s(oin)m(ters)f(to)h(the)g(heads)f(of)g(the)h(list)g(of)g │ │ │ │ +Fh(SubMtx)d Fi(ob)5 b(jects.)137 2152 y Fg(\210)45 b │ │ │ │ +Fh(int)i(*counts)29 b Fi(:)40 b(v)m(ector)32 b(of)f(incoming)g(coun)m │ │ │ │ +(ts)f(for)h(the)f(lists.)137 2353 y Fg(\210)45 b Fh(Lock)i(*lock)29 │ │ │ │ +b Fi(:)41 b(m)m(utual)30 b(exclusion)h(lo)s(c)m(k.)137 │ │ │ │ +2553 y Fg(\210)45 b Fh(char)i(*flags)32 b Fi(:)48 b(v)m(ector)36 │ │ │ │ +b(of)e(lo)s(c)m(k)h(\015ags)f(for)g(the)g(lists.)52 b(If)33 │ │ │ │ +b Fh(flags[ilist])45 b(==)i('N')p Fi(,)33 b(the)h(list)h(do)s(es)f(not) │ │ │ │ +227 2666 y(need)27 b(to)h(b)s(e)e(lo)s(c)m(k)m(ed.)41 │ │ │ │ +b(If)27 b Fh(flags[ilist])44 b(==)j('Y')p Fi(,)27 b(the)g(list)g(do)s │ │ │ │ +(es)g(need)g(to)h(b)s(e)e(lo)s(c)m(k)m(ed.)41 b(Used)27 │ │ │ │ +b(only)g(when)227 2779 y Fh(lock)i Fi(is)i(not)g Fh(NULL)p │ │ │ │ +Fi(.)137 2979 y Fg(\210)45 b Fh(int)i(nlocks)29 b Fi(:)41 │ │ │ │ +b(total)32 b(n)m(um)m(b)s(er)d(of)h(lo)s(c)m(ks)i(made)e(on)g(the)h(m)m │ │ │ │ +(utual)f(exclusion)h(lo)s(c)m(k.)0 3309 y Fd(1.2)135 │ │ │ │ +b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(SubMtxList)c │ │ │ │ +Fd(metho)t(ds)0 3543 y Fi(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 3656 y Fh(SubMtxList)28 │ │ │ │ b Fi(ob)5 b(ject.)0 3942 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 4145 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 4258 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 4511 y(1.)46 b Fh(SubMtxList)f(*)j │ │ │ │ (SubMtxList_new)c(\()j(void)g(\))g(;)227 4668 y Fi(This)28 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ @@ -3503,65 +3512,65 @@ │ │ │ │ (and)d Fh(heads)p Fi(,)227 5251 y Fh(counts)p Fi(,)29 │ │ │ │ b Fh(lock)g Fi(and)h Fh(flags)f Fi(are)i(set)g(to)g Fh(NULL)e │ │ │ │ Fi(.)227 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fi(If)30 b Fh(list)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 986 4 v 1168 100 a Fh(SubMtxList)27 │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2867 100 V 986 w Fi(3)111 399 y(3.)46 b Fh(void)h(SubMtxList_clearData) │ │ │ │ -42 b(\()48 b(SubMtxList)d(*list)h(\))h(;)227 555 y Fi(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 Fh(SubMtx)p 3241 │ │ │ │ -555 29 4 v 33 w(free\(\))e Fi(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 Fh(heads)f │ │ │ │ -Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd.)40 b(If)28 │ │ │ │ -b Fh(counts)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)f(via)227 │ │ │ │ -781 y(a)i(call)g(to)f Fh(IVfree\(\))p Fi(.)38 b(If)29 │ │ │ │ -b Fh(flags)e Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)g(via)h(a) │ │ │ │ -f(call)h(to)f Fh(CVfree\(\))p Fi(.)38 b(If)29 b(the)g(lo)s(c)m(k)h(is)f │ │ │ │ -(not)227 894 y Fh(NULL)p Fi(,)34 b(it)i(is)f(destro)m(y)m(ed)h(via)f(a) │ │ │ │ -g(call)i(to)e Fh(mutex)p 1848 894 V 33 w(destroy\(\))e │ │ │ │ -Fi(and)h(then)h(free'd.)54 b(There)34 b(is)h(a)h(concluding)227 │ │ │ │ -1007 y(call)c(to)f Fh(SubMtxList)p 991 1007 V 32 w │ │ │ │ -(setDefaultFields\(\))p Fi(.)227 1164 y Fe(Err)-5 b(or)34 │ │ │ │ -b(che)-5 b(cking:)40 b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 947 4 v 1129 100 a Fh(SubMtxList)27 │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2906 100 V 947 w Fi(3)111 399 y(3.)46 │ │ │ │ +b Fh(void)h(SubMtxList_clearData)42 b(\()48 b(SubMtxList)d(*list)h(\))h │ │ │ │ +(;)227 555 y Fi(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 │ │ │ │ +Fh(SubMtx)p 3241 555 29 4 v 33 w(free\(\))e Fi(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 Fh(heads)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd.)40 │ │ │ │ +b(If)28 b Fh(counts)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)f │ │ │ │ +(via)227 781 y(a)i(call)g(to)f Fh(IVfree\(\))p Fi(.)38 │ │ │ │ +b(If)29 b Fh(flags)e Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)g │ │ │ │ +(via)h(a)f(call)h(to)f Fh(CVfree\(\))p Fi(.)38 b(If)29 │ │ │ │ +b(the)g(lo)s(c)m(k)h(is)f(not)227 894 y Fh(NULL)p Fi(,)34 │ │ │ │ +b(it)i(is)f(destro)m(y)m(ed)h(via)f(a)g(call)i(to)e Fh(mutex)p │ │ │ │ +1848 894 V 33 w(destroy\(\))e Fi(and)h(then)h(free'd.)54 │ │ │ │ +b(There)34 b(is)h(a)h(concluding)227 1007 y(call)c(to)f │ │ │ │ +Fh(SubMtxList)p 991 1007 V 32 w(setDefaultFields\(\))p │ │ │ │ +Fi(.)227 1164 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fi(If)30 b Fh(list)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.)111 1364 │ │ │ │ +y(4.)46 b Fh(void)h(SubMtxList_free)d(\()j(SubMtxList)e(*list)h(\))i(;) │ │ │ │ +227 1521 y Fi(This)37 b(metho)s(d)f(releases)i(an)m(y)g(storage)h(b)m │ │ │ │ +(y)e(a)g(call)i(to)e Fh(SubMtxList)p 2607 1521 V 32 w(clearData\(\))d │ │ │ │ +Fi(and)j(then)f(free)i(the)227 1634 y(space)31 b(for)f │ │ │ │ +Fh(list)p Fi(.)227 1791 y Fe(Err)-5 b(or)34 b(che)-5 │ │ │ │ +b(cking:)40 b Fi(If)30 b Fh(list)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.)111 1364 y(4.)46 b Fh(void)h(SubMtxList_free)d(\()j(SubMtxList) │ │ │ │ -e(*list)h(\))i(;)227 1521 y Fi(This)37 b(metho)s(d)f(releases)i(an)m(y) │ │ │ │ -g(storage)h(b)m(y)e(a)g(call)i(to)e Fh(SubMtxList)p 2607 │ │ │ │ -1521 V 32 w(clearData\(\))d Fi(and)j(then)f(free)i(the)227 │ │ │ │ -1634 y(space)31 b(for)f Fh(list)p Fi(.)227 1791 y Fe(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(list)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.)0 2078 y Fb(1.2.2)112 b(Initialization)39 │ │ │ │ -b(metho)s(ds)0 2281 y Fi(There)30 b(are)h(three)f(initializer)j(metho)s │ │ │ │ -(ds.)111 2534 y(1.)46 b Fh(void)h(SubMtxList_init\()c(SubMtxList)i │ │ │ │ -(*list,)h(int)h(nlist,)f(int)h(counts[],)1277 2647 y(int)g(lockflag,)e │ │ │ │ -(char)i(flags[])f(\))h(;)227 2804 y Fi(An)m(y)35 b(data)h(is)f(cleared) │ │ │ │ -h(via)f(a)h(call)g(to)g Fh(SubMtxList)p 2054 2804 V 31 │ │ │ │ -w(clearData\(\))p Fi(.)51 b(The)35 b(n)m(um)m(b)s(er)f(of)h(lists)g(is) │ │ │ │ -g(set)h(and)227 2917 y(the)43 b Fh(heads[])d Fi(v)m(ector)j(is)f │ │ │ │ -(initialized.)78 b(If)41 b Fh(counts)g Fi(is)h(not)g │ │ │ │ -Fh(NULL)p Fi(,)f(the)h(ob)5 b(ject's)43 b Fh(counts[])d │ │ │ │ -Fi(v)m(ector)k(is)227 3030 y(allo)s(cated)31 b(and)e(\014lled)g(with)g │ │ │ │ -(the)g(incoming)h(en)m(tries.)41 b(If)29 b Fh(lockflag)e │ │ │ │ -Fi(is)i(zero,)i(the)e(lo)s(c)m(k)h(is)f(not)h(initialized.)227 │ │ │ │ -3143 y(If)39 b Fh(lockflag)e Fi(is)i Fh(1)p Fi(,)j(the)d(lo)s(c)m(k)i │ │ │ │ -(is)e(initialized)i(to)f(b)s(e)f(able)h(to)g(sync)m(hronize)f(threads)g │ │ │ │ -(with)g(the)g(calling)227 3256 y(pro)s(cess.)71 b(If)40 │ │ │ │ -b Fh(lockflag)e Fi(is)j Fh(2)p Fi(,)i(the)e(lo)s(c)m(k)g(is)g │ │ │ │ -(initialized)h(to)f(b)s(e)f(able)h(to)g(sync)m(hronize)g(threads)f │ │ │ │ -(across)227 3368 y(pro)s(cesses.)49 b(If)32 b Fh(flags)g │ │ │ │ -Fi(is)h(not)g Fh(NULL)p Fi(,)f(the)h(ob)5 b(ject's)34 │ │ │ │ -b Fh(flags[])d Fi(v)m(ector)k(is)e(allo)s(cated)i(and)d(\014lled)h │ │ │ │ -(with)g(the)227 3481 y(incoming)e(en)m(tries.)227 3638 │ │ │ │ -y Fe(Err)-5 b(or)40 b(che)-5 b(cking:)53 b Fi(If)36 b │ │ │ │ -Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)g(if)h Fh(nlist)e │ │ │ │ +(exits.)0 2078 y Fb(1.2.2)112 b(Initialization)39 b(metho)s(ds)0 │ │ │ │ +2281 y Fi(There)30 b(are)h(three)f(initializer)j(metho)s(ds.)111 │ │ │ │ +2534 y(1.)46 b Fh(void)h(SubMtxList_init\()c(SubMtxList)i(*list,)h(int) │ │ │ │ +h(nlist,)f(int)h(counts[],)1277 2647 y(int)g(lockflag,)e(char)i │ │ │ │ +(flags[])f(\))h(;)227 2804 y Fi(An)m(y)35 b(data)h(is)f(cleared)h(via)f │ │ │ │ +(a)h(call)g(to)g Fh(SubMtxList)p 2054 2804 V 31 w(clearData\(\))p │ │ │ │ +Fi(.)51 b(The)35 b(n)m(um)m(b)s(er)f(of)h(lists)g(is)g(set)h(and)227 │ │ │ │ +2917 y(the)43 b Fh(heads[])d Fi(v)m(ector)j(is)f(initialized.)78 │ │ │ │ +b(If)41 b Fh(counts)g Fi(is)h(not)g Fh(NULL)p Fi(,)f(the)h(ob)5 │ │ │ │ +b(ject's)43 b Fh(counts[])d Fi(v)m(ector)k(is)227 3030 │ │ │ │ +y(allo)s(cated)31 b(and)e(\014lled)g(with)g(the)g(incoming)h(en)m │ │ │ │ +(tries.)41 b(If)29 b Fh(lockflag)e Fi(is)i(zero,)i(the)e(lo)s(c)m(k)h │ │ │ │ +(is)f(not)h(initialized.)227 3143 y(If)39 b Fh(lockflag)e │ │ │ │ +Fi(is)i Fh(1)p Fi(,)j(the)d(lo)s(c)m(k)i(is)e(initialized)i(to)f(b)s(e) │ │ │ │ +f(able)h(to)g(sync)m(hronize)f(threads)g(with)g(the)g(calling)227 │ │ │ │ +3256 y(pro)s(cess.)71 b(If)40 b Fh(lockflag)e Fi(is)j │ │ │ │ +Fh(2)p Fi(,)i(the)e(lo)s(c)m(k)g(is)g(initialized)h(to)f(b)s(e)f(able)h │ │ │ │ +(to)g(sync)m(hronize)g(threads)f(across)227 3368 y(pro)s(cesses.)49 │ │ │ │ +b(If)32 b Fh(flags)g Fi(is)h(not)g Fh(NULL)p Fi(,)f(the)h(ob)5 │ │ │ │ +b(ject's)34 b Fh(flags[])d Fi(v)m(ector)k(is)e(allo)s(cated)i(and)d │ │ │ │ +(\014lled)h(with)g(the)227 3481 y(incoming)e(en)m(tries.)227 │ │ │ │ +3638 y Fe(Err)-5 b(or)40 b(che)-5 b(cking:)53 b Fi(If)36 │ │ │ │ +b Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)g(if)h Fh(nlist)e │ │ │ │ Fa(\024)g Fi(0,)k(or)e(if)g Fh(lockflag)d Fi(is)j(not)g(in)f │ │ │ │ Fh([0,2])p Fi(,)i(an)e(error)227 3751 y(message)c(is)e(prin)m(ted)g │ │ │ │ (and)g(zero)h(is)f(returned.)0 4038 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 4241 y Fi(1.)46 b Fh(int)h(SubMtxList_isListNonempty) │ │ │ │ 41 b(\()48 b(SubMtxList)d(*list,)h(int)h(ilist)f(\))h(;)227 │ │ │ │ 4398 y Fi(If)30 b(list)h Fh(ilist)e Fi(is)i(empt)m(y)-8 │ │ │ │ b(,)31 b(the)g(metho)s(d)e(returns)h(0.)41 b(Otherwise,)30 │ │ │ │ @@ -3577,17 +3586,17 @@ │ │ │ │ (1.)44 b(Otherwise,)32 b(the)227 5138 y(metho)s(d)e(returns)f(0.)227 │ │ │ │ 5294 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 │ │ │ │ b Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e │ │ │ │ Fi(is)i(not)h(in)e(the)h(range)h Fh([0,nlist\))p Fi(,)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 Fi(4)p 136 100 986 4 v │ │ │ │ -1168 w Fh(SubMtxList)28 b Ff(:)40 b Fe(DRAFT)31 b Ff(Octob)s(er)f(18,)h │ │ │ │ -(2025)p 2914 100 V 111 399 a Fi(3.)46 b Fh(SubMtx)g(*)i │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 947 4 v │ │ │ │ +1129 w Fh(SubMtxList)28 b Ff(:)40 b Fe(DRAFT)30 b Ff(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)g(2025)p 2953 100 V 111 399 a Fi(3.)46 b Fh(SubMtx)g(*)i │ │ │ │ (SubMtxList_getList)43 b(\()k(SubMtxList)e(*list,)h(int)h(ilist)f(\))i │ │ │ │ (;)227 549 y Fi(If)28 b(list)h Fh(ilist)e Fi(is)h(empt)m(y)-8 │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fh(NULL)p Fi(.)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 Fh(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 October 18, 2025 │ │ │ │ │ + 2 SubMtxList : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + SubMtxList : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SubMtxList : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtxManager.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1422,23 +1422,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1612,90 +1611,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3863,21 +3871,21 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 235[71 20[{}1 90.9091 /CMSY10 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 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 /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 139[35 │ │ │ │ -1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 │ │ │ │ -45 3[25 44[{}14 90.9091 /CMSL10 rf /Ff 180[60 39 9[37 │ │ │ │ -4[20 59[{}4 66.4176 /CMMI8 rf /Fg 170[62 8[62 76[{}2 │ │ │ │ -90.9091 /CMMI10 rf /Fh 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 │ │ │ │ +11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf /Fe 137[48 │ │ │ │ +3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 │ │ │ │ +3[25 44[{}13 90.9091 /CMSL10 rf /Ff 180[60 39 9[37 4[20 │ │ │ │ +59[{}4 66.4176 /CMMI8 rf /Fg 170[62 8[62 76[{}2 90.9091 │ │ │ │ +/CMMI10 rf /Fh 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 │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4008,26 +4016,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 Fj(SubMtxManager)c │ │ │ │ Fk(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 Fk(2)p 136 100 915 4 v │ │ │ │ -1097 w Fj(SubMtxManager)26 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ -Fe(Octob)s(er)g(18,)i(2025)p 2986 100 V 141 399 a Fk(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 Fj(SubMtx)d Fk(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 Fd(1.1)135 b(Data)46 b(Structure)0 1184 y Fk(The)30 │ │ │ │ -b Fj(SubMtxManager)d Fk(structure)j(has)g(the)g(follo)m(wing)i │ │ │ │ -(\014elds.)137 1407 y Fi(\210)45 b Fj(SubMtx)h(*head)29 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 876 4 v │ │ │ │ +1057 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ +Fe(No)m(v)m(em)m(b)s(er)i(15,)f(2025)p 3025 100 V 141 │ │ │ │ +399 a Fk(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 Fj(SubMtx)d │ │ │ │ +Fk(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 Fd(1.1)135 b(Data)46 b(Structure)0 1184 │ │ │ │ +y Fk(The)30 b Fj(SubMtxManager)d Fk(structure)j(has)g(the)g(follo)m │ │ │ │ +(wing)i(\014elds.)137 1407 y Fi(\210)45 b Fj(SubMtx)h(*head)29 │ │ │ │ b Fk(:)41 b(head)30 b(of)h(the)f(free)h(list)g(of)f Fj(SubMtx)f │ │ │ │ Fk(ob)5 b(jects.)137 1606 y Fi(\210)45 b Fj(Lock)i(*lock)29 │ │ │ │ b Fk(:)41 b(m)m(utual)30 b(exclusion)h(lo)s(c)m(k.)137 │ │ │ │ 1804 y Fi(\210)45 b Fj(int)i(mode)19 b Fk(:)36 b(b)s(eha)m(vior)20 │ │ │ │ b(mo)s(de.)37 b(When)20 b Fj(mode)47 b(=)g(0)p Fk(,)23 │ │ │ │ b(the)d(ob)5 b(ject)21 b(calls)h Fj(SubMtx)p 2911 1804 │ │ │ │ 29 4 v 32 w(new\(\))d Fk(and)h Fj(SubMtx)p 3657 1804 │ │ │ │ @@ -4067,23 +4075,24 @@ │ │ │ │ k(SubMtxManager_new)43 b(\()k(void)g(\))h(;)227 5294 │ │ │ │ y Fk(This)41 b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e(the) │ │ │ │ h Fj(SubMtxManager)c Fk(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 │ │ │ │ Fj(SubMtxManager)p 1875 5407 V 31 w(setDefaultFields\(\))p │ │ │ │ Fk(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 915 4 v 1096 100 a Fj(SubMtxManager)27 │ │ │ │ -b Fe(:)41 b Fh(DRAFT)121 b Fe(Octob)s(er)30 b(18,)h(2025)p │ │ │ │ -2938 100 V 915 w Fk(3)111 399 y(2.)46 b Fj(void)h │ │ │ │ -(SubMtxManager_setDefault)o(Fiel)o(ds)41 b(\()48 b(SubMtxManager)c │ │ │ │ -(*manager)i(\))h(;)227 558 y Fk(The)20 b(structure's)g(\014elds)g(are)g │ │ │ │ -(set)h(to)g(default)g(v)-5 b(alues:)36 b Fj(mode)p Fk(,)21 │ │ │ │ -b Fj(nactive)p Fk(,)g Fj(nbytesactive)p Fk(,)e Fj(nbytesrequested)p │ │ │ │ -Fk(,)227 671 y Fj(nbytesalloc)p Fk(,)33 b Fj(nrequests)p │ │ │ │ -Fk(,)f Fj(nreleases)p Fk(,)h Fj(nlocks)g Fk(and)g Fj(nunlocks)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 876 4 v 1057 100 a Fj(SubMtxManager)27 │ │ │ │ +b Fe(:)40 b Fh(DRAFT)122 b Fe(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2978 100 V 876 w Fk(3)111 399 y(2.)46 │ │ │ │ +b Fj(void)h(SubMtxManager_setDefault)o(Fiel)o(ds)41 b(\()48 │ │ │ │ +b(SubMtxManager)c(*manager)i(\))h(;)227 558 y Fk(The)20 │ │ │ │ +b(structure's)g(\014elds)g(are)g(set)h(to)g(default)g(v)-5 │ │ │ │ +b(alues:)36 b Fj(mode)p Fk(,)21 b Fj(nactive)p Fk(,)g │ │ │ │ +Fj(nbytesactive)p Fk(,)e Fj(nbytesrequested)p Fk(,)227 │ │ │ │ +671 y Fj(nbytesalloc)p Fk(,)33 b Fj(nrequests)p Fk(,)f │ │ │ │ +Fj(nreleases)p Fk(,)h Fj(nlocks)g Fk(and)g Fj(nunlocks)f │ │ │ │ Fk(are)j(set)g(to)g(zero,)h(and)d Fj(head)h Fk(and)227 │ │ │ │ 784 y Fj(lock)29 b Fk(are)i(set)g(to)g Fj(NULL)e Fk(.)227 │ │ │ │ 944 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(manager)f Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)h(is)g │ │ │ │ (prin)m(ted)f(and)f(the)i(program)f(exits.)111 1151 y(3.)46 │ │ │ │ b Fj(void)h(SubMtxManager_clearData)41 b(\()48 b(SubMtxManager)c │ │ │ │ (*manager)i(\))h(;)227 1311 y Fk(This)31 b(metho)s(d)f(clears)j(the)e │ │ │ │ @@ -4140,19 +4149,19 @@ │ │ │ │ Fj(mode)46 b(=)i(0)p Fk(\),)30 b(or)g(returning)f(it)i(to)g(the)227 │ │ │ │ 5247 y(free)g(list)g(\(if)f Fj(mode)47 b(=)h(1)p Fk(\).)227 │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(manager)f Fk(or)h Fj(mtx)g Fk(is)g Fj(NULL)p Fk(,)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 Fk(4)p 136 100 915 4 v │ │ │ │ -1097 w Fj(SubMtxManager)26 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ -Fe(Octob)s(er)g(18,)i(2025)p 2986 100 V 111 399 a Fk(3.)46 │ │ │ │ -b Fj(void)h(SubMtxManager_releaseLis)o(tOfO)o(bje)o(cts)41 │ │ │ │ -b(\()48 b(SubMtxManager)c(*manager,)h(SubMtx)h(*first)g(\))i(;)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 876 4 v │ │ │ │ +1057 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ +Fe(No)m(v)m(em)m(b)s(er)i(15,)f(2025)p 3025 100 V 111 │ │ │ │ +399 a Fk(3.)46 b Fj(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 Fk(This)35 b(metho)s(d)g(releases)h(a)g(list)g(of)f │ │ │ │ Fj(SubMtx)f Fk(ob)5 b(jects)36 b(whose)f(head)g(is)g │ │ │ │ Fj(first)p Fk(,)h(either)f(free'ing)h(them)g(\(if)227 │ │ │ │ 662 y Fj(mode)47 b(=)g(0)p Fk(\),)31 b(or)f(returning)g(them)g(to)h │ │ │ │ (the)g(free)f(list)h(\(if)g Fj(mode)47 b(=)g(1)p Fk(\).)227 │ │ │ │ 812 y Fh(Err)-5 b(or)32 b(che)-5 b(cking:)39 b Fk(If)28 │ │ │ │ b Fj(manager)e Fk(or)j Fj(head)e Fk(is)h Fj(NULL)p Fk(,)f(an)i(error)e │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 SubMtxManager : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + SubMtxManager : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SubMtxManager : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SymbFac.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -1009,23 +1009,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1199,90 +1198,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3964,16 +3972,16 @@ │ │ │ │ FFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022227B │ │ │ │ A72D>136 D E │ │ │ │ /Fa load 0 Fa currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ /Fb 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 /Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 │ │ │ │ -2[45 2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf /Fd 134[62 │ │ │ │ +rf /Fc 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 134[62 │ │ │ │ 11[62 9[62 62 62 13[62 12[62 70[{}7 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 171[73 4[79 82 8[69 10[29 58[{}5 │ │ │ │ 90.9091 /CMBX10 rf /Fg 164[61 36[0 53[71{}3 90.9091 /CMSY10 │ │ │ │ rf /Fh 181[50 7[69 68 48 3[71 32[52 27[{}6 90.9091 /CMMI10 │ │ │ │ rf /Fi 137[42 49 30 37 38 1[46 46 51 2[42 1[28 46 42 │ │ │ │ @@ -4061,17 +4069,17 @@ │ │ │ │ (ciated)g(with)g(the)f Fj(SymbFac)f Fk(ob)5 b(ject.)0 │ │ │ │ 5073 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fd(SymbFac)d Fe(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 Fj(SymbFac)28 │ │ │ │ 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 1058 4 v │ │ │ │ -1240 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 0 399 a Fb(1.2.1)112 b(Sym)m(b)s(olic)39 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1019 4 v │ │ │ │ +1201 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 0 399 a Fb(1.2.1)112 b(Sym)m(b)s(olic)39 │ │ │ │ b(factorization)f(metho)s(ds)111 596 y Fk(1.)46 b Fj(IVL)h(*)h │ │ │ │ (SymbFac_initFromGraph)42 b(\()47 b(ETree)f(*etree,)g(Graph)h(*graph)f │ │ │ │ (\))h(;)227 748 y Fk(This)33 b(sym)m(b)s(olic)h(factorization)i(metho)s │ │ │ │ (d)d(tak)m(es)i(a)f Fj(Graph)e Fk(ob)5 b(ject)34 b(as)g(input.)49 │ │ │ │ b(This)33 b(metho)s(d)g(constructs)227 861 y(an)e Fj(IVL)f │ │ │ │ Fk(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 Fj(ilist)f Fk(con)m(tains)i(the)f(in)m(ternal)h(and) │ │ │ │ @@ -4155,19 +4163,19 @@ │ │ │ │ b(is)h(optionally)h(written)f(out)g(to)g Fj(outETreeFile)p │ │ │ │ Fk(.)35 b(The)22 b(old-to-new)i Fj(IV)e Fk(ob)5 b(ject)23 │ │ │ │ b(is)g(optionally)h(written)227 5294 y(to)32 b Fj(outIVfile)p │ │ │ │ Fk(.)40 b(The)31 b Fj(IVL)f Fk(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 Fj(outIVLfile)p Fk(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1058 4 v 1239 100 a Fj(SymbFac)29 │ │ │ │ -b Fc(:)40 b Fi(DRAFT)121 b Fc(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2795 100 V 1058 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 │ │ │ │ -b Fj(msglvl)f Fk(parameter)i(determines)f(the)h(amoun)m(t)f(of)h │ │ │ │ -(output.)337 557 y Fa(\210)45 b Fk(The)33 b Fj(msgFile)e │ │ │ │ +TeXDict begin 3 2 bop 91 100 1019 4 v 1200 100 a Fj(SymbFac)29 │ │ │ │ +b Fc(:)40 b Fi(DRAFT)121 b Fc(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2834 100 V 1019 w Fk(3)337 399 y Fa(\210)45 │ │ │ │ +b Fk(The)30 b Fj(msglvl)f Fk(parameter)i(determines)f(the)h(amoun)m(t)f │ │ │ │ +(of)h(output.)337 557 y Fa(\210)45 b Fk(The)33 b Fj(msgFile)e │ │ │ │ Fk(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fj(msgFile)e Fk(is)i Fj(stdout)p Fk(,)g(then)g(the)427 │ │ │ │ 670 y(message)27 b(\014le)f(is)g Fi(stdout)p Fk(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ b Fk(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 783 │ │ │ │ y(data.)337 941 y Fa(\210)45 b Fk(The)23 b Fj(inETreeFile)d │ │ │ │ Fk(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ @@ -4246,18 +4254,18 @@ │ │ │ │ (input)e(\014le)i(for)f(the)g Fj(Graph)f Fk(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 Fj(*.graphf)18 b Fk(or)j Fj(*.graphb)p Fk(.)35 b(The)19 │ │ │ │ b Fj(Graph)g Fk(ob)5 b(ject)21 b(is)g(read)f(from)g(the)g(\014le)h(via) │ │ │ │ f(the)h Fj(Graph)p 3368 5294 V 33 w(readFromFile\(\))427 │ │ │ │ 5407 y Fk(metho)s(d.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1058 4 v │ │ │ │ -1240 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2842 100 V 337 399 a Fa(\210)45 b Fk(The)24 b │ │ │ │ -Fj(outETreeFile)d Fk(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1019 4 v │ │ │ │ +1201 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(No)m(v)m(em)m(b)s(er) │ │ │ │ +h(15,)h(2025)p 2882 100 V 337 399 a Fa(\210)45 b Fk(The)24 │ │ │ │ +b Fj(outETreeFile)d Fk(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ (the)h Fj(ETree)d Fk(ob)5 b(ject.)40 b(If)24 b Fj(outETreeFile)d │ │ │ │ Fk(is)427 511 y Fj(none)g Fk(then)h(the)g Fj(ETree)f │ │ │ │ Fk(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ b(Otherwise,)23 b(the)g Fj(ETree)p 3253 511 29 4 v 33 │ │ │ │ w(writeToFile\(\))427 624 y Fk(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 │ │ │ │ Fj(outETreeFile)c Fk(is)k(of)g(the)f(form)427 737 y Fj(*.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 October 18, 2025 │ │ │ │ │ + 2 SymbFac : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + SymbFac : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 SymbFac : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Tree.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2230,23 +2230,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2420,90 +2419,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4948,16 +4956,16 @@ │ │ │ │ @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 152[45 45 81[71 20[{}3 │ │ │ │ 90.9091 /CMSY10 rf /Fe 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 /Ff 141[62 12[62 │ │ │ │ -16[62 84[{}3 119.552 /CMTT12 rf /Fg 139[35 1[36 2[45 │ │ │ │ -9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ +16[62 84[{}3 119.552 /CMTT12 rf /Fg 137[48 3[36 2[45 │ │ │ │ +1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 │ │ │ │ 90.9091 /CMSL10 rf /Fh 134[45 52 1[44 7[55 80 3[31 42[71 │ │ │ │ 1[71 25 25 58[{}10 90.9091 /CMMI10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ @@ -5080,17 +5088,17 @@ │ │ │ │ b(>)f Fn(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 │ │ │ │ Fm(par)p Fn(,)g Fm(fch)f Fn(and)g Fm(sib)f Fn(\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 Fn(2)p 136 100 1130 4 v │ │ │ │ -1311 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)30 b Fg(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 0 399 a Fj(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1090 4 v │ │ │ │ +1272 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 0 399 a Fj(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Ff(Tree)e Fj(metho)t(ds)0 │ │ │ │ 628 y Fn(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 Fm(Tree)0 741 y Fn(ob)5 b(ject.)0 │ │ │ │ 1013 y Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1210 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 │ │ │ │ @@ -5139,63 +5147,64 @@ │ │ │ │ y(3.)46 b Fm(int)h(*)h(Tree_par)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ 5256 y Fn(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 Fl(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fn(If)30 b Fm(tree)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 1130 4 v 1311 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fn(3)111 399 y(4.)46 b Fm(int)h(*)h(Tree_fch)d(\()j │ │ │ │ -(Tree)e(*tree)h(\))g(;)227 548 y Fn(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 Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ -b Fm(tree)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.)111 885 y(5.)46 b │ │ │ │ -Fm(int)h(*)h(Tree_sib)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ -1035 y Fn(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ -g(sibling)f(v)m(ector.)227 1185 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fn(If)30 b Fm(tree)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.)0 1452 y Fe(1.2.3)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ -1648 y Fn(There)29 b(are)i(three)f(initializers)h(and)f(t)m(w)m(o)h │ │ │ │ -(help)s(er)e(functions)g(to)i(set)f(the)g(dimensions)f(of)h(the)g │ │ │ │ -(tree,)h(allo)s(cate)i(the)0 1761 y(three)e(v)m(ectors,)h(and)d(\014ll) │ │ │ │ -i(the)f(information.)111 1995 y(1.)46 b Fm(void)h(Tree_init1)e(\()i │ │ │ │ -(Tree)g(*tree,)f(int)h(size)g(\))g(;)227 2145 y Fn(This)20 │ │ │ │ -b(is)g(the)h(basic)f(initializer)i(metho)s(d.)37 b(An)m(y)21 │ │ │ │ -b(previous)e(data)i(is)g(cleared)g(with)f(a)g(call)i(to)f │ │ │ │ -Fm(Tree)p 3458 2145 29 4 v 33 w(clearData\(\))p Fn(.)227 │ │ │ │ -2258 y(The)29 b(size)h(is)f(set)h(and)f(storage)i(allo)s(cated)g(for)e │ │ │ │ -(the)g(three)h(tree)g(v)m(ectors)g(using)f Fm(IVinit\(\))p │ │ │ │ -Fn(.)38 b(All)30 b(en)m(tries)g(in)227 2371 y(the)h(three)f(v)m(ectors) │ │ │ │ -i(are)f(set)g(to)g Fm(-1)p Fn(.)227 2521 y Fl(Err)-5 │ │ │ │ -b(or)44 b(che)-5 b(cking:)61 b Fn(If)41 b Fm(tree)f Fn(is)h │ │ │ │ -Fm(NULL)e Fn(or)i Fm(size)f Fn(is)h(negativ)m(e,)46 b(an)41 │ │ │ │ -b(error)g(message)h(is)f(prin)m(ted)f(and)h(the)227 2634 │ │ │ │ -y(program)30 b(exits.)111 2821 y(2.)46 b Fm(void)h(Tree_init2)e(\()i │ │ │ │ -(Tree)g(*tree,)f(int)h(size,)f(int)h(par[])g(\))g(;)227 │ │ │ │ -2970 y Fn(The)38 b(simple)h(initializer)h Fm(Tree)p 1324 │ │ │ │ -2970 V 34 w(init1\(\))c Fn(is)j(called)h(and)e(the)g(en)m(tries)i(in)e │ │ │ │ -Fm(par[])f Fn(are)i(copied)g(in)m(to)h(the)227 3083 y(paren)m(t)h(v)m │ │ │ │ -(ector.)73 b(The)39 b(help)s(er)h(metho)s(d)g Fm(Tree)p │ │ │ │ -1883 3083 V 33 w(setFchSibRoot\(\))d Fn(is)j(then)g(called)i(to)f(set)g │ │ │ │ -(the)g(other)227 3196 y(\014elds.)227 3346 y Fl(Err)-5 │ │ │ │ -b(or)31 b(che)-5 b(cking:)39 b Fn(If)27 b Fm(tree)f Fn(or)h │ │ │ │ -Fm(par)f Fn(is)h Fm(NULL)p Fn(,)g(or)g(if)g Fm(size)f │ │ │ │ -Fn(is)h(negativ)m(e,)j(an)e(error)e(message)j(is)e(prin)m(ted)g(and)227 │ │ │ │ -3459 y(the)k(program)f(exits.)111 3646 y(3.)46 b Fm(void)h(Tree_init3)e │ │ │ │ -(\()i(Tree)g(*tree,)f(int)h(size,)f(int)h(par[],)f(int)h(fch[],)f(int)h │ │ │ │ -(sib[])g(\))g(;)227 3796 y Fn(The)30 b(simple)g(initializer)i │ │ │ │ -Fm(Tree)p 1299 3796 V 34 w(init1\(\))c Fn(is)i(called)i(and)e(the)g(en) │ │ │ │ -m(tries)h(in)f Fm(par[])p Fn(,)f Fm(fch[])g Fn(and)h │ │ │ │ -Fm(sib[])f Fn(are)227 3908 y(copied)f(in)m(to)h(their)e(resp)s(ectiv)m │ │ │ │ -(e)i(v)m(ectors.)41 b(The)27 b(help)s(er)g(metho)s(d)g │ │ │ │ -Fm(Tree)p 2649 3908 V 33 w(setRoot\(\))e Fn(is)i(then)g(called)i(to)f │ │ │ │ -(set)227 4021 y(the)j(ro)s(ot)g(\014eld.)227 4171 y Fl(Err)-5 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1090 4 v 1272 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fn(3)111 399 y(4.)46 │ │ │ │ +b Fm(int)h(*)h(Tree_fch)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ +548 y Fn(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 Fl(Err)-5 │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(tree)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.)111 885 y(5.)46 b Fm(int)h(*)h(Tree_sib)d(\()j(Tree)e │ │ │ │ +(*tree)h(\))g(;)227 1035 y Fn(This)30 b(metho)s(d)g(returns)f(a)i(p)s │ │ │ │ +(oin)m(ter)f(to)h(the)g(sibling)f(v)m(ector.)227 1185 │ │ │ │ +y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b │ │ │ │ +Fm(tree)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.)0 1452 y Fe(1.2.3)112 │ │ │ │ +b(Initializer)38 b(metho)s(ds)0 1648 y Fn(There)29 b(are)i(three)f │ │ │ │ +(initializers)h(and)f(t)m(w)m(o)h(help)s(er)e(functions)g(to)i(set)f │ │ │ │ +(the)g(dimensions)f(of)h(the)g(tree,)h(allo)s(cate)i(the)0 │ │ │ │ +1761 y(three)e(v)m(ectors,)h(and)d(\014ll)i(the)f(information.)111 │ │ │ │ +1995 y(1.)46 b Fm(void)h(Tree_init1)e(\()i(Tree)g(*tree,)f(int)h(size)g │ │ │ │ +(\))g(;)227 2145 y Fn(This)20 b(is)g(the)h(basic)f(initializer)i(metho) │ │ │ │ +s(d.)37 b(An)m(y)21 b(previous)e(data)i(is)g(cleared)g(with)f(a)g(call) │ │ │ │ +i(to)f Fm(Tree)p 3458 2145 29 4 v 33 w(clearData\(\))p │ │ │ │ +Fn(.)227 2258 y(The)29 b(size)h(is)f(set)h(and)f(storage)i(allo)s │ │ │ │ +(cated)g(for)e(the)g(three)h(tree)g(v)m(ectors)g(using)f │ │ │ │ +Fm(IVinit\(\))p Fn(.)38 b(All)30 b(en)m(tries)g(in)227 │ │ │ │ +2371 y(the)h(three)f(v)m(ectors)i(are)f(set)g(to)g Fm(-1)p │ │ │ │ +Fn(.)227 2521 y Fl(Err)-5 b(or)44 b(che)-5 b(cking:)61 │ │ │ │ +b Fn(If)41 b Fm(tree)f Fn(is)h Fm(NULL)e Fn(or)i Fm(size)f │ │ │ │ +Fn(is)h(negativ)m(e,)46 b(an)41 b(error)g(message)h(is)f(prin)m(ted)f │ │ │ │ +(and)h(the)227 2634 y(program)30 b(exits.)111 2821 y(2.)46 │ │ │ │ +b Fm(void)h(Tree_init2)e(\()i(Tree)g(*tree,)f(int)h(size,)f(int)h │ │ │ │ +(par[])g(\))g(;)227 2970 y Fn(The)38 b(simple)h(initializer)h │ │ │ │ +Fm(Tree)p 1324 2970 V 34 w(init1\(\))c Fn(is)j(called)h(and)e(the)g(en) │ │ │ │ +m(tries)i(in)e Fm(par[])f Fn(are)i(copied)g(in)m(to)h(the)227 │ │ │ │ +3083 y(paren)m(t)h(v)m(ector.)73 b(The)39 b(help)s(er)h(metho)s(d)g │ │ │ │ +Fm(Tree)p 1883 3083 V 33 w(setFchSibRoot\(\))d Fn(is)j(then)g(called)i │ │ │ │ +(to)f(set)g(the)g(other)227 3196 y(\014elds.)227 3346 │ │ │ │ +y Fl(Err)-5 b(or)31 b(che)-5 b(cking:)39 b Fn(If)27 b │ │ │ │ +Fm(tree)f Fn(or)h Fm(par)f Fn(is)h Fm(NULL)p Fn(,)g(or)g(if)g │ │ │ │ +Fm(size)f Fn(is)h(negativ)m(e,)j(an)e(error)e(message)j(is)e(prin)m │ │ │ │ +(ted)g(and)227 3459 y(the)k(program)f(exits.)111 3646 │ │ │ │ +y(3.)46 b Fm(void)h(Tree_init3)e(\()i(Tree)g(*tree,)f(int)h(size,)f │ │ │ │ +(int)h(par[],)f(int)h(fch[],)f(int)h(sib[])g(\))g(;)227 │ │ │ │ +3796 y Fn(The)30 b(simple)g(initializer)i Fm(Tree)p 1299 │ │ │ │ +3796 V 34 w(init1\(\))c Fn(is)i(called)i(and)e(the)g(en)m(tries)h(in)f │ │ │ │ +Fm(par[])p Fn(,)f Fm(fch[])g Fn(and)h Fm(sib[])f Fn(are)227 │ │ │ │ +3908 y(copied)f(in)m(to)h(their)e(resp)s(ectiv)m(e)i(v)m(ectors.)41 │ │ │ │ +b(The)27 b(help)s(er)g(metho)s(d)g Fm(Tree)p 2649 3908 │ │ │ │ +V 33 w(setRoot\(\))e Fn(is)i(then)g(called)i(to)f(set)227 │ │ │ │ +4021 y(the)j(ro)s(ot)g(\014eld.)227 4171 y Fl(Err)-5 │ │ │ │ b(or)36 b(che)-5 b(cking:)44 b Fn(If)32 b Fm(tree)p Fn(,)g │ │ │ │ Fm(par)p Fn(,)h Fm(fch)e Fn(or)i Fm(sib)e Fn(is)i Fm(NULL)p │ │ │ │ Fn(,)e(or)i(if)f Fm(size)f Fn(is)i(negativ)m(e,)i(an)d(error)g(message) │ │ │ │ i(is)227 4284 y(prin)m(ted)c(and)g(the)h(program)f(exits.)111 │ │ │ │ 4471 y(4.)46 b Fm(int)h(Tree_initFromSubtree)42 b(\()48 │ │ │ │ b(Tree)f(*subtree,)e(IV)i(*nodeidsIV,)e(Tree)h(*tree)h(\))g(;)227 │ │ │ │ 4621 y Fn(The)27 b Fm(subtree)f Fn(ob)5 b(ject)28 b(is)g(initialized)h │ │ │ │ @@ -5207,27 +5216,28 @@ │ │ │ │ 4996 y Fl(R)-5 b(eturn)34 b(c)-5 b(o)g(des:)1030 5193 │ │ │ │ y Fn(1)100 b(normal)31 b(return)1000 5306 y(-1)100 b │ │ │ │ Fm(subtree)29 b Fn(is)h Fm(NULL)1000 5419 y Fn(-2)100 │ │ │ │ b Fm(nodeidsIV)28 b Fn(is)i Fm(NULL)2138 5250 y Fn(-3)101 │ │ │ │ b Fm(tree)29 b Fn(is)h Fm(NULL)2138 5363 y Fn(-4)101 │ │ │ │ b Fm(nodeidsIV)27 b Fn(is)k(in)m(v)-5 b(alid)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1130 4 v │ │ │ │ -1311 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)30 b Fg(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 111 399 a Fn(5.)46 b Fm(void)h(Tree_setFchSibRoot)c(\()k │ │ │ │ -(Tree)g(*tree)f(\))i(;)227 553 y Fn(The)25 b(ro)s(ot)g(and)f(the)h(en)m │ │ │ │ -(tries)h(in)e(the)h Fm(fch[])e Fn(and)i Fm(sib[])e Fn(v)m(ectors)j(are) │ │ │ │ -g(set)f(using)f(the)h(en)m(tries)h(in)e(the)h Fm(par[])227 │ │ │ │ -666 y Fn(v)m(ector.)227 821 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ -b(cking:)40 b Fn(If)30 b Fm(tree)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.)111 1017 y(6.)46 b Fm(void)h(Tree_setRoot)d(\()k(Tree)e(*tree)h │ │ │ │ -(\))g(;)227 1172 y Fn(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 │ │ │ │ -Fm(sib[])g Fn(\014eld)g(and)f(the)i(ro)s(ot)g(of)g(the)f(tree)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1090 4 v │ │ │ │ +1272 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 111 399 a Fn(5.)46 b Fm(void)h │ │ │ │ +(Tree_setFchSibRoot)c(\()k(Tree)g(*tree)f(\))i(;)227 │ │ │ │ +553 y Fn(The)25 b(ro)s(ot)g(and)f(the)h(en)m(tries)h(in)e(the)h │ │ │ │ +Fm(fch[])e Fn(and)i Fm(sib[])e Fn(v)m(ectors)j(are)g(set)f(using)f(the) │ │ │ │ +h(en)m(tries)h(in)e(the)h Fm(par[])227 666 y Fn(v)m(ector.)227 │ │ │ │ +821 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ +b Fm(tree)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.)111 1017 y(6.)46 │ │ │ │ +b Fm(void)h(Tree_setRoot)d(\()k(Tree)e(*tree)h(\))g(;)227 │ │ │ │ +1172 y Fn(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 Fm(sib[])g │ │ │ │ +Fn(\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 Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(tree)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.)0 1721 y Fe(1.2.4)112 │ │ │ │ b(Utilit)m(y)38 b(metho)s(ds)0 1922 y Fn(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 │ │ │ │ (y)e(the)h(ob)5 b(ject,)35 b(aid)f(in)f(p)s(erforming)g(pre-order)0 │ │ │ │ @@ -5272,41 +5282,42 @@ │ │ │ │ (tra)m(v)m(ersal.)227 5294 y Fl(Err)-5 b(or)37 b(che)-5 │ │ │ │ b(cking:)47 b Fn(If)33 b Fm(tree)f Fn(is)i Fm(NULL)p │ │ │ │ Fn(,)e(or)i(if)f Fm(tree->n)46 b(<)i(1)p Fn(,)34 b(or)f │ │ │ │ Fm(v)g Fn(is)h(not)g(in)f Fm([0,tree->n-1])p Fn(,)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 1130 4 v 1311 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i │ │ │ │ -(Tree)g(*tree)f(\))i(;)227 569 y Fn(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 Fl(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1090 4 v 1272 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fn(5)111 399 y(6.)46 │ │ │ │ +b Fm(int)h(Tree_nleaves)e(\()i(Tree)g(*tree)f(\))i(;)227 │ │ │ │ +569 y Fn(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 Fl(Err)-5 │ │ │ │ +b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 b Fm(tree)g Fn(is)h │ │ │ │ +Fm(NULL)p Fn(,)f(or)h(if)h Fm(tree->n)i(<)j(1)p Fn(,)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 Fm(int)h(Tree_nroots)e(\()i(Tree)g(*tree)f │ │ │ │ +(\))i(;)227 1253 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b) │ │ │ │ +s(er)f(of)i(ro)s(ots)g(of)f(the)h(tree)g(\(really)g(a)g(forest\).)227 │ │ │ │ +1424 y Fl(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 │ │ │ │ b Fm(tree)g Fn(is)h Fm(NULL)p Fn(,)f(or)h(if)h Fm(tree->n)i(<)j(1)p │ │ │ │ Fn(,)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 Fm(int)h(Tree_nroots)e(\() │ │ │ │ -i(Tree)g(*tree)f(\))i(;)227 1253 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ -(the)h(n)m(um)m(b)s(er)f(of)i(ro)s(ots)g(of)f(the)h(tree)g(\(really)g │ │ │ │ -(a)g(forest\).)227 1424 y Fl(Err)-5 b(or)45 b(che)-5 │ │ │ │ -b(cking:)64 b Fn(If)41 b Fm(tree)g Fn(is)h Fm(NULL)p │ │ │ │ -Fn(,)f(or)h(if)h Fm(tree->n)i(<)j(1)p Fn(,)d(an)d(error)f(message)j(is) │ │ │ │ -e(prin)m(ted)f(and)h(the)227 1537 y(program)30 b(exits.)111 │ │ │ │ -1766 y(8.)46 b Fm(int)h(Tree_nchild)e(\()i(Tree)g(*tree,)f(int)h(v)g │ │ │ │ -(\))h(;)227 1937 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b) │ │ │ │ -s(er)f(of)i(c)m(hildren)f(of)h Fm(v)p Fn(.)227 2108 y │ │ │ │ -Fl(Err)-5 b(or)37 b(che)-5 b(cking:)47 b Fn(If)33 b Fm(tree)f │ │ │ │ -Fn(is)i Fm(NULL)p Fn(,)e(or)i(if)f Fm(tree->n)46 b(<)i(1)p │ │ │ │ -Fn(,)34 b(or)f Fm(v)g Fn(is)h(not)g(in)f Fm([0,tree->n-1])p │ │ │ │ -Fn(,)e(an)i(error)227 2221 y(message)f(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ -(program)h(exits.)111 2450 y(9.)46 b Fm(IV)h(*)h(Tree_nchildIV)c(\()k │ │ │ │ -(Tree)e(*tree)h(\))g(;)227 2621 y Fn(This)35 b(metho)s(d)f(creates)j │ │ │ │ -(an)e Fm(IV)f Fn(ob)5 b(ject)37 b(that)e(holds)g(the)g(n)m(um)m(b)s(er) │ │ │ │ -f(of)i(c)m(hildren)f(for)f(eac)m(h)j(of)e(the)g(no)s(des,)227 │ │ │ │ -2733 y(i.e.,)d(en)m(try)f Fm(v)f Fn(of)g(the)h(returned)e │ │ │ │ +1537 y(program)30 b(exits.)111 1766 y(8.)46 b Fm(int)h(Tree_nchild)e │ │ │ │ +(\()i(Tree)g(*tree,)f(int)h(v)g(\))h(;)227 1937 y Fn(This)30 │ │ │ │ +b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(c)m(hildren)f(of)h │ │ │ │ +Fm(v)p Fn(.)227 2108 y Fl(Err)-5 b(or)37 b(che)-5 b(cking:)47 │ │ │ │ +b Fn(If)33 b Fm(tree)f Fn(is)i Fm(NULL)p Fn(,)e(or)i(if)f │ │ │ │ +Fm(tree->n)46 b(<)i(1)p Fn(,)34 b(or)f Fm(v)g Fn(is)h(not)g(in)f │ │ │ │ +Fm([0,tree->n-1])p Fn(,)e(an)i(error)227 2221 y(message)f(is)e(prin)m │ │ │ │ +(ted)g(and)g(the)g(program)h(exits.)111 2450 y(9.)46 │ │ │ │ +b Fm(IV)h(*)h(Tree_nchildIV)c(\()k(Tree)e(*tree)h(\))g(;)227 │ │ │ │ +2621 y Fn(This)35 b(metho)s(d)f(creates)j(an)e Fm(IV)f │ │ │ │ +Fn(ob)5 b(ject)37 b(that)e(holds)g(the)g(n)m(um)m(b)s(er)f(of)i(c)m │ │ │ │ +(hildren)f(for)f(eac)m(h)j(of)e(the)g(no)s(des,)227 2733 │ │ │ │ +y(i.e.,)d(en)m(try)f Fm(v)f Fn(of)g(the)h(returned)e │ │ │ │ Fm(IV)h Fn(ob)5 b(ject)31 b(con)m(tains)h(the)e(n)m(um)m(b)s(er)f(of)i │ │ │ │ (c)m(hildren)f(of)g(no)s(de)g Fm(v)p Fn(.)227 2904 y │ │ │ │ Fl(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 b Fm(tree)g │ │ │ │ Fn(is)h Fm(NULL)p Fn(,)f(or)h(if)h Fm(tree->n)i(<)j(1)p │ │ │ │ Fn(,)d(an)d(error)f(message)j(is)e(prin)m(ted)f(and)h(the)227 │ │ │ │ 3017 y(program)30 b(exits.)66 3246 y(10.)46 b Fm(int)h(Tree_maxNchild)d │ │ │ │ (\()k(Tree)e(*tree)h(\))g(;)227 3417 y Fn(This)30 b(metho)s(d)g │ │ │ │ @@ -5331,27 +5342,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 Fl(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)41 b Fn(If)30 b Fm(tree)p Fn(,)g │ │ │ │ Fm(gainIV)f Fn(or)h Fm(ptotalgain)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: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1130 4 v │ │ │ │ -1311 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)30 b Fg(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 0 399 a Fe(1.2.5)112 b(Metrics)38 b(metho)s(ds)0 │ │ │ │ -595 y Fn(Man)m(y)24 b(op)s(erations)h(need)e(to)i(kno)m(w)e(some)i │ │ │ │ -Fl(metric)f Fn(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 Fn(6)p 136 100 1090 4 v │ │ │ │ +1272 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 0 399 a Fe(1.2.5)112 b(Metrics)38 │ │ │ │ +b(metho)s(ds)0 595 y Fn(Man)m(y)24 b(op)s(erations)h(need)e(to)i(kno)m │ │ │ │ +(w)e(some)i Fl(metric)f Fn(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 Fm(int)f Fn(or)i Fm(double)p Fn(.)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 │ │ │ │ @@ -5400,20 +5411,20 @@ │ │ │ │ 4956 y Fm(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 Fl(Err)-5 b(or)47 b(che)-5 b(cking:)68 b Fn(If)44 │ │ │ │ b Fm(tree)f Fn(or)h Fm(vmetric)p Fd(f)p Fm(I,D)p Fd(g)p │ │ │ │ Fm(V)e Fn(is)i Fm(NULL)p Fn(,)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 1130 4 v 1311 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ -b(metho)s(ds)0 590 y Fn(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 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1090 4 v 1272 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fn(7)0 399 y Fe(1.2.6)112 │ │ │ │ +b(Compression)39 b(metho)s(ds)0 590 y Fn(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 │ │ │ │ (longest)g(c)m(hains)g([)p Fk(?)p Fn(].)40 b(In)24 b(b)s(oth)h(cases,)i │ │ │ │ (w)m(e)f(can)0 929 y(construct)34 b(a)g(map)f(from)g(eac)m(h)i(no)s(de) │ │ │ │ e(to)h(a)g(set)g(of)g(no)s(des)f(to)h(de\014ne)f(a)h(smaller,)h(more)f │ │ │ │ @@ -5486,37 +5497,37 @@ │ │ │ │ b(.)47 b(If)32 b Fm(u)g Fn(and)g Fm(v)227 5294 y Fn(are)k(siblings,)g │ │ │ │ (and)f Fm(u)g Fn(comes)h(b)s(efore)f Fm(v)g Fn(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 Fm(u)f Fn(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 │ │ │ │ Fm(v)p Fn(.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1130 4 v │ │ │ │ -1311 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)30 b Fg(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ -b Fn(If)30 b Fm(tree)f Fn(or)h Fm(metricIV)e Fn(is)i │ │ │ │ -Fm(NULL)p Fn(,)f(or)h(if)h Fm(n)47 b(<)g(1)p Fn(,)31 │ │ │ │ -b(or)f(if)g Fm(n)g Fn(is)g(not)g(the)h(size)g(of)f Fm(metricIV)p │ │ │ │ -Fn(,)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 Fe(1.2.8)112 b(P)m(erm)m(utation)38 │ │ │ │ -b(metho)s(ds)0 973 y Fn(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 Fm(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 Fn(If)35 │ │ │ │ -b Fm(tree)f Fn(is)h Fm(NULL)p Fn(,)g Fm(tree->n)46 b(<)h(1)35 │ │ │ │ -b Fn(or)g(a)h(p)s(erm)m(utation)f(v)m(ector)i(is)e Fm(NULL)p │ │ │ │ -Fn(,)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 Fn(8)p 136 100 1090 4 v │ │ │ │ +1272 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 227 399 a Fl(Err)-5 b(or)34 │ │ │ │ +b(che)-5 b(cking:)40 b Fn(If)30 b Fm(tree)f Fn(or)h Fm(metricIV)e │ │ │ │ +Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)h Fm(n)47 b(<)g(1)p │ │ │ │ +Fn(,)31 b(or)f(if)g Fm(n)g Fn(is)g(not)g(the)h(size)g(of)f │ │ │ │ +Fm(metricIV)p Fn(,)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 Fe(1.2.8)112 b(P)m(erm)m(utation) │ │ │ │ +38 b(metho)s(ds)0 973 y Fn(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 Fm(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 Fn(If)35 b Fm(tree)f Fn(is)h Fm(NULL)p Fn(,)g │ │ │ │ +Fm(tree->n)46 b(<)h(1)35 b Fn(or)g(a)h(p)s(erm)m(utation)f(v)m(ector)i │ │ │ │ +(is)e Fm(NULL)p Fn(,)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 Fl(Err)-5 b(or)42 │ │ │ │ b(che)-5 b(cking:)57 b Fn(If)38 b Fm(tree)g Fn(or)h(a)g(p)s(erm)m │ │ │ │ (utation)g(v)m(ector)h(is)f Fm(NULL)p Fn(,)f(or)h(if)f │ │ │ │ Fm(n)48 b(<)f(1)p Fn(,)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 │ │ │ │ @@ -5557,24 +5568,24 @@ │ │ │ │ b(alid)2198 4858 y(-3)100 b Fm(xDV)30 b Fn(is)g Fm(NULL)2198 │ │ │ │ 4970 y Fn(-4)100 b Fm(yDV)30 b Fn(is)g Fm(NULL)111 5181 │ │ │ │ y Fn(2.)46 b Fm(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 1130 4 v 1311 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ -(bounds[])g(\))h(;)227 557 y Fn(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 Fm(xDV)f Fn(and)h Fm(yDV)f Fn(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 Fm(radiusDV)e Fn(is)i Fm(NULL)p │ │ │ │ -Fn(\))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 Fm(radiusDV)e │ │ │ │ +TeXDict begin 9 8 bop 91 100 1090 4 v 1272 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fn(9)1230 399 y Fm(double)46 │ │ │ │ +b(frame[],)f(double)h(bounds[])g(\))h(;)227 557 y Fn(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 Fm(xDV)f Fn(and)h │ │ │ │ +Fm(yDV)f Fn(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 Fm(radiusDV)e │ │ │ │ +Fn(is)i Fm(NULL)p Fn(\))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 Fm(radiusDV)e │ │ │ │ Fn(when)h Fm(radiusDV)f Fn(is)j(not)f Fm(NULL)p Fn(.)g(The)g(v)-5 │ │ │ │ b(alue)31 b Fm(rscale)d Fn(is)j(used)e(to)227 941 y(scale)j(all)f(the)g │ │ │ │ (radii.)40 b(\(If)31 b Fm(radiusDV)d Fn(is)i Fm(NULL)p │ │ │ │ Fn(,)f(then)h(all)i(radii)e(are)h(equal)g(to)g(one)f(p)s(oin)m(t)h(|)f │ │ │ │ (there)g(are)h(72)227 1053 y(p)s(oin)m(ts)g(to)g(the)f(inc)m(h.\))227 │ │ │ │ 1212 y(If)j Fm(labelflag)45 b(=)i(1)p Fn(,)34 b(the)f(no)s(des)f(will)h │ │ │ │ (ha)m(v)m(e)h(a)f(n)m(umeric)f(lab)s(el.)49 b(If)32 b │ │ │ │ @@ -5640,17 +5651,17 @@ │ │ │ │ b(alue)27 b Fm(1)g Fn(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ h(encoun)m(tered)g(from)f Fm(fscanf)p Fn(,)g(zero)h(is)g(returned.)227 │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(tree)g Fn(or)g Fm(fp)g Fn(are)g Fm(NULL)p Fn(,)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 Fn(10)p 182 100 1107 4 │ │ │ │ -v 1289 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2794 100 V 111 399 a Fn(3.)46 b Fm(int)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1068 4 │ │ │ │ +v 1250 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2833 100 V 111 399 a Fn(3.)46 b Fm(int)h │ │ │ │ (Tree_readFromBinaryFile)42 b(\()47 b(Tree)g(*tree,)f(FILE)g(*fp)h(\))h │ │ │ │ (;)227 557 y Fn(This)32 b(metho)s(d)g(reads)g(in)h(a)g │ │ │ │ Fm(Perm)e Fn(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 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(fread)p Fn(,)f(zero)i(is)g(returned.)227 828 y Fl(Err)-5 │ │ │ │ @@ -5718,25 +5729,26 @@ │ │ │ │ (fontsize)227 5062 y Fn(This)29 b(driv)m(er)g(program)g(reads)g(in)f(a) │ │ │ │ i Fm(Tree)e Fn(\014le)h(and)g(optionally)h(a)g(tags)g │ │ │ │ Fm(IV)f Fn(\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.)337 │ │ │ │ 5407 y Fi(\210)45 b Fn(The)30 b Fm(msglvl)f Fn(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 1107 4 v 1288 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2701 100 V 1107 w Fn(11)337 399 y Fi(\210)45 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(output)c(\014le)h(is)f Fl(stdout)p Fn(,)i(otherwise)f(a)f(\014le) │ │ │ │ -h(is)f(op)s(ened)g(with)g Fl(app)-5 b(end)31 b Fn(status)e(to)i(receiv) │ │ │ │ -m(e)g(an)m(y)e(output)427 624 y(data.)337 770 y Fi(\210)45 │ │ │ │ -b Fn(The)29 b Fm(inTreeFile)e Fn(parameter)j(is)g(the)f(input)g(\014le) │ │ │ │ -g(for)h(the)f Fm(Tree)g Fn(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g │ │ │ │ -(of)h(the)f(form)427 883 y Fm(*.treef)21 b Fn(or)h Fm(*.treeb)p │ │ │ │ +TeXDict begin 11 10 bop 91 100 1068 4 v 1249 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2740 100 V 1068 w Fn(11)337 399 y Fi(\210)45 │ │ │ │ +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(output)c(\014le)h(is)f Fl(stdout)p Fn(,)i(otherwise)f(a)f │ │ │ │ +(\014le)h(is)f(op)s(ened)g(with)g Fl(app)-5 b(end)31 │ │ │ │ +b Fn(status)e(to)i(receiv)m(e)g(an)m(y)e(output)427 624 │ │ │ │ +y(data.)337 770 y Fi(\210)45 b Fn(The)29 b Fm(inTreeFile)e │ │ │ │ +Fn(parameter)j(is)g(the)f(input)g(\014le)g(for)h(the)f │ │ │ │ +Fm(Tree)g Fn(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g(of)h(the)f │ │ │ │ +(form)427 883 y Fm(*.treef)21 b Fn(or)h Fm(*.treeb)p │ │ │ │ Fn(.)36 b(The)22 b Fm(Tree)g Fn(ob)5 b(ject)23 b(is)g(read)f(from)g │ │ │ │ (the)h(\014le)g(via)g(the)g Fm(Tree)p 3205 883 29 4 v │ │ │ │ 33 w(readFromFile\(\))427 996 y Fn(metho)s(d.)337 1142 │ │ │ │ y Fi(\210)45 b Fn(The)28 b Fm(inTagsFile)d Fn(parameter)k(is)f(the)h │ │ │ │ (input)e(\014le)i(for)f(the)g Fm(IV)g Fn(v)m(ector)i(ob)5 │ │ │ │ b(ject)29 b(than)f(holds)f(the)i(tags)427 1255 y(for)35 │ │ │ │ b(the)g(no)s(des.)53 b(It)34 b(m)m(ust)h(b)s(e)f(of)h(the)g(form)f │ │ │ │ @@ -5776,23 +5788,23 @@ │ │ │ │ Fn(The)30 b Fm(fontsize)e Fn(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 Fm(doDraw)d Fn(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 │ │ │ │ Fm(R2D100)e Fn(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 Fn(12)p 182 100 1107 │ │ │ │ -4 v 1289 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2794 100 V 0 571 a Fn(Figure)38 b(1.1:)56 b Fa(R2D100)p │ │ │ │ -Fn(:)f(domain/separator)39 b(tree.)62 b(On)37 b(the)g(left)h │ │ │ │ -Fm(heightflag)45 b(=)j('H')36 b Fn(and)h Fm(coordflag)45 │ │ │ │ -b(=)0 684 y('C')p Fn(,)30 b(on)g(the)h(righ)m(t)g Fm(heightflag)45 │ │ │ │ -b(=)i('D')29 b Fn(and)h Fm(coordflag)45 b(=)j('C')p Fn(.)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 Fn(12)p 182 100 1068 │ │ │ │ +4 v 1250 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2833 100 V 0 571 a Fn(Figure)38 b(1.1:)56 │ │ │ │ +b Fa(R2D100)p Fn(:)f(domain/separator)39 b(tree.)62 b(On)37 │ │ │ │ +b(the)g(left)h Fm(heightflag)45 b(=)j('H')36 b Fn(and)h │ │ │ │ +Fm(coordflag)45 b(=)0 684 y('C')p Fn(,)30 b(on)g(the)h(righ)m(t)g │ │ │ │ +Fm(heightflag)45 b(=)i('D')29 b Fn(and)h Fm(coordflag)45 │ │ │ │ +b(=)j('C')p Fn(.)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 October 18, 2025 │ │ │ │ │ + 2 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + Tree : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 Tree : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Utilities.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1744 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -3360,23 +3360,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3550,90 +3549,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5499,16 +5507,16 @@ │ │ │ │ 51 16[51 5[51 1[51 51 51 40[{}31 99.6264 /CMTT12 rf /Fi │ │ │ │ 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 /Fj 139[62 62 6[62 │ │ │ │ 2[62 3[62 15[62 85[{}6 119.552 /CMTT12 rf /Fk 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 │ │ │ │ -/Fl 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 │ │ │ │ -2[45 45 45 3[25 44[{}14 90.9091 /CMSL10 rf │ │ │ │ +/Fl 137[48 3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 │ │ │ │ +2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fm tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -5607,17 +5615,17 @@ │ │ │ │ b Fq(data)h(\014elds.)558 4763 y Fp(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 Fq(1)p eop │ │ │ │ end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 1010 4 v │ │ │ │ -1192 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Octob)s(er)g(18,)h │ │ │ │ -(2025)p 2890 100 V 0 399 a Fn(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 971 4 v │ │ │ │ +1153 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)g(15,)h(2025)p 2929 100 V 0 399 a Fn(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fj(Utilities)c Fn(metho)t(ds)0 │ │ │ │ 632 y Fq(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 Fp(Utilities)28 b Fq(directory)-8 │ │ │ │ b(.)0 1028 y Fi(1.2.1)112 b Fh(CV)38 b Fi(:)g Fh(char)g │ │ │ │ Fi(v)m(ector)f(metho)s(ds)111 1230 y Fq(1.)46 b Fp(char)h(*)g(CVinit)f │ │ │ │ (\()i(int)f(n,)g(char)g(c)g(\))h(;)227 1385 y Fq(This)32 │ │ │ │ @@ -5673,38 +5681,39 @@ │ │ │ │ (val)f(\))i(;)227 5294 y Fq(This)26 b(is)h(the)g(allo)s(cator)i(and)d │ │ │ │ (initializer)j(metho)s(d)d(for)g Fp(double)f Fq(v)m(ectors.)41 │ │ │ │ b(Storage)28 b(for)f(an)f(arra)m(y)i(with)e(size)227 │ │ │ │ 5407 y Fp(n)k Fq(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled) │ │ │ │ g(with)g Fp(val)p Fq(.)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 1010 4 v 1192 100 a Fp(Utilities)27 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2843 100 V 1010 w Fq(3)111 399 y(2.)46 b Fp(double)g(*)i(DVinit2)e(\()h │ │ │ │ -(int)g(n)g(\))h(;)227 545 y Fq(This)30 b(is)g(an)h(allo)s(cator)h │ │ │ │ -(metho)s(d)e(for)g Fp(double)f Fq(v)m(ectors.)42 b(Storage)32 │ │ │ │ -b(for)e(an)g(arra)m(y)h(with)f(size)i Fp(n)e Fq(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 Fp(void)h(DVfree)f(\()h(int)g(vec[])g(\))g(;)227 985 │ │ │ │ -y Fq(This)30 b(metho)s(d)g(releases)h(the)g(storage)h(tak)m(en)f(b)m(y) │ │ │ │ -f Fp(vec[])p Fq(.)111 1165 y(4.)46 b Fp(void)h(DVfprintf)e(\()j(FILE)e │ │ │ │ -(*fp,)h(int)g(n,)g(double)f(y[])h(\))g(;)227 1312 y Fq(This)29 │ │ │ │ -b(metho)s(d)f(prin)m(ts)h Fp(n)f Fq(en)m(tries)i(in)f │ │ │ │ -Fp(y[])f Fq(to)i(\014le)f Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new) │ │ │ │ -f(line)i(follo)m(w)m(ed)g(b)m(y)f(lines)h(of)f(six)227 │ │ │ │ -1425 y Fp(double)p Fq('s)g(in)h Fp("\04512.4e")e Fq(format.)111 │ │ │ │ -1605 y(5.)46 b Fp(int)h(DVfscanf)f(\()h(FILE)g(*fp,)f(int)h(n,)h │ │ │ │ -(double)e(y[])h(\))g(;)227 1752 y Fq(This)27 b(metho)s(d)g(scans)h(in)f │ │ │ │ -Fp(double)p Fq('s)g(from)g(\014le)h Fp(fp)f Fq(and)g(places)h(them)g │ │ │ │ -(in)g(the)f(arra)m(y)i Fp(y[])p Fq(.)39 b(It)27 b(tries)i(to)f(read)227 │ │ │ │ -1865 y(in)i Fp(n)g(double)p Fq('s,)f(and)h(returns)f(the)i(n)m(um)m(b)s │ │ │ │ -(er)e(that)i(w)m(ere)g(actually)h(read.)111 2045 y(6.)46 │ │ │ │ -b Fp(void)h(DVadd)f(\()i(int)f(n,)g(double)f(y[],)h(double)f(x[])h(\))g │ │ │ │ +TeXDict begin 3 2 bop 91 100 971 4 v 1152 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2882 100 V 971 w Fq(3)111 399 y(2.)46 │ │ │ │ +b Fp(double)g(*)i(DVinit2)e(\()h(int)g(n)g(\))h(;)227 │ │ │ │ +545 y Fq(This)30 b(is)g(an)h(allo)s(cator)h(metho)s(d)e(for)g │ │ │ │ +Fp(double)f Fq(v)m(ectors.)42 b(Storage)32 b(for)e(an)g(arra)m(y)h │ │ │ │ +(with)f(size)i Fp(n)e Fq(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 Fp(void)h(DVfree)f(\()h(int)g │ │ │ │ +(vec[])g(\))g(;)227 985 y Fq(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ +(storage)h(tak)m(en)f(b)m(y)f Fp(vec[])p Fq(.)111 1165 │ │ │ │ +y(4.)46 b Fp(void)h(DVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,)g(double)f │ │ │ │ +(y[])h(\))g(;)227 1312 y Fq(This)29 b(metho)s(d)f(prin)m(ts)h │ │ │ │ +Fp(n)f Fq(en)m(tries)i(in)f Fp(y[])f Fq(to)i(\014le)f │ │ │ │ +Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new)f(line)i(follo)m(w)m(ed)g │ │ │ │ +(b)m(y)f(lines)h(of)f(six)227 1425 y Fp(double)p Fq('s)g(in)h │ │ │ │ +Fp("\04512.4e")e Fq(format.)111 1605 y(5.)46 b Fp(int)h(DVfscanf)f(\()h │ │ │ │ +(FILE)g(*fp,)f(int)h(n,)h(double)e(y[])h(\))g(;)227 1752 │ │ │ │ +y Fq(This)27 b(metho)s(d)g(scans)h(in)f Fp(double)p Fq('s)g(from)g │ │ │ │ +(\014le)h Fp(fp)f Fq(and)g(places)h(them)g(in)g(the)f(arra)m(y)i │ │ │ │ +Fp(y[])p Fq(.)39 b(It)27 b(tries)i(to)f(read)227 1865 │ │ │ │ +y(in)i Fp(n)g(double)p Fq('s,)f(and)h(returns)f(the)i(n)m(um)m(b)s(er)e │ │ │ │ +(that)i(w)m(ere)g(actually)h(read.)111 2045 y(6.)46 b │ │ │ │ +Fp(void)h(DVadd)f(\()i(int)f(n,)g(double)f(y[],)h(double)f(x[])h(\))g │ │ │ │ (;)227 2192 y Fq(This)30 b(metho)s(d)g(adds)f Fp(n)h │ │ │ │ Fq(en)m(tries)h(from)f Fp(x[])g Fq(to)h Fp(y[])p Fq(,)f(i.e.,)h │ │ │ │ Fp(y[i])47 b(+=)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fq(.)111 2372 y(7.)f Fp(void)h(DVaxpy)f(\()h(int)g(n,)h(double)e(y[],)g │ │ │ │ (double)g(alpha,)g(double)h(x[])f(\))i(;)227 2519 y Fq(This)36 │ │ │ │ b(metho)s(d)g(adds)g(a)h(scaled)g(m)m(ultiple)g(of)g │ │ │ │ Fp(n)f Fq(en)m(tries)i(from)e Fp(x[])g Fq(in)m(to)h Fp(y[])p │ │ │ │ @@ -5735,20 +5744,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 Fq(11.)e Fp(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 Fq(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 Fq(4)p 136 100 1010 4 v │ │ │ │ -1192 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Octob)s(er)g(18,)h │ │ │ │ -(2025)p 2890 100 V 227 399 a Fp(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 Fq(12.)f Fp(void)h(DVaxpy23)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 971 4 v │ │ │ │ +1153 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)g(15,)h(2025)p 2929 100 V 227 399 a Fp(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 Fq(12.)f Fp(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 Fq(This)30 │ │ │ │ b(metho)s(d)g(computes)g(this)g(computation.)227 1340 │ │ │ │ y Fp(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 Fq(13.)e Fp(void)h(DVaxpy22)e(\()j(int)f(n,)g(double)f │ │ │ │ @@ -5779,20 +5788,20 @@ │ │ │ │ (int)g(index[],)e(double)i(alpha,)f(double)g(x[])h(\))g(;)227 │ │ │ │ 5294 y Fq(This)31 b(metho)s(d)f(scatteradds)i(a)g(scaled)g(m)m(ultiple) │ │ │ │ g(of)f Fp(n)g Fq(en)m(tries)h(from)f Fp(x[])f Fq(in)m(to)i │ │ │ │ Fp(y[])p Fq(,)f(i.e.,)i Fp(y[index[i]])227 5407 y(+=)47 │ │ │ │ b(alpha)g(*)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fq(.)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 91 100 1010 4 v 1192 100 a Fp(Utilities)27 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2843 100 V 1010 w Fq(5)66 399 y(19.)46 b Fp(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 Fq(Giv)m(en)c(a)f(pair)g(of)f(arra)m(ys)i Fp(x1[n1])d │ │ │ │ +TeXDict begin 5 4 bop 91 100 971 4 v 1152 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2882 100 V 971 w Fq(5)66 399 y(19.)46 │ │ │ │ +b Fp(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 Fq(Giv)m(en)c(a)f(pair)g(of)f(arra)m(ys)i Fp(x1[n1])d │ │ │ │ Fq(and)h Fp(y1[n1])p Fq(,)i(\014ll)f Fp(x2[n2])e Fq(and)h │ │ │ │ Fp(y2[n2])f Fq(with)i(a)g(subset)f(of)h(the)227 785 y │ │ │ │ Fp(\(x1[j],y1[j])27 b Fq(en)m(tries)k(whose)g(distribution)e(is)i(an)f │ │ │ │ (appro)m(ximation.)66 993 y(20.)46 b Fp(void)h(DVcopy)f(\()h(int)g(n,)h │ │ │ │ (double)e(y[],)g(double)g(x[])h(\))h(;)227 1153 y Fq(This)30 │ │ │ │ b(metho)s(d)g(copies)h Fp(n)f Fq(en)m(tries)h(from)f │ │ │ │ Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j Fp(y[i])47 b(=)g(x[i])29 │ │ │ │ @@ -5879,39 +5888,40 @@ │ │ │ │ Fp(row1)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p │ │ │ │ Fq([)p Fp(i)p Fq(])277 5346 y Fp(sums)p Fq([)p Fp(2)p │ │ │ │ Fq(])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 Fp(row2)p │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ Fq(])p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 1010 4 v │ │ │ │ -1192 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Octob)s(er)g(18,)h │ │ │ │ -(2025)p 2890 100 V 66 399 a Fq(25.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(six)h(dot)f(pro)s(ducts.)277 │ │ │ │ -891 y Fp(sums)p Fq([)p Fp(0)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i │ │ │ │ -Fp(col0)p Fq([)p Fp(i)p Fq(])99 b Fp(sums)p Fq([)p Fp(1)p │ │ │ │ -Fq(])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 Fp(row0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p │ │ │ │ -Fq(])99 b Fp(sums)p Fq([)p Fp(2)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])c │ │ │ │ -Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])277 1152 y Fp(sums)p │ │ │ │ -Fq([)p Fp(3)p Fq(])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 │ │ │ │ -Fp(row1)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])99 b Fp(sums)p Fq([)p Fp(4)p Fq(])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 Fp(row1)p Fq([)p │ │ │ │ -Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])99 │ │ │ │ -b Fp(sums)p Fq([)p Fp(5)p Fq(])24 b(=)3317 1047 y Fe(n)p │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 971 4 v │ │ │ │ +1153 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)g(15,)h(2025)p 2929 100 V 66 399 a Fq(25.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(six)h │ │ │ │ +(dot)f(pro)s(ducts.)277 891 y Fp(sums)p Fq([)p Fp(0)p │ │ │ │ +Fq(])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 Fp(row0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ +Fq(])99 b Fp(sums)p Fq([)p Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])19 │ │ │ │ +b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])99 b Fp(sums)p │ │ │ │ +Fq([)p Fp(2)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])c Fg(\003)g Fp(col2)p │ │ │ │ +Fq([)p Fp(i)p Fq(])277 1152 y Fp(sums)p Fq([)p Fp(3)p │ │ │ │ +Fq(])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 Fp(row1)p │ │ │ │ +Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ +Fq(])99 b Fp(sums)p Fq([)p Fp(4)p Fq(])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 Fp(row1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])99 b │ │ │ │ +Fp(sums)p Fq([)p Fp(5)p Fq(])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 Fp(row1)p Fq([)p Fp(i)p Fq(])c Fg(\003)g │ │ │ │ Fp(col2)p Fq([)p Fp(i)p Fq(])66 1417 y(26.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.) │ │ │ │ 277 1909 y Fp(sums)p Fq([)p Fp(0)p Fq(])24 b(=)687 1804 │ │ │ │ @@ -5969,31 +5979,32 @@ │ │ │ │ (double)i(col0[],)e(double)h(sums[])h(\))g(;)227 5123 │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(one)h(dot)f(pro)s(duct.)277 │ │ │ │ 5346 y Fp(sums)p Fq([)p Fp(0)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])19 │ │ │ │ b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1010 4 v 1192 100 a Fp(Utilities)27 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2843 100 V 1010 w Fq(7)66 399 y(31.)46 b Fp(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 Fq(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 Fp(y)p Fq([)p Fp(index)p │ │ │ │ -Fq([)p Fp(i)p Fq(]])19 b Fg(\003)i Fp(x)p Fq([)p Fp(i)p │ │ │ │ -Fq(].)66 862 y(32.)46 b Fp(void)h(DVfill)f(\()h(int)g(n,)h(double)e │ │ │ │ -(y[],)g(double)g(val)h(\))h(;)227 1009 y Fq(This)30 b(metho)s(d)g │ │ │ │ -(\014lls)g Fp(n)g Fq(en)m(tries)h(in)f Fp(y[])g Fq(with)g │ │ │ │ -Fp(val)p Fq(,)f(i.e.,)j Fp(y[i])47 b(=)g(val)30 b Fq(for)g │ │ │ │ -Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)66 1190 y(33.)f Fp(void)h(DVgather)e │ │ │ │ -(\()j(int)f(n,)g(double)f(y[],)h(double)f(x[],)g(int)h(index[])f(\))i │ │ │ │ -(;)227 1337 y(y[i])f(=)g(x[index[i]])28 b Fq(for)i Fp(0)47 │ │ │ │ -b(<=)g(i)h(<)f(n)p Fq(.)66 1518 y(34.)f Fp(void)h(DVgatherAddZero)d(\() │ │ │ │ -j(int)g(n,)g(double)f(y[],)h(double)f(x[],)h(int)f(index[])g(\))i(;)227 │ │ │ │ +TeXDict begin 7 6 bop 91 100 971 4 v 1152 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2882 100 V 971 w Fq(7)66 399 y(31.)46 │ │ │ │ +b Fp(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 Fq(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 Fp(y)p Fq([)p Fp(index)p Fq([)p Fp(i)p Fq(]])19 │ │ │ │ +b Fg(\003)i Fp(x)p Fq([)p Fp(i)p Fq(].)66 862 y(32.)46 │ │ │ │ +b Fp(void)h(DVfill)f(\()h(int)g(n,)h(double)e(y[],)g(double)g(val)h(\)) │ │ │ │ +h(;)227 1009 y Fq(This)30 b(metho)s(d)g(\014lls)g Fp(n)g │ │ │ │ +Fq(en)m(tries)h(in)f Fp(y[])g Fq(with)g Fp(val)p Fq(,)f(i.e.,)j │ │ │ │ +Fp(y[i])47 b(=)g(val)30 b Fq(for)g Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ +Fq(.)66 1190 y(33.)f Fp(void)h(DVgather)e(\()j(int)f(n,)g(double)f │ │ │ │ +(y[],)h(double)f(x[],)g(int)h(index[])f(\))i(;)227 1337 │ │ │ │ +y(y[i])f(=)g(x[index[i]])28 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ +Fq(.)66 1518 y(34.)f Fp(void)h(DVgatherAddZero)d(\()j(int)g(n,)g │ │ │ │ +(double)f(y[],)h(double)f(x[],)h(int)f(index[])g(\))i(;)227 │ │ │ │ 1665 y(y[i])f(+=)g(x[index[i]])27 b Fq(and)j Fp(x[index[i]])45 │ │ │ │ b(=)i(0)30 b Fq(for)g Fp(0)48 b(<=)f(i)h(<)f(n)p Fq(.)66 │ │ │ │ 1846 y(35.)f Fp(void)h(DVgatherZero)d(\()k(int)f(n,)g(double)f(y[],)h │ │ │ │ (double)f(x[],)g(int)h(index[])f(\))i(;)227 1993 y(y[i])f(=)g │ │ │ │ (x[index[i]])28 b Fq(and)h Fp(x[index[i]])45 b(=)j(0)66 │ │ │ │ 2174 y Fq(36.)e Fp(void)h(DVinvPerm)e(\()j(int)f(n,)g(double)f(y[],)g │ │ │ │ (int)h(index[])f(\))i(;)227 2321 y Fq(This)26 b(metho)s(d)g(p)s(erm)m │ │ │ │ @@ -6033,21 +6044,21 @@ │ │ │ │ Fq(,)34 b Fp(start)227 5079 y(+)48 b(3*inc)p Fq(,)29 │ │ │ │ b(etc.)66 5260 y(43.)46 b Fp(void)h(DVscale)f(\()h(int)g(n,)g(double)f │ │ │ │ (y[],)h(double)f(alpha)g(\))i(;)227 5407 y Fq(This)30 │ │ │ │ b(metho)s(d)g(scales)h(a)g(v)m(ector)h Fp(y[])d Fq(b)m(y)i │ │ │ │ Fp(alpha)p Fq(,)e(i.e.,)j Fp(y[i])46 b(*=)h(alpha)p Fq(.)40 │ │ │ │ b(for)30 b Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 1010 4 v │ │ │ │ -1192 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Octob)s(er)g(18,)h │ │ │ │ -(2025)p 2890 100 V 66 399 a Fq(44.)46 b Fp(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 Fq(This)30 │ │ │ │ -b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g Fp(y[])d │ │ │ │ -Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 971 4 v │ │ │ │ +1153 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)g(15,)h(2025)p 2929 100 V 66 399 a Fq(44.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g │ │ │ │ +Fp(y[])d Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ 800 y Ff(")971 887 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 │ │ │ │ b(:)g(:)84 b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p │ │ │ │ Fq(])971 1000 y Fp(y)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 │ │ │ │ b(:)g(:)84 b Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p │ │ │ │ Fq(])1735 800 y Ff(#)1809 944 y Fq(:=)1930 800 y Ff(")2020 │ │ │ │ 887 y Fp(a)83 b(b)2020 1000 y(c)g(d)2240 800 y Ff(#)15 │ │ │ │ b(")2393 887 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 │ │ │ │ @@ -6109,18 +6120,18 @@ │ │ │ │ h(seed)g(\))g(;)227 5294 y Fq(This)23 b(metho)s(d)g(sh)m(u\017es)g(the) │ │ │ │ g(\014rst)g Fp(n)g Fq(en)m(tries)h(in)f Fp(y[])p Fq(.)38 │ │ │ │ b(The)23 b(v)-5 b(alue)24 b Fp(seed)e Fq(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 │ │ │ │ Fp(seed)p Fq(.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1010 4 v 1192 100 a Fp(Utilities)27 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2843 100 V 1010 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 │ │ │ │ -b Fi(:)g Fh(double)53 b(complex)90 b Fi(v)m(ector)37 │ │ │ │ +TeXDict begin 9 8 bop 91 100 971 4 v 1152 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2882 100 V 971 w Fq(9)0 399 y Fi(1.2.3)112 │ │ │ │ +b Fh(ZV)38 b Fi(:)g Fh(double)53 b(complex)90 b Fi(v)m(ector)37 │ │ │ │ b(metho)s(ds)0 605 y Fq(A)22 b(double)g(precision)g(complex)g(v)m │ │ │ │ (ector)i(of)e(length)g Fp(n)g Fq(is)g(simply)f(a)i(double)e(precision)h │ │ │ │ (v)m(ector)i(of)e(length)g Fp(2n)p Fq(.)37 b(There)0 │ │ │ │ 718 y(is)28 b(a)h(separate)g Fp(ZVinit\(\))d Fq(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 │ │ │ │ b(Ho)m(w)m(ev)m(er,)31 b(there)e(is)g(no)g Fp(ZVinit2\(\))d │ │ │ │ @@ -6186,18 +6197,18 @@ │ │ │ │ 5294 y Fq(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 Fp(x[])e Fq(and)h Fp(y[])f │ │ │ │ Fq(to)h(another)g(v)m(ector)i Fp(z[])p Fq(,)e(i.e.,)227 │ │ │ │ 5407 y(i.e.,)e Fp(z[i])47 b(+=)g(\(areal,aimag\))d(*)j(x[i])g(+)h │ │ │ │ (\(breal,bimag\))c(*)j(y[i])29 b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ Fq(.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 111 399 a Fq(8.)46 b Fp(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 Fq(10)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 111 399 a Fq(8.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(the)h │ │ │ │ (follo)m(wing.)227 881 y Fp(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 │ │ │ │ @@ -6232,24 +6243,24 @@ │ │ │ │ (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 Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ 5294 y Fp(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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(11)66 399 y(14.)46 b Fp(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 Fq(This)30 │ │ │ │ -b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 907 │ │ │ │ -y Fp(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 Fq(15.)f │ │ │ │ -Fp(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 │ │ │ │ +TeXDict begin 11 10 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(11)66 399 y(14.)46 │ │ │ │ +b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(the)h │ │ │ │ +(follo)m(wing.)227 907 y Fp(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 Fq(15.)f Fp(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 │ │ │ │ 1302 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ 1541 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g │ │ │ │ (alpha[2:3])e(*)i(x1[])66 1781 y Fq(16.)f Fp(void)h(ZVaxpy11)e(\()j │ │ │ │ (int)f(n,)g(double)f(y0[],)g(double)h(alpha[],)e(double)h(x0[])h(\))g │ │ │ │ (;)227 1937 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.) │ │ │ │ 227 2176 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])66 │ │ │ │ 2415 y Fq(17.)e Fp(void)h(ZVcopy)f(\()h(int)g(n,)h(double)e(y[],)g │ │ │ │ @@ -6289,29 +6300,29 @@ │ │ │ │ b Fg(\003)i Fp(x)p Fq([)p Fp(i)p Fq(].)66 5138 y(22.)46 │ │ │ │ b Fp(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 Fq(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 Fq(12)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 277 462 a Fp(sums)p Fq([)p Fp(0)p │ │ │ │ -Fq(;)15 b Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])230 b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)h │ │ │ │ -Fp(3)p Fq(])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 Fp(row0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col1)p Fq([)p Fp(i)p │ │ │ │ -Fq(])277 723 y Fp(sums)p Fq([)p Fp(4)k Fq(:)i Fp(5)p │ │ │ │ -Fq(])f(=)811 617 y Fe(n)p Fd(\000)p Fe(1)814 642 y Ff(X)811 │ │ │ │ -821 y Fe(i)p Fc(=)p Fe(0)952 723 y Fp(row0)p Fq([)p Fp(i)p │ │ │ │ -Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ -b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fq(12)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 277 462 a Fp(sums)p Fq([)p │ │ │ │ +Fp(0)p Fq(;)15 b Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])20 b Fg(\003)g │ │ │ │ +Fp(col0)p Fq([)p Fp(i)p Fq(])230 b Fp(sums)p Fq([)p Fp(2)24 │ │ │ │ +b Fq(:)h Fp(3)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col1)p │ │ │ │ +Fq([)p Fp(i)p Fq(])277 723 y Fp(sums)p Fq([)p Fp(4)k │ │ │ │ +Fq(:)i Fp(5)p Fq(])f(=)811 617 y Fe(n)p Fd(\000)p Fe(1)814 │ │ │ │ +642 y Ff(X)811 821 y Fe(i)p Fc(=)p Fe(0)952 723 y Fp(row0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p │ │ │ │ +Fq(])194 b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ 617 y Fe(n)p Fd(\000)p Fe(1)2347 642 y Ff(X)2345 821 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)2485 723 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ Fq(])20 b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p Fq(])277 │ │ │ │ 984 y Fp(sums)p Fq([)p Fp(8)k Fq(:)i Fp(9)p Fq(])f(=)811 │ │ │ │ 878 y Fe(n)p Fd(\000)p Fe(1)814 903 y Ff(X)811 1082 y │ │ │ │ Fe(i)p Fc(=)p Fe(0)952 984 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ @@ -6400,25 +6411,25 @@ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ Fp(sums)p Fq([)p Fp(10)24 b Fq(:)i Fp(11)p Fq(])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 Fp(row1)p Fq([)p Fp(i)p │ │ │ │ Fq(])20 b Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])p eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(13)66 399 y(26.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ -918 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p │ │ │ │ -Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ -Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ +TeXDict begin 13 12 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(13)66 399 y(26.)46 │ │ │ │ +b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(four)g │ │ │ │ +(dot)g(pro)s(ducts.)277 918 y Fp(sums)p Fq([)p Fp(0)24 │ │ │ │ +b Fq(:)i Fp(1)p Fq(])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 Fp(row0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ +Fq(])98 b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ 813 y Fe(n)p Fd(\000)p Fe(1)2252 838 y Ff(X)2249 1017 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)2390 918 y Fp(row0)p Fq([)p Fp(i)p │ │ │ │ Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])277 │ │ │ │ 1179 y Fp(sums)p Fq([)p Fp(4)j Fq(:)i Fp(5)p Fq(])f(=)811 │ │ │ │ 1074 y Fe(n)p Fd(\000)p Fe(1)814 1099 y Ff(X)811 1278 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)952 1179 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ @@ -6473,30 +6484,30 @@ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])66 5125 │ │ │ │ y(31.)46 b Fp(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 Fq(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 Fq(14)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 277 462 a Fp(sums)p Fq([)p Fp(0)p │ │ │ │ -Fq(;)15 b Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])20 │ │ │ │ -b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p Fq(])230 b Fp(sums)p │ │ │ │ -Fq([)p Fp(2)24 b Fq(:)h Fp(3)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p │ │ │ │ -Fq(])20 b Fg(\003)g Fp(col1)p Fq([)p Fp(i)p Fq(])277 │ │ │ │ -723 y Fp(sums)p Fq([)p Fp(4)k Fq(:)i Fp(5)p Fq(])f(=)811 │ │ │ │ -617 y Fe(n)p Fd(\000)p Fe(1)814 642 y Ff(X)811 821 y │ │ │ │ -Fe(i)p Fc(=)p Fe(0)p 952 645 V 952 723 a Fp(row0)p Fq([)p │ │ │ │ -Fp(i)p Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ -b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 277 462 a Fp(sums)p Fq([)p │ │ │ │ +Fp(0)p Fq(;)15 b Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p │ │ │ │ +Fq(])20 b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p Fq(])230 │ │ │ │ +b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)h Fp(3)p Fq(])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 Fp(row0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])277 723 y Fp(sums)p Fq([)p Fp(4)k Fq(:)i Fp(5)p │ │ │ │ +Fq(])f(=)811 617 y Fe(n)p Fd(\000)p Fe(1)814 642 y Ff(X)811 │ │ │ │ +821 y Fe(i)p Fc(=)p Fe(0)p 952 645 V 952 723 a Fp(row0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p │ │ │ │ +Fq(])194 b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ 617 y Fe(n)p Fd(\000)p Fe(1)2347 642 y Ff(X)2345 821 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)p 2485 645 V 2485 723 a Fp(row1)p │ │ │ │ Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p │ │ │ │ Fq(])277 984 y Fp(sums)p Fq([)p Fp(8)k Fq(:)i Fp(9)p │ │ │ │ Fq(])f(=)811 878 y Fe(n)p Fd(\000)p Fe(1)814 903 y Ff(X)811 │ │ │ │ 1082 y Fe(i)p Fc(=)p Fe(0)p 952 906 V 952 984 a Fp(row1)p │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p │ │ │ │ @@ -6589,50 +6600,50 @@ │ │ │ │ b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])98 b Fp(sums)p │ │ │ │ Fq([)p Fp(10)24 b Fq(:)i Fp(11)p Fq(])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 Fp(row1)p Fq([)p │ │ │ │ Fp(i)p Fq(])20 b Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])p │ │ │ │ eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(15)66 399 y(35.)46 b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ -895 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i Fp(1)p Fq(])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 Fp(row0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ -Fq(])98 b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ -789 y Fe(n)p Fd(\000)p Fe(1)2252 814 y Ff(X)2249 993 │ │ │ │ -y Fe(i)p Fc(=)p Fe(0)p 2390 817 V 2390 895 a Fp(row0)p │ │ │ │ +TeXDict begin 15 14 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(15)66 399 y(35.)46 │ │ │ │ +b Fp(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 Fq(This)30 b(metho)s(d)g(computes)g(four)g │ │ │ │ +(dot)g(pro)s(ducts.)277 895 y Fp(sums)p Fq([)p Fp(0)24 │ │ │ │ +b Fq(:)i Fp(1)p Fq(])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 Fp(row0)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i │ │ │ │ +Fp(col0)p Fq([)p Fp(i)p Fq(])98 b Fp(sums)p Fq([)p Fp(2)24 │ │ │ │ +b Fq(:)i Fp(3)p Fq(])f(=)2249 789 y Fe(n)p Fd(\000)p │ │ │ │ +Fe(1)2252 814 y Ff(X)2249 993 y Fe(i)p Fc(=)p Fe(0)p │ │ │ │ +2390 817 V 2390 895 a Fp(row0)p Fq([)p Fp(i)p Fq(])19 │ │ │ │ +b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])277 1156 y Fp(sums)p │ │ │ │ +Fq([)p Fp(4)j Fq(:)i Fp(5)p Fq(])f(=)811 1050 y Fe(n)p │ │ │ │ +Fd(\000)p Fe(1)814 1075 y Ff(X)811 1254 y Fe(i)p Fc(=)p │ │ │ │ +Fe(0)p 952 1078 V 952 1156 a Fp(row1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ +Fp(sums)p Fq([)p Fp(6)24 b Fq(:)i Fp(7)p Fq(])f(=)2249 │ │ │ │ +1050 y Fe(n)p Fd(\000)p Fe(1)2252 1075 y Ff(X)2249 1254 │ │ │ │ +y Fe(i)p Fc(=)p Fe(0)p 2390 1078 V 2390 1156 a Fp(row1)p │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p │ │ │ │ -Fq(])277 1156 y Fp(sums)p Fq([)p Fp(4)j Fq(:)i Fp(5)p │ │ │ │ -Fq(])f(=)811 1050 y Fe(n)p Fd(\000)p Fe(1)814 1075 y │ │ │ │ -Ff(X)811 1254 y Fe(i)p Fc(=)p Fe(0)p 952 1078 V 952 1156 │ │ │ │ -a Fp(row1)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])98 b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)i │ │ │ │ -Fp(7)p Fq(])f(=)2249 1050 y Fe(n)p Fd(\000)p Fe(1)2252 │ │ │ │ -1075 y Ff(X)2249 1254 y Fe(i)p Fc(=)p Fe(0)p 2390 1078 │ │ │ │ -V 2390 1156 a Fp(row1)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i │ │ │ │ -Fp(col1)p Fq([)p Fp(i)p Fq(])66 1424 y(36.)46 b Fp(int)h(ZVdotC21)f(\() │ │ │ │ -h(int)g(n,)g(double)f(row0[],)g(double)g(row1[],)895 │ │ │ │ -1536 y(double)h(col0[],)e(double)h(sums[])h(\))g(;)227 │ │ │ │ -1694 y Fq(This)30 b(metho)s(d)g(computes)g(t)m(w)m(o)i(dot)f(pro)s │ │ │ │ -(ducts.)277 1920 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i │ │ │ │ -Fp(1)p Fq(])f(=)811 1814 y Fe(n)p Fd(\000)p Fe(1)814 │ │ │ │ -1839 y Ff(X)811 2018 y Fe(i)p Fc(=)p Fe(0)p 952 1842 │ │ │ │ -V 952 1920 a Fp(row0)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i │ │ │ │ -Fp(col0)p Fq([)p Fp(i)p Fq(])277 2181 y Fp(sums)p Fq([)p │ │ │ │ -Fp(2)j Fq(:)i Fp(3)p Fq(])f(=)811 2075 y Fe(n)p Fd(\000)p │ │ │ │ -Fe(1)814 2100 y Ff(X)811 2279 y Fe(i)p Fc(=)p Fe(0)p │ │ │ │ -952 2103 V 952 2181 a Fp(row1)p Fq([)p Fp(i)p Fq(])19 │ │ │ │ -b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])66 2449 y(37.)46 │ │ │ │ -b Fp(int)h(ZVdotC13)f(\()h(int)g(n,)g(double)f(row0[],)895 │ │ │ │ +Fq(])66 1424 y(36.)46 b Fp(int)h(ZVdotC21)f(\()h(int)g(n,)g(double)f │ │ │ │ +(row0[],)g(double)g(row1[],)895 1536 y(double)h(col0[],)e(double)h │ │ │ │ +(sums[])h(\))g(;)227 1694 y Fq(This)30 b(metho)s(d)g(computes)g(t)m(w)m │ │ │ │ +(o)i(dot)f(pro)s(ducts.)277 1920 y Fp(sums)p Fq([)p Fp(0)24 │ │ │ │ +b Fq(:)i Fp(1)p Fq(])f(=)811 1814 y Fe(n)p Fd(\000)p │ │ │ │ +Fe(1)814 1839 y Ff(X)811 2018 y Fe(i)p Fc(=)p Fe(0)p │ │ │ │ +952 1842 V 952 1920 a Fp(row0)p Fq([)p Fp(i)p Fq(])19 │ │ │ │ +b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])277 2181 y Fp(sums)p │ │ │ │ +Fq([)p Fp(2)j Fq(:)i Fp(3)p Fq(])f(=)811 2075 y Fe(n)p │ │ │ │ +Fd(\000)p Fe(1)814 2100 y Ff(X)811 2279 y Fe(i)p Fc(=)p │ │ │ │ +Fe(0)p 952 2103 V 952 2181 a Fp(row1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])66 2449 │ │ │ │ +y(37.)46 b Fp(int)h(ZVdotC13)f(\()h(int)g(n,)g(double)f(row0[],)895 │ │ │ │ 2562 y(double)h(col0[],)e(double)h(col1[],)g(double)g(col2[],)g(double) │ │ │ │ g(sums[])g(\))i(;)227 2719 y Fq(This)30 b(metho)s(d)g(computes)g(six)h │ │ │ │ (dot)f(pro)s(ducts.)277 2945 y Fp(sums)p Fq([)p Fp(0)24 │ │ │ │ b Fq(:)i Fp(1)p Fq(])f(=)811 2839 y Fe(n)p Fd(\000)p │ │ │ │ Fe(1)814 2864 y Ff(X)811 3043 y Fe(i)p Fc(=)p Fe(0)p │ │ │ │ 952 2867 V 952 2945 a Fp(row0)p Fq([)p Fp(i)p Fq(])19 │ │ │ │ b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])98 b Fp(sums)p │ │ │ │ @@ -6667,40 +6678,40 @@ │ │ │ │ (y[],)h(double)f(x[],)g(int)h(index[])f(\))i(;)227 5047 │ │ │ │ y(y[i])f(=)g(x[index[i]])28 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fq(.)66 5249 y(41.)f Fp(double)g(ZVmaxabs)g(\()h(int)g(n,)g(double)g │ │ │ │ (y[])f(\))i(;)227 5407 y Fq(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 Fp(y[0:n-1])p │ │ │ │ Fq(.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 66 399 a Fq(42.)46 b Fp(double)g(ZVminabs)g(\()h │ │ │ │ -(int)g(n,)g(double)g(y[])f(\))i(;)227 560 y Fq(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 Fp(y[0:n-1])p Fq(.)66 771 y(43.)46 b Fp(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 Fq(This)29 b(metho)s(d)f(scales)i(a)g(v)m(ector)g │ │ │ │ -Fp(y[])e Fq(b)m(y)h Fp(\(areal,aimag\))p Fq(,)d(i.e.,)31 │ │ │ │ -b Fp(y[i])46 b(*=)i(\(areal,aimag\))p Fq(.)36 b(for)29 │ │ │ │ -b Fp(0)48 b(<=)227 1046 y(i)g(<)f(n)p Fq(.)66 1257 y(44.)f │ │ │ │ -Fp(void)h(ZVscale2)e(\()j(int)f(n,)g(double)f(x[],)h(double)f(y[],)991 │ │ │ │ -1370 y(double)g(areal,)g(double)g(aimag,)g(double)g(breal,)g(double)h │ │ │ │ -(bimag,)991 1482 y(double)f(creal,)g(double)g(cimag,)g(double)g(dreal,) │ │ │ │ -g(double)h(dimag)f(\))h(;)227 1644 y Fq(This)30 b(metho)s(d)g(scales)h │ │ │ │ -(t)m(w)m(o)h(v)m(ectors)g Fp(y[])d Fq(b)m(y)h(a)h(2)21 │ │ │ │ -b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)340 1785 y Ff(")430 │ │ │ │ -1872 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 │ │ │ │ -b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])430 1985 │ │ │ │ -y Fp(y)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 b │ │ │ │ -Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])1194 1785 │ │ │ │ -y Ff(#)1268 1929 y Fq(:=)1389 1785 y Ff(")1479 1872 y │ │ │ │ -Fq(\()p Fp(areal)p Fb(;)15 b Fp(aimag)p Fq(\))82 b(\()p │ │ │ │ -Fp(breal)p Fb(;)15 b Fp(bimag)p Fq(\))1479 1985 y(\()p │ │ │ │ -Fp(creal)p Fb(;)g Fp(cimag)p Fq(\))82 b(\()p Fp(dreal)p │ │ │ │ -Fb(;)15 b Fp(dimag)p Fq(\))2780 1785 y Ff(#)h(")2934 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 66 399 a Fq(42.)46 b Fp(double)g │ │ │ │ +(ZVminabs)g(\()h(int)g(n,)g(double)g(y[])f(\))i(;)227 │ │ │ │ +560 y Fq(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 Fp(y[0:n-1])p Fq(.)66 771 y(43.)46 │ │ │ │ +b Fp(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 Fq(This)29 b(metho)s(d)f(scales)i(a) │ │ │ │ +g(v)m(ector)g Fp(y[])e Fq(b)m(y)h Fp(\(areal,aimag\))p │ │ │ │ +Fq(,)d(i.e.,)31 b Fp(y[i])46 b(*=)i(\(areal,aimag\))p │ │ │ │ +Fq(.)36 b(for)29 b Fp(0)48 b(<=)227 1046 y(i)g(<)f(n)p │ │ │ │ +Fq(.)66 1257 y(44.)f Fp(void)h(ZVscale2)e(\()j(int)f(n,)g(double)f │ │ │ │ +(x[],)h(double)f(y[],)991 1370 y(double)g(areal,)g(double)g(aimag,)g │ │ │ │ +(double)g(breal,)g(double)h(bimag,)991 1482 y(double)f(creal,)g(double) │ │ │ │ +g(cimag,)g(double)g(dreal,)g(double)h(dimag)f(\))h(;)227 │ │ │ │ +1644 y Fq(This)30 b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g │ │ │ │ +Fp(y[])d Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)340 │ │ │ │ +1785 y Ff(")430 1872 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b │ │ │ │ +Fb(:)15 b(:)g(:)84 b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g │ │ │ │ +Fp(1)p Fq(])430 1985 y Fp(y)p Fq([)p Fp(0)p Fq(])83 b │ │ │ │ +Fb(:)15 b(:)g(:)84 b Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g │ │ │ │ +Fp(1)p Fq(])1194 1785 y Ff(#)1268 1929 y Fq(:=)1389 1785 │ │ │ │ +y Ff(")1479 1872 y Fq(\()p Fp(areal)p Fb(;)15 b Fp(aimag)p │ │ │ │ +Fq(\))82 b(\()p Fp(breal)p Fb(;)15 b Fp(bimag)p Fq(\))1479 │ │ │ │ +1985 y(\()p Fp(creal)p Fb(;)g Fp(cimag)p Fq(\))82 b(\()p │ │ │ │ +Fp(dreal)p Fb(;)15 b Fp(dimag)p Fq(\))2780 1785 y Ff(#)h(")2934 │ │ │ │ 1872 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 │ │ │ │ b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])2934 │ │ │ │ 1985 y Fp(y)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 │ │ │ │ b Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])3698 │ │ │ │ 1785 y Ff(#)3762 1929 y Fb(:)66 2260 y Fq(45.)46 b Fp(void)h(ZVscatter) │ │ │ │ e(\()j(int)f(n,)g(double)f(y[],)g(int)h(index[],)f(double)g(x[])h(\))g │ │ │ │ (;)227 2421 y Fq(This)33 b(metho)s(d)h(scatters)h Fp(n)e │ │ │ │ @@ -6734,35 +6745,36 @@ │ │ │ │ y(4.)46 b Fp(void)h(IVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,)g(int)g │ │ │ │ (y[])g(\))g(;)227 5294 y Fq(This)27 b(metho)s(d)g(prin)m(ts)g │ │ │ │ Fp(n)g Fq(en)m(tries)i(in)e Fp(y[])g Fq(to)h(\014le)g │ │ │ │ Fp(fp)p Fq(.)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 Fp(int)p Fq('s)i(in)g │ │ │ │ Fp(")47 b(\0454d")30 b Fq(format.)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(17)111 399 y(5.)46 b Fp(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 Fq(This)21 b(metho)s(d)g(prin)m(ts)g Fp(n)g │ │ │ │ -Fq(en)m(tries)h(in)g Fp(y[])e Fq(to)i(\014le)g Fp(fp)p │ │ │ │ -Fq(.)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 Fp(column)f Fq(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 │ │ │ │ -775 y(v)-5 b(alue)35 b(of)g(an)f(arra)m(y)i(en)m(try)e(will)h(not)g │ │ │ │ -(\014t)f(within)g(the)h(eigh)m(t)m(y)i(columns)d(of)h(the)f(presen)m(t) │ │ │ │ -h(line,)h(a)f(newline)227 888 y(c)m(haracter)i(is)e(written)g(and)g │ │ │ │ -(the)g(v)-5 b(alue)36 b(starts)f(a)h(new)f(line.)55 b(The)35 │ │ │ │ -b(n)m(um)m(b)s(er)e(of)j(the)f(presen)m(t)g(column)g(in)227 │ │ │ │ -1001 y(the)c(line)g(is)f(returned.)40 b(If)29 b Fp(*pierr)47 │ │ │ │ -b(<)g(0)p Fq(,)30 b(an)h(IO)e(error)h(has)g(o)s(ccured.)111 │ │ │ │ -1189 y(6.)46 b Fp(int)h(IVfscanf)f(\()h(FILE)g(*fp,)f(int)h(n,)h(int)e │ │ │ │ -(y[])h(\))h(;)227 1340 y Fq(This)29 b(metho)s(d)h(scans)g(in)f │ │ │ │ -Fp(int)p Fq('s)g(from)h(\014le)g Fp(fp)f Fq(and)g(places)i(them)f(in)f │ │ │ │ -(the)h(arra)m(y)h Fp(y[])p Fq(.)40 b(It)30 b(tries)g(to)g(read)g(in)227 │ │ │ │ +TeXDict begin 17 16 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(17)111 399 y(5.)46 │ │ │ │ +b Fp(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 Fq(This)21 │ │ │ │ +b(metho)s(d)g(prin)m(ts)g Fp(n)g Fq(en)m(tries)h(in)g │ │ │ │ +Fp(y[])e Fq(to)i(\014le)g Fp(fp)p Fq(.)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 Fp(column)f Fq(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 775 y(v)-5 │ │ │ │ +b(alue)35 b(of)g(an)f(arra)m(y)i(en)m(try)e(will)h(not)g(\014t)f │ │ │ │ +(within)g(the)h(eigh)m(t)m(y)i(columns)d(of)h(the)f(presen)m(t)h(line,) │ │ │ │ +h(a)f(newline)227 888 y(c)m(haracter)i(is)e(written)g(and)g(the)g(v)-5 │ │ │ │ +b(alue)36 b(starts)f(a)h(new)f(line.)55 b(The)35 b(n)m(um)m(b)s(er)e │ │ │ │ +(of)j(the)f(presen)m(t)g(column)g(in)227 1001 y(the)c(line)g(is)f │ │ │ │ +(returned.)40 b(If)29 b Fp(*pierr)47 b(<)g(0)p Fq(,)30 │ │ │ │ +b(an)h(IO)e(error)h(has)g(o)s(ccured.)111 1189 y(6.)46 │ │ │ │ +b Fp(int)h(IVfscanf)f(\()h(FILE)g(*fp,)f(int)h(n,)h(int)e(y[])h(\))h(;) │ │ │ │ +227 1340 y Fq(This)29 b(metho)s(d)h(scans)g(in)f Fp(int)p │ │ │ │ +Fq('s)g(from)h(\014le)g Fp(fp)f Fq(and)g(places)i(them)f(in)f(the)h │ │ │ │ +(arra)m(y)h Fp(y[])p Fq(.)40 b(It)30 b(tries)g(to)g(read)g(in)227 │ │ │ │ 1453 y Fp(n)g(int)p Fq('s,)g(and)g(returns)f(the)i(n)m(um)m(b)s(er)e │ │ │ │ (that)i(w)m(ere)g(actually)g(read.)111 1641 y(7.)46 b │ │ │ │ Fp(void)h(IVcompress)e(\()i(int)g(n1,)g(int)g(x1[],)f(int)h(y1[],)1086 │ │ │ │ 1754 y(int)g(n2,)g(int)g(x2[],)f(int)h(y2[])g(\))g(;)227 │ │ │ │ 1905 y Fq(Giv)m(en)d(a)f(pair)g(of)f(arra)m(ys)i Fp(x1[n1])d │ │ │ │ Fq(and)h Fp(y1[n1])p Fq(,)i(\014ll)f Fp(x2[n2])e Fq(and)h │ │ │ │ Fp(y2[n2])f Fq(with)i(a)g(subset)f(of)h(the)227 2018 │ │ │ │ @@ -6808,19 +6820,19 @@ │ │ │ │ Fp(ploc)p Fq(.)66 5144 y(15.)46 b Fp(int)h(IVmaxabs)f(\()h(int)g(n,)g │ │ │ │ (int)g(y[],)g(int)g(*ploc)f(\))i(;)227 5294 y Fq(This)c(metho)s(d)g │ │ │ │ (returns)f(the)i(maxim)m(um)f(magnitude)h(of)g(en)m(tries)g(in)f │ │ │ │ Fp(y[0:n-1])e Fq(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 Fp(ploc)p Fq(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fq(18)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 66 399 a Fq(16.)46 b Fp(int)h(IVmin)g(\()g(int)g │ │ │ │ -(n,)g(int)g(y[],)g(int)g(*ploc)f(\))h(;)227 554 y Fq(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 Fq(18)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 66 399 a Fq(16.)46 b Fp(int)h(IVmin)g(\() │ │ │ │ +g(int)g(n,)g(int)g(y[],)g(int)g(*ploc)f(\))h(;)227 554 │ │ │ │ +y Fq(This)25 b(metho)s(d)h(returns)f(the)h(minim)m(um)f(en)m(try)h(in)g │ │ │ │ Fp(y[0:n-1])d Fq(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 │ │ │ │ Fp(ploc)p Fq(.)66 866 y(17.)46 b Fp(int)h(IVminabs)f(\()h(int)g(n,)g │ │ │ │ (int)g(y[],)g(int)g(*ploc)f(\))i(;)227 1022 y Fq(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 Fp(y[0:n-1])f Fq(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 │ │ │ │ @@ -6874,42 +6886,42 @@ │ │ │ │ 5294 y Fq(This)30 b(is)g(the)g(allo)s(cator)i(and)e(initializer)i │ │ │ │ (metho)s(d)d(for)h Fp(float)f Fq(v)m(ectors.)42 b(Storage)31 │ │ │ │ b(for)f(an)g(arra)m(y)g(with)g(size)227 5407 y Fp(n)g │ │ │ │ Fq(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)g(with)g │ │ │ │ Fp(val)p Fq(.)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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h │ │ │ │ -(int)g(n)h(\))f(;)227 549 y Fq(This)32 b(is)h(an)f(allo)s(cator)j │ │ │ │ -(metho)s(d)d(for)h Fp(float)e Fq(v)m(ectors.)49 b(Storage)34 │ │ │ │ -b(for)f(an)f(arra)m(y)h(with)g(size)g Fp(n)g Fq(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 Fp(void)h(FVfree)f(\()h(int)g(vec[])g(\))g(;)227 1001 │ │ │ │ -y Fq(This)30 b(metho)s(d)g(releases)h(the)g(storage)h(tak)m(en)f(b)m(y) │ │ │ │ -f Fp(vec[])p Fq(.)111 1189 y(4.)46 b Fp(void)h(FVfprintf)e(\()j(FILE)e │ │ │ │ -(*fp,)h(int)g(n,)g(float)f(y[])h(\))h(;)227 1340 y Fq(This)29 │ │ │ │ -b(metho)s(d)f(prin)m(ts)h Fp(n)f Fq(en)m(tries)i(in)f │ │ │ │ -Fp(y[])f Fq(to)i(\014le)f Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new) │ │ │ │ -f(line)i(follo)m(w)m(ed)g(b)m(y)f(lines)h(of)f(six)227 │ │ │ │ -1453 y Fp(float)p Fq('s)g(in)h Fp(")48 b(\04512.4e")28 │ │ │ │ -b Fq(format.)111 1641 y(5.)46 b Fp(int)h(FVfscanf)f(\()h(FILE)g(*fp,)f │ │ │ │ -(int)h(n,)h(float)e(y[])h(\))g(;)227 1792 y Fq(This)30 │ │ │ │ -b(metho)s(d)g(scans)g(in)g Fp(float)p Fq('s)g(from)g(\014le)g │ │ │ │ -Fp(fp)g Fq(and)g(places)h(them)g(in)f(the)g(arra)m(y)h │ │ │ │ -Fp(y[])p Fq(.)40 b(It)31 b(tries)g(to)g(read)227 1905 │ │ │ │ -y(in)f Fp(n)g(float)p Fq('s,)g(and)f(returns)h(the)g(n)m(um)m(b)s(er)f │ │ │ │ -(that)i(w)m(ere)g(actually)h(read.)111 2093 y(6.)46 b │ │ │ │ -Fp(void)h(FVadd)f(\()i(int)f(n,)g(float)f(y[],)h(float)f(x[])h(\))h(;) │ │ │ │ -227 2244 y Fq(This)30 b(metho)s(d)g(adds)f Fp(n)h Fq(en)m(tries)h(from) │ │ │ │ -f Fp(x[])g Fq(to)h Fp(y[])p Fq(,)f(i.e.,)h Fp(y[i])47 │ │ │ │ -b(+=)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ +TeXDict begin 19 18 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(19)111 399 y(2.)46 │ │ │ │ +b Fp(float)h(*)g(FVinit2)f(\()h(int)g(n)h(\))f(;)227 │ │ │ │ +549 y Fq(This)32 b(is)h(an)f(allo)s(cator)j(metho)s(d)d(for)h │ │ │ │ +Fp(float)e Fq(v)m(ectors.)49 b(Storage)34 b(for)f(an)f(arra)m(y)h(with) │ │ │ │ +g(size)g Fp(n)g Fq(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 Fp(void)h(FVfree)f(\()h(int)g │ │ │ │ +(vec[])g(\))g(;)227 1001 y Fq(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ +(storage)h(tak)m(en)f(b)m(y)f Fp(vec[])p Fq(.)111 1189 │ │ │ │ +y(4.)46 b Fp(void)h(FVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,)g(float)f │ │ │ │ +(y[])h(\))h(;)227 1340 y Fq(This)29 b(metho)s(d)f(prin)m(ts)h │ │ │ │ +Fp(n)f Fq(en)m(tries)i(in)f Fp(y[])f Fq(to)i(\014le)f │ │ │ │ +Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new)f(line)i(follo)m(w)m(ed)g │ │ │ │ +(b)m(y)f(lines)h(of)f(six)227 1453 y Fp(float)p Fq('s)g(in)h │ │ │ │ +Fp(")48 b(\04512.4e")28 b Fq(format.)111 1641 y(5.)46 │ │ │ │ +b Fp(int)h(FVfscanf)f(\()h(FILE)g(*fp,)f(int)h(n,)h(float)e(y[])h(\))g │ │ │ │ +(;)227 1792 y Fq(This)30 b(metho)s(d)g(scans)g(in)g Fp(float)p │ │ │ │ +Fq('s)g(from)g(\014le)g Fp(fp)g Fq(and)g(places)h(them)g(in)f(the)g │ │ │ │ +(arra)m(y)h Fp(y[])p Fq(.)40 b(It)31 b(tries)g(to)g(read)227 │ │ │ │ +1905 y(in)f Fp(n)g(float)p Fq('s,)g(and)f(returns)h(the)g(n)m(um)m(b)s │ │ │ │ +(er)f(that)i(w)m(ere)g(actually)h(read.)111 2093 y(6.)46 │ │ │ │ +b Fp(void)h(FVadd)f(\()i(int)f(n,)g(float)f(y[],)h(float)f(x[])h(\))h │ │ │ │ +(;)227 2244 y Fq(This)30 b(metho)s(d)g(adds)f Fp(n)h │ │ │ │ +Fq(en)m(tries)h(from)f Fp(x[])g Fq(to)h Fp(y[])p Fq(,)f(i.e.,)h │ │ │ │ +Fp(y[i])47 b(+=)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fq(.)111 2432 y(7.)f Fp(void)h(FVaxpy)f(\()h(int)g(n,)h(float)e(y[],)h │ │ │ │ (float)f(alpha,)g(float)g(x[])h(\))h(;)227 2583 y Fq(This)36 │ │ │ │ b(metho)s(d)g(adds)g(a)h(scaled)g(m)m(ultiple)g(of)g │ │ │ │ Fp(n)f Fq(en)m(tries)i(from)e Fp(x[])g Fq(in)m(to)h Fp(y[])p │ │ │ │ Fq(,)h(i.e.,)h Fp(y[i])47 b(+=)g(alpha)f(*)227 2696 y(x[i])29 │ │ │ │ b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)111 2884 y(8.)f │ │ │ │ Fp(void)h(FVaxpyi)f(\()h(int)g(n,)g(float)g(y[],)f(int)h(index[],)f │ │ │ │ @@ -6944,29 +6956,29 @@ │ │ │ │ g(index[])f(\))h(;)227 5068 y(y[i])g(=)g(x[index[i]])28 │ │ │ │ b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)66 5257 y(14.)f │ │ │ │ Fp(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 Fq(and)j Fp(x[index[i]])45 b(=)i(0)30 b Fq(for)g Fp(0)48 │ │ │ │ b(<=)f(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 66 399 a Fq(15.)46 b Fp(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 Fq(and)h Fp(x[index[i]])45 │ │ │ │ -b(=)j(0)66 738 y Fq(16.)e Fp(void)h(FVinvPerm)e(\()j(int)f(n,)g(float)f │ │ │ │ -(y[],)h(int)g(index[])e(\))j(;)227 888 y Fq(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 Fp(y[index[i]])45 b(:=)i(y[i])p Fq(.)38 │ │ │ │ -b(See)27 b Fp(FVperm\(\))d Fq(for)227 1001 y(a)31 b(similar)g │ │ │ │ -(function.)66 1189 y(17.)46 b Fp(float)h(FVmax)f(\()h(int)g(n,)h(float) │ │ │ │ -e(y[],)h(int)f(*ploc)h(\))g(;)227 1340 y Fq(This)36 b(metho)s(d)h │ │ │ │ -(returns)e(the)i(maxim)m(um)g(en)m(try)g(in)g Fp(y[0:n-1])d │ │ │ │ -Fq(and)i(puts)g(the)i(\014rst)e(lo)s(cation)i(where)e(it)227 │ │ │ │ -1453 y(w)m(as)31 b(found)e(in)m(to)i(the)g(address)e │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 66 399 a Fq(15.)46 b Fp(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 Fq(and)h Fp(x[index[i]])45 b(=)j(0)66 738 y Fq(16.)e │ │ │ │ +Fp(void)h(FVinvPerm)e(\()j(int)f(n,)g(float)f(y[],)h(int)g(index[])e │ │ │ │ +(\))j(;)227 888 y Fq(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 Fp(y[index[i]])45 │ │ │ │ +b(:=)i(y[i])p Fq(.)38 b(See)27 b Fp(FVperm\(\))d Fq(for)227 │ │ │ │ +1001 y(a)31 b(similar)g(function.)66 1189 y(17.)46 b │ │ │ │ +Fp(float)h(FVmax)f(\()h(int)g(n,)h(float)e(y[],)h(int)f(*ploc)h(\))g(;) │ │ │ │ +227 1340 y Fq(This)36 b(metho)s(d)h(returns)e(the)i(maxim)m(um)g(en)m │ │ │ │ +(try)g(in)g Fp(y[0:n-1])d Fq(and)i(puts)g(the)i(\014rst)e(lo)s(cation)i │ │ │ │ +(where)e(it)227 1453 y(w)m(as)31 b(found)e(in)m(to)i(the)g(address)e │ │ │ │ Fp(ploc)p Fq(.)66 1641 y(18.)46 b Fp(float)h(FVmaxabs)e(\()j(int)f(n,)g │ │ │ │ (float)f(y[],)h(int)g(*ploc)f(\))h(;)227 1792 y Fq(This)d(metho)s(d)g │ │ │ │ (returns)f(the)i(maxim)m(um)f(magnitude)h(of)g(en)m(tries)g(in)f │ │ │ │ Fp(y[0:n-1])e Fq(and)i(puts)g(the)h(\014rst)227 1905 │ │ │ │ y(lo)s(cation)32 b(where)e(it)h(w)m(as)g(found)e(in)m(to)i(the)g │ │ │ │ (address)e Fp(ploc)p Fq(.)66 2093 y(19.)46 b Fp(float)h(FVmin)f(\()h │ │ │ │ (int)g(n,)h(float)e(y[],)h(int)f(*ploc)h(\))g(;)227 2244 │ │ │ │ @@ -7009,24 +7021,24 @@ │ │ │ │ (int)g(index[],)e(float)h(x[])h(\))h(;)227 5294 y Fq(This)27 │ │ │ │ b(metho)s(d)g(scatters)i Fp(n)f Fq(en)m(tries)g(of)g │ │ │ │ Fp(x[])f Fq(in)m(to)i Fp(y[])e Fq(as)h(follo)m(ws,)i │ │ │ │ Fp(y[index[i]])44 b(=)k(x[i])26 b Fq(and)i Fp(x[i])e │ │ │ │ Fq(for)227 5407 y Fp(0)48 b(<=)f(i)g(<)h(n)p Fq(.)p eop │ │ │ │ end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(21)66 399 y(27.)46 b Fp(void)h(FVsub)f(\()i(int)f │ │ │ │ -(n,)g(float)f(y[],)h(float)f(x[])h(\))h(;)227 546 y Fq(This)30 │ │ │ │ -b(metho)s(d)g(subtracts)g Fp(n)g Fq(en)m(tries)h(from)f │ │ │ │ -Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j Fp(y[i])47 b(-=)g(x[i])29 │ │ │ │ -b Fq(for)h Fp(0)48 b(<=)f(i)g(<)h(n)p Fq(.)66 729 y(28.)e │ │ │ │ -Fp(float)h(FVsum)f(\()h(int)g(n,)h(float)e(y[])h(\))g(;)227 │ │ │ │ -877 y Fq(This)30 b(metho)s(d)g(returns)f(the)h(sum)g(of)g(the)h │ │ │ │ -(\014rst)f Fp(n)g Fq(en)m(tries)h(in)f(the)g(v)m(ector)i │ │ │ │ +TeXDict begin 21 20 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(21)66 399 y(27.)46 │ │ │ │ +b Fp(void)h(FVsub)f(\()i(int)f(n,)g(float)f(y[],)h(float)f(x[])h(\))h │ │ │ │ +(;)227 546 y Fq(This)30 b(metho)s(d)g(subtracts)g Fp(n)g │ │ │ │ +Fq(en)m(tries)h(from)f Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j │ │ │ │ +Fp(y[i])47 b(-=)g(x[i])29 b Fq(for)h Fp(0)48 b(<=)f(i)g(<)h(n)p │ │ │ │ +Fq(.)66 729 y(28.)e Fp(float)h(FVsum)f(\()h(int)g(n,)h(float)e(y[])h │ │ │ │ +(\))g(;)227 877 y Fq(This)30 b(metho)s(d)g(returns)f(the)h(sum)g(of)g │ │ │ │ +(the)h(\014rst)f Fp(n)g Fq(en)m(tries)h(in)f(the)g(v)m(ector)i │ │ │ │ Fp(x[])p Fq(,)e(i.e.,)i(return)3430 812 y Ff(P)3518 839 │ │ │ │ y Fe(n)p Fd(\000)p Fe(1)3518 900 y(i)p Fc(=)p Fe(0)3662 │ │ │ │ 877 y Fp(x)p Fq([)p Fp(i)p Fq(].)66 1059 y(29.)46 b Fp(float)h │ │ │ │ (FVsumabs)e(\()j(int)f(n,)g(float)f(y[])h(\))g(;)227 │ │ │ │ 1207 y Fq(This)33 b(metho)s(d)h(returns)e(the)j(sum)e(of)h(the)g │ │ │ │ (absolute)g(v)-5 b(alues)35 b(of)f(the)g(\014rst)f Fp(n)h │ │ │ │ Fq(en)m(tries)g(in)g(the)g(v)m(ector)i Fp(x[])p Fq(,)227 │ │ │ │ @@ -7082,18 +7094,18 @@ │ │ │ │ Fq(is)f(found)f(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)h(with)f │ │ │ │ Fp(NULL)p Fq(.)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 Fp(void)h(PDVfree)f(\()h(double)f │ │ │ │ (**p_vec)g(\))i(;)227 5407 y Fq(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ (storage)h(tak)m(en)f(b)m(y)f Fp(p)p 1993 5407 V 34 w(vec[])p │ │ │ │ Fq(.)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fq(22)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 111 399 a Fq(3.)46 b Fp(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 Fq(22)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 111 399 a Fq(3.)46 b Fp(void)h(PDVcopy)f │ │ │ │ +(\()h(int)g(n,)g(double)f(*p_y[],)g(double)g(*p_x[])g(\))i(;)227 │ │ │ │ 571 y Fq(This)30 b(metho)s(d)g(copies)h Fp(n)f Fq(en)m(tries)h(from)f │ │ │ │ Fp(p)p 1672 571 29 4 v 34 w(x[])g Fq(to)h Fp(p)p 2039 │ │ │ │ 571 V 34 w(y[])p Fq(,)e(i.e.,)j Fp(p)p 2491 571 V 34 │ │ │ │ w(y[i])47 b(=)g(p)p 2907 571 V 34 w(x[i])30 b Fq(for)g │ │ │ │ Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)111 803 y(4.)f Fp(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 Fq(This)29 b(metho)s(d)g(sets)h(the)g(en)m(tries)g(of)g │ │ │ │ @@ -7150,21 +7162,21 @@ │ │ │ │ Fp(p)p 1544 5294 V 34 w(vec[])e Fq(as)i(p)s(oin)m(ters)f(in)m(to)i │ │ │ │ Fp(vec[])d Fq(giv)m(en)i(b)m(y)g(the)g Fp(sizes[])d Fq(v)m(ector,)227 │ │ │ │ 5407 y(i.e.,)32 b Fp(p)p 453 5407 V 34 w(vec[0])46 b(=)i(vec)p │ │ │ │ Fq(,)29 b(and)h Fp(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 Fq(for)k │ │ │ │ Fp(0)47 b(<)g(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(23)0 399 y Fi(1.2.9)112 b(Sorting)38 │ │ │ │ -b(routines)0 591 y Fo(V)-9 b(alidation)35 b(routines)111 │ │ │ │ -784 y Fq(1.)46 b Fp(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 Fq(These)29 b(metho)s(ds)f(returns)f │ │ │ │ +TeXDict begin 23 22 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(23)0 399 y Fi(1.2.9)112 │ │ │ │ +b(Sorting)38 b(routines)0 591 y Fo(V)-9 b(alidation)35 │ │ │ │ +b(routines)111 784 y Fq(1.)46 b Fp(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 Fq(These)29 b(metho)s(ds)f(returns)f │ │ │ │ Fp(1)h Fq(if)h(the)g(arra)m(y)g Fp(ivec[])e Fq(is)i(in)f(ascending)h │ │ │ │ (or)g(descending)f(order)g(and)g(returns)227 1156 y Fp(0)i │ │ │ │ Fq(otherwise.)111 1337 y(2.)46 b Fp(int)h(DVisascending)d(\()k(int)f │ │ │ │ (n,)g(double)f(dvec[])g(\))i(;)227 1449 y(int)f(DVisdescending)d(\()k │ │ │ │ (int)e(n,)i(double)e(dvec[])g(\))h(;)227 1596 y Fq(These)29 │ │ │ │ b(metho)s(ds)f(returns)f Fp(1)h Fq(if)h(the)g(arra)m(y)g │ │ │ │ Fp(dvec[])e Fq(is)i(in)f(ascending)h(or)g(descending)f(order)g(and)g │ │ │ │ @@ -7210,35 +7222,36 @@ │ │ │ │ b(metho)s(ds)g(sort)g(the)h(arra)m(y)f Fp(ivec1[])e Fq(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 │ │ │ │ Fp(ivec2[])e Fq(and)i Fp(dvec[])f Fq(in)g(the)i(same)f(fashion.)76 │ │ │ │ b(The)227 5407 y Fp(dvec[])29 b Fq(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 Fq(24)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 111 399 a Fq(7.)46 b Fp(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 Fq(These)39 │ │ │ │ -b(metho)s(ds)g(sort)g(a)g Fp(double)f Fq(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 Fp(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 Fq(These)29 b(metho)s(ds)g(sort)g(the)h │ │ │ │ -(arra)m(y)f Fp(dvec1[])e Fq(in)m(to)k(ascending)e(or)g(descending)g │ │ │ │ -(order)g(using)g(an)g(insertion)227 1315 y(sort)i(and)f(p)s(erm)m(utes) │ │ │ │ -f(the)i(companion)f(arra)m(y)h Fp(dvec2[])e Fq(in)h(the)g(same)h │ │ │ │ -(fashion.)111 1491 y(9.)46 b Fp(void)h(DVIVisortUp)e(\()i(int)g(n,)g │ │ │ │ -(double)f(dvec[],)g(int)h(ivec[])f(\))i(;)227 1604 y(void)f │ │ │ │ -(DVIVisortDown)d(\()k(int)e(n,)i(double)e(dvec[],)g(int)g(ivec[])h(\))g │ │ │ │ -(;)227 1748 y Fq(These)33 b(metho)s(ds)f(sort)h(the)g(arra)m(y)h │ │ │ │ -Fp(dvec[])d Fq(in)m(to)j(ascending)f(or)g(descending)f(order)h(using)f │ │ │ │ -(an)h(insertion)227 1861 y(sort)e(and)f(p)s(erm)m(utes)f(the)i │ │ │ │ -(companion)f(arra)m(y)h Fp(ivec[])e Fq(in)h(the)h(same)f(fashion.)0 │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fq(24)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 111 399 a Fq(7.)46 b Fp(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 Fq(These)39 b(metho)s(ds)g(sort)g(a)g Fp(double)f │ │ │ │ +Fq(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 Fp(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 Fq(These)29 b(metho)s(ds)g(sort)g │ │ │ │ +(the)h(arra)m(y)f Fp(dvec1[])e Fq(in)m(to)k(ascending)e(or)g │ │ │ │ +(descending)g(order)g(using)g(an)g(insertion)227 1315 │ │ │ │ +y(sort)i(and)f(p)s(erm)m(utes)f(the)i(companion)f(arra)m(y)h │ │ │ │ +Fp(dvec2[])e Fq(in)h(the)g(same)h(fashion.)111 1491 y(9.)46 │ │ │ │ +b Fp(void)h(DVIVisortUp)e(\()i(int)g(n,)g(double)f(dvec[],)g(int)h │ │ │ │ +(ivec[])f(\))i(;)227 1604 y(void)f(DVIVisortDown)d(\()k(int)e(n,)i │ │ │ │ +(double)e(dvec[],)g(int)g(ivec[])h(\))g(;)227 1748 y │ │ │ │ +Fq(These)33 b(metho)s(ds)f(sort)h(the)g(arra)m(y)h Fp(dvec[])d │ │ │ │ +Fq(in)m(to)j(ascending)f(or)g(descending)f(order)h(using)f(an)h │ │ │ │ +(insertion)227 1861 y(sort)e(and)f(p)s(erm)m(utes)f(the)i(companion)f │ │ │ │ +(arra)m(y)h Fp(ivec[])e Fq(in)h(the)h(same)f(fashion.)0 │ │ │ │ 2115 y Fo(Quic)m(ksort)35 b(routines)111 2306 y Fq(1.)46 │ │ │ │ b Fp(void)h(IVqsortUp)e(\()j(int)f(n,)g(int)g(ivec[])f(\))h(;)227 │ │ │ │ 2419 y(void)g(IVqsortDown)e(\()i(int)g(n,)g(int)g(ivec[])f(\))i(;)227 │ │ │ │ 2563 y Fq(These)30 b(metho)s(ds)g(sort)h(an)f Fp(int)f │ │ │ │ Fq(arra)m(y)i(in)m(to)h(ascending)e(or)h(descending)f(order)g(using)f │ │ │ │ (a)i(quic)m(k)g(sort.)111 2739 y(2.)46 b Fp(void)h(IV2qsortUp)e(\()i │ │ │ │ (int)g(n,)g(int)g(ivec1[],)f(int)h(ivec2[])f(\))h(;)227 │ │ │ │ @@ -7276,32 +7289,32 @@ │ │ │ │ 5181 y Fq(These)30 b(metho)s(ds)e(sort)i(the)g(arra)m(y)g │ │ │ │ Fp(ivec1[])d Fq(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 Fp(ivec2[])d Fq(and)i Fp(dvec[])f Fq(in)h(the)g(same)h │ │ │ │ (fashion.)49 b(The)33 b Fp(dvec[])227 5407 y Fq(arra)m(y)e(is)g(double) │ │ │ │ e(precision)i(complex.)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(25)111 399 y(7.)46 b Fp(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 Fq(Thes)30 │ │ │ │ -b(metho)s(ds)g(sort)g(a)h Fp(double)e Fq(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 Fp(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 │ │ │ │ -1099 y Fq(These)30 b(metho)s(ds)e(sort)i(the)g(arra)m(y)g │ │ │ │ -Fp(dvec1[])d Fq(in)m(to)k(ascending)e(or)h(descending)f(order)g(using)g │ │ │ │ -(a)h(quic)m(k)g(sort)227 1212 y(and)g(p)s(erm)m(utes)g(the)g(companion) │ │ │ │ -h(arra)m(y)g Fp(dvec2[])d Fq(in)i(the)h(same)g(fashion.)111 │ │ │ │ -1393 y(9.)46 b Fp(void)h(DVIVqsortUp)e(\()i(int)g(n,)g(double)f │ │ │ │ -(dvec[],)g(int)h(ivec[])f(\))i(;)227 1506 y(void)f(DVIVqsortDown)d(\()k │ │ │ │ -(int)e(n,)i(double)e(dvec[],)g(int)g(ivec[])h(\))g(;)227 │ │ │ │ -1653 y Fq(These)33 b(metho)s(ds)f(sort)h(the)g(arra)m(y)h │ │ │ │ +TeXDict begin 25 24 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(25)111 399 y(7.)46 │ │ │ │ +b Fp(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 Fq(Thes)30 b(metho)s(ds)g(sort)g(a)h Fp(double)e │ │ │ │ +Fq(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 Fp(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 1099 y Fq(These)30 b(metho)s(ds)e(sort)i(the)g │ │ │ │ +(arra)m(y)g Fp(dvec1[])d Fq(in)m(to)k(ascending)e(or)h(descending)f │ │ │ │ +(order)g(using)g(a)h(quic)m(k)g(sort)227 1212 y(and)g(p)s(erm)m(utes)g │ │ │ │ +(the)g(companion)h(arra)m(y)g Fp(dvec2[])d Fq(in)i(the)h(same)g │ │ │ │ +(fashion.)111 1393 y(9.)46 b Fp(void)h(DVIVqsortUp)e(\()i(int)g(n,)g │ │ │ │ +(double)f(dvec[],)g(int)h(ivec[])f(\))i(;)227 1506 y(void)f │ │ │ │ +(DVIVqsortDown)d(\()k(int)e(n,)i(double)e(dvec[],)g(int)g(ivec[])h(\))g │ │ │ │ +(;)227 1653 y Fq(These)33 b(metho)s(ds)f(sort)h(the)g(arra)m(y)h │ │ │ │ Fp(dvec[])d Fq(in)m(to)j(ascending)f(or)g(descending)f(order)h(using)f │ │ │ │ (a)h(quic)m(k)h(sort)227 1766 y(and)c(p)s(erm)m(utes)g(the)g(companion) │ │ │ │ h(arra)m(y)g Fp(ivec[])d Fq(in)j(the)f(same)h(fashion.)0 │ │ │ │ 2028 y Fi(1.2.10)113 b(Sort)37 b(and)h(compress)g(routines)111 │ │ │ │ 2221 y Fq(1.)46 b Fp(int)h(IVsortUpAndCompress)c(\()k(int)g(n,)g(int)g │ │ │ │ (ivec[])f(\))i(;)227 2368 y Fq(This)42 b(metho)s(d)h(sorts)g │ │ │ │ Fp(ivec[])e Fq(in)m(to)j(ascending)f(order,)j(and)c(remo)m(v)m(es)i │ │ │ │ @@ -7352,17 +7365,17 @@ │ │ │ │ (stored)g(in)g(the)g(leading)h(lo)s(cations)g(of)f(the)g(v)m(ectors)h │ │ │ │ Fp(ivec1[])d Fq(and)i Fp(ivec2[])p Fq(.)227 5294 y Fk(Err)-5 │ │ │ │ b(or)37 b(che)-5 b(cking:)45 b Fq(If)33 b Fp(n)47 b(<)h(0)p │ │ │ │ Fq(,)33 b(or)g(if)g Fp(ivec1)f Fq(or)h Fp(ivec2)e Fq(is)i │ │ │ │ Fp(NULL)p Fq(,)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 Fq(26)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 111 399 a Fq(5.)46 b Fp(int)h │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fq(26)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 111 399 a Fq(5.)46 b Fp(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 Fq(This)39 │ │ │ │ b(metho)s(d)g(sorts)g Fp(ivec1[])f Fq(in)m(to)i(ascending)g(order)f │ │ │ │ (with)g Fp(ivec2[])e Fq(and)i Fp(dvec[])f Fq(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 Fp(dvec[])e Fq(en)m(tries)i(for)g(iden)m(tical)h │ │ │ │ Fp(\(ivec1[],)227 775 y(ivec2[]\))42 b Fq(pairs.)80 b(The)44 │ │ │ │ @@ -7423,26 +7436,26 @@ │ │ │ │ 5144 y(4.)46 b Fp(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 Fq(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 Fp(ip)p Fq(.)40 b(See)30 b Fp(IVfp80\(\))e │ │ │ │ Fq(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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(27)111 399 y(5.)46 b Fp(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ -(IP)h(*ip1,)e(IP)h(*ip2)g(\))g(;)227 547 y Fq(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 Fp(IP)h(*)h(IP_mergeSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ -993 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g(ascending)g │ │ │ │ -(order)f(using)g(a)g(merge)h(sort.)111 1178 y(7.)46 b │ │ │ │ -Fp(IP)h(*)h(IP_radixSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ +TeXDict begin 27 26 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(27)111 399 y(5.)46 │ │ │ │ +b Fp(IP)h(*)h(IP_mergeUp)d(\()i(IP)h(*ip1,)e(IP)h(*ip2)g(\))g(;)227 │ │ │ │ +547 y Fq(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 Fp(IP)h(*)h(IP_mergeSortUp)c(\()j(IP)g │ │ │ │ +(*ip)g(\))h(;)227 993 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in) │ │ │ │ +m(to)g(ascending)g(order)f(using)g(a)g(merge)h(sort.)111 │ │ │ │ +1178 y(7.)46 b Fp(IP)h(*)h(IP_radixSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ 1327 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g(ascending) │ │ │ │ g(order)f(using)g(a)g(radix)g(sort.)111 1511 y(8.)46 │ │ │ │ b Fp(IP)h(*)h(IP_radixSortDown)43 b(\()48 b(IP)f(*ip)g(\))g(;)227 │ │ │ │ 1660 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g │ │ │ │ (descending)f(order)g(using)g(a)h(radix)f(sort.)0 1925 │ │ │ │ y Fi(1.2.12)113 b Fh(I2OP)38 b Fi(:)f Fh(\(int,)53 b(int,)f(void*,)h │ │ │ │ (pointer\))40 b Fi(singly)e(link)m(ed-list)h(metho)s(ds)330 │ │ │ │ @@ -7491,21 +7504,21 @@ │ │ │ │ b(=)j(NULL)p Fq(.)337 5294 y Fm(\210)e Fq(If)20 b Fp(flag)47 │ │ │ │ b(=)g(I2OP)p 1040 5294 V 33 w(BACKWARD)p Fq(,)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 │ │ │ │ Fp(ips[i].next)427 5407 y(=)48 b(&ips[i-1])28 b Fq(for)i │ │ │ │ Fp(0)47 b(<)h(i)f(<)h(n)30 b Fq(and)f Fp(ips[0].next)45 │ │ │ │ b(=)i(NULL)p Fq(.)p eop end │ │ │ │ %%Page: 28 28 │ │ │ │ -TeXDict begin 28 27 bop 0 100 a Fq(28)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 111 399 a Fq(3.)46 b Fp(void)h(I2OP_free)e(\()j │ │ │ │ -(I2OP)e(*i2op)h(\))g(;)227 546 y Fq(This)30 b(metho)s(d)g(releases)h │ │ │ │ -(the)g(storage)h(based)e(at)h Fp(*i2op)p Fq(.)111 729 │ │ │ │ -y(4.)46 b Fp(void)h(I2OP_fprintf)d(\()k(FILE)e(*fp,)h(I2OP)g(*i2op)f │ │ │ │ -(\))i(;)227 876 y Fq(This)30 b(metho)s(d)g(prin)m(ts)g(the)g(singly)h │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fq(28)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 111 399 a Fq(3.)46 b Fp(void)h(I2OP_free) │ │ │ │ +e(\()j(I2OP)e(*i2op)h(\))g(;)227 546 y Fq(This)30 b(metho)s(d)g │ │ │ │ +(releases)h(the)g(storage)h(based)e(at)h Fp(*i2op)p Fq(.)111 │ │ │ │ +729 y(4.)46 b Fp(void)h(I2OP_fprintf)d(\()k(FILE)e(*fp,)h(I2OP)g(*i2op) │ │ │ │ +f(\))i(;)227 876 y Fq(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 Fp(i2op)p │ │ │ │ Fq(.)0 1183 y Fn(1.3)135 b(Driv)l(er)46 b(programs)111 │ │ │ │ 1408 y Fq(1.)g Fp(test_sort)g(msglvl)g(msgFile)f(target)i(sortType)e(n) │ │ │ │ j(range)e(mod)h(seed)227 1556 y Fq(This)30 b(driv)m(er)g(program)g │ │ │ │ (tests)h(the)g(sort)f(metho)s(ds.)40 b(Use)31 b(the)g(script)f(\014le)g │ │ │ │ Fp(do)p 2849 1556 29 4 v 34 w(test)p 3075 1556 V 34 w(sort)f │ │ │ │ Fq(for)h(testing.)337 1761 y Fm(\210)45 b Fq(The)f Fp(msglvl)e │ │ │ │ @@ -7551,20 +7564,20 @@ │ │ │ │ (and)f(compress")h(metho)s(ds.)38 b(Use)24 b(the)g(script)227 │ │ │ │ 5089 y(\014le)31 b Fp(do)p 476 5089 V 34 w(test)p 702 │ │ │ │ 5089 V 33 w(sortUpAndCompress)25 b Fq(for)31 b(testing.)337 │ │ │ │ 5294 y Fm(\210)45 b Fq(The)f Fp(msglvl)e Fq(parameter)j(determines)f │ │ │ │ (the)g(amoun)m(t)h(of)f(output.)82 b(Use)44 b Fp(msglvl)i(=)i(1)c │ │ │ │ Fq(for)g(just)427 5407 y(timing)31 b(output.)p eop end │ │ │ │ %%Page: 29 29 │ │ │ │ -TeXDict begin 29 28 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(29)337 399 y Fm(\210)45 b Fq(The)33 │ │ │ │ -b Fp(msgFile)e Fq(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ -(if)f Fp(msgFile)e Fq(is)i Fp(stdout)p Fq(,)g(then)g(the)427 │ │ │ │ -511 y(message)27 b(\014le)f(is)g Fk(stdout)p Fq(,)i(otherwise)e(a)h │ │ │ │ +TeXDict begin 29 28 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(29)337 399 y Fm(\210)45 │ │ │ │ +b Fq(The)33 b Fp(msgFile)e Fq(parameter)j(determines)f(the)h(message)g │ │ │ │ +(\014le)f(|)h(if)f Fp(msgFile)e Fq(is)i Fp(stdout)p Fq(,)g(then)g(the) │ │ │ │ +427 511 y(message)27 b(\014le)f(is)g Fk(stdout)p Fq(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fk(app)-5 b(end)28 │ │ │ │ b Fq(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ y(data.)337 770 y Fm(\210)45 b Fq(The)30 b Fp(target)f │ │ │ │ Fq(parameter)i(denotes)f(the)h(t)m(yp)s(e)g(of)f(v)m(ector\(s\))j(to)e │ │ │ │ (b)s(e)e(sorted.)500 917 y Fo({)45 b Fp(IV)30 b Fq(|)g │ │ │ │ Fp(int)g Fq(v)m(ector)i(sort)500 1046 y Fo({)45 b Fp(IV2)30 │ │ │ │ b Fq(|)g(\()p Fp(int,)47 b(int\))29 b Fq(v)m(ector)j(sort)500 │ │ │ │ @@ -7626,18 +7639,18 @@ │ │ │ │ y Fp(DVzero\(\))p Fq(,)g(7)1992 4720 y Fp(FVadd\(\))p │ │ │ │ Fq(,)g(16)1992 4835 y Fp(FVaxpy\(\))p Fq(,)g(16)1992 │ │ │ │ 4949 y Fp(FVaxpyi\(\))p Fq(,)g(16)1992 5064 y Fp(FVcompress\(\))p │ │ │ │ Fq(,)f(16)1992 5178 y Fp(FVcopy\(\))p Fq(,)h(17)1992 │ │ │ │ 5293 y Fp(FVdot\(\))p Fq(,)g(17)1992 5407 y Fp(FVfill\(\))p │ │ │ │ Fq(,)g(17)1905 5656 y(30)p eop end │ │ │ │ %%Page: 31 31 │ │ │ │ -TeXDict begin 31 30 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Octob)s(er)31 b(18,)g(2025)p │ │ │ │ -2820 100 V 988 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)d(16)0 │ │ │ │ -513 y Fp(FVfree\(\))p Fq(,)g(16)0 627 y Fp(FVfscanf\(\))p │ │ │ │ +TeXDict begin 31 30 bop 91 100 948 4 v 1130 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2859 100 V 948 w Fq(31)0 399 y Fp(FVfprintf\(\))p │ │ │ │ +Fq(,)d(16)0 513 y Fp(FVfree\(\))p Fq(,)g(16)0 627 y Fp(FVfscanf\(\))p │ │ │ │ Fq(,)g(16)0 741 y Fp(FVgather\(\))p Fq(,)g(17)0 855 y │ │ │ │ Fp(FVgatherAddZero\(\))p Fq(,)e(17)0 969 y Fp(FVgatherZero\(\))p │ │ │ │ Fq(,)h(17)0 1083 y Fp(FVinit\(\))p Fq(,)h(16)0 1197 y │ │ │ │ Fp(FVinit2\(\))p Fq(,)g(16)0 1311 y Fp(FVinvPerm\(\))p │ │ │ │ Fq(,)g(17)0 1425 y Fp(FVmax\(\))p Fq(,)h(17)0 1539 y │ │ │ │ Fp(FVmaxabs\(\))p Fq(,)f(17)0 1654 y Fp(FVmin\(\))p Fq(,)h(17)0 │ │ │ │ 1768 y Fp(FVminabs\(\))p Fq(,)f(17)0 1882 y Fp(FVperm\(\))p │ │ │ │ @@ -7695,19 +7708,19 @@ │ │ │ │ Fq(,)h(15)1992 4724 y Fp(IVscatter\(\))p Fq(,)f(15)1992 │ │ │ │ 4838 y Fp(IVshuffle\(\))p Fq(,)g(16)1992 4952 y Fp │ │ │ │ (IVsortUpAndCompress\(\))p Fq(,)d(22)1992 5066 y Fp(IVsum\(\))p │ │ │ │ Fq(,)k(15)1992 5180 y Fp(IVsumabs\(\))p Fq(,)f(15)1992 │ │ │ │ 5293 y Fp(IVswap\(\))p Fq(,)h(15)1992 5407 y Fp(IVzero\(\))p │ │ │ │ Fq(,)g(16)p eop end │ │ │ │ %%Page: 32 32 │ │ │ │ -TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 988 4 │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(18,) │ │ │ │ -g(2025)p 2913 100 V 0 399 a Fp(IVZVisortDown\(\))p Fq(,)26 │ │ │ │ -b(21)0 511 y Fp(IVZVisortUp\(\))p Fq(,)h(21)0 624 y Fp │ │ │ │ -(IVZVqsortDown\(\))p Fq(,)f(22)0 737 y Fp(IVZVqsortUp\(\))p │ │ │ │ +TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 948 4 │ │ │ │ +v 1131 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2952 100 V 0 399 a Fp(IVZVisortDown\(\))p │ │ │ │ +Fq(,)26 b(21)0 511 y Fp(IVZVisortUp\(\))p Fq(,)h(21)0 │ │ │ │ +624 y Fp(IVZVqsortDown\(\))p Fq(,)f(22)0 737 y Fp(IVZVqsortUp\(\))p │ │ │ │ Fq(,)h(22)0 850 y Fp(IVZVsortUpAndCompress\(\))p Fq(,)d(23)0 │ │ │ │ 1040 y Fp(PCVcopy\(\))p Fq(,)k(19)0 1153 y Fp(PCVfree\(\))p │ │ │ │ Fq(,)g(18)0 1266 y Fp(PCVinit\(\))p Fq(,)g(18)0 1379 │ │ │ │ y Fp(PCVsetup\(\))p Fq(,)g(19)0 1491 y Fp(PDVcopy\(\))p │ │ │ │ Fq(,)g(19)0 1604 y Fp(PDVfree\(\))p Fq(,)g(19)0 1717 │ │ │ │ y Fp(PDVinit\(\))p Fq(,)g(19)0 1830 y Fp(PDVsetup\(\))p │ │ │ │ Fq(,)g(19)0 1943 y Fp(PFVcopy\(\))p Fq(,)g(20)0 2056 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ struct _I2OP { │ │ │ │ │ int value0 ; │ │ │ │ │ int value1 ; │ │ │ │ │ void *value2 ; │ │ │ │ │ I2OP *next ; │ │ │ │ │ } ; │ │ │ │ │ 1 │ │ │ │ │ - 2 Utilities : DRAFT October 18, 2025 │ │ │ │ │ + 2 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 10 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 11 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 13 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 15 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 16 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 17 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 18 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 19 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 20 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 21 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 22 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 23 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 24 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 25 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 26 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 27 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 28 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 29 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 31 │ │ │ │ │ + Utilities : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 32 Utilities : DRAFT November 15, 2025 │ │ │ │ │ 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ZV.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1745 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2353,23 +2353,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2543,90 +2542,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4009,19 +4017,19 @@ │ │ │ │ /Fb 235[71 20[{}1 90.9091 /CMSY10 rf /Fc 206[35 35 48[{}2 │ │ │ │ 66.4176 /CMR8 rf /Fd 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 /Fe 139[62 │ │ │ │ 4[62 4[62 4[62 1[62 62 7[62 3[62 86[{}8 119.552 /CMTT12 │ │ │ │ rf /Ff 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 /Fg 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ -18[71 20[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ -/CMSL10 rf /Fh 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 │ │ │ │ +90.9091 /CMTI10 rf /Fg 137[48 3[36 2[45 1[76 7[40 2[51 │ │ │ │ +19[68 19[25 4[45 2[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +rf /Fh 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 │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 2 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4137,18 +4145,18 @@ │ │ │ │ (oin)m(ter)g(to)h(the)g(base)f(arra)m(y)h(from)f(the)g │ │ │ │ Fj(ZV)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 4867 y(mak)m(es)h(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ b(ject.)0 5179 y Fh(1.1)135 b(Data)46 b(Structure)0 5407 │ │ │ │ y Fk(The)30 b Fj(ZV)g Fk(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 Fk(2)p 136 100 1182 4 v │ │ │ │ -1364 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 137 399 a Fi(\210)45 b Fj(int)i(size)29 b │ │ │ │ -Fk(:)41 b(presen)m(t)30 b(size)i(of)e(the)h(v)m(ector.)137 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1143 4 v │ │ │ │ +1325 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 137 399 a Fi(\210)45 b Fj(int)i(size)29 │ │ │ │ +b Fk(:)41 b(presen)m(t)30 b(size)i(of)e(the)h(v)m(ector.)137 │ │ │ │ 595 y Fi(\210)45 b Fj(int)i(maxsize)29 b Fk(:)40 b(maxim)m(um)30 │ │ │ │ b(size)i(of)e(the)h(v)m(ector.)137 791 y Fi(\210)45 b │ │ │ │ Fj(int)i(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 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 │ │ │ │ (ob)5 b(ject.)42 b(When)31 b Fj(owned)46 b(==)h(0)30 │ │ │ │ @@ -4202,17 +4210,17 @@ │ │ │ │ (storage)i(b)m(y)d(a)i(call)g(to)f Fj(ZV)p 2148 5140 │ │ │ │ V 34 w(clearData\(\))d Fk(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 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(zv)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 1182 4 v 1364 100 a Fj(ZV)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fk(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1143 4 v 1325 100 a Fj(ZV)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fk(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)0 591 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 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 Fj(int)h(ZV_owned)f(\()h │ │ │ │ (ZV)g(*zv)g(\))h(;)227 1176 y Fk(This)24 b(metho)s(d)g(returns)g(the)g │ │ │ │ @@ -4276,18 +4284,18 @@ │ │ │ │ Fk(with)i(the)g(size)h(of)f(the)g(v)m(ector)h(and)e Fj(**pentries)e │ │ │ │ Fk(with)j(the)g(base)g(address)227 5148 y(of)e(the)f(v)m(ector.)227 │ │ │ │ 5294 y Ff(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fk(If)22 │ │ │ │ b Fj(zv)p Fk(,)i Fj(psize)d Fk(or)h Fj(pentries)e Fk(is)i │ │ │ │ Fj(NULL)p Fk(,)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 Fk(4)p 136 100 1182 4 v │ │ │ │ -1364 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 111 399 a Fk(8.)46 b Fj(void)h(ZV_setEntry)e(\()i(ZV)g(*zv,) │ │ │ │ -g(int)g(loc,)f(double)h(real,)f(double)g(imag)h(\))g(;)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1143 4 v │ │ │ │ +1325 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 111 399 a Fk(8.)46 b Fj(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 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(\(real,imag\))p │ │ │ │ Fk(.)227 704 y Ff(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ b Fk(If)28 b Fj(zv)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.)0 978 y Fd(1.2.3)112 b(Initializer)38 │ │ │ │ b(metho)s(ds)0 1177 y Fk(There)30 b(are)h(three)f(initializer)j(metho)s │ │ │ │ @@ -4362,17 +4370,17 @@ │ │ │ │ 5294 y Ff(Err)-5 b(or)37 b(che)-5 b(cking:)46 b Fk(If)33 │ │ │ │ b Fj(zv)g Fk(is)g Fj(NULL)p Fk(,)f(or)i Fj(newsize)46 │ │ │ │ b(<)h(0)p Fk(,)34 b(or)f(if)h Fj(0)47 b(<)h(maxsize)d(<)j(newsize)31 │ │ │ │ b Fk(and)i Fj(owned)46 b(=)227 5407 y(0)p Fk(,)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 1182 4 v 1364 100 a Fj(ZV)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fk(5)0 399 y Fd(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1143 4 v 1325 100 a Fj(ZV)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fk(5)0 399 y Fd(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 607 y Fk(1.)46 b Fj(void)h(ZV_shiftBase)d(\()k(ZV)f │ │ │ │ (*zv,)g(int)g(offset)f(\))h(;)227 770 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 │ │ │ │ 883 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)227 996 y(the)j(v)m(ector)h(is)e │ │ │ │ @@ -4432,28 +4440,29 @@ │ │ │ │ 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 Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ b Fj(zv1)g Fk(or)g Fj(zv2)g Fk(is)g Fj(NULL)p Fk(,)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 Fk(6)p 136 100 1182 4 v │ │ │ │ -1364 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 111 399 a Fk(8.)46 b Fj(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 Fk(This)34 b(metho)s(d)f(scans)i(the)f(en)m │ │ │ │ -(tries)h(in)f(the)g Fj(ZV)g Fk(ob)5 b(ject)35 b(and)f(\014lls)g │ │ │ │ -Fj(xDV)f Fk(and)h Fj(yDV)f Fk(with)h(data)h(that)g(allo)m(ws)227 │ │ │ │ -773 y(a)c(simple)f(log)703 795 y Fc(10)808 773 y Fk(distribution)f │ │ │ │ -(plot.)41 b(Only)29 b(en)m(tries)i(whose)f(magnitudes)g(lie)h(in)e(the) │ │ │ │ -h(range)h Fj([tausmall,)227 886 y(taubig])i Fk(con)m(tribute)j(to)g │ │ │ │ -(the)g(distribution.)54 b(The)35 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)h │ │ │ │ -(whose)f(magnitudes)g(are)h(zero,)227 999 y(smaller)27 │ │ │ │ -b(than)f Fj(tausmall)p Fk(,)f(or)i(larger)g(than)f Fj(taubig)f │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1143 4 v │ │ │ │ +1325 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 111 399 a Fk(8.)46 b Fj(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 Fk(This)34 │ │ │ │ +b(metho)s(d)f(scans)i(the)f(en)m(tries)h(in)f(the)g Fj(ZV)g │ │ │ │ +Fk(ob)5 b(ject)35 b(and)f(\014lls)g Fj(xDV)f Fk(and)h │ │ │ │ +Fj(yDV)f Fk(with)h(data)h(that)g(allo)m(ws)227 773 y(a)c(simple)f(log) │ │ │ │ +703 795 y Fc(10)808 773 y Fk(distribution)f(plot.)41 │ │ │ │ +b(Only)29 b(en)m(tries)i(whose)f(magnitudes)g(lie)h(in)e(the)h(range)h │ │ │ │ +Fj([tausmall,)227 886 y(taubig])i Fk(con)m(tribute)j(to)g(the)g │ │ │ │ +(distribution.)54 b(The)35 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)h(whose) │ │ │ │ +f(magnitudes)g(are)h(zero,)227 999 y(smaller)27 b(than)f │ │ │ │ +Fj(tausmall)p Fk(,)f(or)i(larger)g(than)f Fj(taubig)f │ │ │ │ Fk(are)i(placed)f(in)m(to)i Fj(pnzero)p Fk(,)d Fj(*pnsmall)g │ │ │ │ Fk(and)g Fj(*pnbig)p Fk(,)227 1112 y(resp)s(ectiv)m(ely)-8 │ │ │ │ b(.)43 b(On)29 b(return,)h(the)g(size)i(of)e(the)h Fj(xDV)e │ │ │ │ Fk(and)h Fj(yDV)f Fk(ob)5 b(jects)32 b(is)e Fj(npts)p │ │ │ │ Fk(.)227 1260 y Ff(Err)-5 b(or)29 b(che)-5 b(cking:)37 │ │ │ │ b Fk(If)25 b Fj(zv)p Fk(,)g Fj(xDV)p Fk(,)f Fj(yDV)p │ │ │ │ Fk(,)g Fj(pnsmall)f Fk(or)i Fj(pnbig)e Fk(are)i Fj(NULL)p │ │ │ │ @@ -4524,17 +4533,17 @@ │ │ │ │ 5259 y(the)j(v)-5 b(alue)31 b Fj(1)f Fk(is)g(returned.)40 │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ Fj(fprintf)p Fk(,)e(zero)k(is)e(returned.)227 5407 y │ │ │ │ Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(zv)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: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1182 4 v 1364 100 a Fj(ZV)29 │ │ │ │ -b Fg(:)i Ff(DRAFT)121 b Fg(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2671 100 V 1182 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile) │ │ │ │ +TeXDict begin 7 6 bop 91 100 1143 4 v 1325 100 a Fj(ZV)29 │ │ │ │ +b Fg(:)i Ff(DRAFT)121 b Fg(No)m(v)m(em)m(b)s(er)32 b(15,)f(2025)p │ │ │ │ +2710 100 V 1143 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile) │ │ │ │ 42 b(\()48 b(ZV)f(*zv,)g(FILE)f(*fp)h(\))h(;)227 557 │ │ │ │ y Fk(This)27 b(metho)s(d)f(writes)h(a)h Fj(ZV)e Fk(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 Fj(1)f Fk(is)h(returned.)39 b(If)30 b(an)g(IO)g(error)g(is) │ │ │ │ h(encoun)m(tered)f(from)g Fj(fwrite)p Fk(,)f(zero)i(is)g(returned.)227 │ │ │ │ 829 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ @@ -4590,23 +4599,23 @@ │ │ │ │ 5140 y(data.)337 5294 y Fi(\210)45 b Fk(The)29 b Fj(inFile)f │ │ │ │ Fk(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 Fj(inFile)427 │ │ │ │ 5407 y Fk(m)m(ust)31 b(b)s(e)e(of)i(the)f(form)g Fj(*.zvf)f │ │ │ │ Fk(for)h(a)h(formatted)g(\014le)g(or)f Fj(*.zvb)f Fk(for)h(a)h(binary)e │ │ │ │ (\014le.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1182 4 v │ │ │ │ -1364 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(Octob)s(er)f(18,)h(2025)p │ │ │ │ -2718 100 V 337 399 a Fi(\210)45 b Fk(The)40 b Fj(outFile)f │ │ │ │ -Fk(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 Fj(outfile)28 b Fk(is)j(of)f(the)g(form)g Fj(*.zvf)p │ │ │ │ -Fk(,)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 Fj(outfile)e Fk(is)i(of)427 624 │ │ │ │ -y(the)e(form)g Fj(*.zvb)p Fk(,)f(the)h(ob)5 b(ject)29 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1143 4 v │ │ │ │ +1325 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)h Fg(No)m(v)m(em)m(b)s(er)g(15,)h │ │ │ │ +(2025)p 2757 100 V 337 399 a Fi(\210)45 b Fk(The)40 b │ │ │ │ +Fj(outFile)f Fk(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 Fj(outfile)28 b Fk(is)j(of)f(the)g(form)g │ │ │ │ +Fj(*.zvf)p Fk(,)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 Fj(outfile)e Fk(is)i(of)427 │ │ │ │ +624 y(the)e(form)g Fj(*.zvb)p Fk(,)f(the)h(ob)5 b(ject)29 │ │ │ │ b(is)f(written)g(to)h(a)f(binary)f(\014le.)40 b(When)28 │ │ │ │ b Fj(outFile)e Fk(is)i Ff(not)h Fj("none")p Fk(,)e(the)427 │ │ │ │ 737 y(ob)5 b(ject)32 b(is)f(written)g(to)g(the)g(\014le)g(in)f(a)i(h)m │ │ │ │ (uman)e(readable)h(format.)42 b(When)31 b Fj(outFile)d │ │ │ │ Fk(is)j Fj("none")p Fk(,)f(the)427 850 y(ob)5 b(ject)32 │ │ │ │ b(is)e(not)h(written)f(out.)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 ZV : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 3 │ │ │ │ │ + ZV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 ZV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + ZV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 ZV : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + ZV : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 ZV : DRAFT November 15, 2025 │ │ │ │ │ • 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 │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o misc.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2025.10.18:1745 │ │ │ │ +%DVIPSSource: TeX output 2025.11.15:2246 │ │ │ │ %%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 │ │ │ │ @@ -2253,23 +2253,22 @@ │ │ │ │ /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 53 /five put │ │ │ │ -dup 56 /eight put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 79 /O put │ │ │ │ +dup 78 /N 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 │ │ │ │ +dup 118 /v put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2443,90 +2442,99 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ -46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ -8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ -71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ -656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ -848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ -33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ -35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ -352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ -C09EFCFD59878B847373935C919D1329183E411E8C577D19BB1E9EEEF014F3EF │ │ │ │ -FD282311E8097DE39E7FD0BC4BC6851A794FC40EEB936A07D533D00EB43868A9 │ │ │ │ -A1055FCFBE6691D503EB5D661803661E50D5454D6AB3550C8D1AFA3CA18BA777 │ │ │ │ -08720799DBFD9F167C12F39761F18C683FF3B148B1D9AE99DE95DF1B42D8FC55 │ │ │ │ -A16BD47C6B7CF8A2B70E256B6E69F3212735B04A2885E1BF5FA7DB06218CC199 │ │ │ │ -8214F7CB99E00AA3268C1935E7B49E8DF7DDC5323C60C16F9B070185E7C74AC3 │ │ │ │ -6F8022E9AA10C5D1F9112DFAFBE335AEC6CBC53CE849A04251B5A0C445F6B08F │ │ │ │ -A823A00EE51195496917EC244C3DEAFE342EB4D1D0544867DC21231E6D6CE429 │ │ │ │ -FE6B78D128EF4B62727BB3C7CB3A81679BC6C3220A1C8E3D85091D37093AD042 │ │ │ │ -F0A9F8DD7CBEBEE07ECBDCC2D8A5C5A33CA0586F35821A99952ED5D5830494C1 │ │ │ │ -567F974D02B9A3036651389F04C9A608C1159C71877302004AB4F97BB8357F36 │ │ │ │ -EE2B85AF25211DDBDB65BCFE1F38A8B65EED5BE08A42B001478DED1CAACC172E │ │ │ │ -99C1204FF330AF768475F00840F5C0FCFD2251089C241CE9C240C01284DC20B6 │ │ │ │ -8241DBF1AC9EAE7CBB5934D86F0DDE211E493A4449D32D5A1E266862A48634FE │ │ │ │ -D5EE6DEFE6056EA416D6B5CEC6C37F9B0108583CD8249985841F776ED25C2BE4 │ │ │ │ -F8ACD5173A96320C170F4304C648F8828AB5217467698A1D800108CDC4B6F03C │ │ │ │ -69AEBE1223F63B1EABEF7A3917B413BFB640D2811D249C821E13F015BD9412D9 │ │ │ │ -950620D6BDE44DE9B6155C3E81675134AB3963FF57466CEB215CC2D23728622A │ │ │ │ -C97AED411F66A122988491D0557E3889B2199962DBBED96A157B0D8252669D11 │ │ │ │ -22955B2D60295D216F39AC292E6620B9C5D17066FB2A82E8139791A354382BC8 │ │ │ │ -2421F543209EF4C09F519A8E078A77ADBEFB98AC0A9D4D3070D021B696481AE2 │ │ │ │ -B10D8761B0BA52EAF04FCDBBE673746A48A1D26CEE1A1E4836830D73DDA126A6 │ │ │ │ -DE070F0B35F18C5118FFF96C66CFA5585F91AC6BDF3510D31B2804F3CDA6DB98 │ │ │ │ -61D4CCB07DAADBB1F2EBA4145AD1636DD12464F665C80DB5CF3572C0DF8A4CC2 │ │ │ │ -1F2B06D872B2F227AD7F199640985F468635A76FA43157E4540F01A8F52F5FB8 │ │ │ │ -17598548373E37341302060F001106925F118C1824ADCB4097911A72C2F1A545 │ │ │ │ -55FFFE67916869DFEB83FBE3C2A143D24E9CDC66F0DB943B1038A75D4EA1AB24 │ │ │ │ -DE2A7F111861C28C0B1FD7BA45FA6FBF2A548F267B03766FBB586AE7C642FA5A │ │ │ │ -08DBB8BFE620B9027E4DD43A52DDA566730893012E4A0E678A5B1BEA32820F63 │ │ │ │ -426037AB3EBBA560CD786CE44C43E774BFFDCB94638525FE60A2DD57900F1E1D │ │ │ │ -EAE38FD055E4B9ACE6BE67180E2CD2E710DA351B1C806B88704CD05554118A03 │ │ │ │ -2666DAF684E9E16B4FD64B64DE244E3A916FDCD23B8ACC73107D0C14035E9467 │ │ │ │ -B4BED87802DDA5C870DE2F7AF2C0BCD368F25B88DD03C28249E41DC16DA43F84 │ │ │ │ -F2ABE3A39D80C894E5E80A7BBE497C5B5E06F82E6D24C9FE8BA07AFAF7F344F0 │ │ │ │ -00D2D63FF5EFA16FF4DD514C3B652DF4A10217889FC6E021998E4AE056F05852 │ │ │ │ -C91258DEEA638AAEF2859FA81C55A50A517FF83297DD6640CAA6F371F7D85935 │ │ │ │ -B45E33327AB8C5C7A67F5930CB54864EA5BA932195800981D773D5B25E19DAE1 │ │ │ │ -C9B271C192B2BE4C5E1C602BAE1BB8045B53D603122D22CC6B3DE005CC6A1596 │ │ │ │ -3F1686D8A28664AAFAAA9C0B5FB35554EAF900950708414482E53F9F69AAB3F5 │ │ │ │ -D0F77DA8DAA18A6904665F264C117AD37C439691436AFE8852465BAB5EF739C8 │ │ │ │ -EDECB3C03081ACC1F14953BD9A897193D60512857E06577866B6F3DC39D44B6A │ │ │ │ -4FBFAF7245D83574C9536696FA8DCA576E1BF02BC0252995D969F64ED4562FA4 │ │ │ │ -1B68A41C9836A19D781C2C3F3DD6A08E50FABA99FD68F0668680572839FDF18B │ │ │ │ -69121C5A0EC4D07D344AACE372BC939ADA609A187695BD7EBA41C334F69E7361 │ │ │ │ -FA436BAF5C3ACE6FD7809DB402FE3DFE8E76F5EB789A099B137C406850407537 │ │ │ │ -F2B0E7F1B5B2EA1E4F79D975146857E3DACE0E4FC9875061C00EDFEB2A3741A4 │ │ │ │ -AC1788B5AA6F9B32F78B73AD70A58726C163572847304341197A4FF6F7E1BF42 │ │ │ │ -B82E347BD905FA85BE3A947535A0CB82B5DE61D6D463DC6538BA7539BF2043EE │ │ │ │ -3EEAC91EC8630EDA1D0308FA8C51A1AAB33F5897FFA700B3FEB7783CA307915F │ │ │ │ -4175E8345CAA11F1A11A867DD62CE8078EE279574CA2D0D6850BFC6E49AACDDA │ │ │ │ -07F85977634587FF2F0CE075F0198A647575F5C426B4109B32E98BAC08A9B543 │ │ │ │ -57FC5F141F76651C53422221D430B3717F7E1587A043223E01A93C7E411CB559 │ │ │ │ -1943ABCF6F060A88009BB88DE84328FD34E7E712FC9DABA9F4504A2B1F7A76C9 │ │ │ │ -C367D615E73F1D23D181E9D08D7E6119989A586C5B71636727DE062D7E40CADF │ │ │ │ -29F3707EE0E75F5B5D146FEF9A79E29D2CE6B3087E08DE84AAC0984010CC13D3 │ │ │ │ -DBC162555B23665E64CC14C125530ACD737B4670EAED77ADBE9BA5AFBC68C010 │ │ │ │ -D89A6B6E45F87F019FA4F0CAE3C9936D7D3A3A65E629A1BD239391B19AB3FF49 │ │ │ │ -73C06DE29A6B37399A5062B4D21925E4E64FBBCD8763DC25472598255F6EB618 │ │ │ │ -64962870991DDCB056C52B1FDB413324F4394C1D8418C02F8619EE0BA81FD06F │ │ │ │ -7DEF0CA9063AC0BB6AFCBCCDF9C45C403EF93DB59D9F710DBE5D2BBA3090072C │ │ │ │ -7BC3C1AFFB15E018F50707C4C9CC5D12B9CFB9813E5C2827815B237BB7F1597F │ │ │ │ -BD90A866B8D2B0A81F8E3382A0FA2B14698F8332AF77BC46BA5082CF833AF00C │ │ │ │ -747CC99F6AEA61C17D997AB21FA962A7A8BC67FDE140B827A52DC92759C99611 │ │ │ │ -52EAFC21569B3F9466725263CC1D1ADDCDEE54B0F4AB80AA3034DBA3BAB7DE81 │ │ │ │ -5C5C90A6B6D9C2E9CFEE675605075EB3FA5B1F5D5445F0A4368571F1D0F199C8 │ │ │ │ -7C77EF6E0A38A86DAC5C260FCAB107CDEC338755B761701ADD79177E7EDE98E9 │ │ │ │ -119188 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ +6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ +8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ +55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ +79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ +B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ +7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ +88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ +EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ +1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ +B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ +38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ +C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ +DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ +E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ +48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ +C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ +6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ +11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ +1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ +A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ +F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ +EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ +033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ +A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ +468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8CD656FBE71A46538912 │ │ │ │ +9C3D22C5563F38438CD5BAE4C9645944C6A31E9DB01FA4455AFA04C99417DCB6 │ │ │ │ +804EF8FF45C8BD4DD2711E011824D8227A2846A3B092D2DB08CA4A643D4FBB4A │ │ │ │ +2AA63FA474968F18F914BCA1F9DB819CD696DDF21B4ECB592503014A05433D86 │ │ │ │ +B9500E2FD7CAF635AA7CB12DA7E491C61D02D83E63CD625BF0C0F681CFDF013D │ │ │ │ +C160A28858A42DE6EA1B4D2978A123BDE511D745972BEBD63E28E836BBAEAB62 │ │ │ │ +C03012EEB322FDA02C9D2725E28069C32F73DC3F1ABE677AE18A48F8BF77AFB8 │ │ │ │ +1AC94426771450CD52F71AC144EA05684E5AA9C0F4BF07644BE345E1987D25E7 │ │ │ │ +E50D1A1ABE46ABAA55E4497966BCD0C1D7CBEACA1AD46DBA3C5F214C06D1705D │ │ │ │ +2C8C8B67704D3169563710337E488A817D09868CD6F698F806AC5A39D9B58849 │ │ │ │ +0578B535CCE39EBDC7CEFAEBCFFE07D72BA53A2E8E35A8211DF4B9CCB368608F │ │ │ │ +A66FCDB69C3643D5F3BE220A6BED20A3DEB784E21F21DEFDD68B496C9BED1806 │ │ │ │ +26ECA77E4D99A61EEAB0F28648901E7EAFFC0E8519FABFE11E66DF1C3AB3C726 │ │ │ │ +3F0E1FE04D9EB4F064D188D38BFDED8E0988C16B2D0D23148DFFC0142F58FC11 │ │ │ │ +82049636D6985341844FF5E7D1800B88FFCA76A1B39147A295B3C74F431AE3F9 │ │ │ │ +BEF623D9433C984814ACF1F58110FE3BD78F95D747CB288CBD69A2E089CE3896 │ │ │ │ +051973DCA3801CDC06767392B8E08EF74BF3335CE9A3220FD4A4385812F76BDE │ │ │ │ +7FC34F88A144908342C297BF4D8C123A5D66D7A626BEB647F4DAA46A80B10403 │ │ │ │ +B77FA1D865BFA09E6BDE1F757D74F614DA001414B5884FCE30480936DE09DA40 │ │ │ │ +CD57E069B307EFA25E5E8C28E847F5A63E784120533EE59229687665A5F6B9BE │ │ │ │ +57BC4DA00F1DE8CC212B6ED623E4DEDB2CCE9A0BAB6906532E1E83927C46D0B8 │ │ │ │ +B02F38CDCAD6B03DB2C043FAD14FC1CAA69FA55C7B57EF64650B6EECF63B1F00 │ │ │ │ +E68E0465E72A6729F5DD9E900D3D5BDEA791A4B2977ECE031E9D81D6BAE14F53 │ │ │ │ +27864A06C0F3375DA4DAF865DE38BF65B218D00572CF1CAB81A7407BA15AECC4 │ │ │ │ +FF5E1BD82E0955F2F7AE60DBF149CA1B5AE35169366A3410050503413BB98DB6 │ │ │ │ +BF12ABEF532E3C14654BC9E0F41F9E77F6E5BDAC637FD8C1E9FD17A4352B45C5 │ │ │ │ +C1EEA01693C0768A8D7727961C46F098527DE8B317BCAD1A453F528D5160C7E9 │ │ │ │ +F6F666F312D0BBF7CD5AE2F6F6DF39109E65A9DED5738701F2BAF4E5C0DD0F34 │ │ │ │ +D9DCD3DDA38A4E50CEA1319E349D40F3A2A47C28D52CCA214D4C92CD9036425C │ │ │ │ +6820F3CEF33A43477A7C9C9CAC46EDE5C0078D1EC738791273FEC5A7A24C20FF │ │ │ │ +FA95CDEA897A223916DC04AC5ED535324BBACB2348610976F60B08B01B433205 │ │ │ │ +3FF46CFA151099B0C77822F0EC0F59E07F7548EBADBA6962FCC2CE3FA3918548 │ │ │ │ +7F7F89DDAA4A4EFD571818C9458C2581E6EAFD7F01AF7C69187D16831A4E6169 │ │ │ │ +A0181E08A141270119CF2BBBE4C74E6DEB51D0C183771C0DED9642682AD2D68F │ │ │ │ +16965BBAF36939B21EF08C3A0AF32D94BC69B5EA48F3C8A66EEEA1B8732495D3 │ │ │ │ +5DBAACDBB981F60F2F506ECCF9FBE3647253447691A251F1E6635FD4A25F9E8B │ │ │ │ +9017CAF20D91283EE7066B67CCCE3C105D1A46EC66FB7FC98CDC15ED8C0AFFCF │ │ │ │ +AAED047AD2D7DB294898F16BAF22B436EB6D086E393355E8E749CCA66BC3FA71 │ │ │ │ +C7B1A5D681F99A39E0D2B03340D38965665AA93C3DCD6D3CDBE3A4DF14FDFCF7 │ │ │ │ +8CCC68FADFF4935CF5BD9EA83F3B85CF719863390E4D0DC3EC663C94C0C2E778 │ │ │ │ +5A91018E9AFE90D6D132F286C8376C6157C47850118E8C99753C09041758986D │ │ │ │ +C5CF17D18EA4E7603FE2184D4E66721468802AED1A13A7A692D9040BEC6DA04E │ │ │ │ +FCD080EF6319C54F14699A07153B16260FFC0D31FE976BB324E57703A232D969 │ │ │ │ +CF6A25EA26BC23A46914E1961B3C78DE23F0D513AD44359161B7FEE22F13A95E │ │ │ │ +5470DCD4D0C7C2CB1CEE5F68A8ABFB200084BD1E088536D78E1A83D55A7B1E92 │ │ │ │ +F5B4D3FA41091F331F5DE1CC5739EE93FE776A8D8D1B3E582CC3414E20566484 │ │ │ │ +B709D64F0EFB6C5B77075A3C81F548AD67BFFDA872E711C73E397C3F0C89235F │ │ │ │ +81BEDF017C8D0A77609270FF52492BB2823A909DD2935DB0CA90F9793C34B5E3 │ │ │ │ +21876795E2F2A1DB84D254711D2BBD028B0D257CA4A542BA36D527C54A9805A8 │ │ │ │ +03DE6C6CDB62510D4E57FC1B6BA5D422E2DD20437E183C193DAC2AC4D41102D4 │ │ │ │ +18E30D7E79C0554161A6970AEC267BFC0899225CED6B10EA86CD01125D0BB8FA │ │ │ │ +34C0C021EF7BB53A70B77F526429E33948EB30779D688DEF29B71A8C48CF6A9B │ │ │ │ +B3B6E620D48378D7DCCB57FE49EDD2C4DE3CECDC88ABF7646261D59AF9658D72 │ │ │ │ +72D6F6067A2BEBE8727F4A085C813293D7A580DCD21B9ECE54BF9F137FD8AFCA │ │ │ │ +180132F2AAA9046D3DFB4E27E3F2AACBDC1B52B0DEA71DE2346B1B383AFF2D88 │ │ │ │ +EE0C82D190E33113312CC581B9EFABADEEA0ECE65B77EC8178542B80856C8693 │ │ │ │ +537A01D368029AF2621DEFC97B69187115C7DCC149F47F41DFE3B9DEE862E9DF │ │ │ │ +3E0171C064656C24F5EBC6F41237B1248AA94E36E8CD641905072ED412451450 │ │ │ │ +2E9BF87FFD8D04AD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5633,42 +5641,41 @@ │ │ │ │ FFFFFFC0FFFFFFFFC07FFFFFFF807FFFFFFF807FFFFFFF803FFFFFFF003FFFFFFF001FFF │ │ │ │ FFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022227B │ │ │ │ A72D>136 D E │ │ │ │ /Ff load 0 Ff currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ /Fg 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 /Fh 139[35 │ │ │ │ -1[36 2[45 9[40 1[40 51 18[71 20[25 1[45 2[45 2[45 45 │ │ │ │ -45 3[25 44[{}14 90.9091 /CMSL10 rf /Fi 234[71 71 17[71 │ │ │ │ -1[71{}4 90.9091 /CMSY10 rf /Fj 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 /Fk 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 /Fl │ │ │ │ -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 48 48 48 48 1[48 1[48 48 48 1[48 │ │ │ │ -48 1[48 48 48 48 48 48 48 48 48 48 48 2[48 48 48 48 48 │ │ │ │ -48 48 48 48 2[48 48 1[48 48 1[48 48 48 1[48 48 48 48 │ │ │ │ -48 1[48 48 48 48 48 48 48 48 5[48 33[{}75 90.9091 /CMTT10 │ │ │ │ -rf /Fm 140[62 9[62 5[62 21[62 77[{}4 119.552 /CMTT12 │ │ │ │ -rf /Fn 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 │ │ │ │ -67 41 61 75 60 1[65 16[92 11[103 17[67 67 2[37 46[{}23 │ │ │ │ -119.552 /CMBX12 rf /Fo 132[52 59[49 63[{}2 90.9091 /CMBX10 │ │ │ │ -rf /Fp 131[91 45 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 3[25 45 25 │ │ │ │ -3[93 1[68 66 51 2[62 71 68 83 3[33 68 1[59 62 69 66 1[68 │ │ │ │ -3[71 1[25 25 45 45 45 45 45 45 45 45 45 45 1[25 30 25 │ │ │ │ -2[35 35 25 4[45 19[76 51 51 53 11[{}70 90.9091 /CMR10 │ │ │ │ -rf /Fq 134[123 123 3[90 1[95 2[116 129 4[65 3[106 129 │ │ │ │ -103 25[87 73[{}11 206.559 /CMBX12 rf /Fr 140[106 9[106 │ │ │ │ -5[106 21[106 77[{}4 206.559 /CMTT12 rf /Fs 139[75 1[79 │ │ │ │ -1[108 7[108 2[88 3[94 29[140 17[97 49[{}8 172.188 /CMBX12 │ │ │ │ -rf end │ │ │ │ +68 2[71 2[25 25 58[{}15 90.9091 /CMMI10 rf /Fh 137[48 │ │ │ │ +3[36 2[45 1[76 7[40 2[51 19[68 19[25 4[45 2[45 45 45 │ │ │ │ +3[25 44[{}13 90.9091 /CMSL10 rf /Fi 234[71 71 17[71 1[71{}4 │ │ │ │ +90.9091 /CMSY10 rf /Fj 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 │ │ │ │ +/Fk 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 /Fl 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 48 48 48 48 1[48 1[48 48 48 1[48 48 1[48 │ │ │ │ +48 48 48 48 48 48 48 48 48 48 2[48 48 48 48 48 48 48 │ │ │ │ +48 48 2[48 48 1[48 48 1[48 48 48 1[48 48 48 48 48 1[48 │ │ │ │ +48 48 48 48 48 48 48 5[48 33[{}75 90.9091 /CMTT10 rf │ │ │ │ +/Fm 140[62 9[62 5[62 21[62 77[{}4 119.552 /CMTT12 rf │ │ │ │ +/Fn 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 │ │ │ │ +41 61 75 60 1[65 16[92 11[103 17[67 67 2[37 46[{}23 119.552 │ │ │ │ +/CMBX12 rf /Fo 132[52 59[49 63[{}2 90.9091 /CMBX10 rf │ │ │ │ +/Fp 131[91 45 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 3[25 45 25 3[93 │ │ │ │ +1[68 66 51 2[62 71 68 83 3[33 68 1[59 62 69 66 1[68 3[71 │ │ │ │ +1[25 25 45 45 45 45 45 45 45 45 45 45 1[25 30 25 2[35 │ │ │ │ +35 25 4[45 19[76 51 51 53 11[{}70 90.9091 /CMR10 rf /Fq │ │ │ │ +134[123 123 3[90 1[95 2[116 129 4[65 3[106 129 103 25[87 │ │ │ │ +73[{}11 206.559 /CMBX12 rf /Fr 140[106 9[106 5[106 21[106 │ │ │ │ +77[{}4 206.559 /CMTT12 rf /Fs 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 } │ │ │ │ @@ -5719,20 +5726,20 @@ │ │ │ │ Fp(,)30 b Fl(south)g Fp(or)h Fl(bottom)e Fp(are)i(less)g(than)g(or)g │ │ │ │ (equal)g(to)h(zero,)g(of)f(if)g Fl(east)25 b Fi(\025)h │ │ │ │ Fl(n1)o Fp(,)32 b(of)f(if)g Fl(north)24 b Fi(\025)i Fl(n2)p │ │ │ │ Fp(,)31 b(of)g(if)227 5407 y Fl(top)25 b Fi(\025)g Fl(n3)o │ │ │ │ Fp(,)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 Fp(2)p 136 100 1130 4 v │ │ │ │ -1311 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)30 b Fh(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 111 399 a Fp(2.)46 b Fl(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 Fp(This)c(metho)s(d)f(this)i(v)m(ector)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1090 4 v │ │ │ │ +1272 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 111 399 a Fp(2.)46 b Fl(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 Fp(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 Fl([west,)46 b(east])h(x)g │ │ │ │ ([south,)f(north])g(x)i([bottom,)d(top].)227 1142 y Fp(There)31 │ │ │ │ b(is)g(one)h(imp)s(ortan)m(t)f(di\013erence)h(b)s(et)m(w)m(een)g(this)f │ │ │ │ (metho)s(d)g(and)g Fl(mkNDperm\(\))d Fp(ab)s(o)m(v)m(e;)33 │ │ │ │ @@ -5816,21 +5823,21 @@ │ │ │ │ Fp(,)26 b(en)m(tries)h(in)f Fl(dsizes2[])d Fp(m)m(ust)227 │ │ │ │ 5294 y(sum)28 b(to)h Fl(n2)47 b(-)h(p2)f(+)g(1)p Fp(,)29 │ │ │ │ b(and)f(en)m(tries)i(in)e Fl(dsizes3[])e Fp(m)m(ust)i(sum)g(to)h │ │ │ │ Fl(n3)47 b(-)h(p3)f(+)g(1)p Fp(,)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 1130 4 v 1311 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fp(3)111 399 y(5.)46 b Fl(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 Fp(This)40 b(metho)s(d)f(writes)i(the)f Fl(ivec[])f │ │ │ │ -Fp(v)m(ector)j(on)m(to)f(an)f Fl(n1)48 b(x)f(n2)40 b │ │ │ │ -Fp(grid)g(to)h(\014le)f Fl(fp)p Fp(.)70 b(This)39 b(is)i(useful)e(to) │ │ │ │ +TeXDict begin 3 2 bop 91 100 1090 4 v 1272 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fp(3)111 399 y(5.)46 │ │ │ │ +b Fl(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 Fp(This)40 b(metho)s(d)f(writes)i(the)f │ │ │ │ +Fl(ivec[])f Fp(v)m(ector)j(on)m(to)f(an)f Fl(n1)48 b(x)f(n2)40 │ │ │ │ +b Fp(grid)g(to)h(\014le)f Fl(fp)p Fp(.)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 Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fp(If)29 b Fl(n1)g Fp(or)h Fl(n2)f Fp(are)h(less)g(than)g(or)g(equal) │ │ │ │ g(to)h(zero,)f(or)g(if)g Fl(ivec)f Fp(or)g Fl(fp)h Fp(are)g │ │ │ │ Fl(NULL)p Fp(,)f(an)g(error)227 951 y(message)j(is)e(prin)m(ted)g(and)g │ │ │ │ (the)g(program)h(exits.)111 1164 y(6.)46 b Fl(void)h(fp3DGrid)e(\()j │ │ │ │ (int)f(n1,)g(int)g(n2,)g(int)f(n3,)h(int)g(ivec[],)f(FILE)h(*fp)g(\))g │ │ │ │ @@ -5898,20 +5905,20 @@ │ │ │ │ (amoun)m(ts)227 5131 y(of)31 b(output.)227 5294 y Fj(Err)-5 │ │ │ │ b(or)33 b(che)-5 b(cking:)40 b Fp(If)29 b Fl(graph)f │ │ │ │ Fp(is)h Fl(NULL)p Fp(,)g(or)g(if)h Fl(msglvl)46 b(>)h(0)29 │ │ │ │ b Fp(and)g Fl(msgFile)e Fp(is)j Fl(NULL)p Fp(,)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 Fp(4)p 136 100 1130 4 v │ │ │ │ -1311 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)30 b Fh(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 111 399 a Fp(2.)46 b Fl(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 Fp(This)32 b(metho)s(d)g(returns)g(a)h(fron)m(t)g(tree)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1090 4 v │ │ │ │ +1272 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 111 399 a Fp(2.)46 b Fl(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 Fp(This)32 b(metho)s(d)g(returns)g(a)h(fron)m(t)g(tree)g │ │ │ │ Fl(ETree)f Fp(ob)5 b(ject)33 b(for)g(a)g(nested)g(dissection)g │ │ │ │ (ordering)g(of)g(the)f(graph)227 777 y Fl(graph)p Fp(.)45 │ │ │ │ b(If)32 b(a)g(subgraph)e(has)i(more)h(v)m(ertices)g(than)f(the)h │ │ │ │ Fl(maxdomainsize)28 b Fp(parameter,)33 b(it)g(is)f(split.)46 │ │ │ │ b(The)227 889 y Fl(seed)c Fp(parameter)i(is)f(a)g(random)f(n)m(um)m(b)s │ │ │ │ (er)g(seed.)78 b(The)43 b Fl(msglvl)e Fp(and)h Fl(msgFile)f │ │ │ │ Fp(parameters)j(go)m(v)m(ern)227 1002 y(the)36 b(diagnostics)g(output.) │ │ │ │ @@ -5986,18 +5993,18 @@ │ │ │ │ 5294 y(The)40 b Fl(graph)f Fp(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 Fl(coords)g Fp(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 Fl(tagsIV)e Fp(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 1130 4 v 1311 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fp(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 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1090 4 v 1272 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fp(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 Fl(tagsIV)f Fp(is)i(not)g Fl(NULL)p Fp(,)f(if)g(there)h(is) │ │ │ │ g(an)227 511 y(edge)g Fl(\(u,v\))f Fp(in)g(the)h(graph)f(and)f │ │ │ │ Fl(tags[u])46 b(=)i(tags[v])p Fp(,)31 b(then)h(the)h(edge)g(with)f │ │ │ │ (width)g Fl(linewidth1)e Fp(is)227 624 y(dra)m(wn.)54 │ │ │ │ b(F)-8 b(or)36 b(edges)f Fl(\(u,v\))f Fp(in)g(the)h(graph)g(and)f │ │ │ │ Fl(tags[u])46 b(!=)h(tags[v])p Fp(,)35 b(then)f(the)h(edge)h(with)f │ │ │ │ (width)227 737 y Fl(linewidth2)23 b Fp(is)j(dra)m(wn,)g(assuming)g │ │ │ │ @@ -6079,27 +6086,28 @@ │ │ │ │ Fp(is)31 b(computed)g(as)g(the)g(pro)s(duct)f(of)i Fg(A)f │ │ │ │ Fp(with)f Fg(X)7 b Fp(.)44 b Fg(A)31 b Fp(can)g(b)s(e)g(real)g(\()p │ │ │ │ Fl(type)47 b(=)227 5407 y(1)p Fp(\))28 b(or)f(complex)i(\()p │ │ │ │ Fl(type)47 b(=)g(2)p Fp(\).)40 b(The)27 b(n)m(um)m(b)s(er)f(of)i │ │ │ │ (columns)g(of)f Fg(X)35 b Fp(is)28 b(giv)m(en)h(b)m(y)e │ │ │ │ Fl(nrhs)p Fp(.)39 b(The)27 b(linear)h(system)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1130 4 v │ │ │ │ -1311 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)30 b Fh(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 227 399 a Fp(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 Fl(maxzeros)31 b Fp(and)i Fl(maxsize)e │ │ │ │ -Fp(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 Fj(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fp(None)31 b(presen)m(tly)-8 │ │ │ │ -b(.)0 1071 y Fn(1.2)135 b(Driv)l(er)46 b(programs)g(found)e(in)h(the)g │ │ │ │ -Fm(Misc)e Fn(directory)0 1294 y Fp(This)30 b(section)h(con)m(tains)h │ │ │ │ -(brief)e(descriptions)g(of)g(the)h(driv)m(er)f(programs.)111 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1090 4 v │ │ │ │ +1272 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 227 399 a Fp(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 Fl(maxzeros)31 │ │ │ │ +b Fp(and)i Fl(maxsize)e Fp(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 Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fp(None)31 b(presen)m(tly)-8 b(.)0 1071 y Fn(1.2)135 │ │ │ │ +b(Driv)l(er)46 b(programs)g(found)e(in)h(the)g Fm(Misc)e │ │ │ │ +Fn(directory)0 1294 y Fp(This)30 b(section)h(con)m(tains)h(brief)e │ │ │ │ +(descriptions)g(of)g(the)h(driv)m(er)f(programs.)111 │ │ │ │ 1495 y(1.)46 b Fl(testNDperm)f(msglvl)h(msgFile)g(n1)h(n2)h(n3)f │ │ │ │ (outPermFile)227 1641 y Fp(This)29 b(driv)m(er)h(program)g(generates)h │ │ │ │ (a)g Fl(Perm)d Fp(ob)5 b(ject)31 b(that)g(con)m(tains)g(a)f(nested)g │ │ │ │ (dissection)h(ordering)f(for)g(a)227 1753 y Fl(n1)47 │ │ │ │ b(x)h(n2)f(x)h(n3)29 b Fp(regular)i(grid.)337 1951 y │ │ │ │ Ff(\210)45 b Fp(The)28 b Fl(msglvl)f Fp(parameter)i(determines)g(the)g │ │ │ │ (amoun)m(t)g(of)f(output)h(|)f(taking)i Fl(msglvl)46 │ │ │ │ @@ -6156,20 +6164,20 @@ │ │ │ │ b(Otherwise,)41 b(the)e Fl(ETree)p 3253 5181 V 33 w(writeToFile\(\))427 │ │ │ │ 5294 y Fp(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 Fl(ETreeFile)d │ │ │ │ Fp(is)j(of)g(the)f(form)427 5407 y Fl(*.etreef)p Fp(\),)29 │ │ │ │ b(or)h(a)h(binary)f(\014le)g(\(if)h Fl(ETreeFile)d Fp(is)i(of)h(the)f │ │ │ │ (form)g Fl(*.etreeb)p Fp(\).)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1130 4 v 1311 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fp(7)111 399 y(3.)46 b Fl(testOrderViaND)e(msglvl)i │ │ │ │ -(msgFile)g(GraphFile)f(maxdomainsize)g(seed)h(ETreeFile)227 │ │ │ │ -550 y Fp(This)23 b(program)h(reads)g(in)g(a)g Fl(Graph)f │ │ │ │ -Fp(ob)5 b(ject)25 b(from)e(a)i(\014le)f(and)f(computes)h(a)h │ │ │ │ +TeXDict begin 7 6 bop 91 100 1090 4 v 1272 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fp(7)111 399 y(3.)46 │ │ │ │ +b Fl(testOrderViaND)e(msglvl)i(msgFile)g(GraphFile)f(maxdomainsize)g │ │ │ │ +(seed)h(ETreeFile)227 550 y Fp(This)23 b(program)h(reads)g(in)g(a)g │ │ │ │ +Fl(Graph)f Fp(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.)337 878 y Ff(\210)45 b Fp(The)28 │ │ │ │ b Fl(msglvl)f Fp(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ (output)h(|)f(taking)i Fl(msglvl)46 b(>=)h(3)28 b Fp(means)427 │ │ │ │ 991 y(the)j Fl(Perm)e Fp(ob)5 b(ject)31 b(is)g(written)f(to)h(the)g │ │ │ │ (output)f(\014le.)337 1139 y Ff(\210)45 b Fp(The)33 b │ │ │ │ Fl(msgFile)e Fp(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ @@ -6236,34 +6244,35 @@ │ │ │ │ Fp(is)j(of)g(the)f(form)427 5079 y Fl(*.etreef)p Fp(\),)29 │ │ │ │ b(or)h(a)h(binary)f(\014le)g(\(if)h Fl(ETreeFile)d Fp(is)i(of)h(the)f │ │ │ │ (form)g Fl(*.etreeb)p Fp(\).)111 5294 y(5.)46 b Fl(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 Fp(8)p 136 100 1130 4 v │ │ │ │ -1311 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)30 b Fh(Octob)s(er)h(18,)g(2025) │ │ │ │ -p 2771 100 V 227 399 a Fp(This)41 b(driv)m(er)g(program)h(generates)h │ │ │ │ -(a)f(Encapsulated)f(P)m(ostscript)i(\014le)e Fl(outEPSfile)e │ │ │ │ -Fp(of)j(a)g(2-D)g(graph)227 511 y(using)29 b(a)i Fl(Graph)d │ │ │ │ -Fp(ob)5 b(ject,)31 b(a)f Fl(Coords)e Fp(ob)5 b(ject)31 │ │ │ │ -b(and)e(a)h(tags)h Fl(IV)e Fp(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 Fl(doDraw)f Fp(script)h(\014le)h(in)f(this)g │ │ │ │ -(directory)h(for)f(an)g(example)i(calling)f(sequence.)337 │ │ │ │ -978 y Ff(\210)45 b Fp(The)28 b Fl(msglvl)f Fp(parameter)i(determines)g │ │ │ │ -(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fl(msglvl)46 │ │ │ │ -b(>=)h(3)28 b Fp(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.)337 1243 │ │ │ │ -y Ff(\210)45 b Fp(The)33 b Fl(msgFile)e Fp(parameter)j(determines)f │ │ │ │ -(the)h(message)g(\014le)f(|)h(if)f Fl(msgFile)e Fp(is)i │ │ │ │ -Fl(stdout)p Fp(,)g(then)g(the)427 1356 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 │ │ │ │ -1469 y(data.)337 1620 y Ff(\210)45 b Fp(The)23 b Fl(inGraphFile)d │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1090 4 v │ │ │ │ +1272 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2810 100 V 227 399 a Fp(This)41 b(driv)m(er)g(program)h │ │ │ │ +(generates)h(a)f(Encapsulated)f(P)m(ostscript)i(\014le)e │ │ │ │ +Fl(outEPSfile)e Fp(of)j(a)g(2-D)g(graph)227 511 y(using)29 │ │ │ │ +b(a)i Fl(Graph)d Fp(ob)5 b(ject,)31 b(a)f Fl(Coords)e │ │ │ │ +Fp(ob)5 b(ject)31 b(and)e(a)h(tags)h Fl(IV)e Fp(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 Fl(doDraw)f │ │ │ │ +Fp(script)h(\014le)h(in)f(this)g(directory)h(for)f(an)g(example)i │ │ │ │ +(calling)f(sequence.)337 978 y Ff(\210)45 b Fp(The)28 │ │ │ │ +b Fl(msglvl)f Fp(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ +(output)h(|)f(taking)i Fl(msglvl)46 b(>=)h(3)28 b Fp(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.)337 1243 y Ff(\210)45 b Fp(The)33 b │ │ │ │ +Fl(msgFile)e Fp(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ +(if)f Fl(msgFile)e Fp(is)i Fl(stdout)p Fp(,)g(then)g(the)427 │ │ │ │ +1356 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 1469 │ │ │ │ +y(data.)337 1620 y Ff(\210)45 b Fp(The)23 b Fl(inGraphFile)d │ │ │ │ Fp(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ Fl(Graph)f Fp(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 Fl(*.graphf)18 b Fp(or)j Fl(*.graphb)p │ │ │ │ Fp(.)35 b(The)19 b Fl(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(Graph)p 3368 1733 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 1846 y Fp(metho)s(d.)337 │ │ │ │ 1997 y Ff(\210)45 b Fp(The)c Fl(inCoordsFile)c Fp(parameter)k(is)g(the) │ │ │ │ @@ -6322,18 +6331,18 @@ │ │ │ │ y Fd(1)p Fc(;)p Fd(1)1975 5207 y Fe(#)16 b(")2129 5294 │ │ │ │ y Fg(X)2204 5308 y Fd(0)2129 5407 y Fg(X)2204 5421 y │ │ │ │ Fd(1)2285 5207 y Fe(#)2359 5351 y Fp(=)2455 5207 y Fe(")2545 │ │ │ │ 5294 y Fg(B)2614 5308 y Fd(0)2545 5407 y Fg(B)2614 5421 │ │ │ │ y Fd(1)2695 5207 y Fe(#)2768 5351 y Fp(=)25 b Fg(B)5 │ │ │ │ b(:)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1130 4 v 1311 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2724 100 V 1130 w Fp(9)1541 1617 y(Figure)f(1.1:)42 b │ │ │ │ -Fb(R2D100)750 4143 y @beginspecial 0 @llx 0 @lly 600 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1090 4 v 1272 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)31 │ │ │ │ +b(15,)h(2025)p 2763 100 V 1090 w Fp(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 │ │ │ │ /M {moveto} def │ │ │ │ @@ -6737,19 +6746,20 @@ │ │ │ │ 348.123 444.374 () radius drawLabel │ │ │ │ grestore │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1107 4 │ │ │ │ -v 1289 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2794 100 V 813 1617 a Fp(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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1068 4 │ │ │ │ +v 1250 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s(er)i │ │ │ │ +(15,)f(2025)p 2833 100 V 813 1617 a Fp(Figure)f(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 │ │ │ │ /M {moveto} def │ │ │ │ /L {lineto} def │ │ │ │ @@ -7156,49 +7166,50 @@ │ │ │ │ 348.123 444.374 (0) radius drawLabel │ │ │ │ grestore │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1107 4 v 1288 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2701 100 V 1107 w Fp(11)227 399 y Fg(A)f Fp(is)f(factored)h(as)1106 │ │ │ │ -410 y Fe(")1196 497 y Fg(A)1264 511 y Fd(0)p Fc(;)p Fd(0)1441 │ │ │ │ -497 y Fg(A)1509 511 y Fd(0)p Fc(;)p Fd(1)1196 610 y Fg(A)1264 │ │ │ │ -624 y Fd(1)p Fc(;)p Fd(0)1441 610 y Fg(A)1509 624 y Fd(1)p │ │ │ │ -Fc(;)p Fd(1)1645 410 y Fe(#)1719 554 y Fp(=)1815 410 │ │ │ │ -y Fe(")1905 497 y Fg(L)1967 511 y Fd(0)p Fc(;)p Fd(0)2199 │ │ │ │ -497 y Fp(0)1905 610 y Fg(L)1967 624 y Fd(1)p Fc(;)p Fd(0)2144 │ │ │ │ -610 y Fg(L)2206 624 y Fd(1)p Fc(;)p Fd(1)2342 410 y Fe(#)15 │ │ │ │ -b(")2495 497 y Fg(U)2557 511 y Fd(0)p Fc(;)p Fd(0)2735 │ │ │ │ -497 y Fg(U)2797 511 y Fd(0)p Fc(;)p Fd(1)2551 610 y Fp(0)139 │ │ │ │ -b Fg(U)2797 624 y Fd(1)p Fc(;)p Fd(1)2933 410 y Fe(#)2996 │ │ │ │ -554 y Fg(;)227 774 y Fp(and)30 b(to)h(solv)m(e)h Fg(AX)h │ │ │ │ -Fp(=)25 b Fg(B)5 b Fp(,)30 b(w)m(e)h(do)f(the)g(follo)m(wing)i(steps.) │ │ │ │ -337 956 y Ff(\210)45 b Fp(solv)m(e)32 b Fg(L)712 970 │ │ │ │ -y Fd(0)p Fc(;)p Fd(0)806 956 y Fg(Y)859 970 y Fd(0)924 │ │ │ │ -956 y Fp(=)25 b Fg(B)1089 970 y Fd(0)337 1097 y Ff(\210)45 │ │ │ │ -b Fp(solv)m(e)32 b Fg(L)712 1111 y Fd(1)p Fc(;)p Fd(1)806 │ │ │ │ -1097 y Fg(U)868 1111 y Fd(1)p Fc(;)p Fd(1)963 1097 y │ │ │ │ -Fg(X)1038 1111 y Fd(1)1103 1097 y Fp(=)25 b Fg(B)1268 │ │ │ │ -1111 y Fd(1)1327 1097 y Fi(\000)20 b Fg(L)1480 1111 y │ │ │ │ -Fd(1)p Fc(;)p Fd(0)1574 1097 y Fg(Y)1627 1111 y Fd(0)337 │ │ │ │ -1238 y Ff(\210)45 b Fp(solv)m(e)32 b Fg(U)712 1252 y │ │ │ │ -Fd(0)p Fc(;)p Fd(0)806 1238 y Fg(X)881 1252 y Fd(0)946 │ │ │ │ -1238 y Fp(=)25 b Fg(Y)1095 1252 y Fd(0)1155 1238 y Fi(\000)20 │ │ │ │ -b Fg(U)1308 1252 y Fd(0)p Fc(;)p Fd(1)1402 1238 y Fg(X)1477 │ │ │ │ -1252 y Fd(1)227 1420 y Fp(An)30 b(alternativ)m(e)j(factorization)g(is) │ │ │ │ -1201 1652 y Fg(A)26 b Fp(=)1391 1508 y Fe(")1567 1592 │ │ │ │ -y Fg(L)1629 1606 y Fd(0)p Fc(;)p Fd(0)1948 1592 y Fp(0)1481 │ │ │ │ -1707 y Fg(A)1549 1721 y Fd(1)p Fc(;)p Fd(0)1643 1707 │ │ │ │ -y Fg(U)1715 1669 y Fa(\000)p Fd(1)1705 1732 y(0)p Fc(;)p │ │ │ │ -Fd(0)1892 1707 y Fg(L)1954 1721 y Fd(1)p Fc(;)p Fd(1)2090 │ │ │ │ -1508 y Fe(#)16 b(")2244 1594 y Fg(U)2306 1608 y Fd(0)p │ │ │ │ -Fc(;)p Fd(0)2483 1594 y Fg(L)2545 1556 y Fa(\000)p Fd(1)2545 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1068 4 v 1249 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2740 100 V 1068 w Fp(11)227 399 y Fg(A)g │ │ │ │ +Fp(is)f(factored)h(as)1106 410 y Fe(")1196 497 y Fg(A)1264 │ │ │ │ +511 y Fd(0)p Fc(;)p Fd(0)1441 497 y Fg(A)1509 511 y Fd(0)p │ │ │ │ +Fc(;)p Fd(1)1196 610 y Fg(A)1264 624 y Fd(1)p Fc(;)p │ │ │ │ +Fd(0)1441 610 y Fg(A)1509 624 y Fd(1)p Fc(;)p Fd(1)1645 │ │ │ │ +410 y Fe(#)1719 554 y Fp(=)1815 410 y Fe(")1905 497 y │ │ │ │ +Fg(L)1967 511 y Fd(0)p Fc(;)p Fd(0)2199 497 y Fp(0)1905 │ │ │ │ +610 y Fg(L)1967 624 y Fd(1)p Fc(;)p Fd(0)2144 610 y Fg(L)2206 │ │ │ │ +624 y Fd(1)p Fc(;)p Fd(1)2342 410 y Fe(#)15 b(")2495 │ │ │ │ +497 y Fg(U)2557 511 y Fd(0)p Fc(;)p Fd(0)2735 497 y Fg(U)2797 │ │ │ │ +511 y Fd(0)p Fc(;)p Fd(1)2551 610 y Fp(0)139 b Fg(U)2797 │ │ │ │ +624 y Fd(1)p Fc(;)p Fd(1)2933 410 y Fe(#)2996 554 y Fg(;)227 │ │ │ │ +774 y Fp(and)30 b(to)h(solv)m(e)h Fg(AX)h Fp(=)25 b Fg(B)5 │ │ │ │ +b Fp(,)30 b(w)m(e)h(do)f(the)g(follo)m(wing)i(steps.)337 │ │ │ │ +956 y Ff(\210)45 b Fp(solv)m(e)32 b Fg(L)712 970 y Fd(0)p │ │ │ │ +Fc(;)p Fd(0)806 956 y Fg(Y)859 970 y Fd(0)924 956 y Fp(=)25 │ │ │ │ +b Fg(B)1089 970 y Fd(0)337 1097 y Ff(\210)45 b Fp(solv)m(e)32 │ │ │ │ +b Fg(L)712 1111 y Fd(1)p Fc(;)p Fd(1)806 1097 y Fg(U)868 │ │ │ │ +1111 y Fd(1)p Fc(;)p Fd(1)963 1097 y Fg(X)1038 1111 y │ │ │ │ +Fd(1)1103 1097 y Fp(=)25 b Fg(B)1268 1111 y Fd(1)1327 │ │ │ │ +1097 y Fi(\000)20 b Fg(L)1480 1111 y Fd(1)p Fc(;)p Fd(0)1574 │ │ │ │ +1097 y Fg(Y)1627 1111 y Fd(0)337 1238 y Ff(\210)45 b │ │ │ │ +Fp(solv)m(e)32 b Fg(U)712 1252 y Fd(0)p Fc(;)p Fd(0)806 │ │ │ │ +1238 y Fg(X)881 1252 y Fd(0)946 1238 y Fp(=)25 b Fg(Y)1095 │ │ │ │ +1252 y Fd(0)1155 1238 y Fi(\000)20 b Fg(U)1308 1252 y │ │ │ │ +Fd(0)p Fc(;)p Fd(1)1402 1238 y Fg(X)1477 1252 y Fd(1)227 │ │ │ │ +1420 y Fp(An)30 b(alternativ)m(e)j(factorization)g(is)1201 │ │ │ │ +1652 y Fg(A)26 b Fp(=)1391 1508 y Fe(")1567 1592 y Fg(L)1629 │ │ │ │ +1606 y Fd(0)p Fc(;)p Fd(0)1948 1592 y Fp(0)1481 1707 │ │ │ │ +y Fg(A)1549 1721 y Fd(1)p Fc(;)p Fd(0)1643 1707 y Fg(U)1715 │ │ │ │ +1669 y Fa(\000)p Fd(1)1705 1732 y(0)p Fc(;)p Fd(0)1892 │ │ │ │ +1707 y Fg(L)1954 1721 y Fd(1)p Fc(;)p Fd(1)2090 1508 │ │ │ │ +y Fe(#)16 b(")2244 1594 y Fg(U)2306 1608 y Fd(0)p Fc(;)p │ │ │ │ +Fd(0)2483 1594 y Fg(L)2545 1556 y Fa(\000)p Fd(1)2545 │ │ │ │ 1619 y(0)p Fc(;)p Fd(0)2639 1594 y Fg(U)2701 1608 y Fd(0)p │ │ │ │ Fc(;)p Fd(1)2299 1711 y Fp(0)217 b Fg(U)2623 1725 y Fd(1)p │ │ │ │ Fc(;)p Fd(1)2837 1508 y Fe(#)2901 1652 y Fg(:)227 1901 │ │ │ │ y Fp(T)-8 b(o)31 b(solv)m(e)h Fg(AX)h Fp(=)25 b Fg(B)5 │ │ │ │ b Fp(,)30 b(w)m(e)h(do)f(the)g(follo)m(wing)i Fj(semi-implicit)h(solve) │ │ │ │ p Fp(.)337 2083 y Ff(\210)45 b Fp(solv)m(e)32 b Fg(L)712 │ │ │ │ 2097 y Fd(0)p Fc(;)p Fd(0)806 2083 y Fg(U)868 2097 y │ │ │ │ @@ -7275,20 +7286,20 @@ │ │ │ │ Fp(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ Fl(Graph)e Fp(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 Fl(*.graphf)18 b Fp(or)j Fl(*.graphb)p │ │ │ │ Fp(.)35 b(The)19 b Fl(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(Graph)p 3368 5294 V 33 │ │ │ │ w(readFromFile\(\))427 5407 y Fp(metho)s(d.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1107 │ │ │ │ -4 v 1289 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2794 100 V 337 399 a Ff(\210)45 b Fp(The)29 b │ │ │ │ -Fl(ETreeFile)e Fp(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ -Fl(ETree)e Fp(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 Fl(*.etreef)18 b Fp(or)j Fl(*.etreeb)p │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1068 │ │ │ │ +4 v 1250 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2833 100 V 337 399 a Ff(\210)45 b │ │ │ │ +Fp(The)29 b Fl(ETreeFile)e Fp(parameter)j(is)g(the)g(input)e(\014le)i │ │ │ │ +(for)f(the)h Fl(ETree)e Fp(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 Fl(*.etreef)18 b Fp(or)j Fl(*.etreeb)p │ │ │ │ Fp(.)35 b(The)19 b Fl(ETree)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(ETree)p 3368 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fp(metho)s(d.)337 769 │ │ │ │ y Ff(\210)45 b Fp(The)31 b Fl(mapFile)f Fp(parameter)i(is)g(the)g │ │ │ │ (input)e(\014le)i(for)f(the)h(map)f Fl(IV)g Fp(ob)5 b(ject.)46 │ │ │ │ b(It)31 b(m)m(ust)h(b)s(e)f(of)h(the)f(form)427 882 y │ │ │ │ Fl(*.ivf)24 b Fp(or)h Fl(*.ivb)p Fp(.)37 b(The)25 b Fl(IV)f │ │ │ │ @@ -7353,33 +7364,33 @@ │ │ │ │ Fl(nrow)f Fp(m)m(ust)h(b)s(e)g(equal)h(to)g Fl(ncol)e │ │ │ │ Fp(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 Fl(nent)e Fp(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 1107 4 v 1288 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2701 100 V 1107 w Fp(13)427 399 y Fl(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 Fp(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 Fl(irow)e │ │ │ │ -Fp(and)h Fl(jcol)f Fp(v)-5 b(alues)31 b(are)g Fj(summe)-5 │ │ │ │ -b(d)p Fp(.)337 1163 y Ff(\210)45 b Fp(The)26 b Fl(rhsFileName)d │ │ │ │ -Fp(parameter)k(is)g(the)f(name)h(of)f(the)h(input)e(\014le)i(for)f(the) │ │ │ │ -h(righ)m(t)g(hand)e(side)h(matrix.)427 1276 y(It)31 b(has)f(the)g │ │ │ │ -(follo)m(wing)i(structure)427 1443 y Fl(nrow)47 b(nrhs)427 │ │ │ │ -1556 y(...)427 1669 y(irow)g(value_0)f(value_1)g(...)g │ │ │ │ -(value_\\{nrhs-1\\})427 1782 y(...)427 1949 y Fp(Note,)32 │ │ │ │ -b Fl(nrow)c Fp(need)h(not)h(b)s(e)f(the)g(n)m(um)m(b)s(er)g(of)g │ │ │ │ -(equations,)i(here)e(it)h(is)g(the)g(n)m(um)m(b)s(er)e(of)i(nonzero)f │ │ │ │ -(righ)m(t)427 2061 y(hand)e(side)g(en)m(tries.)41 b(This)26 │ │ │ │ -b(allo)m(ws)j(us)e(to)h(input)f(sparse)g(righ)m(t)h(hand)f(sides)g │ │ │ │ -(without)g(sp)s(ecifying)h(the)427 2174 y(zero)s(es.)40 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1068 4 v 1249 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2740 100 V 1068 w Fp(13)427 399 y Fl(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 Fp(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 Fl(irow)e Fp(and)h Fl(jcol)f Fp(v)-5 b(alues)31 │ │ │ │ +b(are)g Fj(summe)-5 b(d)p Fp(.)337 1163 y Ff(\210)45 │ │ │ │ +b Fp(The)26 b Fl(rhsFileName)d Fp(parameter)k(is)g(the)f(name)h(of)f │ │ │ │ +(the)h(input)e(\014le)i(for)f(the)h(righ)m(t)g(hand)e(side)h(matrix.) │ │ │ │ +427 1276 y(It)31 b(has)f(the)g(follo)m(wing)i(structure)427 │ │ │ │ +1443 y Fl(nrow)47 b(nrhs)427 1556 y(...)427 1669 y(irow)g(value_0)f │ │ │ │ +(value_1)g(...)g(value_\\{nrhs-1\\})427 1782 y(...)427 │ │ │ │ +1949 y Fp(Note,)32 b Fl(nrow)c Fp(need)h(not)h(b)s(e)f(the)g(n)m(um)m │ │ │ │ +(b)s(er)g(of)g(equations,)i(here)e(it)h(is)g(the)g(n)m(um)m(b)s(er)e │ │ │ │ +(of)i(nonzero)f(righ)m(t)427 2061 y(hand)e(side)g(en)m(tries.)41 │ │ │ │ +b(This)26 b(allo)m(ws)j(us)e(to)h(input)f(sparse)g(righ)m(t)h(hand)f │ │ │ │ +(sides)g(without)g(sp)s(ecifying)h(the)427 2174 y(zero)s(es.)40 │ │ │ │ b(In)26 b(con)m(trast)i(to)f(the)f(input)f(for)i(the)f(matrix)h(en)m │ │ │ │ (tries,)h(the)e(nonzero)h(ro)m(ws)f Fj(must)h Fp(b)s(e)f(unique.)427 │ │ │ │ 2287 y(The)37 b(righ)m(t)h(hand)f(side)g(en)m(tries)h(are)g(not)g │ │ │ │ (assem)m(bled)f(in)m(to)i(a)f(dense)f(matrix)g(ob)5 b(ject,)41 │ │ │ │ b(but)36 b(placed)427 2400 y(in)m(to)c(the)e(ob)5 b(ject.)337 │ │ │ │ 2546 y Ff(\210)45 b Fl(seed)29 b Fp(is)i(a)g(random)e(n)m(um)m(b)s(er)g │ │ │ │ (seed)i(used)e(for)h(the)h(ordering)f(pro)s(cess.)111 │ │ │ │ @@ -7419,25 +7430,25 @@ │ │ │ │ (\(SPOOLES)p 1417 5148 V 32 w(SYMMETRIC\))28 b Fp(for)i │ │ │ │ Fg(A)g Fp(real)h(or)g(complex)g(symmetric,)500 5278 y │ │ │ │ Fo({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 5278 V 32 │ │ │ │ w(HERMITIAN\))28 b Fp(for)i Fg(A)g Fp(complex)h(Hermitian,)500 │ │ │ │ 5407 y Fo({)45 b Fl(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 Fp(14)p 182 100 1107 │ │ │ │ -4 v 1289 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(18,)i │ │ │ │ -(2025)p 2794 100 V 427 399 a Fp(for)e Fg(A)h Fp(real)g(or)f(complex)h │ │ │ │ -(nonsymmetric.)337 539 y Ff(\210)45 b Fp(The)30 b Fl(patchAndGoFlag)d │ │ │ │ -Fp(sp)s(eci\014es)j(the)g(\\patc)m(h-and-go")j(strategy)-8 │ │ │ │ -b(.)500 680 y Fo({)45 b Fl(patchAndGoFlag)f(=)k(0)21 │ │ │ │ -b Fp(|)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 Fo({)45 b Fl(patchAndGoFlag)f(=)k(1)30 │ │ │ │ -b Fp(|)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 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1068 │ │ │ │ +4 v 1250 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(No)m(v)m(em)m(b)s │ │ │ │ +(er)i(15,)f(2025)p 2833 100 V 427 399 a Fp(for)f Fg(A)h │ │ │ │ +Fp(real)g(or)f(complex)h(nonsymmetric.)337 539 y Ff(\210)45 │ │ │ │ +b Fp(The)30 b Fl(patchAndGoFlag)d Fp(sp)s(eci\014es)j(the)g(\\patc)m │ │ │ │ +(h-and-go")j(strategy)-8 b(.)500 680 y Fo({)45 b Fl(patchAndGoFlag)f(=) │ │ │ │ +k(0)21 b Fp(|)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 Fo({)45 b Fl(patchAndGoFlag)f(=)k(1) │ │ │ │ +30 b Fp(|)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 Fo({)45 │ │ │ │ b Fl(patchAndGoFlag)f(=)k(2)34 b Fp(|)h(if)g(a)h(small)f(or)h(zero)f │ │ │ │ (piv)m(ot)h(is)g(detected,)h(p)s(erturb)c(the)j(diagonal)597 │ │ │ │ 1272 y(en)m(try)-8 b(.)337 1413 y Ff(\210)45 b Fp(The)30 │ │ │ │ b Fl(fudge)f Fp(parameter)i(is)f(used)g(to)h(p)s(erturb)d(a)j(diagonal) │ │ │ │ h(en)m(try)-8 b(.)337 1554 y Ff(\210)45 b Fp(The)30 b │ │ │ │ Fl(toosmall)e Fp(parameter)j(is)g(judge)e(when)h(a)h(diagonal)g(en)m │ │ │ │ @@ -7490,20 +7501,20 @@ │ │ │ │ 5181 y Ff(\210)45 b Fp(The)33 b Fl(msgFile)e Fp(parameter)j(determines) │ │ │ │ f(the)h(message)g(\014le)f(|)h(if)f Fl(msgFile)e Fp(is)i │ │ │ │ Fl(stdout)p Fp(,)g(then)g(the)427 5294 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 │ │ │ │ 5407 y(data.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 91 100 1107 4 v 1288 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(18,)i(2025)p │ │ │ │ -2701 100 V 1107 w Fp(15)337 399 y Ff(\210)45 b Fl(type)29 │ │ │ │ -b Fp(is)i(the)f(t)m(yp)s(e)h(of)g(en)m(tries)500 545 │ │ │ │ -y Fo({)45 b Fl(1)30 b Fp(|)h(\()p Fl(SPOOLES)p 1174 545 │ │ │ │ -29 4 v 32 w(REAL)p Fp(\))f(for)g(real)h(en)m(tries)500 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1068 4 v 1249 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(No)m(v)m(em)m(b)s(er)32 │ │ │ │ +b(15,)f(2025)p 2740 100 V 1068 w Fp(15)337 399 y Ff(\210)45 │ │ │ │ +b Fl(type)29 b Fp(is)i(the)f(t)m(yp)s(e)h(of)g(en)m(tries)500 │ │ │ │ +545 y Fo({)45 b Fl(1)30 b Fp(|)h(\()p Fl(SPOOLES)p 1174 │ │ │ │ +545 29 4 v 32 w(REAL)p Fp(\))f(for)g(real)h(en)m(tries)500 │ │ │ │ 674 y Fo({)45 b Fl(2)30 b Fp(|)h(\()p Fl(SPOOLES)p 1174 │ │ │ │ 674 V 32 w(COMPLEX)p Fp(\))e(for)h(complex)h(en)m(tries)337 │ │ │ │ 820 y Ff(\210)45 b Fp(The)27 b Fl(matrixFileName)d Fp(parameter)k(is)g │ │ │ │ (the)f(name)h(of)g(the)f(input)g(\014le)h(for)f(the)h(matrix)g(en)m │ │ │ │ (tries.)40 b(F)-8 b(or)427 933 y(a)31 b(real)g(matrix,)g(this)f(\014le) │ │ │ │ h(m)m(ust)f(ha)m(v)m(e)i(the)e(follo)m(wing)i(form.)427 │ │ │ │ 1100 y Fl(nrow)47 b(ncol)g(nent)427 1213 y(...)427 1326 │ │ │ │ ├── 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 October 18, 2025 │ │ │ │ │ + 2 Misc : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 3 │ │ │ │ │ + Misc : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 4 Misc : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 5 │ │ │ │ │ + Misc : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 6 Misc : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 7 │ │ │ │ │ + Misc : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 8 Misc : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 9 │ │ │ │ │ + Misc : DRAFT November 15, 2025 9 │ │ │ │ │ Figure 1.1: R2D100 │ │ │ │ │ - 10 Misc : DRAFT October 18, 2025 │ │ │ │ │ - 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 18, 2025 11 │ │ │ │ │ + 10 Misc : DRAFT November 15, 2025 │ │ │ │ │ + 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 November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 12 Misc : DRAFT November 15, 2025 │ │ │ │ │ • 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 October 18, 2025 13 │ │ │ │ │ + Misc : DRAFT November 15, 2025 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 October 18, 2025 │ │ │ │ │ + 14 Misc : DRAFT November 15, 2025 │ │ │ │ │ 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 October 18, 2025 15 │ │ │ │ │ + Misc : DRAFT November 15, 2025 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 │ │ │ │ │ ...